commit f1b3814c7fc46f90446402a043fe698045fe352f Author: Ethan Nguyen Date: Mon Apr 19 18:46:27 2021 -0400 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed110d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,121 @@ +# Django # +*.log +*.pot +*.pyc +__pycache__ +db.sqlite3 +media + +# Backup files # +*.bak + +# If you are using PyCharm # +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/gradle.xml +.idea/**/libraries +*.iws /out/ + +# Python # +*.py[cod] +*$py.class + +# Distribution / packaging +.Python build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +.pytest_cache/ +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery +celerybeat-schedule.* + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# Sublime Text # +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache +*.sublime-workspace +*.sublime-project + +# sftp configuration file +sftp-config.json + +# Package control specific files Package +Control.last-run +Control.ca-list +Control.ca-bundle +Control.system-ca-bundle +GitHub.sublime-settings + +# Visual Studio Code # +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +tjdests/settings/secret.py +/.idea/ +/tjdests/serve/ +secret.py diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..cba6f6a --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,660 @@ +### GNU AFFERO GENERAL PUBLIC LICENSE + +Version 3, 19 November 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +### Preamble + +The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains +free software for all its users. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing +under this license. + +The precise terms and conditions for copying, distribution and +modification follow. + +### TERMS AND CONDITIONS + +#### 0. Definitions. + +"This License" refers to version 3 of the GNU Affero General Public +License. + +"Copyright" also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a "modified version" of +the earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +An interactive user interface displays "Appropriate Legal Notices" to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +#### 1. Source Code. + +The "source code" for a work means the preferred form of the work for +making modifications to it. "Object code" means any non-source form of +a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same +work. + +#### 2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 makes +it unnecessary. + +#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +#### 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +#### 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +- a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. +- b) The work must carry prominent notices stating that it is + released under this License and any conditions added under + section 7. This requirement modifies the requirement in section 4 + to "keep intact all notices". +- c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. +- d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +#### 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +- a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. +- b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the Corresponding + Source from a network server at no charge. +- c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. +- d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. +- e) Convey the object code using peer-to-peer transmission, + provided you inform other peers where the object code and + Corresponding Source of the work are being offered to the general + public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +"normally used" refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +#### 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +- a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or +- b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or +- c) Prohibiting misrepresentation of the origin of that material, + or requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or +- d) Limiting the use for publicity purposes of names of licensors + or authors of the material; or +- e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or +- f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions + of it) with contractual assumptions of liability to the recipient, + for any liability that these contractual assumptions directly + impose on those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +#### 8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +#### 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +#### 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +#### 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +#### 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree to +terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +#### 13. Remote Network Interaction; Use with the GNU General Public License. + +Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your +version supports such interaction) an opportunity to receive the +Corresponding Source of your version by providing access to the +Corresponding Source from a network server at no charge, through some +standard or customary means of facilitating copying of software. This +Corresponding Source shall include the Corresponding Source for any +work covered by version 3 of the GNU General Public License that is +incorporated pursuant to the following paragraph. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + +#### 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Affero General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions +of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +#### 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +#### 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT +NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM +TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +#### 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +### How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively state +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper +mail. + +If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for +the specific requirements. + +You should also get your employer (if you work as a programmer) or +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. For more information on this, and how to apply and follow +the GNU AGPL, see . diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..81c3cde --- /dev/null +++ b/Pipfile @@ -0,0 +1,29 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +django = "~=3.2" +social-auth-app-django = "~=4.0.0" +whitenoise = "~=5.2" +django-crispy-forms = "~=1.11.2" +crispy-bootstrap5 = "~=0.3.1" +django-extensions = "~=3.1.2" +ipython = "~=7.22.0" +django-bootstrap-pagination = "~=1.7.1" + +[dev-packages] +autopep8 = "~=1.5.6" +black = "==20.8b1" +coverage = "~=5.5" +django-stubs = "~=1.7.0" +flake8 = "~=3.9.0" +isort = "~=5.8.0" +mypy = "~=0.812" +pylint = "~=2.7.4" +pylint-django = "~=2.4.2" +typed-ast = "~=1.4.2" # Required by black, but Pipenv doesn't pull it in correctly on 3.8 + +[requires] +python_version = "3.9" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..f4972cf --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,734 @@ +{ + "_meta": { + "hash": { + "sha256": "18a19c14dc35df0516a99446a4e14571ea626b0eae6ff13b342cce4550ce15c3" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.9" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "asgiref": { + "hashes": [ + "sha256:92906c611ce6c967347bbfea733f13d6313901d54dcca88195eaeb52b2a8e8ee", + "sha256:d1216dfbdfb63826470995d31caed36225dcaf34f182e0fa257a4dd9e86f1b78" + ], + "markers": "python_version >= '3.6'", + "version": "==3.3.4" + }, + "backcall": { + "hashes": [ + "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", + "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" + ], + "version": "==0.2.0" + }, + "certifi": { + "hashes": [ + "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", + "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" + ], + "version": "==2020.12.5" + }, + "cffi": { + "hashes": [ + "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813", + "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06", + "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea", + "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee", + "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396", + "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73", + "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315", + "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1", + "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49", + "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892", + "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482", + "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058", + "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5", + "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53", + "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045", + "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3", + "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5", + "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e", + "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c", + "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369", + "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827", + "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053", + "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa", + "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4", + "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322", + "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132", + "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62", + "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa", + "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0", + "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396", + "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e", + "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991", + "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6", + "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1", + "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406", + "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d", + "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c" + ], + "version": "==1.14.5" + }, + "chardet": { + "hashes": [ + "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", + "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==4.0.0" + }, + "crispy-bootstrap5": { + "hashes": [ + "sha256:79e518fdf4d94e64ec2f1abfd85eed348724e9cb432cec3dfaf531177603d17d", + "sha256:ec62daf8d50271031c53a484b43e10bccc0cebde34f253a3c784964658df5826" + ], + "index": "pypi", + "version": "==0.3.1" + }, + "cryptography": { + "hashes": [ + "sha256:0f1212a66329c80d68aeeb39b8a16d54ef57071bf22ff4e521657b27372e327d", + "sha256:1e056c28420c072c5e3cb36e2b23ee55e260cb04eee08f702e0edfec3fb51959", + "sha256:240f5c21aef0b73f40bb9f78d2caff73186700bf1bc6b94285699aff98cc16c6", + "sha256:26965837447f9c82f1855e0bc8bc4fb910240b6e0d16a664bb722df3b5b06873", + "sha256:37340614f8a5d2fb9aeea67fd159bfe4f5f4ed535b1090ce8ec428b2f15a11f2", + "sha256:3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713", + "sha256:3d8427734c781ea5f1b41d6589c293089704d4759e34597dce91014ac125aad1", + "sha256:7ec5d3b029f5fa2b179325908b9cd93db28ab7b85bb6c1db56b10e0b54235177", + "sha256:8e56e16617872b0957d1c9742a3f94b43533447fd78321514abbe7db216aa250", + "sha256:de4e5f7f68220d92b7637fc99847475b59154b7a1b3868fb7385337af54ac9ca", + "sha256:eb8cc2afe8b05acbd84a43905832ec78e7b3873fb124ca190f574dca7389a87d", + "sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9" + ], + "markers": "python_version >= '3.6'", + "version": "==3.4.7" + }, + "decorator": { + "hashes": [ + "sha256:6f201a6c4dac3d187352661f508b9364ec8091217442c9478f1f83c003a0f060", + "sha256:945d84890bb20cc4a2f4a31fc4311c0c473af65ea318617f13a7257c9a58bc98" + ], + "markers": "python_version >= '3.5'", + "version": "==5.0.7" + }, + "defusedxml": { + "hashes": [ + "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", + "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.7.1" + }, + "django": { + "hashes": [ + "sha256:0604e84c4fb698a5e53e5857b5aea945b2f19a18f25f10b8748dbdf935788927", + "sha256:21f0f9643722675976004eb683c55d33c05486f94506672df3d6a141546f389d" + ], + "index": "pypi", + "version": "==3.2" + }, + "django-bootstrap-pagination": { + "hashes": [ + "sha256:47e742679cf109e12f10ae09d5263433f94440818cf7b023e90a3f5252849639", + "sha256:69d826d92217325611cb86e49944d8261e3c92eaa4deafea5a605d79fd363883" + ], + "index": "pypi", + "version": "==1.7.1" + }, + "django-crispy-forms": { + "hashes": [ + "sha256:3db71ab06d17ec9d0195c086d3ad454da300ac268752ac3a4f63d72f7a490254", + "sha256:88efa857ce6111bd696cc4f74057539a3456102fe9c3a3ece8868e1e4579e70a" + ], + "index": "pypi", + "version": "==1.11.2" + }, + "django-extensions": { + "hashes": [ + "sha256:081828e985485662f62a22340c1506e37989d14b927652079a5b7cd84a82368b", + "sha256:17f85f4dcdd5eea09b8c4f0bad8f0370bf2db6d03e61b431fa7103fee29888de" + ], + "index": "pypi", + "version": "==3.1.2" + }, + "idna": { + "hashes": [ + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.10" + }, + "ipython": { + "hashes": [ + "sha256:9c900332d4c5a6de534b4befeeb7de44ad0cc42e8327fa41b7685abde58cec74", + "sha256:c0ce02dfaa5f854809ab7413c601c4543846d9da81010258ecdab299b542d199" + ], + "index": "pypi", + "version": "==7.22.0" + }, + "ipython-genutils": { + "hashes": [ + "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", + "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" + ], + "version": "==0.2.0" + }, + "jedi": { + "hashes": [ + "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93", + "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707" + ], + "markers": "python_version >= '3.6'", + "version": "==0.18.0" + }, + "oauthlib": { + "hashes": [ + "sha256:bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889", + "sha256:df884cd6cbe20e32633f1db1072e9356f53638e4361bef4e8b03c9127c9328ea" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==3.1.0" + }, + "parso": { + "hashes": [ + "sha256:12b83492c6239ce32ff5eed6d3639d6a536170723c6f3f1506869f1ace413398", + "sha256:a8c4922db71e4fdb90e0d0bc6e50f9b273d3397925e5e60a717e719201778d22" + ], + "markers": "python_version >= '3.6'", + "version": "==0.8.2" + }, + "pexpect": { + "hashes": [ + "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", + "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" + ], + "markers": "sys_platform != 'win32'", + "version": "==4.8.0" + }, + "pickleshare": { + "hashes": [ + "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", + "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" + ], + "version": "==0.7.5" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:bf00f22079f5fadc949f42ae8ff7f05702826a97059ffcc6281036ad40ac6f04", + "sha256:e1b4f11b9336a28fa11810bc623c357420f69dfdb6d2dac41ca2c21a55c033bc" + ], + "markers": "python_full_version >= '3.6.1'", + "version": "==3.0.18" + }, + "ptyprocess": { + "hashes": [ + "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", + "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" + ], + "version": "==0.7.0" + }, + "pycparser": { + "hashes": [ + "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", + "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.20" + }, + "pygments": { + "hashes": [ + "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94", + "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8" + ], + "markers": "python_version >= '3.5'", + "version": "==2.8.1" + }, + "pyjwt": { + "hashes": [ + "sha256:a5c70a06e1f33d81ef25eecd50d50bd30e34de1ca8b2b9fa3fe0daaabcf69bf7", + "sha256:b70b15f89dc69b993d8a8d32c299032d5355c82f9b5b7e851d1a6d706dffe847" + ], + "markers": "python_version >= '3.6'", + "version": "==2.0.1" + }, + "python3-openid": { + "hashes": [ + "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf", + "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b" + ], + "version": "==3.2.0" + }, + "pytz": { + "hashes": [ + "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da", + "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798" + ], + "version": "==2021.1" + }, + "requests": { + "hashes": [ + "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", + "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==2.25.1" + }, + "requests-oauthlib": { + "hashes": [ + "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d", + "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a", + "sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc" + ], + "version": "==1.3.0" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.15.0" + }, + "social-auth-app-django": { + "hashes": [ + "sha256:2c69e57df0b30c9c1823519c5f1992cbe4f3f98fdc7d95c840e091a752708840", + "sha256:567ad0e028311541d7dfed51d3bf2c60440a6fd236d5d4d06c5a618b3d6c57c5", + "sha256:df5212370bd250108987c4748419a1a1d0cec750878856c2644c36aaa0fd3e58" + ], + "index": "pypi", + "version": "==4.0.0" + }, + "social-auth-core": { + "hashes": [ + "sha256:5ab43b3b15dce5f059db69cc3082c216574739f0edbc98629c8c6e8769c67eb4", + "sha256:983b53167ac56e7ba4909db555602a6e7a98c97ca47183bb222eb85ba627bf2b" + ], + "markers": "python_version >= '3.6'", + "version": "==4.1.0" + }, + "sqlparse": { + "hashes": [ + "sha256:017cde379adbd6a1f15a61873f43e8274179378e95ef3fede90b5aa64d304ed0", + "sha256:0f91fd2e829c44362cbcfab3e9ae12e22badaa8a29ad5ff599f9ec109f0454e8" + ], + "markers": "python_version >= '3.5'", + "version": "==0.4.1" + }, + "traitlets": { + "hashes": [ + "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396", + "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426" + ], + "markers": "python_version >= '3.7'", + "version": "==5.0.5" + }, + "urllib3": { + "hashes": [ + "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", + "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.26.4" + }, + "wcwidth": { + "hashes": [ + "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", + "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" + ], + "version": "==0.2.5" + }, + "whitenoise": { + "hashes": [ + "sha256:05ce0be39ad85740a78750c86a93485c40f08ad8c62a6006de0233765996e5c7", + "sha256:05d00198c777028d72d8b0bbd234db605ef6d60e9410125124002518a48e515d" + ], + "index": "pypi", + "version": "==5.2.0" + } + }, + "develop": { + "appdirs": { + "hashes": [ + "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", + "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" + ], + "version": "==1.4.4" + }, + "asgiref": { + "hashes": [ + "sha256:92906c611ce6c967347bbfea733f13d6313901d54dcca88195eaeb52b2a8e8ee", + "sha256:d1216dfbdfb63826470995d31caed36225dcaf34f182e0fa257a4dd9e86f1b78" + ], + "markers": "python_version >= '3.6'", + "version": "==3.3.4" + }, + "astroid": { + "hashes": [ + "sha256:ad63b8552c70939568966811a088ef0bc880f99a24a00834abd0e3681b514f91", + "sha256:bea3f32799fbb8581f58431c12591bc20ce11cbc90ad82e2ea5717d94f2080d5" + ], + "markers": "python_version >= '3.6'", + "version": "==2.5.3" + }, + "autopep8": { + "hashes": [ + "sha256:5454e6e9a3d02aae38f866eec0d9a7de4ab9f93c10a273fb0340f3d6d09f7514", + "sha256:f01b06a6808bc31698db907761e5890eb2295e287af53f6693b39ce55454034a" + ], + "index": "pypi", + "version": "==1.5.6" + }, + "black": { + "hashes": [ + "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" + ], + "index": "pypi", + "version": "==20.8b1" + }, + "click": { + "hashes": [ + "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", + "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==7.1.2" + }, + "coverage": { + "hashes": [ + "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c", + "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6", + "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45", + "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a", + "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03", + "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529", + "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a", + "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a", + "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2", + "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6", + "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759", + "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53", + "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a", + "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4", + "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff", + "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502", + "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793", + "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb", + "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905", + "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821", + "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b", + "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81", + "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0", + "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b", + "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3", + "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184", + "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701", + "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a", + "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82", + "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638", + "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5", + "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083", + "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6", + "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90", + "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465", + "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a", + "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3", + "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e", + "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066", + "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf", + "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b", + "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae", + "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669", + "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873", + "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b", + "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6", + "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb", + "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160", + "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c", + "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079", + "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d", + "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" + ], + "index": "pypi", + "version": "==5.5" + }, + "django": { + "hashes": [ + "sha256:0604e84c4fb698a5e53e5857b5aea945b2f19a18f25f10b8748dbdf935788927", + "sha256:21f0f9643722675976004eb683c55d33c05486f94506672df3d6a141546f389d" + ], + "index": "pypi", + "version": "==3.2" + }, + "django-stubs": { + "hashes": [ + "sha256:30a7d99c694acf79c5d93d69a5a8e4b54d2a8c11dd672aa869006789e2189fa6", + "sha256:ddd190aca5b9adb4d30760d5c64f67cb3658703f5f42c3bb0c2c71ff4d752c39" + ], + "index": "pypi", + "version": "==1.7.0" + }, + "flake8": { + "hashes": [ + "sha256:1aa8990be1e689d96c745c5682b687ea49f2e05a443aff1f8251092b0014e378", + "sha256:3b9f848952dddccf635be78098ca75010f073bfe14d2c6bda867154bea728d2a" + ], + "index": "pypi", + "version": "==3.9.1" + }, + "isort": { + "hashes": [ + "sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6", + "sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d" + ], + "index": "pypi", + "version": "==5.8.0" + }, + "lazy-object-proxy": { + "hashes": [ + "sha256:17e0967ba374fc24141738c69736da90e94419338fd4c7c7bef01ee26b339653", + "sha256:1fee665d2638491f4d6e55bd483e15ef21f6c8c2095f235fef72601021e64f61", + "sha256:22ddd618cefe54305df49e4c069fa65715be4ad0e78e8d252a33debf00f6ede2", + "sha256:24a5045889cc2729033b3e604d496c2b6f588c754f7a62027ad4437a7ecc4837", + "sha256:410283732af311b51b837894fa2f24f2c0039aa7f220135192b38fcc42bd43d3", + "sha256:4732c765372bd78a2d6b2150a6e99d00a78ec963375f236979c0626b97ed8e43", + "sha256:489000d368377571c6f982fba6497f2aa13c6d1facc40660963da62f5c379726", + "sha256:4f60460e9f1eb632584c9685bccea152f4ac2130e299784dbaf9fae9f49891b3", + "sha256:5743a5ab42ae40caa8421b320ebf3a998f89c85cdc8376d6b2e00bd12bd1b587", + "sha256:85fb7608121fd5621cc4377a8961d0b32ccf84a7285b4f1d21988b2eae2868e8", + "sha256:9698110e36e2df951c7c36b6729e96429c9c32b3331989ef19976592c5f3c77a", + "sha256:9d397bf41caad3f489e10774667310d73cb9c4258e9aed94b9ec734b34b495fd", + "sha256:b579f8acbf2bdd9ea200b1d5dea36abd93cabf56cf626ab9c744a432e15c815f", + "sha256:b865b01a2e7f96db0c5d12cfea590f98d8c5ba64ad222300d93ce6ff9138bcad", + "sha256:bf34e368e8dd976423396555078def5cfc3039ebc6fc06d1ae2c5a65eebbcde4", + "sha256:c6938967f8528b3668622a9ed3b31d145fab161a32f5891ea7b84f6b790be05b", + "sha256:d1c2676e3d840852a2de7c7d5d76407c772927addff8d742b9808fe0afccebdf", + "sha256:d7124f52f3bd259f510651450e18e0fd081ed82f3c08541dffc7b94b883aa981", + "sha256:d900d949b707778696fdf01036f58c9876a0d8bfe116e8d220cfd4b15f14e741", + "sha256:ebfd274dcd5133e0afae738e6d9da4323c3eb021b3e13052d8cbd0e457b1256e", + "sha256:ed361bb83436f117f9917d282a456f9e5009ea12fd6de8742d1a4752c3017e93", + "sha256:f5144c75445ae3ca2057faac03fda5a902eff196702b0a24daf1d6ce0650514b" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.6.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "mypy": { + "hashes": [ + "sha256:0d0a87c0e7e3a9becdfbe936c981d32e5ee0ccda3e0f07e1ef2c3d1a817cf73e", + "sha256:25adde9b862f8f9aac9d2d11971f226bd4c8fbaa89fb76bdadb267ef22d10064", + "sha256:28fb5479c494b1bab244620685e2eb3c3f988d71fd5d64cc753195e8ed53df7c", + "sha256:2f9b3407c58347a452fc0736861593e105139b905cca7d097e413453a1d650b4", + "sha256:33f159443db0829d16f0a8d83d94df3109bb6dd801975fe86bacb9bf71628e97", + "sha256:3f2aca7f68580dc2508289c729bd49ee929a436208d2b2b6aab15745a70a57df", + "sha256:499c798053cdebcaa916eef8cd733e5584b5909f789de856b482cd7d069bdad8", + "sha256:4eec37370483331d13514c3f55f446fc5248d6373e7029a29ecb7b7494851e7a", + "sha256:552a815579aa1e995f39fd05dde6cd378e191b063f031f2acfe73ce9fb7f9e56", + "sha256:5873888fff1c7cf5b71efbe80e0e73153fe9212fafdf8e44adfe4c20ec9f82d7", + "sha256:61a3d5b97955422964be6b3baf05ff2ce7f26f52c85dd88db11d5e03e146a3a6", + "sha256:674e822aa665b9fd75130c6c5f5ed9564a38c6cea6a6432ce47eafb68ee578c5", + "sha256:7ce3175801d0ae5fdfa79b4f0cfed08807af4d075b402b7e294e6aa72af9aa2a", + "sha256:9743c91088d396c1a5a3c9978354b61b0382b4e3c440ce83cf77994a43e8c521", + "sha256:9f94aac67a2045ec719ffe6111df543bac7874cee01f41928f6969756e030564", + "sha256:a26f8ec704e5a7423c8824d425086705e381b4f1dfdef6e3a1edab7ba174ec49", + "sha256:abf7e0c3cf117c44d9285cc6128856106183938c68fd4944763003decdcfeb66", + "sha256:b09669bcda124e83708f34a94606e01b614fa71931d356c1f1a5297ba11f110a", + "sha256:cd07039aa5df222037005b08fbbfd69b3ab0b0bd7a07d7906de75ae52c4e3119", + "sha256:d23e0ea196702d918b60c8288561e722bf437d82cb7ef2edcd98cfa38905d506", + "sha256:d65cc1df038ef55a99e617431f0553cd77763869eebdf9042403e16089fe746c", + "sha256:d7da2e1d5f558c37d6e8c1246f1aec1e7349e4913d8fb3cb289a35de573fe2eb" + ], + "index": "pypi", + "version": "==0.812" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, + "pathspec": { + "hashes": [ + "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", + "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" + ], + "version": "==0.8.1" + }, + "pycodestyle": { + "hashes": [ + "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068", + "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.7.0" + }, + "pyflakes": { + "hashes": [ + "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3", + "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.3.1" + }, + "pylint": { + "hashes": [ + "sha256:209d712ec870a0182df034ae19f347e725c1e615b2269519ab58a35b3fcbbe7a", + "sha256:bd38914c7731cdc518634a8d3c5585951302b6e2b6de60fbb3f7a0220e21eeee" + ], + "index": "pypi", + "version": "==2.7.4" + }, + "pylint-django": { + "hashes": [ + "sha256:a5a4515209a6237d1d390a4a307d53f53baaf4f058ecf4bb556c775d208f6b0d", + "sha256:dc5ed27bb7662d73444ccd15a0b3964ed6ced6cc2712b85db616102062d2ec35" + ], + "index": "pypi", + "version": "==2.4.3" + }, + "pylint-plugin-utils": { + "hashes": [ + "sha256:2f30510e1c46edf268d3a195b2849bd98a1b9433229bb2ba63b8d776e1fc4d0a", + "sha256:57625dcca20140f43731311cd8fd879318bf45a8b0fd17020717a8781714a25a" + ], + "version": "==0.6" + }, + "pytz": { + "hashes": [ + "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da", + "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798" + ], + "version": "==2021.1" + }, + "regex": { + "hashes": [ + "sha256:01afaf2ec48e196ba91b37451aa353cb7eda77efe518e481707e0515025f0cd5", + "sha256:11d773d75fa650cd36f68d7ca936e3c7afaae41b863b8c387a22aaa78d3c5c79", + "sha256:18c071c3eb09c30a264879f0d310d37fe5d3a3111662438889ae2eb6fc570c31", + "sha256:1e1c20e29358165242928c2de1482fb2cf4ea54a6a6dea2bd7a0e0d8ee321500", + "sha256:281d2fd05555079448537fe108d79eb031b403dac622621c78944c235f3fcf11", + "sha256:314d66636c494ed9c148a42731b3834496cc9a2c4251b1661e40936814542b14", + "sha256:32e65442138b7b76dd8173ffa2cf67356b7bc1768851dded39a7a13bf9223da3", + "sha256:339456e7d8c06dd36a22e451d58ef72cef293112b559010db3d054d5560ef439", + "sha256:3916d08be28a1149fb97f7728fca1f7c15d309a9f9682d89d79db75d5e52091c", + "sha256:3a9cd17e6e5c7eb328517969e0cb0c3d31fd329298dd0c04af99ebf42e904f82", + "sha256:47bf5bf60cf04d72bf6055ae5927a0bd9016096bf3d742fa50d9bf9f45aa0711", + "sha256:4c46e22a0933dd783467cf32b3516299fb98cfebd895817d685130cc50cd1093", + "sha256:4c557a7b470908b1712fe27fb1ef20772b78079808c87d20a90d051660b1d69a", + "sha256:52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb", + "sha256:563085e55b0d4fb8f746f6a335893bda5c2cef43b2f0258fe1020ab1dd874df8", + "sha256:598585c9f0af8374c28edd609eb291b5726d7cbce16be6a8b95aa074d252ee17", + "sha256:619d71c59a78b84d7f18891fe914446d07edd48dc8328c8e149cbe0929b4e000", + "sha256:67bdb9702427ceddc6ef3dc382455e90f785af4c13d495f9626861763ee13f9d", + "sha256:6d1b01031dedf2503631d0903cb563743f397ccaf6607a5e3b19a3d76fc10480", + "sha256:741a9647fcf2e45f3a1cf0e24f5e17febf3efe8d4ba1281dcc3aa0459ef424dc", + "sha256:7c2a1af393fcc09e898beba5dd59196edaa3116191cc7257f9224beaed3e1aa0", + "sha256:7d9884d86dd4dd489e981d94a65cd30d6f07203d90e98f6f657f05170f6324c9", + "sha256:90f11ff637fe8798933fb29f5ae1148c978cccb0452005bf4c69e13db951e765", + "sha256:919859aa909429fb5aa9cf8807f6045592c85ef56fdd30a9a3747e513db2536e", + "sha256:96fcd1888ab4d03adfc9303a7b3c0bd78c5412b2bfbe76db5b56d9eae004907a", + "sha256:97f29f57d5b84e73fbaf99ab3e26134e6687348e95ef6b48cfd2c06807005a07", + "sha256:980d7be47c84979d9136328d882f67ec5e50008681d94ecc8afa8a65ed1f4a6f", + "sha256:a91aa8619b23b79bcbeb37abe286f2f408d2f2d6f29a17237afda55bb54e7aac", + "sha256:ade17eb5d643b7fead300a1641e9f45401c98eee23763e9ed66a43f92f20b4a7", + "sha256:b9c3db21af35e3b3c05764461b262d6f05bbca08a71a7849fd79d47ba7bc33ed", + "sha256:bd28bc2e3a772acbb07787c6308e00d9626ff89e3bfcdebe87fa5afbfdedf968", + "sha256:bf5824bfac591ddb2c1f0a5f4ab72da28994548c708d2191e3b87dd207eb3ad7", + "sha256:c0502c0fadef0d23b128605d69b58edb2c681c25d44574fc673b0e52dce71ee2", + "sha256:c38c71df845e2aabb7fb0b920d11a1b5ac8526005e533a8920aea97efb8ec6a4", + "sha256:ce15b6d103daff8e9fee13cf7f0add05245a05d866e73926c358e871221eae87", + "sha256:d3029c340cfbb3ac0a71798100ccc13b97dddf373a4ae56b6a72cf70dfd53bc8", + "sha256:e512d8ef5ad7b898cdb2d8ee1cb09a8339e4f8be706d27eaa180c2f177248a10", + "sha256:e8e5b509d5c2ff12f8418006d5a90e9436766133b564db0abaec92fd27fcee29", + "sha256:ee54ff27bf0afaf4c3b3a62bcd016c12c3fdb4ec4f413391a90bd38bc3624605", + "sha256:fa4537fb4a98fe8fde99626e4681cc644bdcf2a795038533f9f711513a862ae6", + "sha256:fd45ff9293d9274c5008a2054ecef86a9bfe819a67c7be1afb65e69b405b3042" + ], + "version": "==2021.4.4" + }, + "sqlparse": { + "hashes": [ + "sha256:017cde379adbd6a1f15a61873f43e8274179378e95ef3fede90b5aa64d304ed0", + "sha256:0f91fd2e829c44362cbcfab3e9ae12e22badaa8a29ad5ff599f9ec109f0454e8" + ], + "markers": "python_version >= '3.5'", + "version": "==0.4.1" + }, + "toml": { + "hashes": [ + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.10.2" + }, + "typed-ast": { + "hashes": [ + "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace", + "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff", + "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266", + "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528", + "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6", + "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808", + "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4", + "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363", + "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341", + "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04", + "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41", + "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e", + "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3", + "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899", + "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805", + "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c", + "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c", + "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39", + "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a", + "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3", + "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7", + "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f", + "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075", + "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0", + "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40", + "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428", + "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927", + "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3", + "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f", + "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65" + ], + "index": "pypi", + "version": "==1.4.3" + }, + "typing-extensions": { + "hashes": [ + "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", + "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", + "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" + ], + "version": "==3.7.4.3" + }, + "wrapt": { + "hashes": [ + "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7" + ], + "version": "==1.12.1" + } + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..6060c69 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +tjdests +=== + +TJ Destinations, ala Ethan. + +THIS WEBSITE IS NOT, IN ANY WAY, AFFILIATED WITH NOR ENDORSED BY THE +THOMAS JEFFERSON HIGH SCHOOL FOR SCIENCE AND TECHNOLOGY (TJHSST), +THE TJHSST COMPUTER SYSTEMS LAB, FAIRFAX COUNTY PUBLIC SCHOOLS, +OR ANY SUBSIDIARY, AFFILIATE, DEPARTMENT, OR PARTNER THEREOF. + +--- + +This program is free software: you can redistribute it and/or modify +it under the terms of version 3 of the GNU Affero General Public +License as published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . diff --git a/ceeb.csv b/ceeb.csv new file mode 100644 index 0000000..ee49bab --- /dev/null +++ b/ceeb.csv @@ -0,0 +1,3279 @@ +CEEB,College Name,City,State +0065,ALASKA BIBLE COLLEGE,GLENNALLEN,AK +0062,ALASKA PACIFIC UNIVERSITY,ANCHORAGE,AK +0066,ANCHORAGE COMMUNITY COLLEGE,ANCHORAGE,AK +0063,ISLANDS COMMUNITY COLLEGE,SITKA,AK +0069,KENAI PENINSULA COMMUNITY COLLEGE,SOLDOTNA,AK +0070,KETCHIKAN COMMUNITY COLLEGE,KETCHIKAN,AK +0649,KODIAK COMMUNITY COLLEGE,KODIAK,AK +0650,KUSKOKWIM COMMUNITY COLLEGE,BETHEL,AK +0072,MATANUSKA-SUSITNA COMMUNITY COLLEGE,PALMER,AK +0652,NORTHWEST COMMUNITY COLLEGE,NOME,AK +0651,PRINCE WILLIAM SOUND COMMUNITY COLLEGE,VALDEZ,AK +0074,SHELDON JACKSON COLLEGE,SITKA,AK +0653,TANANA VALLEY COMMUNITY COLLEGE,FAIRBANKS,AK +0153,UNIVERSITY OF ALASKA SOUTHEAST,JUNEAU,AK +0137,UNIVERSITY OF ALASKA-ANCHORAGE,ANCHORAGE,AK +0064,UNIVERSITY OF ALASKA-FAIRBANKS,FAIRBANKS,AK +5518,20TH CENTURY COLLEGE,MOBILE,AL +0548,AFROTC/RRUF,MAXWELL AFB,AL +0002,ALABAMA A & M UNIVERSITY,NORMAL,AL +0019,ALABAMA BIBLE INSTITUTE,GUIN,AL +0049,ALABAMA CHRISTIAN COLLEGE,HUNTSVILLE,AL +0008,ALABAMA STATE UNIVERSITY,MONTGOMERY,AL +0080,ALBERT P BREWER STATE JUNIOR COLLEGE,FAYETTE,AL +0010,ATHENS STATE COLLEGE,ATHENS,AL +0011,AUBURN UNIVERSITY,AUBURN UNIVERSITY,AL +0057,AUBURN UNIVERSITY AT MONTGOMERY,MONTGOMERY,AL +0013,BIRMINGHAM BAPTIST HOSPITAL,BIRMINGHAM,AL +0001,CENTRAL ALABAMA COMMUNITY COLLEGE,ALEXANDER CITY,AL +0073,CHATTAHOOCHEE VALLEY STATE COMM COLL,PHENIX CITY,AL +0051,COMMUNITY COLLEGE OF THE AIR FORCE,MAXWELL AFB,AL +0079,CONCORDIA COLLEGE,SELMA,AL +0045,ENTERPRISE STATE JUNIOR COLLEGE,ENTERPRISE,AL +0003,FAULKNER UNIVERSITY,MONTGOMERY,AL +0077,GADSDEN STATE JUNIOR COLLEGE,GADSDEN,AL +0076,GEORGE C WALLACE STATE COMM COLLEGE,DOTHAN,AL +0082,GEORGE CORLEY WALLACE STATE COMM COLL,SELMA,AL +5126,HERZING INSTITUTE OF ALABAMA,BIRMINGHAM,AL +0005,HOLY NAME OF JESUS HOSP SCH OF NURSING,GADSDEN,AL +0018,HUNTINGDON COLLEGE,MONTGOMERY,AL +0006,INTERNATIONAL BIBLE COLLEGE,FLORENCE,AL +0020,JACKSONVILLE STATE UNIVERSITY,JACKSONVILLE,AL +0035,JAMES H FAULKNER STATE JUNIOR COLLEGE,BAY MINETTE,AL +0039,JEFFERSON DAVIS STATE JUNIOR COLLEGE,BREWTON,AL +0047,JEFFERSON STATE COMMUNITY COLLEGE,BIRMINGHAM,AL +0075,JOHN C CALHOUN STATE COMMUNITY COLLEGE,DECATUR,AL +0022,JUDSON COLLEGE,MARION,AL +0025,LOMAX-HANNON JUNIOR COLLEGE,GREENVILLE,AL +0081,LURLEEN B WALLACE STATE JUNIOR COLLEGE,ANDALUSIA,AL +0026,MARION MILITARY INSTITUTE,MARION,AL +0028,MILES COLLEGE,BIRMINGHAM,AL +0150,NAT'L EDUC CENTER-NIT CAMPUS-ALABAMA,HOMEWOOD,AL +0061,NORTHEAST ALABAMA STATE JUNIOR COLLEGE,RAINSVILLE,AL +0027,NORTHWEST-SHOALS COMMUNITY COLLEGE,PHIL CAMPBELL,AL +0030,OAKWOOD COLLEGE,HUNTSVILLE,AL +0055,PATRICK HENRY STATE JUNIOR COLLEGE,MONROEVILLE,AL +0016,SAMFORD UNIVERSITY,BIRMINGHAM,AL +0033,SELMA UNIVERSITY,SELMA,AL +0007,SHELTON STATE COMMUNITY COLLEGE,TUSCALOOSA,AL +0036,SNEAD STATE JUNIOR COLLEGE,BOAZ,AL +0037,"SONAT FOUNDATION INC, THE",BIRMINGHAM,AL +0038,SOUTHEASTERN BIBLE COLLEGE,BIRMINGHAM,AL +0040,SOUTHERN UNION STATE JUNIOR COLLEGE,WADLEY,AL +0071,SOUTHERN VOCATIONAL COLLEGE,TUSKEGEE,AL +0042,SPRING HILL COLLEGE,MOBILE,AL +0043,ST VINCENT'S SCHOOL OF NURSING,BIRMINGHAM,AL +0044,STILLMAN COLLEGE,TUSCALOOSA,AL +0031,SYLACAUGA HOSPITAL SCHOOL OF NURSING,SYLACAUGA,AL +0046,TALLADEGA COLLEGE,TALLADEGA,AL +0021,TENNESSEE VALLEY COLLEGE,DECATUR,AL +0078,THEODORE ALFRED LAWSON STATE COMM COLL,BIRMINGHAM,AL +0015,TROY STATE UNIVERSITY-DOTHAN/FT RUCKER,DOTHAN,AL +0133,TROY STATE UNIVERSITY-MONTGOMERY,MONTGOMERY,AL +0048,TROY STATE UNIVERSITY-TROY,TROY,AL +0050,TUSKEGEE UNIVERSITY,TUSKEGEE,AL +0060,UNIV OF ALABAMA CTR GADSDEN-UPPER DIV,GADSDEN,AL +0052,UNIVERSITY OF ALABAMA,TUSCALOOSA,AL +0056,UNIVERSITY OF ALABAMA IN BIRMINGHAM,BIRMINGHAM,AL +0053,UNIVERSITY OF ALABAMA-HUNTSVILLE,HUNTSVILLE,AL +0029,UNIVERSITY OF MOBILE,MOBILE,AL +0004,UNIVERSITY OF MONTEVALLO,MONTEVALLO,AL +0014,UNIVERSITY OF NORTH ALABAMA,FLORENCE,AL +0059,UNIVERSITY OF SOUTH ALABAMA,MOBILE,AL +0024,UNIVERSITY OF WEST ALABAMA,LIVINGSTON,AL +0034,US SPORTS ACADEMY,DAPHNE,AL +0054,WALKER COLLEGE,JASPER,AL +0083,WALLACE STATE COMMUNITY COLLEGE,HANCEVILLE,AL +0111,ARKANSAS BAPTIST COLLEGE,LITTLE ROCK,AR +0152,ARKANSAS BIBLE COLLEGE,HOT SPRINGS,AR +0157,ARKANSAS CHRISTIAN COLLEGE,FT SMITH,AR +0141,ARKANSAS COLLEGE OF TECHNOLOGY,LITTLE ROCK,AR +0116,ARKANSAS STATE UNIVERSITY,STATE UNIVERSITY,AR +0117,ARKANSAS STATE UNIVERSITY-BEEBE BRANCH,BEEBE,AR +0114,ARKANSAS TECH UNIVERSITY,RUSSELLVILLE,AR +0131,BAPTIST SYSTEM SCHOOL OF NURSING,LITTLE ROCK,AR +4717,CAPITAL CITY JUNIOR COLLEGE,LITTLE ROCK,AR +0119,CENTRAL BAPTIST COLLEGE,CONWAY,AR +0123,CITADEL BIBLE COLLEGE,OZARK,AR +0121,CROWLEY'S RIDGE COLLEGE,PARAGOULD,AR +0109,EAST ARKANSAS COMMUNITY COLLEGE,FORREST CITY,AR +0115,GARLAND COUNTY COMMUNITY COLLEGE,HOT SPRINGS,AR +0124,HARDING UNIVERSITY,SEARCY,AR +0126,HENDERSON STATE UNIVERSITY,ARKADELPHIA,AR +0128,HENDRIX COLLEGE,CONWAY,AR +0161,JEFFERSON SCHOOL OF NURSING,PINE BLUFF,AR +0130,JOHN BROWN UNIVERSITY,SILOAM SPRINGS,AR +0112,LYON COLLEGE,BATESVILLE,AR +0129,MISSISSIPPI COUNTY COMMUNITY COLLEGE,BLYTHEVILLE,AR +0113,NORTH ARKANSAS COMMUNITY COLLEGE,HARRISON,AR +0017,NORTHWEST ARKANSAS COMMUNITY COLL,ROGERS,AR +0134,OUACHITA BAPTIST UNIVERSITY,ARKADELPHIA,AR +0187,PETIT JEAN TECHNICAL COLLEGE,MORRILTON,AR +0136,PHILANDER SMITH COLLEGE,LITTLE ROCK,AR +0125,PHILLIPS COUNTY COMMUNITY COLLEGE,HELENA,AR +0127,RICH MOUNTAIN COMMUNITY COLLEGE,MENA,AR +0138,SHORTER COLLEGE,NORTH LITTLE ROCK,AR +0139,SOUTH ARKANSAS COMMUNITY COLLEGE,EL DORADO,AR +0145,SOUTH CENTRAL CAREER COLLEGE,LITTLE ROCK,AR +0190,SOUTHEAST ARKANSAS TECHNICAL COLLEGE,PINE BLUFF,AR +0142,SOUTHERN ARKANSAS UNIVERSITY,MAGNOLIA,AR +0149,SOUTHERN ARKANSAS UNIVERSITY-EL DORADO,EL DORADO,AR +0143,SOUTHERN ARKANSAS UNIVERSITY-TECH BRNCH,EAST CAMDEN,AR +0140,SOUTHERN BAPTIST COLLEGE,WALNUT RIDGE,AR +4718,ST VINCENT INFIRMARY SCH/RADIOLOGIC TECH,LITTLE ROCK,AR +0144,UNIVERSITY OF ARKANSAS,FAYETTEVILLE,AR +0110,UNIVERSITY OF ARKANSAS AT MONTICELLO,MONTICELLO,AR +0108,UNIVERSITY OF ARKANSAS AT PINE BLUFF,PINE BLUFF,AR +0132,UNIVERSITY OF ARKANSAS-LITTLE ROCK,LITTLE ROCK,AR +0118,UNIVERSITY OF CENTRAL ARKANSAS,CONWAY,AR +0120,UNIVERSITY OF THE OZARKS,CLARKSVILLE,AR +0122,WESTARK COMMUNITY COLLEGE,FORT SMITH,AR +0084,AMERICAN GRAD SCH OF INTERNATIONAL MGMT,GLENDALE,AZ +0180,ARIZONA CAREER COLLEGE,PHOENIX,AZ +0102,ARIZONA COLLEGE OF THE BIBLE,PHOENIX,AZ +0088,ARIZONA STATE UNIVERSITY,TEMPE,AZ +0099,ARIZONA WESTERN COLLEGE,YUMA,AZ +0085,CENTRAL ARIZONA COLLEGE,COOLIDGE,AZ +0068,CHANDLER-GILBERT COMMUNITY COLLEGE,CHANDLER,AZ +0089,COCHISE COLLEGE,DOUGLAS,AZ +0058,COCONINO COUNTY COMMUNITY COLLEGE,FLAGSTAFF,AZ +0146,"COLLEGE OF GANADO, THE",GANADO,AZ +0812,DEVRY INSTITUTE OF TECHNOLOGY2,PHOENIX,AZ +0090,EASTERN ARIZONA COLLEGE,THATCHER,AZ +0095,EMBRY-RIDDLE AERONAUTICAL UNIVERSITY,PRESCOTT,AZ +0151,ESTRELLA MOUNTAIN COMM COLLEGE,ESTRELLA MOUNTAIN,AZ +0100,GATEWAY COMMUNITY COLLEGE,PHOENIX,AZ +0091,GLENDALE COMMUNITY COLLEGE,GLENDALE,AZ +0092,GRAND CANYON COLLEGE,PHOENIX,AZ +0178,INTERNATIONAL BAPTIST COLLEGE,TEMPE,AZ +0093,MESA COMMUNITY COLLEGE,MESA,AZ +0148,MOHAVE COMMUNITY COLLEGE,KINGMAN,AZ +0104,NAVAJO COMMUNITY COLLEGE,TSAILE,AZ +0086,NORTHERN ARIZONA UNIVERSITY,FLAGSTAFF,AZ +0107,NORTHLAND PIONEER COLLEGE,HOLBROOK,AZ +0087,PARADISE VALLEY COMMUNITY COLLEGE,PHOENIX,AZ +0094,PHOENIX COLLEGE,PHOENIX,AZ +0101,PIMA COMMUNITY COLLEGE,TUCSON,AZ +0135,PRESCOTT COLLEGE,PRESCOTT,AZ +0103,RIO SALADO COMMUNITY COLLEGE,PHOENIX,AZ +0105,SCOTTSDALE COMMUNITY COLLEGE,SCOTTSDALE,AZ +0552,SOUTH MOUNTAIN COMMUNITY COLLEGE,PHOENIX,AZ +0106,SOUTHWESTERN COLLEGE,PHOENIX,AZ +0096,UNIVERSITY OF ARIZONA,TUCSON,AZ +0067,UNIVERSITY OF PHOENIX,PHOENIX,AZ +0097,WESTERN INTERNATIONAL UNIVERSITY,PHOENIX,AZ +0098,YAVAPAI COLLEGE,PRESCOTT,AZ +0155,ACADEMY OF ART COLLEGE,SAN FRANCISCO,CA +0156,ALLAN HANCOCK COLLEGE,SANTA MARIA,CA +0159,AMBASSADOR COLLEGE,PASADENA,CA +0167,AMERICAN ACADEMY OF DRAMATIC ARTS,PASADENA,CA +0163,AMERICAN COLLEGE FOR THE APP ARTS,LOS ANGELES,CA +0158,AMERICAN RIVER COLLEGE,SACRAMENTO,CA +0351,ANAHEIM CHRISTIAN COLLEGE,ANAHEIM,CA +0160,ANTELOPE VALLEY COLLEGE,LANCASTER,CA +0162,ARMSTRONG UNIVERSITY,BERKELEY,CA +0164,ART CENTER COLLEGE OF DESIGN,PASADENA,CA +0166,AZUSA PACIFIC UNIVERSITY,AZUSA,CA +0168,BAKERSFIELD COLLEGE,BAKERSFIELD,CA +0169,BARSTOW COLLEGE,BARSTOW,CA +0171,BETHANY BIBLE COLLEGE,SANTA CRUZ,CA +0172,BIOLA UNIVERSITY,LA MIRADA,CA +0170,BROOKS COLLEGE,LONG BEACH,CA +0179,BROOKS INSTITUTE OF PHOTOGRAPHY,SANTA BARBARA,CA +0165,BUTTE COLLEGE,OROVILLE,CA +0173,CABRILLO COLLEGE,APTOS,CA +0175,CALIFORNIA BAPTIST COLLEGE,RIVERSIDE,CA +0215,CALIFORNIA BIBLE COLLEGE,BURLINGAME,CA +0189,CALIFORNIA CHRISTIAN COLLEGE,FRESNO,CA +0176,CALIFORNIA COLLEGE OF ARTS AND CRAFTS,OAKLAND,CA +0177,CALIFORNIA COLLEGE OF PODIATRIC MEDICINE,SAN FRANCISCO,CA +0185,CALIFORNIA CULINARY ACADEMY,SAN FRANCISCO,CA +0182,CALIFORNIA INSTITUTE OF TECHNOLOGY,PASADENA,CA +0181,CALIFORNIA INSTITUTE OF THE ARTS,VALENCIA,CA +0183,CALIFORNIA LUTHERAN COLLEGE,THOUSAND OAKS,CA +0184,CALIFORNIA MARITIME ACADEMY,VALLEJO,CA +0188,CALIFORNIA POLYTECHNIC STATE UNIVERSITY,SAN LUIS OBISPO,CA +0202,CALIFORNIA STATE POLYTECH UNIVERSITY,POMONA,CA +0201,CALIFORNIA STATE UNIV-BAKERSFIELD,BAKERSFIELD,CA +0212,CALIFORNIA STATE UNIV-CHICO,CHICO,CA +0203,CALIFORNIA STATE UNIV-DOMINGUEZ HILLS,CARSON,CA +0266,CALIFORNIA STATE UNIV-FRESNO,FRESNO,CA +0355,CALIFORNIA STATE UNIV-FULLERTON,FULLERTON,CA +0154,CALIFORNIA STATE UNIV-HAYWARD,HAYWARD,CA +0302,CALIFORNIA STATE UNIV-LONG BEACH,LONG BEACH,CA +0320,CALIFORNIA STATE UNIV-LOS ANGELES,LOS ANGELES,CA +0400,CALIFORNIA STATE UNIV-NORTHRIDGE,NORTHRIDGE,CA +0382,CALIFORNIA STATE UNIV-SACRAMENTO,SACRAMENTO,CA +0205,CALIFORNIA STATE UNIV-SAN BERNARDINO,SAN BERNARDINO,CA +0385,CALIFORNIA STATE UNIV-SAN MARCOS,SAN MARCOS,CA +0435,CALIFORNIA STATE UNIV-STANISLAUS,TURLOCK,CA +0439,CALIFORNIA WESTERN SCHOOL OF LAW,SAN DIEGO,CA +0213,CANADA COLLEGE,REDWOOD CITY,CA +0206,CERRITOS COLLEGE,NORWALK,CA +0192,CERRO COSO COMMUNITY COLLEGE,RIDGECREST,CA +0207,CHABOT COLLEGE,HAYWARD,CA +0208,CHAFFEY COLLEGE,ALTA LOMA,CA +0210,CHAPMAN UNIVERSITY,ORANGE,CA +0222,CHARLES R DREW POSTGRAD MEDICAL SCHOOL,LOS ANGELES,CA +0211,CHRISTIAN HERITAGE COLLEGE,EL CAJON,CA +0218,CITRUS COLLEGE,AZUSA,CA +0220,CITY COLLEGE OF SAN FRANCISCO,SAN FRANCISCO,CA +0224,CLAREMONT MCKENNA COLLEGE,CLAREMONT,CA +0193,COASTLINE COMMUNITY COLLEGE,FOUNTAIN VALLEY,CA +0228,COGSWELL COLLEGE,CUPERTINO,CA +0231,COLEMAN COLLEGE,LA MESA,CA +0238,COLLEGE OF ALAMEDA,ALAMEDA,CA +0232,COLLEGE OF MARIN,KENTFIELD,CA +0236,COLLEGE OF NOTRE DAME,BELMONT,CA +0244,COLLEGE OF SAN MATEO,SAN MATEO,CA +0419,COLLEGE OF THE CANYONS,VALENCIA,CA +0229,COLLEGE OF THE DESERT,PALM DESERT,CA +0245,COLLEGE OF THE REDWOODS,EUREKA,CA +0246,COLLEGE OF THE SEQUOIAS,VISALIA,CA +0247,COLLEGE OF THE SISKIYOUS,WEED,CA +0249,COLUMBIA COLLEGE,COLUMBIA,CA +0248,COMPTON COMMUNITY COLLEGE,COMPTON,CA +0227,CONCORDIA UNIVERSITY,IRVINE,CA +0250,CONTRA COSTA COLLEGE,SAN PABLO,CA +0242,COSUMNES RIVER COLLEGE,SACRAMENTO,CA +0275,CRAFTON HILLS COLLEGE,YUCAIPA,CA +0415,CUESTA COLLEGE,SAN LUIS OBISPO,CA +0217,CUYAMACA COLLEGE,EL CAJON,CA +0251,CYPRESS COLLEGE,CYPRESS,CA +0253,DE ANZA COLLEGE,CUPERTINO,CA +0259,DEFENSE LANGUAGE INSTITUTE,MONTEREY,CA +0261,DEVRY INSTITUTE OF TECHNOLOGY,POMONA,CA +0254,DIABLO VALLEY COLLEGE,PLEASANT HILL,CA +0256,DOMINICAN COLLEGE OF SAN RAFAEL,SAN RAFAEL,CA +0381,DOMINICAN SCH PHILOSOPHY & THEOLOGY,BERKELEY,CA +0257,DON BOSCO TECHNICAL INSTITUTE,ROSEMEAD,CA +0255,D-Q UNIVERSITY,DAVIS,CA +0258,EAST LOS ANGELES COLLEGE,MONTEREY PARK,CA +0260,EL CAMINO COLLEGE,TORRANCE,CA +0234,EVERGREEN VALLEY COLLEGE,SAN JOSE,CA +0235,FASHION INST OF DESIGN & MERCHANDISING,LOS ANGELES,CA +0267,FEATHER RIVER COLLEGE,QUINCY,CA +0263,FOOTHILL COLLEGE,LOS ALTOS HILLS,CA +0264,FRESNO CITY COLLEGE,FRESNO,CA +0357,FRESNO PACIFIC COLLEGE,FRESNO,CA +0271,FULLER THEOLOGICAL SEMINARY,PASADENA,CA +0270,FULLERTON COLLEGE,FULLERTON,CA +0390,GAVILAN COLLEGE,GILROY,CA +0274,GLENDALE COMMUNITY COLLEGE,GLENDALE,CA +0278,GOLDEN GATE UNIVERSITY,SAN FRANCISCO,CA +0277,GOLDEN WEST COLLEGE,HUNTINGTON BEACH,CA +0279,GROSSMONT COLLEGE,EL CAJON,CA +0280,HARTNELL COLLEGE,SALINAS,CA +0282,HARVEY MUDD COLLEGE,CLAREMONT,CA +0285,HEALD BUSINESS COLLEGE,SAN FRANCISCO,CA +0283,HEALD INSTITUTE OF TECHNOLOGY,SAN FRANCISCO,CA +0284,HEBREW UNION COLLEGE,LOS ANGELES,CA +0230,HOLY NAMES COLLEGE,OAKLAND,CA +0286,HUMBOLDT STATE UNIVERSITY,ARCATA,CA +0288,HUMPHREYS COLLEGE,STOCKTON,CA +0292,IMPERIAL VALLEY COLLEGE,IMPERIAL,CA +0289,INDIAN VALLEY COLLEGES,NOVATO,CA +0290,IRVINE VALLEY COLLEGE,IRVINE,CA +0291,JOHN F KENNEDY UNIVERSITY,ORINDA,CA +0376,KINGS RIVER COMMUNITY COLLEGE,REEDLEY,CA +0294,LA SIERRA UNIVERSITY,RIVERSIDE,CA +0308,LAKE TAHOE COMMUNITY COLLEGE,SOUTH LAKE TAHOE,CA +0301,LOMA LINDA UNIVERSITY,LOMA LINDA,CA +0300,LONG BEACH CITY COLLEGE,LONG BEACH,CA +0303,LOS ANGELES BAPTIST COLLEGE,NEWHALL,CA +0304,LOS ANGELES CITY COLLEGE,LOS ANGELES,CA +0312,LOS ANGELES HARBOR COLLEGE,WILMINGTON,CA +0313,LOS ANGELES METROPOLITAN COLLEGE,LOS ANGELES,CA +0314,LOS ANGELES MISSION COLLEGE,SAN FERNANDO,CA +0318,LOS ANGELES PIERCE COLLEGE,WOODLAND HILLS,CA +0319,LOS ANGELES SOUTHWEST COLLEGE,LOS ANGELES,CA +0322,LOS ANGELES TRADE-TECH COLLEGE,LOS ANGELES,CA +0324,LOS ANGELES VALLEY COLLEGE,VAN NUYS,CA +0325,LOS MEDANOS COLLEGE,PITTSBURG,CA +0326,LOYOLA MARYMOUNT UNIVERSITY,LOS ANGELES,CA +0316,MARYMOUNT PALOS VERDES COLLEGE,RANCHO PALOS VERDES,CA +0273,MENDOCINO COLLEGE,UKIAH,CA +0330,MENLO COLLEGE,ATHERTON,CA +0333,MERCED COLLEGE,MERCED,CA +0348,MERRITT COLLEGE,OAKLAND,CA +0332,MILLS COLLEGE,OAKLAND,CA +0352,MIRACOSTA COLLEGE,OCEANSIDE,CA +0323,MISSION COLLEGE,SANTA CLARA,CA +0334,MODESTO JUNIOR COLLEGE,MODESTO,CA +0339,MONTEREY INST OF INTERNATIONAL STUDIES,MONTEREY,CA +0336,MONTEREY PENINSULA COLLEGE,MONTEREY,CA +0335,MOORPARK COLLEGE,MOORPARK,CA +0340,MOUNT SAN ANTONIO COLLEGE,WALNUT,CA +0341,MOUNT SAN JACINTO COLLEGE,SAN JACINTO,CA +0338,MOUNT ST MARY'S COLLEGE,LOS ANGELES,CA +0342,NAPA VALLEY COLLEGE,NAPA,CA +0344,NATIONAL UNIVERSITY,SAN DIEGO,CA +0345,NAVAL POSTGRADUATE SCHOOL,MONTEREY,CA +0353,NEW COLLEGE OF CALIFORNIA,SAN FRANCISCO,CA +0346,NORTHROP UNIVERSITY,INGLEWOOD,CA +0350,OCCIDENTAL COLLEGE,LOS ANGELES,CA +0265,OHLONE COLLEGE,FREMONT,CA +0354,ORANGE COAST COLLEGE,COSTA MESA,CA +0359,OTIS ART INSTITUTE OF PARSONS SCH DESGN,LOS ANGELES,CA +0358,OXNARD COLLEGE,OXNARD,CA +0356,PACIFIC CHRISTIAN COLLEGE,FULLERTON,CA +0360,PACIFIC OAKS COLLEGE & CHILDREN'S SCHOOL,PASADENA,CA +0361,PACIFIC STATES UNIVERSITY,LOS ANGELES,CA +0362,PACIFIC UNION COLLEGE,ANGWIN,CA +0364,PALO VERDE COLLEGE,BLYTHE,CA +0366,PALOMAR COLLEGE,SAN MARCOS,CA +0368,PASADENA CITY COLLEGE,PASADENA,CA +0373,PEPPERDINE UNIVERSITY AT MALIBU,MALIBU,CA +0375,PERALTA COLLEGE,OAKLAND,CA +0363,PITZER COLLEGE,CLAREMONT,CA +0370,POINT LOMA NAZARENE COLLEGE,SAN DIEGO,CA +0372,POMONA COLLEGE,CLAREMONT,CA +0374,PORTERVILLE COLLEGE,PORTERVILLE,CA +0416,RANCHO SANTIAGO COLLEGE,SANTA ANA,CA +0379,RIO HONDO COLLEGE,WHITTIER,CA +0378,RIVERSIDE COMMUNITY COLLEGE,RIVERSIDE,CA +0380,SACRAMENTO CITY COLLEGE,SACRAMENTO,CA +0383,SADDLEBACK COLLEGE,MISSION VIEJO,CA +0412,SAMUEL MERRITT COLLEGE OF NURSING,OAKLAND,CA +0392,SAN BERNARDINO VALLEY COLLEGE,SAN BERNARDINO,CA +0396,SAN DIEGO CITY COLLEGE,SAN DIEGO,CA +0337,SAN DIEGO MESA COLLEGE,SAN DIEGO,CA +0331,SAN DIEGO MIRAMAR COLLEGE,SAN DIEGO,CA +0398,SAN DIEGO STATE UNIVERSITY,SAN DIEGO,CA +0186,SAN FRANCISCO ART INSTITUTE,SAN FRANCISCO,CA +0405,SAN FRANCISCO COLLEGE-MORTUARY SCIENCE,SAN FRANCISCO,CA +0403,SAN FRANCISCO CONSERVATORY OF MUSIC,SAN FRANCISCO,CA +0404,SAN FRANCISCO STATE UNIVERSITY,SAN FRANCISCO,CA +0433,SAN JOAQUIN COLLEGE OF LAW,FRESNO,CA +0436,SAN JOAQUIN DELTA COLLEGE,STOCKTON,CA +0417,SAN JOSE BIBLE COLLEGE,SAN JOSE,CA +0408,SAN JOSE CITY COLLEGE,SAN JOSE,CA +0410,SAN JOSE STATE UNIVERSITY,SAN JOSE,CA +0418,SANTA BARBARA CITY COLLEGE,SANTA BARBARA,CA +0421,SANTA CLARA UNIVERSITY,SANTA CLARA,CA +0420,SANTA MONICA COLLEGE,SANTA MONICA,CA +0422,SANTA ROSA JUNIOR COLLEGE,SANTA ROSA,CA +0426,SCRIPPS COLLEGE,CLAREMONT,CA +0428,SHASTA COLLEGE,REDDING,CA +0429,SIERRA COLLEGE,ROCKLIN,CA +0430,SIMPSON COLLEGE,SAN FRANCISCO,CA +0440,SKYLINE COLLEGE,SAN BRUNO,CA +0474,SOLANO COMMUNITY COLLEGE,SUISUN CITY,CA +0431,SONOMA STATE UNIVERSITY,ROHNERT PARK,CA +0432,SOUTHERN CALIFORNIA COLLEGE,COSTA MESA,CA +0437,SOUTHWESTERN COLLEGE,CHULA VISTA,CA +0384,ST JOHN'S COLLEGE,CAMARILLO,CA +0388,ST JOSEPH'S COLLEGE,MOUNTAIN VIEW,CA +0386,ST MARY'S COLLEGE OF CALIFORNIA,MORAGA,CA +0434,STANFORD UNIVERSITY,STANFORD,CA +0438,TAFT COLLEGE,TAFT,CA +0424,THE MASTERS COLLEGE,NEWHALL,CA +0425,THOMAS AQUINAS COLLEGE,SANTA PAULA,CA +0443,U S INTERNATIONAL UNIVERSITY,SAN DIEGO,CA +0452,UNIV OF CALIFORNIA-SANTA BARBARA,SANTA BARBARA,CA +0444,UNIVERSITY OF CALIFORNIA-BERKELEY,BERKELEY,CA +0454,UNIVERSITY OF CALIFORNIA-DAVIS,DAVIS,CA +0446,UNIVERSITY OF CALIFORNIA-IRVINE,IRVINE,CA +0448,UNIVERSITY OF CALIFORNIA-LOS ANGELES,LOS ANGELES,CA +0456,UNIVERSITY OF CALIFORNIA-RIVERSIDE,RIVERSIDE,CA +0459,UNIVERSITY OF CALIFORNIA-SAN DIEGO,LA JOLLA,CA +0460,UNIVERSITY OF CALIFORNIA-SANTA CRUZ,SANTA CRUZ,CA +0442,UNIVERSITY OF CENTRAL CALIFORNIA,SACRAMENTO,CA +0462,UNIVERSITY OF JUDAISM/LEE COLLEGE,LOS ANGELES,CA +0295,UNIVERSITY OF LA VERNE,LA VERNE,CA +0464,UNIVERSITY OF REDLANDS,REDLANDS,CA +0394,UNIVERSITY OF SAN DIEGO,SAN DIEGO,CA +0466,UNIVERSITY OF SAN FRANCISCO,SAN FRANCISCO,CA +0468,UNIVERSITY OF SANTA CLARA,SANTA CLARA,CA +0470,UNIVERSITY OF SOUTHERN CALIFORNIA,LOS ANGELES,CA +0240,UNIVERSITY OF THE PACIFIC,STOCKTON,CA +0449,UNIVERSITY OF WEST L A SCHOOL OF LAW,CULVER CITY,CA +0476,VENTURA COLLEGE,VENTURA,CA +0475,VICTOR VALLEY COLLEGE,VICTORVILLE,CA +0174,VISTA COLLEGE,BERKELEY,CA +0472,WEST COAST CHRISTIAN COLLEGE,FRESNO,CA +0484,WEST COAST UNIVERSITY,LOS ANGELES,CA +0226,WEST HILLS COLLEGE,COALINGA,CA +0483,WEST LOS ANGELES COLLEGE,CULVER CITY,CA +0479,WEST VALLEY COLLEGE,SARATOGA,CA +0262,WESTERN STATES COLLEGE OF ENGINEERING,INGLEWOOD,CA +0478,WESTMONT COLLEGE,SANTA BARBARA,CA +0480,WHITTIER COLLEGE,WHITTIER,CA +0481,WOODBURY UNIVERSITY,BURBANK,CA +0487,WORLD COLLEGE WEST,PETALUMA,CA +0482,YUBA COLLEGE,MARYSVILLE,CA +0496,ADAMS STATE COLLEGE,ALAMOSA,CO +0505,AIMS COMMUNITY COLLEGE,GREELEY,CO +0497,ARAPAHOE COMMUNITY COLLEGE,LITTLETON,CO +0513,BETH-EL SCHOOL OF NURSING MEMORIAL HOSP,COLORADO SPRINGS,CO +0553,CHERRY CREEK BAPTIST COLLEGE,ENGLEWOOD,CO +0541,CIBAR SYSTEMS INSTITUTE,COLORADO SPRINGS,CO +0543,COLORADO CHRISTIAN UNIVERSITY,LAKEWOOD,CO +0498,COLORADO COLLEGE,COLORADO SPRINGS,CO +0499,COLORADO MOUNTAIN COLL-ALPINE CAMPUS,STEAMBOAT SPRINGS,CO +0501,COLORADO MOUNTAIN COLL-SPRG VALLEY CAMP,GLENWOOD SPRINGS,CO +0503,COLORADO MOUNTAIN COLL-TIMBERLINE CAMP,LEADVILLE,CO +0525,COLORADO NORTHWESTERN COMMUNITY COLLEGE,RANGELY,CO +0500,COLORADO SCHOOL OF MINES,GOLDEN,CO +0504,COLORADO STATE UNIVERSITY,FORT COLLINS,CO +0515,COLORADO TECHNICAL UNIVERSITY,COLORADO SPRINGS,CO +0512,COMMUNITY COLLEGE OF AURORA,AURORA,CO +0511,COMMUNITY COLLEGE OF DENVER,DENVER,CO +0537,DENVER BAPTIST BIBLE COLLEGE,BROOMFIELD,CO +0510,FORT LEWIS COLLEGE,DURANGO,CO +0507,FRONT RANGE COMMUNITY COLLEGE,WESTMINSTER,CO +0521,INTERIOR DESIGN INSTITUTE OF DENVER,DENVER,CO +0517,INTERMOUNTAIN BIBLE COLLEGE,GRAND JUNCTION,CO +0514,LAMAR COMMUNITY COLLEGE,LAMAR,CO +0516,LORETTO HEIGHTS COLLEGE,DENVER,CO +0518,MESA STATE COLLEGE,GRAND JUNCTION,CO +0519,METROPOLITAN STATE COLLEGE OF DENVER,DENVER,CO +0544,MORGAN COMMUNITY COLLEGE,FORT MORGAN,CO +0545,NATIONAL AMERICAN UNIVERSITY,DENVER,CO +0546,NATIONAL TECHNOLOGICAL UNIVERSITY,FORT COLLINS,CO +0547,NAZARENE BIBLE COLLEGE,COLORADO SPRINGS,CO +0520,NORTHEASTERN JUNIOR COLLEGE,STERLING,CO +0522,OTERO JUNIOR COLLEGE,LA JUNTA,CO +0531,PARKS COLLEGE,DENVER,CO +0509,PIKES PEAK COMMUNITY COLLEGE,COLORADO SPRINGS,CO +0540,PRESBYTERIAN-ST LUKES SCHOOL OF NURSING,DENVER,CO +0492,PUEBLO COMMUNITY COLLEGE,PUEBLO,CO +0508,RED ROCKS COMMUNITY COLLEGE,GOLDEN,CO +0526,REGIS COLLEGE,DENVER,CO +0523,ROCKMONT COLLEGE,DENVER,CO +0527,ROCKY MOUNTAIN BIOLOGICAL LABORATORY,CRESTED BUTTE,CO +0528,TRINIDAD STATE JUNIOR COLLEGE,TRINIDAD,CO +0529,U COLORADO HEALTH SCI CTR SCH/DENTISTRY,DENVER,CO +0530,U S AIR FORCE ACADEMY,US AIR FORCE ACADEMY,CO +0535,UNIV OF COLORADO-COLORADO SPRINGS,COLORADO SPRINGS,CO +0532,UNIVERSITY OF COLORADO-BOULDER,BOULDER,CO +0533,UNIVERSITY OF COLORADO-DENVER,DENVER,CO +0534,UNIVERSITY OF DENVER,DENVER,CO +0502,UNIVERSITY OF NORTHERN COLORADO,GREELEY,CO +0524,UNIVERSITY OF SOUTHERN COLORADO,PUEBLO,CO +0542,WESTERN BIBLE COLLEGE,MORRISON,CO +0536,WESTERN STATE COLLEGE OF COLORADO,GUNNISON,CO +0549,ALBERTUS MAGNUS COLLEGE,NEW HAVEN,CT +0581,ANNHURST COLLEGE,SOUTH WOODSTOCK,CT +0583,ASNUNTUCK COMMUNITY-TECHNICAL COLLEGE,ENFIELD,CT +0551,BRIARWOOD COLLEGE,SOUTHINGTON,CT +0567,CAPITAL COMMUNITY COLLEGE,HARTFORD,CT +0596,CENTRAL CONNECTICUT STATE UNIVERSITY,NEW BRITAIN,CT +0550,CHARTER OAK STATE COLLEGE,NEWINGTON,CT +0556,CONNECTICUT COLLEGE,NEW LONDON,CT +0616,EASTERN CONNECTICUT STATE UNIVERSITY,WILLIMANTIC,CT +0560,FAIRFIELD UNIVERSITY,FAIRFIELD,CT +0590,GATEWAY COMMUNITY TECHNICAL COLLEGE,NEW HAVEN,CT +0561,GREATER HARTFORD COMMUNITY COLLEGE,HARTFORD,CT +0568,HARTFORD COLLEGE FOR WOMEN,HARTFORD,CT +0563,HOUSATONIC COMMUNITY COLLEGE,BRIDGEPORT,CT +0555,KATHARINE GIBBS SCHOOL,NORWALK,CT +0569,MANCHESTER COMMUNITY-TECHNICAL COLLEGE,MANCHESTER,CT +0584,MIDDLESEX COMMUNITY COLLEGE,MIDDLETOWN,CT +0572,MITCHELL COLLEGE,NEW LONDON,CT +0574,MT SACRED HEART COLLEGE,HAMDEN,CT +0570,NAGATUCK VALLEY COMM-TECHNICAL COLLEGE,WATERBURY,CT +0578,NORTHWESTERN CONNECTICUT COMM COLLEGE,WINSTED,CT +0577,NORWALK COMMUNITY-TECHNICAL COLLEGE,NORWALK,CT +0580,POST COLLEGE,WATERBURY,CT +0554,QUINEBAUG VALLEY COMMUNITY COLLEGE,DANIELSON,CT +0582,QUINNIPIAC COLLEGE,HAMDEN,CT +0589,SACRED HEART UNIVERSITY,BRIDGEPORT,CT +0593,SOUTHERN CONNECTICUT STATE UNIVERSITY,NEW HAVEN,CT +0595,THREE RIVER COMMUNITY-TECHNICAL COLLEGE,NORWICH,CT +0598,TRINITY COLLEGE,HARTFORD,CT +0608,TUNXIS COMMUNITY COLLEGE,FARMINGTON,CT +0600,U S COAST GUARD ACADEMY,NEW LONDON,CT +0602,UNIVERSITY OF BRIDGEPORT,BRIDGEPORT,CT +0604,UNIVERSITY OF CONNECTICUT,STORRS,CT +0606,UNIVERSITY OF HARTFORD,WEST HARTFORD,CT +0576,UNIVERSITY OF NEW HAVEN,WEST HAVEN,CT +0579,WATERBURY STATE TECHNICAL COLLEGE,WATERBURY,CT +0614,WESLEYAN UNIVERSITY,MIDDLETOWN,CT +0558,WESTERN CONNECTICUT STATE UNIVERSITY,DANBURY,CT +0623,YALE PHYSICIAN ASSOCIATE PROGRAM,NEW HAVEN,CT +0618,YALE UNIVERSITY,NEW HAVEN,CT +0648,AMERICAN UNIVERSITY,WASHINGTON,DC +0654,CATHOLIC UNIVERSITY OF AMERICA,WASHINGTON,DC +0657,DEFENSE INTELLIGENCE SCHOOL,WASHINGTON,DC +0662,GALLAUDET COLLEGE,WASHINGTON,DC +0664,"GEORGE WASHINGTON UNIVERSITY, THE",WASHINGTON,DC +0668,GEORGETOWN UNIVERSITY,WASHINGTON,DC +0674,HOWARD UNIVERSITY,WASHINGTON,DC +4107,MILITARY PHYSICIAN ASSISTANT PROGRAM,WASHINGTON,DC +0660,MIU COLLEGE OF NATURAL LAW,WASHINGTON,DC +0680,MODERN SCHOOL OF MUSIC,WASHINGTON,DC +0682,MOUNT VERNON COLLEGE,WASHINGTON,DC +0689,NATIONAL JOB CORP,WASHINGTON,DC +0692,SOUTHEASTERN UNIVERSITY,WASHINGTON,DC +0694,STRAYER COLLEGE,WASHINGTON,DC +0696,TRINITY COLLEGE,WASHINGTON,DC +0695,UNIV OF THE DISTRICT OF COLUMBIA,WASHINGTON,DC +0629,BRANDYWINE COLLEGE OF WIDENER UNIV,WILMINGTON,DE +0630,DELAWARE STATE UNIVERSITY,DOVER,DE +0631,DELAWARE TECH & COMM COLL-SOUTHERN CAMP,GEORGETOWN,DE +0633,DELAWARE TECH & COMM COLL-STANTON CAMPUS,NEWARK,DE +0637,DELAWARE TECH & COMM COLL-TERRY CAMPUS,DOVER,DE +0632,GOLDEY BEACOM COLLEGE,WILMINGTON,DE +0634,UNIVERSITY OF DELAWARE,NEWARK,DE +0636,WESLEY COLLEGE,DOVER,DE +0635,WILMINGTON COLLEGE,NEW CASTLE,DE +0718,BARRY UNIVERSITY,MIAMI,FL +0720,BETHUNE-COOKMAN COLLEGE,DAYTONA BEACH,FL +0769,BREVARD COMMUNITY COLLEGE,COCOA,FL +0768,BROWARD COMMUNITY COLLEGE,FORT LAUDERDALE,FL +0708,BROWARD COMMUNITY COLLEGE-HOLLYWOOD,FORT LAUDERDALE,FL +0699,BROWARD COMMUNITY COLLEGE-POMPANO BEACH,FORT LAUDERDALE,FL +0742,CENTRAL FLORIDA BIBLE COLLEGE,ORLANDO,FL +0721,CENTRAL FLORIDA COMMUNITY COLLEGE,OCALA,FL +0722,CHIPOLA JUNIOR COLLEGE,MARIANNA,FL +0715,CLEARWATER CHRISTIAN COLLEGE,CLEARWATER,FL +0706,COLLEGE OF BOCA RATON,BOCA RATON,FL +0763,COLLEGE OF THE PALM BEACHES,WEST PALM BEACH,FL +0723,DAYTONA BEACH COMMUNITY COLLEGE,DAYTONA BEACH,FL +0731,ECKERD COLLEGE,ST PETERSBURG,FL +0727,EDISON COMMUNITY COLLEGE,FORT MYERS,FL +0724,EDWARD WATERS COLLEGE,JACKSONVILLE,FL +0725,EMBRY-RIDDLE AERONAUTICAL UNIV,DAYTONA BEACH,FL +0772,FLAGLER COLLEGE,ST AUGUSTINE,FL +0726,FLORIDA A&M UNIVERSITY,TALLAHASSEE,FL +0729,FLORIDA ATLANTIC UNIVERSITY,BOCA RATON,FL +0712,FLORIDA BAPTIST COLLEGE,LAKELAND,FL +0702,FLORIDA BIBLE COLLEGE,KISSIMMEE,FL +0728,FLORIDA COLLEGE,TEMPLE TERRACE,FL +0717,FLORIDA COMMUNITY COLLEGE,JACKSONVILLE,FL +0795,FLORIDA GULF COAST UNIVERSITY,FT MYERS,FL +0700,FLORIDA INSTITUTE OF TECH-JENSEN BEACH,JENSEN BEACH,FL +0716,FLORIDA INSTITUTE OF TECH-MELBOURNE,MELBOURNE,FL +0776,FLORIDA INTERNATIONAL UNIVERSITY,MIAMI,FL +0747,FLORIDA KEYS COMMUNITY COLLEGE,KEY WEST,FL +0730,FLORIDA MEMORIAL COLLEGE,MIAMI,FL +0732,FLORIDA SOUTHERN COLLEGE,LAKELAND,FL +0734,FLORIDA STATE UNIVERSITY,TALLAHASSEE,FL +0775,FORT LAUDERDALE COLLEGE,FT LAUDERDALE,FL +0738,GULF COAST COMMUNITY COLLEGE,PANAMA CITY,FL +0703,HERITAGE COLLEGE,ORLANDO,FL +0704,HILLSBOROUGH COMMUNITY COLLEGE,TAMPA,FL +0774,INDIAN RIVER COMMUNITY COLLEGE,FORT PIERCE,FL +0701,INTERNATIONAL FINE ARTS COLLEGE,MIAMI,FL +0740,JACKSONVILLE UNIVERSITY,JACKSONVILLE,FL +0765,JONES COLLEGE,JACKSONVILLE,FL +0766,LAKE CITY COMMUNITY COLLEGE,LAKE CITY,FL +0737,LAKE-SUMTER COMMUNITY COLLEGE,LEESBURG,FL +0751,LANDMARK BAPTIST COLLEGE,HAINES CITY,FL +0761,LYNN UNIVERSITY,BOCA RATON,FL +0741,MANATEE COMMUNITY COLLEGE,BRADENTON,FL +0749,MIAMI CHRISTIAN COLLEGE,MIAMI,FL +0770,MIAMI-DADE COMMUNITY COLLEGE,MIAMI,FL +0750,NEW COLL OF THE UNIV OF SOUTH FLORIDA,SARASOTA,FL +0743,NORTH FLORIDA JUNIOR COLLEGE,MADISON,FL +0764,NOVA SOUTHEASTERN UNIVERSITY,FT LAUDERDALE,FL +0745,OKALOOSA-WALTON JUNIOR COLLEGE,NICEVILLE,FL +0767,ORLANDO COLLEGE,ORLANDO,FL +0739,PALM BEACH ATLANTIC COLLEGE,WEST PALM BEACH,FL +0744,PALM BEACH COMMUNITY COLLEGE,LAKE WORTH,FL +3021,PASCO-HERNANDO COMMUNITY COLLEGE,DADE CITY,FL +0707,PENSACOLA CHRISTIAN COLLEGE,PENSACOLA,FL +0746,PENSACOLA JUNIOR COLLEGE,PENSACOLA,FL +0757,POLK COMMUNITY COLLEGE,WINTER HAVEN,FL +4981,PROSPECT HALL COLLEGE,HOLLYWOOD,FL +0748,ROLLINS COLLEGE,WINTER PARK,FL +0778,SANTA FE COMMUNITY COLLEGE,GAINESVILLE,FL +0787,SANTA ROSA CHRISTIAN COLLEGE,MILTON,FL +0779,SEMINOLE COMMUNITY COLLEGE,SANFORD,FL +0759,SOUTH FLORIDA COMMUNITY COLLEGE,AVON PARK,FL +0754,SOUTHEASTERN COLL OF ASSEMBLIES OF GOD,LAKELAND,FL +0679,SPURGEON BAPTIST BIBLE COLLEGE,MULBERRY,FL +0753,ST JOHN'S RIVER COMMUNITY COLLEGE,PALATKA,FL +0755,ST LEO COLLEGE,SAINT LEO,FL +0791,ST PETERSBURG JR COLLEGE-CLEARWATER,ST PETERSBURG,FL +0752,ST PETERSBURG JR COLLEGE-ST PETERSBURG,ST PETERSBURG,FL +0793,ST PETERSBURG JR COLLEGE-TARPON SPRINGS,ST PETERSBURG,FL +0719,ST THOMAS UNIVERSITY,MIAMI,FL +0756,STETSON UNIVERSITY,DE LAND,FL +0714,SUWANNEE-HAMILTON AREA VOC-TECH CENTER,LIVE OAK,FL +0713,TALLAHASSEE COMMUNITY COLLEGE,TALLAHASSEE,FL +5147,TAMPA COLLEGE,TAMPA,FL +4876,TRINITY COLLEGE,DUNEDIN,FL +0735,UNIVERSITY OF CENTRAL FLORIDA,ORLANDO,FL +0758,UNIVERSITY OF FLORIDA,GAINESVILLE,FL +0760,UNIVERSITY OF MIAMI,CORAL GABLES,FL +0711,UNIVERSITY OF NORTH FLORIDA,JACKSONVILLE,FL +0733,UNIVERSITY OF SOUTH FLORIDA,TAMPA,FL +0762,UNIVERSITY OF TAMPA,TAMPA,FL +0771,UNIVERSITY OF WEST FLORIDA,PENSACOLA,FL +0736,VALENCIA COMMUNITY COLLEGE,ORLANDO,FL +0777,WARNER SOUTHERN COLLEGE,LAKE WALES,FL +0773,WEBBER COLLEGE,BABSON PARK,FL +0781,ABRAHAM BALDWIN AGRICULTURAL COLLEGE,TIFTON,GA +0780,AGNES SCOTT COLLEGE,DECATUR,GA +0782,ALBANY STATE COLLEGE,ALBANY,GA +0788,AMERICAN COLL FOR APPLIED ARTS,ALTANTA,GA +0784,ANDREW COLLEGE,CUTHBERT,GA +0786,ARMSTRONG ATLANTIC STATE UNIVERSITY,SAVANNAH,GA +0789,ART INSTITUTE OF ATLANTA,ATLANTA,GA +0785,ATLANTA CHRISTIAN COLLEGE,EAST POINT,GA +0829,ATLANTA COLLEGE OF ART,ATLANTA,GA +0831,ATLANTA METROPOLITAN COLLEGE,ATLANTA,GA +0790,ATLANTA UNIVERSITY,ATLANTA,GA +0796,AUGUSTA STATE UNIVERSITY,AUGUSTA,GA +0797,BAINBRIDGE JUNIOR COLLEGE,BAINBRIDGE,GA +0709,BAPTIST UNIVERSITY OF AMERICA,DECATUR,GA +0710,BAUDER FASHION COLLEGE,ATLANTA,GA +0798,BERRY COLLEGE,MOUNT BERRY,GA +0800,BRENAU UNIVERSITY,GAINESVILLE,GA +0801,BREWTON-PARKER COLLEGE,MT VERNON,GA +0802,BRUNSWICK JUNIOR COLLEGE,BRUNSWICK,GA +0804,CLARK ATLANTA UNIVERSITY,ATLANTA,GA +0803,CLAYTON STATE COLLEGE,MORROW,GA +0807,COLUMBUS COLLEGE,COLUMBUS,GA +3951,COVENANT COLLEGE,LOOKOUT MOUNTAIN,GA +0809,DALTON JUNIOR COLLEGE,DALTON,GA +0783,DARTON COLLEGE,ALBANY,GA +0813,EAST GEORGIA COLLEGE,SWAINSBORO,GA +0808,EMMANUEL COLLEGE,FRANKLIN SPRINGS,GA +0810,EMORY UNIVERSITY,ATLANTA,GA +0811,FLOYD COLLEGE,ROME,GA +0814,FORT VALLEY STATE COLLEGE,FORT VALLEY,GA +0815,GAINESVILLE COLLEGE,GAINESVILLE,GA +0821,GEORGIA BAPTIST COLLEGE,FAIRBURN,GA +0828,GEORGIA COLLEGE AT MILLEDGEVILLE,MILLEDGEVILLE,GA +0818,GEORGIA INSTITUTE OF TECHNOLOGY,ATLANTA,GA +0822,GEORGIA MILITARY COLLEGE,MILLEDGEVILLE,GA +0806,GEORGIA PERIMETER COLLEGE,CLARKSTON,GA +0830,GEORGIA SOUTHERN UNIVERSITY,STATESBORO,GA +0824,GEORGIA SOUTHWESTERN COLLEGE,AMERICUS,GA +0826,GEORGIA STATE UNIVERSITY,ATLANTA,GA +0832,GORDON JUNIOR COLLEGE,BARNESVILLE,GA +0835,INSTITUTE OF PAPER SCIENCE & TECHNOLOGY,ATLANTA,GA +0833,KENNESAW STATE UNIVERSITY,MARIETTA,GA +0834,LAGRANGE COLLEGE,LAGRANGE,GA +0837,MACON JUNIOR COLLEGE,MACON,GA +0817,MASSEY BUSINESS COLLEGE,ATLANTA,GA +0836,MEDICAL COLLEGE OF GEORGIA,AUGUSTA,GA +0864,MERCER UNIVERSITY SCHOOL OF PHARMACY,ATLANTA,GA +0846,MERCER UNIVERSITY-ATLANTA,ATLANTA,GA +0838,MERCER UNIVERSITY-MACON,MACON,GA +0840,MIDDLE GEORGIA COLLEGE,COCHRAN,GA +0792,MOREHOUSE COLLEGE,ATLANTA,GA +0844,MORRIS BROWN COLLEGE,ATLANTA,GA +0848,NORTH GEORGIA COLLEGE,DAHLONEGA,GA +0850,OGLETHORPE UNIVERSITY,ATLANTA,GA +0851,OXFORD COLLEGE OF EMORY UNIVERSITY,OXFORD,GA +0852,PAINE COLLEGE,AUGUSTA,GA +0853,PIEDMONT COLLEGE,DEMOREST,GA +0856,REINHARDT COLLEGE,WALESKA,GA +0855,"SAVANNAH COLLEGE OF ART & DESIGN, THE",SAVANNAH,GA +0858,SAVANNAH STATE UNIVERSITY,SAVANNAH,GA +0854,SAVANNAH TECHNICAL INSTITUTE,SAVANNAH,GA +0860,SHORTER COLLEGE,ROME,GA +0862,SOUTH GEORGIA COLLEGE,DOUGLAS,GA +0865,SOUTHERN COLLEGE OF TECHNOLOGY,MARIETTA,GA +0794,SPELMAN COLLEGE,ATLANTA,GA +0878,STATE UNIVERSITY OF WEST GEORGIA,CARROLLTON,GA +0866,TIFT COLLEGE,FORSYTH,GA +0868,TOCCOA FALLS COLLEGE,TOCCOA FALLS,GA +0870,TRUETT-MCCONNELL COLLEGE,CLEVELAND,GA +0872,UNIVERSITY OF GEORGIA,ATHENS,GA +0874,VALDOSTA STATE COLLEGE,VALDOSTA,GA +0875,WAYCROSS COLLEGE,WAYCROSS,GA +0876,WESLEYAN COLLEGE,MACON,GA +0880,YOUNG HARRIS COLLEGE,YOUNG HARRIS,GA +0899,BRIGHAM YOUNG UNIVERSITY-HAWAII CAMPUS,LAIE,HI +0898,CHAMINADE UNIVERSITY OF HONOLULU,HONOLULU,HI +0904,HAWAII COMMUNITY COLLEGE,HILO,HI +0903,HAWAII LOA COLLEGE,KANEOHE,HI +0900,HAWAII PACIFIC COLLEGE,HONOLULU,HI +0905,HONOLULU COMMUNITY COLLEGE,HONOLULU,HI +0911,KANSAI GAIDAI HAWAII COLLEGE,HONOLULU,HI +0906,KAPIOLANI COMMUNITY COLLEGE,HONOLULU,HI +0907,KAUAI COMMUNITY COLLEGE,LIHUE,HI +0908,LEEWARD COMMUNITY COLLEGE,PEARL CITY,HI +0909,MAUI COMMUNITY COLLEGE,KAHULUI,HI +0902,UNIVERSITY OF HAWAII AT MANOA,HONOLULU,HI +0901,UNIVERSITY OF HAWAII-HILO,HILO,HI +0910,WINDWARD COMMUNITY COLLEGE,KANEOHE,HI +1273,ALLEN MEMORIAL HOSP LUTHERAN SCH/NURSING,WATERLOO,IA +1267,AMERICAN INSTITUTE OF BUSINESS,DES MOINES,IA +5184,AMERICAN INSTITUTE OF COMMERCE,BETTENDORF,IA +1376,BIOMED PROJECT AT UNI/PRICE LAB SCHOOL,CEDAR FALLS,IA +1276,BRIAR CLIFF COLLEGE,SIOUX CITY,IA +1278,BUENA VISTA UNIVERSITY,STORM LAKE,IA +1284,CENTRAL COLLEGE,PELLA,IA +1290,CLARKE COLLEGE,DUBUQUE,IA +1292,CLINTON COMMUNITY COLLEGE,CLINTON,IA +1294,COE COLLEGE,CEDAR RAPIDS,IA +1296,CORNELL COLLEGE,MOUNT VERNON,IA +4071,DALLAS THEOLOGICAL SEMINARY,DALLAS,IA +1335,DENISON JOB CORPS,DENISON,IA +1272,DES MOINES AREA COMM COLL-ANKENY,ANKENY,IA +1274,DES MOINES AREA COMM COLL-BOONE,BOONE,IA +1277,DES MOINES AREA COMM COLL-CARROLL,CARROLL,IA +1281,DES MOINES AREA COMM COLL-NEWTON,NEWTON,IA +1279,DES MOINES AREA COMM COLL-URBAN,DES MOINES,IA +1286,DIVINE WORD COLLEGE,EPWORTH,IA +1301,DORDT COLLEGE,SIOUX CENTER,IA +1302,DRAKE UNIVERSITY,DES MOINES,IA +1306,ELLSWORTH COMMUNITY COLLEGE,IOWA FALLS,IA +1311,EMMAUS BIBLE COLLEGE,DUBUQUE,IA +1315,FAITH BAPTIST BIBLE COLLEGE,ANKENY,IA +1313,FINLEY HOSPITAL SCHOOL OF NURSING,DUBUQUE,IA +1314,GRACELAND COLLEGE,LAMONI,IA +1316,GRAND VIEW COLLEGE,DES MOINES,IA +1318,GRINNELL COLLEGE,GRINNELL,IA +1303,HAMILTON COLLEGE-CEDAR RAPIDS,CEDAR RAPIDS,IA +1305,HAMILTON COLLEGE-DES MOINES,DES MOINES,IA +1321,HAMILTON COLLEGE-MASON CITY,MASON CITY,IA +1309,HAWKEYE COMMUNITY COLLEGE,WATERLOO,IA +1282,INDIAN HILLS COMM COLL-CENTERVILLE,CENTERVILLE,IA +1269,INDIAN HILLS COMM COLL-OTTUMWA,OTTUMWA,IA +1304,IOWA CENTRAL COMM COLL-EAGLE GROVE,EAGLE GROVE,IA +1312,IOWA CENTRAL COMM COLL-FORT DODGE,FORT DODGE,IA +1368,IOWA CENTRAL COMM COLL-WEBSTER CTY,WEBSTER CITY,IA +1308,IOWA LAKES COMM COLL-EMMETSBURG,EMMETSBURG,IA +1310,IOWA LAKES COMM COLL-ESTHERVILLE,ESTHERVILLE,IA +1319,IOWA LUTHERAN SCHOOL OF NURSING,DES MOINES,IA +1323,IOWA METHODIST SCHOOL OF NURSING,DES MOINES,IA +1289,IOWA METHODIST SCHOOL/RADIOLOGIC TECH,DES MOINES,IA +1320,IOWA STATE UNIVERSITY,AMES,IA +1324,IOWA WESLEYAN COLLEGE,MOUNT PLEASANT,IA +1288,IOWA WESTERN COMM COLL-CLARINDA,CLARINDA,IA +1327,IOWA WESTERN COMM COLL-CO BLUFFS,COUNCIL BLUFFS,IA +1325,J E M H SCHOOL OF NURSING,COUNCIL BLUFFS,IA +1261,J E M H SCHOOL OF RADIOLOGIC TECHNOLOGY,COUNCIL BLUFFS,IA +1275,KIRKWOOD COMMUNITY COLLEGE,CEDAR RAPIDS,IA +1328,LORAS COLLEGE,DUBUQUE,IA +1330,LUTHER COLLEGE,DECORAH,IA +1317,MAHARISHI UNIVERSITY OF MANAGEMENT,FAIRFIELD,IA +1367,MARIAN HEALTH CTR SCH/RADIOLOGIC TECH,SIOUX CITY,IA +1332,MARSHALLTOWN COMMUNITY COLLEGE,MARSHALLTOWN,IA +1334,MARYCREST INTERNATIONAL UNIVERSITY,DAVENPORT,IA +1347,MERCY COLLEGE OF HEALTH SCIENCES,DES MOINES,IA +1339,MERCY-ST LUKE'S HOSP SCH/RADIOLOGIC TECH,CEDAR RAPIDS,IA +1337,MIDWESTERN COLLEGE,DENISON,IA +1338,MORNINGSIDE COLLEGE,SIOUX CITY,IA +1340,MOUNT MERCY COLLEGE,CEDAR RAPIDS,IA +1342,MOUNT ST CLARE COLLEGE,CLINTON,IA +1344,MUSCATINE COMMUNITY COLLEGE,MUSCATINE,IA +1379,NATIONAL EDUC CENTER-NIT CAMPUS-IOWA,WEST DES MOINES,IA +1336,NORTH IOWA AREA COMMUNITY COLLEGE,MASON CITY,IA +1265,NORTHEAST IOWA COMM COLLEGE-CALMAR,CALMAR,IA +1365,NORTHEAST IOWA COMM COLLEGE-PEOSTA,PEOSTA,IA +1375,NORTHWEST IOWA COMMUNITY COLLEGE,SHELDON,IA +1346,NORTHWESTERN COLLEGE,ORANGE CITY,IA +1366,OPEN BIBLE COLLEGE,DES MOINES,IA +1348,OTTUMWA HEIGHTS COLLEGE,OTTUMWA,IA +1349,PALMER COLLEGE OF CHIROPRACTIC,DAVENPORT,IA +1351,PALMER JUNIOR COLLEGE,DAVENPORT,IA +1350,PARSONS COLLEGE,FAIRFIELD,IA +1264,SCHOITZ MEDICAL CTR SCH/RADIOLOGIC TECH,WATERLOO,IA +1307,SCOTT COMMUNITY COLLEGE,BETTENDORF,IA +1354,SIMPSON COLLEGE,INDIANOLA,IA +1353,SIOUX EMPIRE COLLEGE,HAWARDEN,IA +1280,SOUTHEASTERN COMM COLL-BURLINGTON,WEST BURLINGTON,IA +1326,SOUTHEASTERN COMM COLL-KEOKUK,KEOKUK,IA +1298,SOUTHWESTERN COMMUNITY COLLEGE,CRESTON,IA +1352,ST AMBROSE UNIVERSITY,DAVENPORT,IA +1380,ST ANTHONY SCHOOL OF NURSING,CARROLL,IA +1381,ST FRANCIS SCHOOL OF RADIOLOGIC TECH,WATERLOO,IA +1270,ST JOSEPH MERCY HOSP SCH/RADIOLOGIC TECH,MASON CITY,IA +1357,ST JOSEPH MERCY SCHOOL OF NURSING,SIOUX CITY,IA +1377,ST LUKE'S MEDICAL CENTER SCH OF NURSING,SIOUX CITY,IA +1355,ST LUKE'S SCHOOL OF NURSING,CEDAR RAPIDS,IA +1358,UNIVERSITY OF DUBUQUE,DUBUQUE,IA +1356,UNIVERSITY OF IOWA,IOWA CITY,IA +1322,UNIVERSITY OF NORTHERN IOWA,CEDAR FALLS,IA +1329,UNIVERSITY OF OSTEOPATHIC MEDICINE,DES MOINES,IA +1360,UPPER IOWA UNIVERSITY,FAYETTE,IA +1361,VENNARD COLLEGE,UNIVERSITY PARK,IA +1362,WALDORF COLLEGE,FOREST CITY,IA +1364,WARTBURG COLLEGE,WAVERLY,IA +1369,WESTERN IOWA TECH COMM COLLEGE,SIOUX CITY,IA +1370,WESTMAR UNIVERSITY,LEMARS,IA +1372,WILLIAM PENN COLLEGE,OSKALOOSA,IA +0914,BOISE STATE UNIVERSITY,BOISE,ID +0916,"COLLEGE OF IDAHO, THE",CALDWELL,ID +0915,COLLEGE OF SOUTHERN IDAHO,TWIN FALLS,ID +0919,EAST IDAHO VOCATIONAL TECHNICAL SCHOOL,IDAHO FALLS,ID +0918,IDAHO STATE UNIVERSITY,POCATELLO,ID +0920,LEWIS-CLARK STATE COLLEGE,LEWISTON,ID +0922,NORTH IDAHO COLLEGE,COEUR D'ALENE,ID +0924,NORTHWEST NAZARENE COLLEGE,NAMPA,ID +0926,RICKS COLLEGE,REXBURG,ID +0928,UNIVERSITY OF IDAHO,MOSCOW,ID +0941,AERO-SPACE INSTITUTE,CHICAGO,IL +0944,AMERICAN CONSERVATORY OF MUSIC,CHICAGO,IL +0999,AMERICAN ISLAMIC COLLEGE,CHICAGO,IL +0946,AUGUSTANA COLLEGE,ROCK ISLAND,IL +0949,AUGUSTANA HOSPITAL SCHOOL OF NURSING,CHICAGO,IL +0950,AURORA UNIVERSITY,AURORA,IL +0952,BARAT COLLEGE,LAKE FOREST,IL +0954,BELLEVILLE AREA COLLEGE,BELLEVILLE,IL +1132,BENEDICTINE UNIVERSITY,LISLE,IL +1082,BLACK HAWK COLLEGE,MOLINE,IL +1083,BLACK HAWK COLLEGE-EAST CAMPUS,KEWANEE,IL +0958,BLACKBURN COLLEGE,CARLINVILLE,IL +0956,BLESSING HOSPITAL SCHOOL OF NURSING,QUINCY,IL +0965,BLOOMINGTON-NORMAL SCH OF RADIOGRAPHY,NORMAL,IL +0960,BRADLEY UNIVERSITY,PEORIA,IL +1170,CARL SANDBURG COLLEGE,GALESBURG,IL +0997,CENTRAL ILLINOIS BAPTIST BIBLE INST,LINCOLN,IL +0934,CHICAGO CITY-WIDE COLLEGE,CHICAGO,IL +4711,CHICAGO COLLEGE OF COMMERCE,CHICAGO,IL +0935,CHICAGO NATIONAL COLLEGE OF NAPRAPATHY,CHICAGO,IL +0992,CHICAGO STATE UNIVERSITY,CHICAGO,IL +1103,CHICAGO URBAN SKILLS INSTITUTE,CHICAGO,IL +1003,COLLEGE OF DU PAGE,GLEN ELLYN,IL +1005,COLLEGE OF LAKE COUNTY,GRAYSLAKE,IL +1000,COLLEGE OF ST FRANCIS,JOLIET,IL +1002,COLUMBIA COLLEGE,CHICAGO,IL +1004,CONCORDIA UNIVERSITY,RIVER FOREST,IL +1010,DANVILLE AREA COMMUNITY COLLEGE,DANVILLE,IL +1012,DE PAUL UNIVERSITY,CHICAGO,IL +1023,DEVRY INSTITUTE OF TECHNOLOGY,ADDISON,IL +1014,DEVRY INSTITUTE OF TECHNOLOGY1,EVANSTON,IL +0962,DEVRY INSTITUTE OF TECHNOLOGY3,EVANSTON,IL +0147,DEVRY INSTITUTE OF TECHNOLOGY4,EVANSTON,IL +0194,DEVRY INSTITUTE OF TECHNOLOGY5,EVANSTON,IL +3309,DEVRY INSTITUTE OF TECHNOLOGY7,EVANSTON,IL +2274,DEVRY INSTITUTE OF TECHNOLOGY8,EVANSTON,IL +2558,DEVRY INSTITUTE OF TECHNOLOGY9,EVANSTON,IL +1021,DEVRY INSTITUTE OF TECHNOLOGY-CHICAGO,CHICAGO,IL +1126,DOMINICAN UNIVERSITY,RIVER FOREST,IL +1105,DR WILLIAM M SCHOLL COLL OF PODIATRIC MD,CHICAGO,IL +1016,EASTERN ILLINOIS UNIVERSITY,CHARLESTON,IL +0984,EAST-WEST UNIVERSITY,CHICAGO,IL +1018,ELGIN COMMUNITY COLLEGE,ELGIN,IL +1020,ELMHURST COLLEGE,ELMHURST,IL +1022,EUREKA COLLEGE,EUREKA,IL +1013,EVANGELICAL SCHOOL OF NURSING,OAKLAWN,IL +0998,FELLOWSHIP BAPTIST COLLEGE,EAST PEORIA,IL +0995,FRONTIER COMMUNITY COLLEGE,FAIRFIELD,IL +1030,GEORGE WILLIAMS COLLEGE,DOWNERS GROVE,IL +1031,GOVERNORS STATE UNIVERSITY,UNIVERSITY PARK,IL +1171,GRAHAM HOSPITAL SCHOOL OF NURSING,CANTON,IL +1032,GREENVILLE COLLEGE,GREENVILLE,IL +0975,HAROLD WASHINGTON COLLEGE,CHICAGO,IL +0970,HARRY S TRUMAN COLLEGE,CHICAGO,IL +0976,HEARTLAND COMMUNITY COLLEGE,BLOOMINGTON,IL +1045,HEBREW THEOLOGICAL COLLEGE,SKOKIE,IL +1029,HIGHLAND COMMUNITY COLLEGE,FREEPORT,IL +1035,ILLINOIS CENTRAL COLLEGE,EAST PEORIA,IL +1034,ILLINOIS COLLEGE,JACKSONVILLE,IL +1036,ILLINOIS COLLEGE OF OPTOMETRY,CHICAGO,IL +1040,ILLINOIS INSTITUTE OF TECHNOLOGY,CHICAGO,IL +1039,ILLINOIS MASONIC MED CTR SCH OF NURS,CHICAGO,IL +1042,ILLINOIS STATE UNIVERSITY,NORMAL,IL +1111,ILLINOIS TECHNICAL COLLEGE,CHICAGO,IL +1056,ILLINOIS VALLEY COMMUNITY COLLEGE,OGLESBY,IL +1044,ILLINOIS WESLEYAN UNIVERSITY,BLOOMINGTON,IL +1046,INTERNATIONAL ACADEMY OF MERCH & DSGN,CHICAGO,IL +1017,JOHN A LOGAN COLLEGE,CARTERVILLE,IL +1019,JOHN WOOD COMMUNITY COLLEGE,QUINCY,IL +1048,JOLIET JUNIOR COLLEGE,JOLIET,IL +1101,JUDSON COLLEGE,ELGIN,IL +1053,KANKAKEE COMMUNITY COLLEGE,KANKAKEE,IL +0964,KASKASKIA COLLEGE,CENTRALIA,IL +1050,KENDALL COLLEGE,EVANSTON,IL +0978,KENNEDY KING COLLEGE,CHICAGO,IL +1051,KISHWAUKEE COLLEGE,MALTA,IL +1052,KNOX COLLEGE,GALESBURG,IL +1063,LA SALLE EXTENSION UNIVERSITY,WILMETTE,IL +1054,LAKE FOREST COLLEGE,LAKE FOREST,IL +1055,LAKE LAND COLLEGE,MATTOON,IL +1059,LAKEVIEW MED CTR SCH OF RADIOLOGIC TECH,DANVILLE,IL +1057,LAKEVIEW MEDICAL CENTER SCH OF NURSING,DANVILLE,IL +1038,LEWIS AND CLARK COMMUNITY COLLEGE,GODFREY,IL +1058,LEWIS UNIVERSITY,ROMEOVILLE,IL +1060,LINCOLN CHRISTIAN COLLEGE,LINCOLN,IL +1062,LINCOLN COLLEGE,LINCOLN,IL +1061,LINCOLN LAND COMMUNITY COLLEGE,SPRINGFIELD,IL +1067,LINCOLN TRAIL COLLEGE,ROBINSON,IL +1064,LOYOLA UNIVERSITY OF CHICAGO,CHICAGO,IL +1072,LUTHERAN GENERAL/DEACONESS HOSP SCH/NRSG,PARK RIDGE,IL +1065,LUTHERAN HOSPITAL SCHOOL FOR NURSES,MOLINE,IL +1066,LUTHERAN SCHOOL OF THEOLOGY AT CHICAGO,CHICAGO,IL +1073,MACCORMAC JUNIOR COLLEGE,CHICAGO,IL +1068,MACMURRAY COLLEGE,JACKSONVILLE,IL +0972,MALCOLM X COLLEGE,CHICAGO,IL +1070,MALLINCKRODT COLLEGE,WILMETTE,IL +1075,MCHENRY COUNTY COLLEGE,CRYSTAL LAKE,IL +1076,MCKENDREE COLLEGE,LEBANON,IL +1081,MENNONITE COLLEGE OF NURSING,BLOOMINGTON,IL +1078,"METHODIST MED CTR OF ILL, SCH OF NURSING",PEORIA,IL +1086,MIDWEST COLLEGE OF ENGINEERING,LOMBARD,IL +1080,MILLIKIN UNIVERSITY,DECATUR,IL +1085,MOLINE PUBLIC HOSP SCHOOL OF NURSING,MOLINE,IL +1084,MONMOUTH COLLEGE,MONMOUTH,IL +1027,MONTAY COLLEGE,CHICAGO,IL +1088,MOODY BIBLE INSTITUTE,CHICAGO,IL +1087,MORAINE VALLEY COMMUNITY COLLEGE,PALOS HILLS,IL +0987,MORRISON INSTITUTE OF TECHNOLOGY,MORRISON,IL +1090,MORTON COLLEGE,CICERO,IL +0945,MT VERNON CHRISTIAN COLLEGE,MT VERNON,IL +1092,MUNDELEIN COLLEGE,CHICAGO,IL +1095,NATIONAL COLLEGE OF CHIROPRACTIC,LOMBARD,IL +1094,NATIONAL-LOUIS UNIVERSITY,EVANSTON,IL +1131,NILES COLLEGE-LOYOLA UNIVERSITY,CHICAGO,IL +1096,NORTH CENTRAL COLLEGE,NAPERVILLE,IL +1098,NORTH PARK UNIVERSITY,CHICAGO,IL +0993,NORTHEASTERN ILLINOIS UNIVERSITY,CHICAGO,IL +1102,NORTHERN ILLINOIS UNIVERSITY,DE KALB,IL +1153,NORTHWESTERN U PROGRAMS IN NURSING EDUC,CHICAGO,IL +1097,NORTHWESTERN U TRAFFIC INSTITUTE,EVANSTON,IL +1106,NORTHWESTERN UNIVERSITY,EVANSTON,IL +1104,OAKTON COMMUNITY COLLEGE,DES PLAINES,IL +0974,OLIVE-HARVEY COLLEGE,CHICAGO,IL +1112,OLIVET NAZARENE COLLEGE,KANKAKEE,IL +1113,OLNEY CENTRAL COLLEGE,OLNEY,IL +1110,OREGON BIBLE COLLEGE,OREGON,IL +1015,PARKLAND COLLEGE,CHAMPAIGN,IL +1114,PARKS COLLEGE OF ST LOUIS UNIVERSITY,CAHOKIA,IL +0959,PRAIRIE STATE COLLEGE,CHICAGO HEIGHTS,IL +1118,PRINCIPIA COLLEGE,ELSAH,IL +1120,QUINCY UNIVERSITY,QUINCY,IL +1119,"RAVENSWOOD HOSP MED CTR, SCH OF NURSING",CHICAGO,IL +1129,RAY COLLEGE OF DESIGN,CHICAGO,IL +1091,REND LAKE COLLEGE,INA,IL +0971,RICHARD J DALEY COLLEGE,CHICAGO,IL +1008,RICHLAND COMMUNITY COLLEGE,DECATUR,IL +1121,ROBERT MORRIS COLLEGE,CHICAGO,IL +1128,ROCK ISLAND FRANCISCAN HOSPITAL,ROCK ISLAND,IL +1123,ROCK VALLEY COLLEGE,ROCKFORD,IL +1122,ROCKFORD COLLEGE,ROCKFORD,IL +1125,ROCKFORD MEMORIAL SCHOOL OF NURSING,ROCKFORD,IL +1124,ROOSEVELT UNIVERSITY,CHICAGO,IL +1117,RUSH UNIVERSITY,CHICAGO,IL +1172,S I U SCHOOL OF DENTAL MEDICINE,ALTON,IL +1127,SAUK VALLEY COMMUNITY COLLEGE,DIXON,IL +1136,SCHOOL OF THE ART INST OF CHICAGO,CHICAGO,IL +1173,SHAWNEE COLLEGE,ULLIN,IL +1142,SHIMER COLLEGE,WAUKEGAN,IL +1149,SOUTH CHICAGO COMM HOSP SCH OF NURSING,CHICAGO,IL +1168,SOUTH CHICAGO HOSP SCH RADIOLOGIC TECH,CHICAGO,IL +1148,SOUTH SUBURBAN COLLEGE,SOUTH HOLLAND,IL +1161,SOUTHEASTERN ILLINOIS COLLEGE,HARRISBURG,IL +1144,SOUTHERN ILLINOIS UNIV-CARBONDALE,CARBONDALE,IL +1147,SOUTHERN ILLINOIS UNIV-EDWARDSVILLE,EDWARDSVILLE,IL +1130,SPERTUS COLLEGE OF JUDAICA,CHICAGO,IL +0961,SPOON RIVER COLLEGE,CANTON,IL +1146,SPRINGFIELD COLLEGE IN ILLINOIS,SPRINGFIELD,IL +1166,ST ANNE'S HOSPITAL SCHOOL OF NURSING,CHICAGO,IL +0968,ST AUGUSTINE COLLEGE,CHICAGO,IL +1143,ST FRANCIS HOSPITAL SCHOOL OF NURSING,EVANSTON,IL +1138,ST FRANCIS HOSPITAL SCHOOL OF NURSING,PEORIA,IL +1089,ST FRANCIS MED CTR-SCH RADIOLOGIC TECH,PEORIA,IL +1077,ST JOHNS HOSP SCHOOL-RESPIRATORY THERAPY,SPRINGFIELD,IL +1167,ST JOHN'S HOSPITAL SCHOOL OF NURSING,SPRINGFIELD,IL +1135,ST JOSEPH HOSPITAL SCHOOL OF NURSING,JOLIET,IL +1133,ST MARY OF NAZARETH SCH OF NURSING,CHICAGO,IL +1134,ST XAVIER COLLEGE,CHICAGO,IL +1140,STATE COMMUNITY COLLEGE,EAST ST LOUIS,IL +1074,SWEDISH-AMERICAN SCH OF RADIOLOGIC TECH,ROCKFORD,IL +1165,TRINITY CHRISTIAN COLLEGE,PALOS HEIGHTS,IL +1157,TRINITY EVANGELICAL DIVINITY SCHOOL,DEERFIELD,IL +1150,TRINITY INTERNATIONAL UNIVERSITY,DEERFIELD,IL +1151,TRITON COLLEGE,RIVER GROVE,IL +1152,UNIVERSITY OF CHICAGO,CHICAGO,IL +1155,UNIVERSITY OF ILLINOIS AT CHICAGO,CHICAGO,IL +1109,UNIVERSITY OF ILLINOIS HLTH SCIENCES CTR,CHICAGO,IL +1137,UNIVERSITY OF ILLINOIS-SPRINGFIELD,SPRINGFIELD,IL +1154,UNIVERSITY OF ILLINOIS-URBANA CHAMPAIGN,URBANA,IL +1156,VANDERCOOK COLLEGE OF MUSIC,CHICAGO,IL +1162,WABASH VALLEY COLLEGE,MT CARMEL,IL +1159,WAUBONSEE COMMUNITY COLLEGE,SUGAR GROVE,IL +5032,WEST SUBURBAN COLLEGE OF NURSING,OAK PARK,IL +1158,WESTERN ILLINOIS UNIVERSITY,MACOMB,IL +1160,WHEATON COLLEGE,WHEATON,IL +0980,WILBUR WRIGHT COLLEGE,CHICAGO,IL +1163,WILLIAM RAINEY HARPER COLLEGE,PALATINE,IL +1169,WORSHAM COLLEGE OF MORTUARY SCIENCE,SKOKIE,IL +1175,ANCILLA COLLEGE,DONALDSON,IN +1174,ANDERSON UNIVERSITY,ANDERSON,IN +1176,BALL STATE UNIVERSITY,MUNCIE,IN +1178,BETHEL COLLEGE,MISHAWAKA,IN +1180,BUTLER UNIVERSITY,INDIANAPOLIS,IN +1245,CALUMET COLLEGE,WHITING,IN +1246,CONCORDIA THEOLOGICAL SEMINARY,FORT WAYNE,IN +1181,DAVENPORT COLLEGE,GRANGER,IN +1183,DEACONESS HOSPITAL SCHOOL OF NURSING,EVANSVILLE,IN +1184,DEPAUW UNIVERSITY,GREENCASTLE,IN +1186,EARLHAM COLLEGE,RICHMOND,IN +1190,FAIRHAVEN COLLEGE,CHESTERTON,IN +1194,FRANKLIN COLLEGE,FRANKLIN,IN +1196,GOSHEN COLLEGE,GOSHEN,IN +1198,GRACE COLLEGE,WINONA LAKE,IN +1197,GRACE THEOLOGICAL SEMINARY,WINONA LAKE,IN +1200,HANOVER COLLEGE,HANOVER,IN +1203,HOLY CROSS JUNIOR COLLEGE,NOTRE DAME,IN +1202,HUNTINGTON COLLEGE,HUNTINGTON,IN +1199,HYLES-ANDERSON COLLEGE,CROWN POINT,IN +1208,INDIANA INSTITUTE OF TECHNOLOGY,FORT WAYNE,IN +1206,INDIANA STATE UNIVERSITY,TERRE HAUTE,IN +1219,INDIANA UNIVERSITY AT KOKOMO,KOKOMO,IN +1225,INDIANA UNIVERSITY AT SOUTH BEND,SOUTH BEND,IN +1216,INDIANA UNIVERSITY EAST,RICHMOND,IN +1218,INDIANA UNIVERSITY NORTHWEST,GARY,IN +1229,INDIANA UNIVERSITY SOUTHEAST,NEW ALBANY,IN +1210,INDIANA UNIVERSITY-BLOOMINGTON,BLOOMINGTON,IN +1217,INDIANA UNIV-PURDUE UNIV AT FORT WAYNE,FORT WAYNE,IN +1214,INDIANA UNIV-PURDUE UNIV AT INDIANAPOLIS,INDIANAPOLIS,IN +1226,INDIANA WESLEYAN UNIVERSITY,MARION,IN +1223,IVY TECH STATE COLLEGE-CENTRAL INDIANA,INDIANAPOLIS,IN +1209,IVY TECH STATE COLLEGE-KOKOMO,KOKOMO,IN +1211,IVY TECH STATE COLLEGE-LAFAYETTE,LAFAYETTE,IN +1215,IVY TECH STATE COLLEGE-NORTHEAST,FORT WAYNE,IN +1213,IVY TECH STATE COLLEGE-SOUTHWEST,EVANSVILLE,IN +1236,LOCKYEAR COLLEGE,EVANSVILLE,IN +1239,LUTHERAN COLL OF HEALTH PROFESSIONS,FORT WAYNE,IN +1222,MANCHESTER COLLEGE,NORTH MANCHESTER,IN +1224,MARIAN COLLEGE,INDIANAPOLIS,IN +1227,MARTIN UNIVERSITY,INDIANAPOLIS,IN +1205,MID-AMERICA COLLEGE OF FUNERAL SERVICE,JEFFERSONVILLE,IN +1228,OAKLAND CITY COLLEGE,OAKLAND CITY,IN +1237,PARKVIEW-METHODIST SCHOOL OF NURSING,FORT WAYNE,IN +1230,PURDUE UNIVERSITY,WEST LAFAYETTE,IN +1233,PURDUE UNIVERSITY-CALUMET,HAMMOND,IN +1231,PURDUE UNIVERSITY-NORTH CENTRAL CAMPUS,WESTVILLE,IN +1232,ROSE-HULMAN INSTITUTE OF TECH,TERRE HAUTE,IN +1241,ST ELIZABETH SCHOOL OF NURSING,LAFAYETTE,IN +1238,ST FRANCIS COLLEGE,FORT WAYNE,IN +1240,ST JOSEPH'S COLLEGE,RENSSELAER,IN +1242,ST MARY-OF-THE-WOODS COLLEGE,ST MARY-OF-THE-WOODS,IN +1244,ST MARY'S COLLEGE,NOTRE DAME,IN +1192,SUMMIT CHRISTIAN COLLEGE,FORT WAYNE,IN +1248,TAYLOR UNIVERSITY,UPLAND,IN +1250,TRI-STATE UNIVERSITY,ANGOLA,IN +1188,UNIVERSITY OF EVANSVILLE,EVANSVILLE,IN +1204,UNIVERSITY OF INDIANAPOLIS,INDIANAPOLIS,IN +1252,UNIVERSITY OF NOTRE DAME,NOTRE DAME,IN +1207,UNIVERSITY OF SOUTHERN INDIANA,EVANSVILLE,IN +1256,VALPARAISO UNIVERSITY,VALPARAISO,IN +1258,VINCENNES UNIVERSITY,VINCENNES,IN +1260,WABASH COLLEGE,CRAWFORDSVILLE,IN +1424,ALLEN COUNTY COMMUNITY COLLEGE,IOLA,KS +1383,ASBURY HOSPITAL SCHOOL OF NURSING,SALINA,KS +1386,BAKER UNIVERSITY,BALDWIN CITY,KS +1411,BARCLAY COLLEGE,HAVILAND,KS +1387,BARTON COUNTY COMMUNITY COLLEGE,GREAT BEND,KS +1444,BENEDICTINE COLLEGE,ATCHISON,KS +1388,BETHANY COLLEGE,LINDSBORG,KS +1390,BETHEL COLLEGE,NORTH NEWTON,KS +4757,"BROWN MACKIE COLLEGE, THE",SALINA,KS +1406,BUTLER COUNTY COMMUNITY COLLEGE,EL DORADO,KS +1394,CENTRAL COLLEGE,MCPHERSON,KS +1401,CLOUD COUNTY COMMUNITY COLLEGE,CONCORDIA,KS +1398,COFFEYVILLE COMMUNITY COLLEGE,COFFEYVILLE,KS +1399,COLBY COMMUNITY COLLEGE,COLBY,KS +1384,COWLEY COUNTY COMMUNITY COLLEGE,ARKANSAS CITY,KS +1402,DODGE CITY COMMUNITY COLLEGE,DODGE CITY,KS +1404,DONNELLY COLLEGE,KANSAS CITY,KS +1430,EMPORIA STATE UNIVERSITY,EMPORIA,KS +1408,FORT HAYS STATE UNIVERSITY,HAYS,KS +1410,FORT SCOTT COMMUNITY COLLEGE,FORT SCOTT,KS +1412,FRIENDS UNIVERSITY,WICHITA,KS +1414,GARDEN CITY COMMUNITY COLLEGE,GARDEN CITY,KS +1415,HASKELL INDIAN JUNIOR COLLEGE,LAWRENCE,KS +1416,HESSTON COLLEGE,HESSTON,KS +1418,HIGHLAND COMMUNITY COLLEGE,HIGHLAND,KS +1420,HUTCHINSON COMMUNITY COLLEGE,HUTCHINSON,KS +1422,INDEPENDENCE COMMUNITY COLLEGE,INDEPENDENCE,KS +1425,JOHNSON COUNTY COMMUNITY COLLEGE,OVERLAND PARK,KS +1478,KANSAS CITY COLLEGE & BIBLE SCHOOL,OVERLAND PARK,KS +1426,KANSAS CITY KANSAS COMMUNITY COLLEGE,KANSAS CITY,KS +1428,KANSAS STATE UNIVERSITY,MANHATTAN,KS +1453,KANSAS TECHNICAL INSTITUTE,SALINA,KS +1434,KANSAS WESLEYAN UNIVERSITY,SALINA,KS +1448,LABETTE COMMUNITY COLLEGE,PARSONS,KS +1436,MANHATTAN CHRISTIAN COLLEGE,MANHATTAN,KS +1438,MARYMOUNT COLLEGE,SALINA,KS +1440,MCPHERSON COLLEGE,MCPHERSON,KS +1445,MID-AMERICA NAZARENE COLLEGE,OLATHE,KS +1396,NEOSHO COUNTY COMMUNITY COLLEGE,CHANUTE,KS +1451,NORTH CENTRAL KANSAS AREA VOC TECH,BELOIT,KS +1446,OTTAWA UNIVERSITY,OTTAWA,KS +1449,PITTSBURG STATE UNIVERSITY,PITTSBURG,KS +1450,PRATT COMMUNITY COLLEGE & AREA VOC SCH,PRATT,KS +1455,SAINT MARY'S COLLEGE,SAINT MARYS,KS +1439,SEWARD COUNTY COMMUNITY COLLEGE,LIBERAL,KS +1464,SOUTHWESTERN COLLEGE,WINFIELD,KS +1397,ST FRANCIS SCHOOL OF RADIOLOGY,WICHITA,KS +1456,ST JOHN'S COLLEGE,WINFIELD,KS +1458,ST MARY COLLEGE,LEAVENWORTH,KS +1460,ST MARY OF THE PLAINS COLLEGE,DODGE CITY,KS +1466,STERLING COLLEGE,STERLING,KS +1467,STORMONT-VAIL SCHOOL OF NURSING,TOPEKA,KS +1468,TABOR COLLEGE,HILLSBORO,KS +1470,UNIVERSITY OF KANSAS,LAWRENCE,KS +1474,WASHBURN UNIVERSITY,TOPEKA,KS +1462,"WAY COLLEGE OF EMPORIA, THE",EMPORIA,KS +1441,WESLEY MEDICAL CTR-SCH RADIOLOGIC TECH,WICHITA,KS +1472,WICHITA STATE UNIVERSITY,WICHITA,KS +1502,ALICE LLOYD COLLEGE,PIPPA PASSES,KY +1486,ASBURY COLLEGE,WILMORE,KY +1564,ASHLAND COMMUNITY COLLEGE,ASHLAND,KY +1490,BELLARMINE COLLEGE,LOUISVILLE,KY +1492,BEREA COLLEGE,BEREA,KY +1498,BRESCIA COLLEGE,OWENSBORO,KY +1500,CAMPBELLSVILLE COLLEGE,CAMPBELLSVILLE,KY +1506,CENTRE COLLEGE,DANVILLE,KY +1510,CUMBERLAND COLLEGE,WILLIAMSBURG,KY +1512,EASTERN KENTUCKY UNIVERSITY,RICHMOND,KY +1513,ELIZABETHTOWN COMMUNITY COLLEGE,ELIZABETHTOWN,KY +1514,GEORGETOWN COLLEGE,GEORGETOWN,KY +1572,HAZARD COMMUNITY COLLEGE,HAZARD,KY +1557,HENDERSON COMMUNITY COLLEGE,HENDERSON,KY +1569,HOPKINSVILLE COMMUNITY COLLEGE,HOPKINSVILLE,KY +1571,JEFFERSON COMM COLLEGE-DOWNTOWN CAMPUS,LOUISVILLE,KY +1495,JEFFERSON COMM COLLEGE-SOUTHWEST CAMPUS,LOUISVILLE,KY +1523,KENTUCKY CHRISTIAN COLLEGE,GRAYSON,KY +1516,KENTUCKY STATE UNIVERSITY,FRANKFORT,KY +1518,KENTUCKY WESLEYAN COLLEGE,OWENSBORO,KY +1520,LEES COLLEGE,JACKSON,KY +1544,LEXINGTON BAPTIST COLLEGE,LEXINGTON,KY +1531,LEXINGTON COMMUNITY COLLEGE,LEXINGTON,KY +1525,LEXINGTON THEOLOGICAL SEMINARY,LEXINGTON,KY +1522,LINDSEY WILSON COLLEGE,COLUMBIA,KY +1533,MADISONVILLE COMMUNITY COLLEGE,MADISONVILLE,KY +1527,MAYSVILLE COMMUNITY COLLEGE,MAYSVILLE,KY +1524,MID-CONTINENT BAPTIST BIBLE COLLEGE,MAYFIELD,KY +1528,MIDWAY COLLEGE,MIDWAY,KY +1530,MOREHEAD STATE UNIVERSITY,MOREHEAD,KY +1532,MURRAY STATE UNIVERSITY,MURRAY,KY +1567,NATIONAL EDUC CENTER-KENTUCKY COLL TECH,LOUISVILLE,KY +1566,NORTHERN KENTUCKY UNIVERSITY,HIGHLAND HEIGHTS,KY +1561,OWENSBORO COMMUNITY COLLEGE,OWENSBORO,KY +1538,PADUCAH COMMUNITY COLLEGE,PADUCAH,KY +1540,PIKEVILLE COLLEGE,PIKEVILLE,KY +1541,PRESTONSBURG COMMUNITY COLLEGE,PRESTONSBURG,KY +1570,SOMERSET COMMUNITY COLLEGE,SOMERSET,KY +1555,SOUTHEAST COMMUNITY COLLEGE,CUMBERLAND,KY +1507,SOUTHERN BAPTIST THEOLOGICAL SEMINARY,LOUISVILLE,KY +1505,SOUTHERN OHIO COLL-NORTHERN KENTUCKY CMP,FLORENCE,KY +1534,SPALDING UNIVERSITY,LOUISVILLE,KY +1542,ST CATHERINE COLLEGE,SAINT CATHARINE,KY +1548,SUE BENNETT COLLEGE,LONDON,KY +5535,SULLIVAN COLLEGE,LOUISVILLE,KY +1560,THOMAS MORE COLLEGE,CRESTVIEW HILLS,KY +1550,TRANSYLVANIA UNIVERSITY,LEXINGTON,KY +1552,UNION COLLEGE,BARBOURVILLE,KY +1554,UNIVERSITY OF KENTUCKY,LEXINGTON,KY +1568,UNIVERSITY OF KENTUCKY CTR AT FORT KNOX,FT KNOX,KY +1556,UNIVERSITY OF LOUISVILLE,LOUISVILLE,KY +1497,WATTERSON COLLEGE,LOUISVILLE,KY +1562,WESTERN KENTUCKY UNIVERSITY,BOWLING GREEN,KY +1619,BATON ROUGE GEN HOSP SCHOOL OF NURSING,BATON ROUGE,LA +1625,BATON ROUGE GEN HOSP-SCH OF RAD TECH,BATON ROUGE,LA +1599,BATON ROUGE VOCATIONAL-TECHNICAL INST,BATON ROUGE,LA +1573,BOSSIER PARISH COMMUNITY COLLEGE,BOSSIER CITY,LA +1576,CENTENARY COLLEGE OF LOUISIANA,SHREVEPORT,LA +1579,CHARITY HOSPITAL SCHOOL OF NURSING,NEW ORLEANS,LA +1617,CHARITY HOSPITAL SURG TECH PROG,NEW ORLEANS,LA +1577,DELGADO COMMUNITY COLLEGE-CITY PARK CAMP,NEW ORLEANS,LA +1629,DELGADO COMMUNITY COLLEGE-WEST BANK CAMP,NEW ORLEANS,LA +1578,DILLARD UNIVERSITY,NEW ORLEANS,LA +1582,GRAMBLING STATE UNIVERSITY,GRAMBLING,LA +1626,JIMMY SWAGGART BIBLE COLLEGE,BATON ROUGE,LA +1586,LOUISIANA COLLEGE,PINEVILLE,LA +1590,LOUISIANA STATE UNIV & A & M COLL,BATON ROUGE,LA +1589,LOUISIANA STATE UNIV AT ALEXANDRIA,ALEXANDRIA,LA +1601,LOUISIANA STATE UNIV SCH OF DENTISTRY,NEW ORLEANS,LA +1620,LOUISIANA STATE UNIV SCH OF MEDICINE,SHREVEPORT,LA +1587,LOUISIANA STATE UNIVERSITY AT EUNICE,EUNICE,LA +1593,LOUISIANA STATE UNIVERSITY-SHREVEPORT,SHREVEPORT,LA +1624,LOUISIANA STATE U-SCH OF ALLIED HEALTH,NEW ORLEANS,LA +1632,LOUISIANA STATE U-SCH OF ALLIED HEALTH,SHREVEPORT,LA +1588,LOUISIANA TECH UNIVERSITY,RUSTON,LA +1592,LOYOLA UNIVERSITY,NEW ORLEANS,LA +1594,MCNEESE STATE UNIVERSITY,LAKE CHARLES,LA +1596,NEW ORLEANS BAPTIST THEOLOGICAL SEMINARY,NEW ORLEANS,LA +1616,NEWCOMB COLLEGE OF TULANE UNIVERSITY,NEW ORLEANS,LA +1580,NICHOLLS STATE UNIVERSITY,THIBODAUX,LA +1598,NORTHEAST LOUISIANA UNIVERSITY,MONROE,LA +1575,NORTHWESTERN STATE UNIV OF LA-LEESVILLE,LEESVILLE,LA +1600,NORTHWESTERN STATE UNIV OF LOUISIANA,NATCHITOCHES,LA +1584,OCHSNER SCHOOL OF ALLIED HEALTH SCIENCE,NEW ORLEANS,LA +1574,OUR LADY OF HOLY CROSS COLLEGE,NEW ORLEANS,LA +1621,OUR LADY OF THE LAKE SCHOOL OF NURSING,BATON ROUGE,LA +1628,RAPIDES GEN HOSP SCHOOL/RADIOLOGIC TECH,ALEXANDRIA,LA +1623,SHREVEPORT JOB CORP CENTER,SHREVEPORT,LA +1608,SOUTHEASTERN LOUISIANA UNIVERSITY,HAMMOND,LA +1610,SOUTHERN UNIVERSITY,BATON ROUGE,LA +1611,SOUTHERN UNIVERSITY AT NEW ORLEANS,NEW ORLEANS,LA +1613,SOUTHERN UNIVERSITY-SHREVEPORT,SHREVEPORT,LA +1605,ST BERNARD PARISH COMMUNITY COLLEGE,CHALMETTE,LA +1604,ST JOSEPH SEMINARY COLLEGE,ST BENEDICT,LA +1615,TOURO INFIRMARY SCHOOL OF NURSING,NEW ORLEANS,LA +1614,TULANE UNIVERSITY OF LOUISIANA,NEW ORLEANS,LA +1612,UNIV OF SOUTHWESTERN LOUISIANA,LAFAYETTE,LA +1591,UNIVERSITY OF NEW ORLEANS,NEW ORLEANS,LA +1607,WILLIAM CAREY COLLEGE SCHOOL OF NURSING,NEW ORLEANS,LA +1618,XAVIER UNIVERSITY,NEW ORLEANS,LA +1772,AMERICAN INTERNATIONAL COLLEGE,SPRINGFIELD,MA +1774,AMHERST COLLEGE,AMHERST,MA +1769,ANNA MARIA COLLEGE FOR MEN AND WOMEN,PAXTON,MA +1782,ASSUMPTION COLLEGE,WORCESTER,MA +1784,ATLANTIC UNION COLLEGE,SOUTH LANCASTER,MA +1780,BABSON COLLEGE,WELLESLEY,MA +2680,BAPTIST BIBLE COLLEGE EAST,BOSTON,MA +1785,BAY PATH JUNIOR COLLEGE,LONGMEADOW,MA +1791,BAY STATE JUNIOR COLLEGE,BOSTON,MA +1849,BECKER JUNIOR COLLEGE-LEICESTER,LEICESTER,MA +1787,BECKER JUNIOR COLLEGE-WORCESTER,WORCESTER,MA +1783,BENTLEY COLLEGE,WALTHAM,MA +1789,BERKLEE COLLEGE OF MUSIC,BOSTON,MA +1786,BERKSHIRE CHRISTIAN COLLEGE,LENOX,MA +1792,BERKSHIRE COMMUNITY COLLEGE,PITTSFIELD,MA +1781,BOSTON ARCHITECTURAL CENTER,BOSTON,MA +1788,BOSTON COLLEGE,CHESTNUT HILL,MA +1790,BOSTON CONSERVATORY OF MUSIC,BOSTON,MA +1794,BOSTON UNIVERSITY,BOSTON,MA +1800,BRADFORD COLLEGE,BRADFORD,MA +1802,BRANDEIS UNIVERSITY,WALTHAM,MA +1900,BRIDGEWATER STATE COLLEGE,BRIDGEWATER,MA +1803,BRISTOL COMMUNITY COLLEGE,FALL RIVER,MA +1799,BUNKER HILL COMMUNITY COLLEGE,BOSTON,MA +1804,BURDETT SCHOOL,BOSTON,MA +1805,CAMBRIDGE COLLEGE,CAMBRIDGE,MA +1807,CAPE COD COMMUNITY COLLEGE,WEST BARNSTABLE,MA +1940,CENTRAL NEW ENGLAND COLLEGE,WORCESTER,MA +1809,CHAMBERLAYNE JUNIOR COLLEGE,BOSTON,MA +1808,CLARK UNIVERSITY,WORCESTER,MA +1810,COLLEGE OF THE HOLY CROSS,WORCESTER,MA +1814,CURRY COLLEGE,MILTON,MA +1816,DEAN COLLEGE,FRANKLIN,MA +1818,EASTERN NAZARENE COLLEGE,WOLLASTON,MA +1812,ELMS COLLEGE,CHICOPEE,MA +1820,EMERSON COLLEGE,BOSTON,MA +1822,EMMANUEL COLLEGE,BOSTON,MA +1824,ENDICOTT COLLEGE,BEVERLY,MA +1825,ESSEX AGRIC & TECH INSTITUTE,HATHORNE,MA +1828,FISHER COLLEGE,BOSTON,MA +1902,FITCHBURG STATE COLLEGE,FITCHBURG,MA +1904,FRAMINGHAM STATE COLLEGE,FRAMINGHAM,MA +1834,FRANKLIN INSTITUTE OF BOSTON,BOSTON,MA +1838,GORDON COLLEGE,WENHAM,MA +1839,GREENFIELD COMMUNITY COLLEGE,GREENFIELD,MA +1842,HAMPSHIRE COLLEGE,AMHERST,MA +1845,HARVARD UNIVERSITY,CAMBRIDGE,MA +1840,HARVARD-RADCLIFFE,CAMBRIDGE,MA +1841,HEBREW COLLEGE,BROOKLINE,MA +1843,HELLENIC COLLEGE AND HOLY CROSS,BROOKLINE,MA +1844,HOLYOKE COMMUNITY COLLEGE,HOLYOKE,MA +1806,KATHARINE GIBBS SCHOOL,BOSTON,MA +1848,LASELL COLLEGE,NEWTON,MA +1850,LESLEY COLLEGE,CAMBRIDGE,MA +1861,MASSACHUSETTS BAY COMMUNITY COLLEGE,WELLESLEY HILLS,MA +1860,MASSACHUSETTS COLL PHARMACY/ALLIED HLTH,BOSTON,MA +1846,MASSACHUSETTS COLLEGE OF ART,BOSTON,MA +1858,MASSACHUSETTS INSTITUTE OF TECHNOLOGY,CAMBRIDGE,MA +1856,MASSACHUSETTS MARITIME ACADEMY,BUZZARDS BAY,MA +1862,MASSASOIT COMMUNITY COLLEGE,BROCKTON,MA +1864,MERRIMACK COLLEGE,NORTH ANDOVER,MA +1865,MIDDLESEX COMMUNITY COLLEGE,BEDFORD,MA +1847,MONTSERRAT SCHOOL OF VISUAL ART,BEVERLY,MA +1866,MOUNT HOLYOKE COLLEGE,SOUTH HADLEY,MA +1868,MOUNT IDA COLLEGE,NEWTON,MA +1867,MOUNT WACHUSETT COMMUNITY COLLEGE,GARDNER,MA +1872,NEW ENGLAND CONSERVATORY OF MUSIC,BOSTON,MA +1873,NEW ENGLAND INSTITUTE,BOSTON,MA +1871,NEWBURY COLLEGE,BROOKLINE,MA +1878,NICHOLS COLLEGE,DUDLEY,MA +1908,NORTH ADAMS STATE COLLEGE,NORTH ADAMS,MA +1875,NORTH SHORE COMMUNITY COLLEGE,DANVERS,MA +1880,NORTHEASTERN UNIVERSITY,BOSTON,MA +1877,NORTHERN ESSEX COMMUNITY COLLEGE,HAVERHILL,MA +1882,PINE MANOR COLLEGE,CHESTNUT HILL,MA +1888,QUINCY COLLEGE,QUINCY,MA +1885,QUINSIGAMOND COMMUNITY COLLEGE,WORCESTER,MA +1886,REGIS COLLEGE,WESTON,MA +1887,ROXBURY COMMUNITY COLLEGE,ROXBURY,MA +1910,SALEM STATE COLLEGE,SALEM,MA +1895,SCHOOL OF THE MUSEUM OF FINE ARTS,BOSTON,MA +1892,SIMMONS COLLEGE,BOSTON,MA +1893,SIMON'S ROCK OF BARD COLLEGE,GREAT BARRINGTON,MA +1894,SMITH COLLEGE,NORTHAMPTON,MA +1896,SPRINGFIELD COLLEGE,SPRINGFIELD,MA +1898,SPRINGFIELD TECHNICAL COMMUNITY COLLEGE,SPRINGFIELD,MA +1890,ST HYACINTH COLLEGE & SEMINARY,GRANBY,MA +1889,ST VINCENT HOSPITAL SCHOOL OF NURSING,WORCESTER,MA +1918,STONEHILL COLLEGE,NORTH EASTON,MA +1920,SUFFOLK UNIVERSITY,BOSTON,MA +1922,TUFTS UNIVERSITY,MEDFORD,MA +1924,UNIVERSITY OF MASSACHUSETTS-AMHERST,AMHERST,MA +1925,UNIVERSITY OF MASSACHUSETTS-BOSTON,BOSTON,MA +1906,UNIVERSITY OF MASSACHUSETTS-DARTMOUTH,NORTH DARTMOUTH,MA +1854,UNIVERSITY OF MASSACHUSETTS-LOWELL,LOWELL,MA +1926,WELLESLEY COLLEGE,WELLESLEY,MA +1928,WENTWORTH INSTITUTE OF TECHNOLOGY,BOSTON,MA +1930,WESTERN NEW ENGLAND COLLEGE,SPRINGFIELD,MA +1912,WESTFIELD STATE COLLEGE,WESTFIELD,MA +1932,WHEATON COLLEGE,NORTON,MA +1934,WHEELOCK COLLEGE,BOSTON,MA +1936,WILLIAMS COLLEGE,WILLIAMSTOWN,MA +1942,WORCESTER POLYTECHNIC INSTITUTE,WORCESTER,MA +1914,WORCESTER STATE COLLEGE,WORCESTER,MA +1679,ALLEGANY COMMUNITY COLLEGE,CUMBERLAND,MD +1678,ANNE ARUNDEL COMMUNITY COLLEGE,ARNOLD,MD +1693,ANTIETAM BIBLE COLLEGE,HAGERSTOWN,MD +1682,BALTIMORE CITY COMMUNITY COLLEGE,BALTIMORE,MD +1712,BOWIE STATE COLLEGE,BOWIE,MD +1683,CAPITOL INSTITUTE OF TECHNOLOGY,LAUREL,MD +1680,CARROLL COMMUNITY COLLEGE,WESTMINSTER,MD +1684,CATONSVILLE COMMUNITY COLLEGE,CATONSVILLE,MD +1681,CECIL COMMUNITY COLLEGE,NORTH EAST,MD +1685,CHARLES COUNTY COMMUNITY COLLEGE,LA PLATA,MD +1691,CHESAPEAKE COLLEGE,WYE MILLS,MD +1727,COLLEGE OF NOTRE DAME OF MARYLAND,BALTIMORE,MD +1687,COLUMBIA UNION COLLEGE,TAKOMA PARK,MD +1688,COPPIN STATE COLLEGE,BALTIMORE,MD +1686,DUNDALK COMMUNITY COLLEGE,BALTIMORE,MD +1706,EASTERN CHRISTIAN COLLEGE,BEL AIR,MD +1692,ESSEX COMMUNITY COLLEGE,BALTIMORE,MD +1694,FREDERICK COMMUNITY COLLEGE,FREDERICK,MD +1714,FROSTBURG STATE COLLEGE,FROSTBURG,MD +1695,GARRETT COMMUNITY COLLEGE,MCHENRY,MD +1696,GOUCHER COLLEGE,BALTIMORE,MD +1698,HAGERSTOWN JUNIOR COLLEGE,HAGERSTOWN,MD +1700,HARFORD COMMUNITY COLLEGE,BEL AIR,MD +1702,HOOD COLLEGE,FREDERICK,MD +1703,HOWARD COMMUNITY COLLEGE,COLUMBIA,MD +1704,JOHNS HOPKINS UNIVERSITY,BALTIMORE,MD +1708,LOYOLA COLLEGE,BALTIMORE,MD +5089,MARYLAND GENERAL HOSP SCHOOL OF NURSING,BALTIMORE,MD +1710,MARYLAND INSTITUTE COLLEGE OF ART,BALTIMORE,MD +1725,MONTGOMERY COLLEGE-GERMANTOWN CAMPUS,GERMANTOWN,MD +1723,MONTGOMERY COLLEGE-ROCKVILLE CAMPUS,ROCKVILLE,MD +1720,MONTGOMERY COLLEGE-TAKOMA PARK CAMPUS,TAKOMA PARK,MD +1722,MORGAN STATE UNIVERSITY,BALTIMORE,MD +1726,MOUNT SAINT MARYS COLLEGE,EMMITSBURG,MD +1730,PEABODY INST OF JOHNS HOPKINS UNIVERSITY,BALTIMORE,MD +1731,PRINCE GEORGES COMMUNITY COLLEGE,LARGO,MD +1716,SALISBURY STATE COLLEGE,SALISBURY,MD +1732,ST JOHN'S COLLEGE,ANNAPOLIS,MD +1735,ST JOSEPH HOSPITAL SCHOOL OF NURSING,BALTIMORE,MD +1736,ST MARYS COLLEGE OF MARYLAND,ST MARYS CITY,MD +1718,TOWSON STATE UNIVERSITY,TOWSON,MD +1742,U S NAVAL ACADEMY,ANNAPOLIS,MD +1749,UNION MEMORIAL HOSPITAL-SCH OF NURSING,BALTIMORE,MD +1746,UNIV OF MARYLAND-COLLEGE PARK,COLLEGE PARK,MD +1752,UNIV OF MARYLAND-EASTERN SHORE,PRINCESS ANNE,MD +1750,UNIVERSITY OF BALTIMORE,BALTIMORE,MD +1757,UNIVERSITY OF MARYLAND UNIV COLLEGE,COLLEGE PARK,MD +1751,UNIVERSITY OF MARYLAND-BALTIMORE COUNTY,BALTIMORE,MD +1753,VILLA JULIE COLLEGE,STEVENSON,MD +1755,WASHINGTON BIBLE COLLEGE,LANHAM,MD +1754,WASHINGTON COLLEGE,CHESTERTOWN,MD +1756,WESTERN MARYLAND COLLEGE,WESTMINSTER,MD +1760,WOR-WIC TECH COMMUNITY COLLEGE,SALISBURY,MD +1667,BANGOR COMM COLL/UNIV OF MAINE AT ORONO,BANGOR,ME +1633,BANGOR THEOLOGICAL SEMINARY,BANGOR,ME +1634,BATES COLLEGE,LEWISTON,ME +1636,BOWDOIN COLLEGE,BRUNSWICK,ME +1635,CASCO BAY COLLEGE,PORTLAND,ME +1639,CENTRAL MAINE TECHNICAL COLLEGE,AUBURN,ME +1638,COLBY COLLEGE,WATERVILLE,ME +1637,COLLEGE OF THE ATLANTIC,BAR HARBOR,ME +1646,HUSSON COLLEGE,BANGOR,ME +1648,MAINE MARITIME ACADEMY,CASTINE,ME +1650,NORTHERN MAINE VOCATIONAL TECH INST,PRESQUE,ME +1652,PORTLAND SCHOOL OF ART,PORTLAND,ME +1651,SOUTHERN MAINE VOCATIONAL TECH INST,SOUTH PORTLAND,ME +1659,ST JOSEPH'S COLLEGE,NORTH WINDHAM,ME +1663,THOMAS COLLEGE,WATERVILLE,ME +1665,UNITY COLLEGE,UNITY,ME +1641,UNIVERSITY OF MAINE AT AUGUSTA,AUGUSTA,ME +1640,UNIVERSITY OF MAINE AT FARMINGTON,FARMINGTON,ME +1642,UNIVERSITY OF MAINE AT FORT KENT,FORT KENT,ME +1666,UNIVERSITY OF MAINE AT MACHIAS,MACHIAS,ME +1664,UNIVERSITY OF MAINE AT ORONO,ORONO,ME +1630,UNIVERSITY OF MAINE AT PRESQUE ISLE,PRESQUE ISLE,ME +1660,UNIVERSITY OF NEW ENGLAND,BIDDEFORD,ME +1644,UNIVERSITY OF SOUTHERN MAINE,GORHAM,ME +1668,WESTBROOK COLLEGE,PORTLAND,ME +1954,ADRIAN COLLEGE,ADRIAN,MI +1956,ALBION COLLEGE,ALBION,MI +1958,ALMA COLLEGE,ALMA,MI +1960,ALPENA COMMUNITY COLLEGE,ALPENA,MI +1992,ANDREWS UNIVERSITY,BERRIEN SPRINGS,MI +1962,AQUINAS COLLEGE,GRAND RAPIDS,MI +5011,BAKER COLLEGE,FLINT,MI +2071,BAY DE NOC COMMUNITY COLLEGE,ESCANABA,MI +2079,BRONSON HOSPITAL SCH RADIOLOGIC TECH,KALAMAZOO,MI +5013,BRONSON HOSPITAL SCHOOL OF NURSING,KALAMAZOO,MI +1968,CALVIN COLLEGE,GRAND RAPIDS,MI +1989,CENTER FOR CREATIVE STUDIES-COLL OF ART,DETROIT,MI +1972,CENTRAL MICHIGAN UNIVERSITY,MT PLEASANT,MI +1996,CHARLES STEWART MOTT COMMUNITY COLLEGE,FLINT,MI +1974,CLEARY COLLEGE,YPSILANTI,MI +1977,CONCORDIA COLLEGE,ANN ARBOR,MI +2002,CORNERSTONE COLLEGE,GRAND RAPIDS,MI +1981,DAVENPORT COLL OF BUSINESS-GRAND RAPIDS,GRAND RAPIDS,MI +4773,DAVENPORT COLL OF BUSINESS-KALAMAZOO,KALAMAZOO,MI +1984,DAVENPORT COLL OF BUSINESS-LANSING,LANSING,MI +1966,DELTA COLLEGE,UNIVERSITY CENTER,MI +1987,DETROIT COLLEGE OF BUSINESS,DEARBORN,MI +1944,DETROIT ENGINEERING INSTITUTE,DETROIT,MI +1990,EASTERN MICHIGAN UNIVERSITY,YPSILANTI,MI +1994,FERRIS STATE UNIVERSITY,BIG RAPIDS,MI +1999,GLEN OAKS COMMUNITY COLLEGE,CENTREVILLE,MI +2000,GOGEBIC COMMUNITY COLLEGE,IRONWOOD,MI +2001,GRACE BIBLE COLLEGE,GRAND RAPIDS,MI +2004,GRAND RAPIDS COMMUNITY COLLEGE,GRAND RAPIDS,MI +2005,GRAND VALLEY STATE UNIVERSITY,ALLENDALE,MI +2009,GREAT LAKES BIBLE COLLEGE,LANSING,MI +2015,GREAT LAKES JUNIOR COLLEGE,SAGINAW,MI +1978,GREAT LAKES MARITIME ACADEMY,TRAVERSE CITY,MI +2006,HENRY FORD COMMUNITY COLLEGE,DEARBORN,MI +2008,HIGHLAND PARK COMMUNITY COLLEGE,HIGHLAND PARK,MI +2010,HILLSDALE COLLEGE,HILLSDALE,MI +2012,HOPE COLLEGE,HOLLAND,MI +2013,HURLEY MEDICAL CENTER SCHOOL OF NURSING,FLINT,MI +1997,JACKSON BUSINESS INSTITUTE,JACKSON,MI +2014,JACKSON COMMUNITY COLLEGE,JACKSON,MI +2011,JORDAN COLLEGE,CEDAR SPRINGS,MI +2018,KALAMAZOO COLLEGE,KALAMAZOO,MI +2016,KALAMAZOO VALLEY COMMUNITY COLLEGE,KALAMAZOO,MI +1964,KELLOGG COMMUNITY COLLEGE,BATTLE CREEK,MI +1983,KENDALL SCHOOL OF DESIGN,GRAND RAPIDS,MI +1998,KETTERING UNIVERSITY,FLINT,MI +2017,KIRTLAND COMMUNITY COLLEGE,ROSCOMMON,MI +1976,LAKE MICHIGAN COLLEGE,BENTON HARBOR,MI +2031,LAKE SUPERIOR STATE COLLEGE,SAULT STE MARIE,MI +2019,LANSING COMMUNITY COLLEGE,LANSING,MI +2020,LAWRENCE INSTITUTE OF TECHNOLOGY,SOUTHFIELD,MI +2003,LEWIS COLLEGE OF BUSINESS,DETROIT,MI +2054,MACOMB COMMUNITY COLLEGE,WARREN,MI +2022,MADONNA COLLEGE,LIVONIA,MI +1955,MARYGLADE SEMINARY/THE UNIV OF DETROIT,DETROIT,MI +2024,MARYGROVE COLLEGE,DETROIT,MI +2027,MERCY CENTRAL SCHOOL OF NURSING,GRAND RAPIDS,MI +2026,MERCY COLLEGE OF DETROIT,DETROIT,MI +2072,MICHIGAN CHRISTIAN COLLEGE,ROCHESTER,MI +2032,MICHIGAN STATE UNIVERSITY,EAST LANSING,MI +1953,MICHIGAN TECHNICAL INSTITUTE,ANN ARBOR,MI +2030,MICHIGAN TECHNOLOGICAL UNIVERSITY,HOUGHTON,MI +1973,MID MICHIGAN COMMUNITY COLLEGE,HARRISON,MI +2039,MONROE COUNTY COMMUNITY COLLEGE,MONROE,MI +2029,MONTCALM COMMUNITY COLLEGE,SIDNEY,MI +2021,MOTT COMMUNITY COLLEGE,FLINT,MI +1957,MUSKEGON BUSINESS COLLEGE,MUSKEGON,MI +2034,MUSKEGON COMMUNITY COLLEGE,MUSKEGON,MI +2036,NAZARETH COLLEGE IN KALAMAZOO,NAZARETH,MI +2037,NORTH CENTRAL MICHIGAN COLLEGE,PETOSKEY,MI +2045,NORTHEASTERN SCHOOL OF COMMERCE,BAY CITY,MI +2038,NORTHERN MICHIGAN UNIVERSITY,MARQUETTE,MI +2040,NORTHWESTERN MICHIGAN COLLEGE,TRAVERSE CITY,MI +2041,NORTHWOOD UNIVERSITY,MIDLAND,MI +2043,OAKLAND COMMUNITY COLLEGE,BLOOMFIELD HILLS,MI +2033,OAKLAND UNIVERSITY,ROCHESTER,MI +2042,OLIVET COLLEGE,OLIVET,MI +2049,REFORMED BIBLE COLLEGE,GRAND RAPIDS,MI +2048,SACRED HEART SEMINARY,DETROIT,MI +2057,SAGINAW VALLEY STATE COLLEGE,UNIVERSITY CENTER,MI +2070,SCHOOLCRAFT COLLEGE,LIVONIA,MI +2052,SIENA HEIGHTS COLLEGE,ADRIAN,MI +2055,SOUTHWESTERN MICHIGAN COLLEGE,DOWAGIAC,MI +2056,SPRING ARBOR COLLEGE,SPRING ARBOR,MI +2046,ST CLAIR COUNTY COMMUNITY COLLEGE,PORT HURON,MI +2047,ST JOHN HOSPITAL SCH OF RADIOLOGIC TECH,DETROIT,MI +2059,ST JOSEPH HOSPITAL SCH OF RADIOGRAPHY,MT CLEMENS,MI +2053,ST MARY'S COLLEGE,ORCHARD LAKE,MI +5038,ST MARY'S HOSP SCH OF RADIOLOGIC TECH,GRAND RAPIDS,MI +2058,SUOMI COLLEGE,HANCOCK,MI +2060,UNIVERSITY OF DETROIT,DETROIT,MI +2062,UNIVERSITY OF MICHIGAN-ANN ARBOR,ANN ARBOR,MI +2074,UNIVERSITY OF MICHIGAN-DEARBORN,DEARBORN,MI +2063,UNIVERSITY OF MICHIGAN-FLINT,FLINT,MI +2065,WALSH COLLEGE OF ACCOUNTANCY/BUSINESS,TROY,MI +2067,WASHTENAW COMMUNITY COLLEGE,ANN ARBOR,MI +2068,WAYNE COUNTY COMMUNITY COLLEGE,DETROIT,MI +2064,WAYNE STATE UNIVERSITY,DETROIT,MI +2075,WEST SHORE COMMUNITY COLLEGE,SCOTTVILLE,MI +2066,WESTERN MICHIGAN UNIVERSITY,KALAMAZOO,MI +1980,WILLIAM TYNDALE COLLEGE,FARMINGTON HILLS,MI +2083,ALEXANDRIA TECHNICAL COLLEGE,ALEXANDRIA,MN +2109,ANOKA-RAMSEY COMM COLL-CAMBRIDGE,CAMBRIDGE,MN +2093,ANOKA-RAMSEY COMMUNITY COLLEGE,COON RAPIDS,MN +2080,AUGSBURG COLLEGE,MINNEAPOLIS,MN +2084,BEMIDJI STATE UNIVERSITY,BEMIDJI,MN +2110,BETHANY FELLOWSHIP MISSIONARY TRNG CTR,BLOOMINGTON,MN +2086,BETHANY LUTHERAN COLLEGE,MANKATO,MN +2088,BETHEL COLLEGE,ST PAUL,MN +2089,BETHEL THEOLOGICAL SEMINARY,ST PAUL,MN +2092,CARLETON COLLEGE,NORTHFIELD,MN +2090,CENTRAL LAKES COLLEGE,BRAINERD,MN +2125,CENTURY COLLEGE,WHITE BEAR LAKE,MN +2091,COLLEGE OF ASSOCIATED ARTS,ST PAUL,MN +2094,COLLEGE OF ST BENEDICT,ST JOSEPH,MN +2096,COLLEGE OF ST CATHERINE,ST PAUL,MN +2098,COLLEGE OF ST SCHOLASTICA,DULUTH,MN +2100,COLLEGE OF ST TERESA,WINONA,MN +2104,CONCORDIA COLLEGE-MOORHEAD,MOORHEAD,MN +2106,CONCORDIA COLLEGE-ST PAUL,ST PAUL,MN +2107,CROSIER SEMINARY JUNIOR COLLEGE,ONAMIA,MN +2152,CROWN COLLEGE,ST BONIFACIUS,MN +5150,EAST GRAND FORKS AREA VOC TECH INST,EAST GRAND FORKS,MN +2119,FAIRVIEW DEACONESS HOSP SCHOOL NURSING,MINNEAPOLIS,MN +2111,FERGUS FALLS COMMUNITY COLLEGE,FERGUS FALLS,MN +2113,FON DU LAC TRIBAL AND COMM COLLEGE,CLOQUET,MN +2112,GUSTAVUS ADOLPHUS COLLEGE,ST PETER,MN +2114,HAMLINE UNIVERSITY,ST PAUL,MN +2115,HENNEPIN TECHNICAL COLLEGE,BROOKLYN PARK,MN +2116,HIBBING COMMUNITY COLLEGE,HIBBING,MN +2103,INVER HILLS COMMUNITY COLLEGE,INVER GROVE HTS,MN +2118,ITASCA COMMUNITY COLLEGE,GRAND RAPIDS,MN +2120,LAKE SUPERIOR COLLEGE,DULUTH,MN +2121,LEA COLLEGE ON LAKE CHAPEAU,ALBERT LEA,MN +2131,LOWTHIAN COLLEGE,MINNEAPOLIS,MN +2122,MACALESTER COLLEGE,ST PAUL,MN +2127,MARTIN LUTHER COLLEGE,NEW ULM,MN +2128,MAYO GRADUATE SCHOOL,ROCHESTER,MN +5119,MEDICAL INSTITUTE OF MINNESOTA,MINNEAPOLIS,MN +2158,MESABI COMMUNITY COLLEGE,VIRGINIA,MN +2160,METROPOLITAN STATE UNIVESITY,MINNEAPOLIS,MN +2130,MINNEAPOLIS COLLEGE OF ART & DESIGN,MINNEAPOLIS,MN +2147,MINNEAPOLIS COMMUNITY & TECHNICAL COLL,MINNEAPOLIS,MN +2132,MINNESOTA BIBLE COLLEGE,ROCHESTER,MN +2126,MINNESOTA STATE UNIVERSITY-MANKATO,MANKATO,MN +2164,MINNESOTA WEST COMM & TECH COLLEGE-WORTH,WORTHINGTON,MN +2134,MOORHEAD STATE UNIVERSITY,MOORHEAD,MN +2124,NATIONAL AMERICAN UNIVERSITY,ST PAUL,MN +2123,NORMANDALE COMMUNITY COLLEGE,BLOOMINGTON,MN +2136,NORTH CENTRAL BIBLE COLLEGE,MINNEAPOLIS,MN +2137,NORTH HENNEPIN COMMUNITY COLLEGE,MINNEAPOLIS,MN +2159,NORTHLAND COMMUNITY COLLEGE,THIEF RIVER FALLS,MN +2105,NORTHWEST TECHNICAL INSTITUTE,EDEN PRAIRIE,MN +2138,NORTHWESTERN COLLEGE,ST. PAUL,MN +2139,NORTHWESTERN COLLEGE OF CHIROPRACTIC,BLOOMINGTON,MN +2167,OAK HILLS BIBLE INSTITUTE,BEMIDJI,MN +2170,PILLSBURY BAPTIST BIBLE COLLEGE,OWATONNA,MN +2117,RAINY RIVER COMMUNITY COLLEGE,INTERNATIONAL FALLS,MN +2161,RIDGEWATER COLLEGE,WILLMAR,MN +2082,RIVERLAND COMMUNITY COLLEGE,AUSTIN,MN +2142,ROCHESTER COMMUNITY & TECH COLLEGE,ROCHESTER,MN +2145,SAINT CLOUD TECHNICAL COLLEGE,ST CLOUD,MN +2140,SOUTH CENTRAL TECHNICAL COLLEGE,NORTH MANKATO,MN +2151,SOUTHWEST STATE UNIVERSITY,MARSHALL,MN +2141,SOUTHWESTERN TECHNICAL COLLEGE,GRANITE FALLS,MN +2144,ST CLOUD STATE UNIVERSITY,ST CLOUD,MN +2146,ST JOHN'S UNIVERSITY,COLLEGEVILLE,MN +2153,ST LUKES HOSPITAL SCHOOL OF NURSING,DULUTH,MN +2149,ST MARY'S JUNIOR COLLEGE,MINNEAPOLIS,MN +2148,ST MARY'S UNIVERSITY OF MINNESOTA,WINONA,MN +2150,ST OLAF COLLEGE,NORTHFIELD,MN +2143,ST PAUL TECHNICAL COLLEGE,ST PAUL,MN +2154,ST. JOSEPH'S HOSPITAL SCHOOL,MANKATO,MN +2081,THIEF RIVER FALLS AG-VO TECH INSTITUTE,THIEF RIVER FALLS,MN +2097,UNIV OF MINNESOTA TECH COLLEGE-WASECA,WASECA,MN +2156,UNIV OF MINNESOTA-MINNEAPOLIS,MINNEAPOLIS,MN +2129,UNIVERSITY OF MINNESOTA-CROOKSTON,CROOKSTON,MN +2157,UNIVERSITY OF MINNESOTA-DULUTH,DULUTH,MN +2155,UNIVERSITY OF MINNESOTA-MORRIS,MORRIS,MN +2102,UNIVERSITY OF ST THOMAS,ST PAUL,MN +2108,VERMILION COMMUNITY COLLEGE,ELY,MN +2165,WALDEN UNIVERSITY,MINNEAPOLIS,MN +2163,WINONA AREA TECHNICAL INSTITUTE,WINONA,MN +2162,WINONA STATE UNIVERSITY,WINONA,MN +2278,AVILA COLLEGE,KANSAS CITY,MO +2283,BAPTIST BIBLE COLLEGE,SPRINGFIELD,MO +2284,BARNES HOSPITAL SCHOOL OF NURSING,ST LOUIS,MO +2312,CALVARY BIBLE COLLEGE,KANSAS CITY,MO +2266,CARDINAL GLENNON COLLEGE,ST LOUIS,MO +2268,CENTRAL BIBLE COLLEGE,SPRINGFIELD,MO +2269,CENTRAL CHRISTIAN COLLEGE OF BIBLE,MOBERLY,MO +2270,CENTRAL METHODIST COLLEGE,FAYETTE,MO +2272,CENTRAL MISSOURI STATE UNIVERSITY,WARRENSBURG,MO +2281,COLLEGE OF THE OZARKS,POINT LOOKOUT,MO +2276,COLUMBIA COLLEGE,COLUMBIA,MO +2280,CONCEPTION SEMINARY COLLEGE,CONCEPTION,MO +2287,CONCORDIA SEMINARY,ST LOUIS,MO +2286,COTTEY COLLEGE,NEVADA,MO +2285,COVENANT THEOLOGICAL SEMINARY,ST LOUIS,MO +2351,COX MEDICAL CENTER SCHOOL OF RADIOLOGY,SPRINGFIELD,MO +2289,CROWDER COLLEGE,NEOSHO,MO +2290,CULVER-STOCKTON COLLEGE,CANTON,MO +2293,DEACONESS COLLEGE OF NURSING,ST LOUIS,MO +2291,DEVRY INSTITUTE OF TECHNOLOGY,KANSAS CITY,MO +2292,DRURY COLLEGE,SPRINGFIELD,MO +2294,EAST CENTRAL COLLEGE,UNION,MO +2296,EVANGEL COLLEGE,SPRINGFIELD,MO +2298,FONTBONNE COLLEGE,ST LOUIS,MO +2301,GATEWAY BIBLE COLLEGE,ST LOUIS,MO +2303,GATEWAY COLLEGE OF EVANGELISM,FLORISSANT,MO +2320,HANNIBAL-LAGRANGE COLLEGE,HANNIBAL,MO +2302,HARRIS-STOWE STATE COLLEGE,ST LOUIS,MO +2313,JEFFERSON COLLEGE,HILLSBORO,MO +2305,JEWISH HOSPITAL SCHOOL OF NURSING,ST LOUIS,MO +2300,JOB CORPS CENTER,EXCELSIOR SPRINGS,MO +2277,KANSAS CITY ART INSTITUTE,KANSAS CITY,MO +2316,KEMPER MILITARY SCHOOL AND COLLEGE,BOONVILLE,MO +2322,LINCOLN UNIVERSITY,JEFFERSON CITY,MO +2324,LINDENWOOD COLLEGE,ST CHARLES,MO +5105,LINN TECHNICAL COLLEGE,LINN,MO +2318,LOGAN COLLEGE OF CHIROPRACTIC,CHESTERFIELD,MO +2307,LONGVIEW COMMUNITY COLLEGE,LEE'S SUMMIT,MO +2310,LUTHERAN MEDICAL CENTER SCH OF NURSING,ST LOUIS,MO +2331,MAPLE WOODS COMMUNITY COLLEGE,KANSAS CITY,MO +2326,MARYVILLE UNIVERSITY-ST LOUIS,ST LOUIS,MO +2348,METRO BUSINESS COLLEGE,ST LOUIS,MO +2306,MINERAL AREA COLLEGE,FLAT RIVER,MO +2323,MISSOURI BAPTIST COLLEGE-ST LOUIS CAMPUS,ST LOUIS,MO +2329,MISSOURI BAPTIST HOSPITAL SCHOOL-NURSING,ST LOUIS,MO +2304,MISSOURI SOUTHERN STATE COLLEGE,JOPLIN,MO +2330,MISSOURI VALLEY COLLEGE,MARSHALL,MO +2344,MISSOURI WESTERN STATE COLLEGE,ST JOSEPH,MO +2332,MOBERLY AREA JUNIOR COLLEGE,MOBERLY,MO +2378,NORTH CENTRAL MISSOURI COLLEGE,TRENTON,MO +2338,NORTHWEST MISSOURI STATE UNIV,MARYVILLE,MO +2279,OZARK CHRISTIAN COLLEGE,JOPLIN,MO +2282,OZARKS TECHNICAL COMMUNITY COLLEGE,SPRINGFIELD,MO +2340,PARK COLLEGE,PARKVILLE,MO +2341,PENN VALLEY COMMUNITY COLLEGE,KANSAS CITY,MO +2343,PIONEER COMMUNITY COLLEGE,KANSAS CITY,MO +2347,RESEARCH COLLEGE OF NURSING,KANSAS CITY,MO +2342,ROCKHURST COLLEGE,KANSAS CITY,MO +2371,RUTLEDGE COLLEGE,SPRINGFIELD,MO +2364,SCHOOL OF THE OZARKS,POINT LOOKOUT,MO +2366,SOUTHEAST MISSOURI STATE UNIVERSITY,CAPE GIRARDEAU,MO +2368,SOUTHWEST BAPTIST UNIVERSITY,BOLIVAR,MO +2370,SOUTHWEST MISSOURI STATE UNIV,SPRINGFIELD,MO +2353,ST CHARLES COUNTY COMM COLLEGE,ST CHARLES,MO +2359,ST JOHN'S HOSPITAL SCHOOL OF NURSING,SPRINGFIELD,MO +2271,ST JOHN'S REGIONAL HLTH CTR SCH/RAD TECH,SPRINGFIELD,MO +2334,ST LOUIS CHRISTIAN COLLEGE,FLORISSANT,MO +2346,ST LOUIS COLLEGE OF PHARMACY,ST LOUIS,MO +2297,ST LOUIS COMM COLL AT FLORISSANT VALLEY,ST LOUIS,MO +2299,ST LOUIS COMM COLL AT FOREST PARK,ST LOUIS,MO +2328,ST LOUIS COMM COLL AT MERAMEC,KIRKWOOD,MO +2352,ST LOUIS UNIVERSITY,ST LOUIS,MO +2357,ST LUKE'S HOSPITAL SCHOOL OF NURSING,KANSAS CITY,MO +2354,ST LUKE'S HOSPITAL SCHOOL OF NURSING,ST LOUIS,MO +2360,ST MARY'S COLLEGE OF O'FALLON,O'FALLON,MO +2362,ST PAUL'S COLLEGE,CONCORDIA,MO +2356,STATE FAIR COMMUNITY COLLEGE,SEDALIA,MO +2374,STEPHENS COLLEGE,COLUMBIA,MO +2376,TARKIO COLLEGE,TARKIO,MO +2372,THREE RIVERS COMMUNITY COLLEGE,POPLAR BLUFF,MO +2336,TRUMAN STATE UNIVERSITY,KIRKSVILLE,MO +2382,UNIVERSITY OF MISSOURI-COLUMBIA,COLUMBIA,MO +2380,UNIVERSITY OF MISSOURI-KANSAS CITY,KANSAS CITY,MO +2398,UNIVERSITY OF MISSOURI-ROLLA,ROLLA,MO +2383,UNIVERSITY OF MISSOURI-ST LOUIS,ST LOUIS,MO +2386,WASHINGTON UNIVERSITY,ST LOUIS,MO +2388,WEBSTER UNIVERSITY,ST LOUIS,MO +2390,WENTWORTH MILITARY ACADEMY,LEXINGTON,MO +2392,WESTMINSTER COLLEGE,FULTON,MO +2394,WILLIAM JEWELL COLLEGE,LIBERTY,MO +2396,WILLIAM WOODS COLLEGE,FULTON,MO +2176,ALCORN STATE UNIVERSITY,LORMAN,MS +2180,BELHAVEN COLLEGE,JACKSON,MS +2182,BLUE MOUNTAIN COLLEGE,BLUE MOUNTAIN,MS +2184,CLARKE COLLEGE,NEWTON,MS +2186,COAHOMA JUNIOR COLLEGE,CLARKSDALE,MS +2188,COPIAH-LINCOLN JUNIOR COLLEGE,WESSON,MS +2189,COPIAH-LINCOLN JUNIOR COLLEGE-NATCHEZ,NATCHEZ,MS +2190,DELTA STATE UNIVERSITY,CLEVELAND,MS +2192,EAST CENTRAL JUNIOR COLLEGE,DECATUR,MS +2194,EAST MISSISSIPPI COMMUNITY COLLEGE,SCOOBA,MS +2196,GOLDEN TRIANGLE VOC TECH CENTER,COLUMBUS,MS +2177,HINDS JUNIOR COLLEGE-JACKSON CAMPUS,JACKSON,MS +2262,HINDS JUNIOR COLLEGE-RANKIN BRANCH,PEARL,MS +2198,HINDS JUNIOR COLLEGE-RAYMOND CAMPUS,RAYMOND,MS +2223,HINDS JUNIOR COLLEGE-UTICA CAMPUS,UTICA,MS +2261,HINDS JUNIOR COLLEGE-VICKSBURG/WARREN,VICKSBURG,MS +2200,HOLMES COMMUNITY COLLEGE,GOODMAN,MS +2202,ITAWAMBA JUNIOR COLLEGE,FULTON,MS +2204,JACKSON STATE UNIVERSITY,JACKSON,MS +2206,JONES COUNTY JUNIOR COLLEGE,ELLISVILLE,MS +2211,MAGNOLIA BIBLE COLLEGE,KOSCIUSKO,MS +2208,MARY HOLMES COLLEGE,WEST POINT,MS +2209,MATTY HERSEE HOSP SCHOOL OF NURSING,MERIDIAN,MS +2210,MERIDIAN JUNIOR COLLEGE,MERIDIAN,MS +2230,MID-SOUTH CHRISTIAN COLLEGE,SENATOBIA,MS +2212,MILLSAPS COLLEGE,JACKSON,MS +2215,MISSISSIPPI BAPT MED CTR SCH/RAD TECH,JACKSON,MS +2214,MISSISSIPPI COLLEGE,CLINTON,MS +2244,MISSISSIPPI DELTA JUNIOR COLLEGE,MOORHEAD,MS +2220,MISSISSIPPI STATE UNIVERSITY,MISSISSIPPI STATE,MS +2260,MISSISSIPPI UNIVERSITIES CENTER,JACKSON,MS +2222,MISSISSIPPI UNIVERSITY FOR WOMEN,COLUMBUS,MS +2224,MISSISSIPPI VALLEY STATE UNIVERSITY,ITTA BENA,MS +2203,MS GULF COAST JC-JACKSON COUNTY CAMPUS,GAUTIER,MS +2205,MS GULF COAST JC-JEFFERSON DAVIS CAMPUS,GULFPORT,MS +2234,MS GULF COAST JC-PERKINSTON CAMPUS,PERKINSTON,MS +2259,NATCHEZ COLLEGE,NATCHEZ,MS +2226,NORTHEAST MISSISSIPPI COMMUNITY COLLEGE,BOONEVILLE,MS +2228,NORTHWEST MISSISSIPPI COMMUNITY COLLEGE,SENATOBIA,MS +2232,PEARL RIVER JUNIOR COLLEGE,POPLARVILLE,MS +2233,PHILLIPS JUNIOR COLLEGE,GULFPORT,MS +2238,PRENTISS INSTITUTE,PRENTISS,MS +2240,RUST COLLEGE,HOLLY SPRINGS,MS +2241,SOUTHEASTERN BAPTIST COLLEGE,LAUREL,MS +2242,SOUTHWEST MISSISSIPPI JUNIOR COLLEGE,SUMMIT,MS +2248,TOUGALOO COLLEGE,TOUGALOO,MS +2250,UNIVERSITY OF MISSISSIPPI,UNIVERSITY,MS +2251,UNIVERSITY OF MISSISSIPPI MEDICAL CTR,JACKSON,MS +2218,UNIVERSITY SOUTHERN MISSISSIPPI,HATTIESBURG,MS +2217,UNIVERSITY SOUTHERN MISSISSIPPI-GULF PK,HATTIESBURG,MS +2219,UNIVERSITY SOUTHERN MISSISSIPPI-NATCHEZ,HATTIESBURG,MS +2253,WESLEY COLLEGE,FLORENCE,MS +2254,WILLIAM CAREY COLLEGE,HATTIESBURG,MS +2256,WOOD JUNIOR COLLEGE,MATHISTON,MS +2433,BIG SKY BIBLE COLLEGE,LEWISTOWN,MT +2408,CARROLL COLLEGE,HELENA,MT +2414,DAWSON COMMUNITY COLLEGE,GLENDIVE,MT +2403,DULL KNIFE COLLEGE,LAME DEER,MT +2417,FLATHEAD VALLEY COMMUNITY COLLEGE,KALISPELL,MT +2419,FORT PECK COMMUNITY COLLEGE,POPLAR,MT +2412,MILES COMMUNITY COLLEGE,MILES CITY,MT +2420,MONTANA STATE UNIVERSITY,BOZEMAN,MT +2416,MONTANA STATE UNIVERSITY-BILLINGS,BILLINGS,MT +2418,MONTANA TECH OF THE UNIV OF MONTANA,BUTTE,MT +2424,NORTHERN MONTANA COLLEGE,HAVRE,MT +2426,ROCKY MOUNTAIN COLLEGE,BILLINGS,MT +2410,UNIVERSITY OF GREAT FALLS,GREAT FALLS,MT +2422,UNIVERSITY OF MONTANA,MISSOULA,MT +2428,WESTERN MONTANA COLLEGE,DILLON,MT +2427,YELLOWSTONE BAPTIST COLL/BIBLE INSTITUTE,BILLINGS,MT +3061,ANSON TECHNICAL COLLEGE,ANSONVILLE,NC +3062,APPALACHIAN STATE UNIVERSITY,BOONE,NC +3063,ASHEVILLE BUNCOMBE TECHNICAL INSTITUTE,ASHEVILLE,NC +3066,ATLANTIC CHRISTIAN COLLEGE,WILSON,NC +3068,BARBER-SCOTIA COLLEGE,CONCORD,NC +3070,BELMONT ABBEY COLLEGE,BELMONT,NC +3072,BENNETT COLLEGE,GREENSBORO,NC +3074,BREVARD COLLEGE,BREVARD,NC +3075,CALDWELL COMM COLL & TECH INST,HUDSON,NC +3076,CAMPBELL UNIVERSITY,BUIES CREEK,NC +0377,CAPE FEAR COMMUNITY COLLEGE,WILMINGTON,NC +3078,CARTERET COMMUNITY COLLEGE,MOREHEAD CITY,NC +3080,CATAWBA COLLEGE,SALISBURY,NC +3079,CATAWBA VALLEY TECHNICAL COLLEGE,HICKORY,NC +3082,CENTRAL CAROLINA COMMUNITY COLLEGE,SANFORD,NC +3081,CENTRAL PIEDMONT COMMUNITY COLLEGE,CHARLOTTE,NC +3084,CHOWAN COLLEGE,MURFREESBORO,NC +3089,CLEVELAND TECHNICAL COLLEGE,SHELBY,NC +3083,COASTAL CAROLINA COMMUNITY COLLEGE,JACKSONVILLE,NC +3085,COLLEGE OF THE ALBEMARLE,ELIZABETH CITY,NC +3182,CRAVEN COMMUNITY COLLEGE,NEW BERN,NC +3086,DAVIDSON COLLEGE,DAVIDSON,NC +3087,DAVIDSON COUNTY COMMUNITY COLLEGE,LEXINGTON,NC +3088,DUKE UNIVERSITY,DURHAM,NC +5563,DURHAM TECHNICAL COMMUNITY COLLEGE,DURHAM,NC +3094,EAST CAROLINA UNIVERSITY,GREENVILLE,NC +3058,EAST COAST BIBLE COLLEGE,CHARLOTTE,NC +3095,ELIZABETH CITY STATE UNIVERSITY,ELIZABETH CITY,NC +3096,ELON COLLEGE,ELON COLLEGE,NC +3098,FAYETTEVILLE STATE UNIVERSITY,FAYETTEVILLE,NC +3181,FAYETTEVILLE TECHNICAL COMMUNITY COLLEGE,FAYETTEVILLE,NC +3099,FORSYTH TECHNICAL INSTITUTE,WINSTON-SALEM,NC +3102,GARDNER-WEBB COLLEGE,BOILING SPRINGS,NC +3165,GASTON COLLEGE,DALLAS,NC +3104,GREENSBORO COLLEGE,GREENSBORO,NC +3106,GUILFORD COLLEGE,GREENSBORO,NC +5134,GUILFORD TECHNICAL COMMUNITY COLLEGE,JAMESTOWN,NC +3091,HALIFAX COMMUNITY COLLEGE,WELDON,NC +3090,HERITAGE SCHOOL/EVANGELISM&COMMUNICATION,CHARLOTTE,NC +3108,HIGH POINT COLLEGE,HIGH POINT,NC +3109,ISOTHERMAL COMMUNITY COLLEGE,SPINDALE,NC +3111,JAMES SPRUNT TECHNICAL COLLEGE,KENANSVILLE,NC +3110,JOHN WESLEY COLLEGE,HIGH POINT,NC +3112,JOHNSON C SMITH UNIVERSITY,CHARLOTTE,NC +3113,JOHNSTON COMMUNITY COLLEGE,SMITHFIELD,NC +3114,KING'S COLLEGE,CHARLOTTE,NC +3116,LEES-MCRAE COLLEGE,BANNER ELK,NC +3117,LENOIR COMMUNITY COLLEGE,KINSTON,NC +3118,LENOIR-RHYNE COLLEGE,HICKORY,NC +3120,LIVINGSTONE COLLEGE,SALISBURY,NC +3122,LOUISBURG COLLEGE,LOUISBURG,NC +3123,MANNA CHRISTIAN COLLEGE,FAYETTEVILLE,NC +3124,MARS HILL COLLEGE,MARS HILL,NC +3125,MCDOWELL TECHNICAL COLLEGE,MARION,NC +3126,MEREDITH COLLEGE,RALEIGH,NC +3127,METHODIST COLLEGE,FAYETTEVILLE,NC +3128,MITCHELL COMMUNITY COLLEGE,STATESVILLE,NC +3129,MONTGOMERY TECHNICAL COLLEGE,TROY,NC +3130,MONTREAT-ANDERSON COLLEGE,MONTREAT,NC +3131,MOUNT OLIVE COLLEGE,MOUNT OLIVE,NC +3060,NORTH CAROLINA AGRIC & TECH STATE UNIV,GREENSBORO,NC +3132,NORTH CAROLINA CENTRAL UNIVERSITY,DURHAM,NC +3133,NORTH CAROLINA SCHOOL OF THE ARTS,WINSTON-SALEM,NC +3164,NORTH CAROLINA STATE UNIV-RALEIGH,RALEIGH,NC +3135,NORTH CAROLINA WESLEYAN COLLEGE,ROCKY MOUNT,NC +3136,PEACE COLLEGE,RALEIGH,NC +3138,PEMBROKE STATE UNIVERSITY,PEMBROKE,NC +3140,PFEIFFER COLLEGE,MISENHEIMER,NC +3142,PIEDMONT BIBLE COLLEGE,WINSTON-SALEM,NC +3141,PITT COMMUNITY COLLEGE,GREENVILLE,NC +3148,QUEENS COLLEGE,CHARLOTTE,NC +3147,RANDOLPH TECHNICAL COLLEGE,ASHEBORO,NC +3144,ROANOKE-CHOWAN TECHNICAL COLLEGE,AHOSKIE,NC +3139,ROBESON TECHNICAL COLLEGE,LUMBERTON,NC +3143,ROCKINGHAM COMMUNITY COLLEGE,WENTWORTH,NC +3145,ROWAN TECHNICAL COLLEGE,SALISBURY,NC +3150,SACRED HEART COLLEGE,BELMONT,NC +3156,SALEM COLLEGE,WINSTON-SALEM,NC +3151,SALISBURY BUSINESS COLLEGE,SALISBURY,NC +3153,SAMPSON COMMUNITY COLLEGE,CLINTON,NC +3149,SANDHILLS COMMUNITY COLLEGE,CARTHAGE,NC +3158,SHAW UNIVERSITY,RALEIGH,NC +3159,SOUTHEASTERN COMMUNITY COLLEGE,WHITEVILLE,NC +3160,SOUTHWESTERN COMMUNITY COLLEGE,SYLVA,NC +3146,ST ANDREWS PRESBYTERIAN COLLEGE,LAURINBURG,NC +3152,ST AUGUSTINE'S COLLEGE,RALEIGH,NC +3154,ST MARY'S COLLEGE,RALEIGH,NC +3161,SURRY COMMUNITY COLLEGE,DOBSON,NC +3157,"TECHNICAL COLLEGE OF ALAMANCE, THE",HAW RIVER,NC +3059,TRI-COUNTY COMMUNITY COLLEGE,MURPHY,NC +3064,UNIV OF NORTH CAROLINA AT ASHEVILLE,ASHEVILLE,NC +3163,UNIV OF NORTH CAROLINA AT CHARLOTTE,CHARLOTTE,NC +3166,UNIV OF NORTH CAROLINA AT GREENSBORO,GREENSBORO,NC +3174,UNIV OF NORTH CAROLINA AT WILMINGTON,WILMINGTON,NC +3162,UNIVERSITY OF NORTH CAROLINA,CHAPEL HILL,NC +3167,VANCE GRANVILLE COMMUNITY COLLEGE,HENDERSON,NC +3168,WAKE FOREST UNIVERSITY,WINSTON-SALEM,NC +3177,WAKE TECHNICAL COMMUNITY COLLEGE,RALEIGH,NC +3170,WARREN WILSON COLLEGE,ASHEVILLE,NC +3171,WAYNE COMMUNITY COLLEGE,GOLDSBORO,NC +3172,WESTERN CAROLINA UNIVERSITY,CULLOWHEE,NC +3173,WESTERN PIEDMONT COMMUNITY COLLEGE,MORGANTON,NC +3175,WILKES COMMUNITY COLLEGE,WILKESBORO,NC +3179,WILSON TECHNICAL COMMUNITY COLLEGE,WILSON,NC +3176,WINGATE COLLEGE,WINGATE,NC +3180,WINSTON-SALEM BIBLE COLLEGE,WINSTON-SALEM,NC +3178,WINSTON-SALEM STATE UNIVERSITY,WINSTON-SALEM,NC +3196,BISMARCK STATE COLLEGE,BISMARCK,ND +4809,CAPITAL COMMERCIAL COLLEGE,BISMARCK,ND +3210,DICKINSON STATE UNIVERSITY,DICKINSON,ND +3194,FORT BERTHOLD COMMUNITY COLLEGE,NEW TOWN,ND +3200,JAMESTOWN COLLEGE,JAMESTOWN,ND +3198,LAKE REGION COMMUNITY COLLEGE,DEVILS LAKE,ND +0032,LITTLE HOOP COMMUNITY COLLEGE,FORT TOTTEN,ND +3212,MAYVILLE STATE UNIVERSITY,MAYVILLE,ND +3208,MEDCENTER ONE QR RADIOLOGIC TECH PROG,BISMARCK,ND +3197,MEDCENTER ONE SCHOOL OF NURSING,BISMARCK,ND +3214,MINOT STATE UNIVERSITY,MINOT,ND +3204,MINOT STATE UNIVERSITY-BOTTINEAU CENTER,BOTTINEAU,ND +3206,NORTH DAKOTA STATE COLL OF SCIENCE,WAHPETON,ND +3202,NORTH DAKOTA STATE UNIVERSITY,FARGO,ND +3207,NORTHWEST BIBLE COLLEGE,MINOT,ND +3220,ST LUKES HOSPITAL SCHOOL OF NURSING,FARGO,ND +3215,TRINITY BIBLE COLLEGE,ELLENDALE,ND +3221,TRINITY SCHOOL OF NURSING,MINOT,ND +3191,TURTLE MOUNTAIN COMMUNITY COLLEGE,BELCOURT,ND +3193,UNITED TRIBES EDUCATIONAL TECHNICAL CTR,BISMARCK,ND +3201,UNIVERSITY OF MARY,BISMARCK,ND +3218,UNIVERSITY OF NORTH DAKOTA,GRAND FORKS,ND +3217,UNIVERSITY OF NORTH DAKOTA - LAKE REGION,DEVILS LAKE,ND +3219,UNIVERSITY OF NORTH DAKOTA-WILLISTON,WILLISTON,ND +3216,VALLEY CITY STATE COLLEGE,VALLEY CITY,ND +2435,ARCHBISHOP BERGAN MERCY HOSPITAL,OMAHA,NE +2437,BELLEVUE UNIVERSITY,BELLEVUE,NE +2438,BRYAN MEMORIAL HOSPITAL SCH OF NURSING,LINCOLN,NE +2434,CENTRAL COMM COLLEGE-GRAND ISLAND,GRAND ISLAND,NE +2439,CENTRAL COMMUNITY COLLEGE-HASTINGS CMPS,HASTINGS,NE +2475,CENTRAL COMMUNITY COLLEGE-PLATTE CAMPUS,COLUMBUS,NE +2466,CHADRON STATE COLLEGE,CHADRON,NE +2436,CLARKSON COLLEGE,OMAHA,NE +2440,COLLEGE OF SAINT MARY,OMAHA,NE +2442,CONCORDIA UNIVERSITY,SEWARD,NE +2444,CREIGHTON UNIVERSITY,OMAHA,NE +2446,DANA COLLEGE,BLAIR,NE +2448,DOANE COLLEGE,CRETE,NE +2454,GRACE COLLEGE OF THE BIBLE,OMAHA,NE +2456,HASTINGS COLLEGE,HASTINGS,NE +4788,LINCOLN SCHOOL OF COMMERCE,LINCOLN,NE +2459,MARY LANNING MEMORIAL HOSP SCH/NURSING,HASTINGS,NE +2460,MCCOOK COMMUNITY COLLEGE,MCCOOK,NE +2465,METHODIST SCHOOL OF NURSING,OMAHA,NE +2447,METROPOLITAN COMMUNITY COLLEGE,OMAHA,NE +2462,MIDLAND LUTHERAN COLLEGE,FREMONT,NE +2491,MID-PLAINS COMMUNITY COLLEGE,NORTH PLATTE,NE +2473,NEBRASKA CHRISTIAN COLLEGE,NORFOLK,NE +2471,NEBRASKA COLL OF TECH AGRICULTURE,CURTIS,NE +5572,NEBRASKA COLLEGE OF BUSINESS,OMAHA,NE +2477,NEBRASKA INDIAN COMMUNITY COLLEGE,WINNEBAGO,NE +2474,NEBRASKA WESLEYAN UNIVERSITY,LINCOLN,NE +2476,NORTHEAST COMMUNITY COLLEGE,NORFOLK,NE +2470,PERU STATE COLLEGE,PERU,NE +2463,PLATTE VALLEY BIBLE COLLEGE,SCOTTSBLUFF,NE +2441,SOUTHEAST COMM COLL-BEATRICE CAMPUS,BEATRICE,NE +2452,SOUTHEAST COMM COLL-FAIRBURY CAMPUS,FAIRBURY,NE +4787,SOUTHEAST COMM COLL-LINCOLN CAMPUS,LINCOLN,NE +4789,SOUTHEAST COMM COLL-MILFORD CAMPUS,MILFORD,NE +2480,UNION COLLEGE,LINCOLN,NE +2468,UNIVERSITY OF NEBRASKA AT KEARNEY,KEARNEY,NE +2482,UNIVERSITY OF NEBRASKA AT LINCOLN,LINCOLN,NE +2487,UNIVERSITY OF NEBRASKA MEDICAL CENTER,OMAHA,NE +2458,UNIVERSITY OF NEBRASKA SCH OF TECH/AGRIC,CURTIS,NE +2464,UNIVERSITY OF NEBRASKA-OMAHA,OMAHA,NE +2472,WAYNE STATE COLLEGE,WAYNE,NE +2488,WEST NEBRASKA GEN HOSPITAL SCH/NURSING,SCOTTSBLUFF,NE +2478,WESTERN NEBRASKA COMMUNITY COLLEGE,SCOTTSBLUFF,NE +2490,WESTERN NEBRASKA TECHNICAL COLLEGE,SIDNEY,NE +2484,YORK COLLEGE,YORK,NE +2506,COLBY-SAWYER COLLEGE,NEW LONDON,NH +2512,COLLEGE FOR LIFELONG LEARNING,LEE,NH +2525,DANIEL WEBSTER COLLEGE,NASHUA,NH +2508,DARTMOUTH COLLEGE,HANOVER,NH +2509,FRANKLIN PIERCE COLLEGE,RINDGE,NH +2515,HAWTHORNE COLLEGE,ANTRIM,NH +2503,HESSER COLLEGE,MANCHESTER,NH +2510,KEENE STATE COLLEGE,KEENE,NH +2511,MAGDALEN COLLEGE,BEDFORD,NH +2502,MCINTOSH COLLEGE,DOVER,NH +2513,NEW ENGLAND COLLEGE,HENNIKER,NH +2514,NEW HAMPSHIRE COLLEGE,MANCHESTER,NH +2516,NEW HAMPSHIRE TECHNICAL INSTITUTE,CONCORD,NH +2517,NEW HAMPSHIRE VOC-TECH COLL-BERLIN,BERLIN,NH +2529,NEW HAMPSHIRE VOC-TECH COLL-CLAREMONT,CLAREMONT,NH +2527,NEW HAMPSHIRE VOC-TECH COLL-LACONIA,LACONIA,NH +2507,NEW HAMPSHIRE VOC-TECH COLL-MANCHESTER,MANCHESTER,NH +2523,NEW HAMPSHIRE VOC-TECH COLL-NASHUA,NASHUA,NH +2530,NEW HAMPSHIRE VOC-TECH COLL-STRATHAM,STRATHAM,NH +2521,NOTRE DAME COLLEGE,MANCHESTER,NH +2518,PLYMOUTH STATE COLLEGE,PLYMOUTH,NH +2520,RIVIER COLLEGE,NASHUA,NH +2522,ST ANSELM COLLEGE,MANCHESTER,NH +2531,THOMAS MORE INSTITUTE OF LIBERAL ARTS,MERRIMACK,NH +2524,UNIVERSITY OF NEW HAMPSHIRE,DURHAM,NH +2528,WHITE PINES COLLEGE,CHESTER,NH +2539,ATLANTIC COMMUNITY COLLEGE,MAYS LANDING,NJ +2541,BERGEN COMMUNITY COLLEGE,PARAMUS,NJ +2576,BERKELEY SCHOOL OF GARRETT MOUNTAIN,LITTLE FALLS,NJ +2686,BERKELEY SCHOOL OF LONG ISLAND,LITTLE FALLS,NJ +2688,BERKELEY SCHOOL-NEW YORK CITY,LITTLE FALLS,NJ +2578,BERKELEY SCHOOL-RIDGEWOOD,LITTLE FALLS,NJ +2695,BERKELEY SCHOOL-WHITE PLAINS,LITTLE FALLS,NJ +2540,BLOOMFIELD COLLEGE,BLOOMFIELD,NJ +2553,BROOKDALE COMMUNITY COLLEGE,LINCROFT,NJ +2543,BURLINGTON COUNTY COLLEGE,PEMBERTON,NJ +2542,CALDWELL COLLEGE,CALDWELL,NJ +2545,CAMDEN COUNTY COLLEGE,BLACKWOOD,NJ +2544,CENTENARY COLLEGE,HACKETTSTOWN,NJ +2546,COLLEGE OF ST ELIZABETH,CONVENT STATION,NJ +2549,COUNTY COLLEGE OF MORRIS,RANDOLPH,NJ +2563,CUMBERLAND COUNTY COLLEGE,VINELAND,NJ +2548,DON BOSCO COLLEGE,NEWTON,NJ +2550,DREW UNIVERSITY,MADISON,NJ +2551,ESSEX COUNTY COLLEGE,NEWARK,NJ +2574,FAIRLEIGH DICKINSON U-EDWARD WILLIAMS C,HACKENSACK,NJ +2554,FAIRLEIGH DICKINSON U-FLORHAM/MADISON,MADISON,NJ +2552,FAIRLEIGH DICKINSON U-RUTHERFORD CAMPUS,RUTHERFORD,NJ +2556,FAIRLEIGH DICKINSON U-TEANECK CAMPUS,TEANECK,NJ +2581,FAIRLEIGH DICKINSON U-WAYNE EXTENSION,WAYNE,NJ +2559,FELICIAN COLLEGE,LODI,NJ +2562,GEORGIAN COURT COLLEGE,LAKEWOOD,NJ +2561,GLOUCESTER COUNTY COLLEGE,SEWELL P O,NJ +2575,HELENE FULD SCHOOL OF NURSING,CAMDEN,NJ +2577,HUDSON COUNTY COMMUNITY COLLEGE,JERSEY CITY,NJ +2570,JERSEY CITY STATE COLLEGE,JERSEY CITY,NJ +2555,KATHARINE GIBBS SCHOOL,MONTCLAIR,NJ +2582,KEAN COLLEGE OF NEW JERSEY,UNION,NJ +2568,MERCER COUNTY COMMUNITY COLLEGE,TRENTON,NJ +2573,MIDDLESEX COUNTY COLLEGE,EDISON,NJ +2571,MONMOUTH COLLEGE,WEST LONG BRANCH,NJ +2572,MONTCLAIR STATE COLLEGE,UPPER MONTCLAIR,NJ +2580,NEW JERSEY INSTITUTE OF TECHNOLOGY,NEWARK,NJ +2585,OCEAN COUNTY COLLEGE,TOMS RIVER,NJ +2583,PASSAIC COUNTY COMMUNITY COLLEGE,PATERSON,NJ +2588,PRINCETON UNIVERSITY,PRINCETON,NJ +2591,RAMAPO COLLEGE OF NEW JERSEY,MAHWAH,NJ +2609,RARITAN VALLEY COMMUNITY COLLEGE,SOMMERVILLE,NJ +2589,RICHARD STOCKTON COLLEGE,POMONA,NJ +2590,RIDER COLLEGE,LAWRENCEVILLE,NJ +2560,ROWAN COLLEGE OF NEW JERSEY,GLASSBORO,NJ +2598,RUTGERS STATE UNIV-CAMDEN COLL ARTS/SC,CAMDEN,NJ +2596,RUTGERS STATE UNIV-DOUGLASS COLLEGE,NEW BRUNSWICK,NJ +2597,RUTGERS STATE UNIV-LIVINGSTON COLLEGE,NEW BRUNSWICK,NJ +2600,RUTGERS STATE UNIV-NEWARK COLL ARTS/SC,NEWARK,NJ +2592,RUTGERS STATE UNIV-RUTGERS COLLEGE,NEW BRUNSWICK,NJ +2602,SALEM COMMUNITY COLLEGE,PENNS GROVE,NJ +2606,SETON HALL UNIVERSITY,SOUTH ORANGE,NJ +2604,ST PETER'S COLLEGE,JERSEY CITY,NJ +2610,STEVENS INSTITUTE OF TECHNOLOGY,HOBOKEN,NJ +2605,SUSSEX COUNTY COMMUNITY COLLEGE,NEWTON,NJ +2614,THE COLLEGE OF NEW JERSEY,TRENTON,NJ +2612,THOMAS A EDISON STATE COLLEGE,TRENTON,NJ +2616,UNION COUNTY COLLEGE,CRANFORD,NJ +2618,UPSALA COLLEGE-EAST ORANGE CAMPUS,EAST ORANGE,NJ +2557,UPSALA COLLEGE-WIRTHS CAMPUS,SUSSEX,NJ +2617,WARREN COUNTY COMMUNITY COLLEGE,WASHINGTON,NJ +2619,WESTMINSTER CHOIR COLLEGE,PRINCETON,NJ +2584,WILLIAM PATERSON COLLEGE,WAYNE,NJ +2629,ALBUQUERQUE JOB CORPS CENTER,ALBUQUERQUE,NM +5569,ALBUQUERQUE TECH VOC INSTITUTE,ALBUQUERQUE,NM +2641,ARTESIA CHRISTIAN COLLEGE,ARTESIA,NM +2624,CLOVIS COMMUNITY COLLEGE,CLOVIS,NM +2648,COLLEGE OF SANTA FE,SANTA FE,NM +2633,COLLEGE OF THE SOUTHWEST,HOBBS,NM +2631,COLVIS COMMUNITY COLLEGE,CLOVIS,NM +2636,EASTERN NEW MEXICO UNIVERSITY,PORTALES,NM +2647,EASTERN NEW MEXICO U-ROSWELL COMM COLL,ROSWELL,NM +2654,INSTITUTE OF AMERICAN INDIAN ARTS,SANTA FE,NM +2659,LEA REGIONAL HOSP RADIOLOGIC TECH PROG,HOBBS,NM +2640,NEW MEXICO HIGHLANDS UNIVERSITY,LAS VEGAS,NM +2642,NEW MEXICO INSTITUTE OF MINING & TECH,SOCORRO,NM +2643,NEW MEXICO JUNIOR COLLEGE,HOBBS,NM +2644,NEW MEXICO MILITARY INSTITUTE,ROSWELL,NM +2657,NEW MEXICO REHABILITATION CENTER,ROSWELL,NM +2630,NEW MEXICO STATE UNIV. AT ALAMOGORDO,ALAMOGORDO,NM +2632,NEW MEXICO STATE UNIV-CARLSBAD,CARLSBAD,NM +2638,NEW MEXICO STATE UNIVERSITY,LAS CRUCES,NM +2645,NEW MEXICO STATE UNIV-GRANTS,GRANTS,NM +2639,NORTHERN NEW MEXICO COMMUNITY COLLEGE,ESPANOLA,NM +2656,NURSING EDUCATION CENTER FOR INDIANS,ALBUQUERQUE,NM +2637,SAN JUAN COLLEGE,FARMINGTON,NM +2660,SANTA FE COMMUNITY COLLEGE,SANTA FE,NM +2649,ST JOHN'S COLLEGE,SANTA FE,NM +2652,TECHNICAL TRAINING INSTITUTE,LAS CRUCES,NM +2653,UNIV OF NEW MEXICO-VALENCIA COUNTY,BELEN,NM +2634,UNIVERSITY OF ALBUQUERQUE,ALBUQUERQUE,NM +2650,UNIVERSITY OF NEW MEXICO,ALBUQUERQUE,NM +2651,UNIVERSITY OF NEW MEXICO-LOS ALAMOS,LOS ALAMOS,NM +2646,WESTERN NEW MEXICO UNIVERSITY,SILVER CITY,NM +2498,COMM COLLEGE OF SOUTHERN NEVADA,NORTH LAS VEGAS,NV +0252,DEEP SPRINGS COLLEGE CA,VIA DYER,NV +2493,GREAT BASIN COLLEGE,ELKO,NV +2501,OLD COLLEGE,RENO,NV +2500,RENO BUSINESS COLLEGE,RENO,NV +2497,SIERRA NEVADA COLLEGE,INCLINE VILLAGE,NV +2499,TRUCKEE MEADOWS COMMUNITY COLLEGE,RENO,NV +2496,UNIVERSITY OF NEVADA-LAS VEGAS,LAS VEGAS,NV +2494,UNIVERSITY OF NEVADA-RENO,RENO,NV +2495,WESTERN NEVADA COMMUNITY COLLEGE,CARSON CITY,NV +2664,ADELPHI UNIVERSITY,GARDEN CITY,NY +2667,ADIRONDACK COMMUNITY COLLEGE,GLENS FALLS,NY +2661,ALBANY BUSINESS COLLEGE,ALBANY,NY +2666,ALFRED UNIVERSITY,ALFRED,NY +2669,AMERICAN ACADEMY MCALLISTER INSTITUTE,NEW YORK,NY +2663,AMERICAN ACADEMY OF DRAMATIC ARTS,NEW YORK,NY +2670,ARNOT OGDEN MEMORIAL HOSP SCH/NURSING,ELMIRA,NY +2674,BARD COLLEGE,ANNANDALE-ON-HUDSON,NY +0967,BAR-ILAN UNIVERSITY,NEW YORK,NY +2718,BARNARD COLLEGE-COLUMBIA UNIVERSITY,NEW YORK,NY +2721,BERNARD M BARUCH COLLEGE,NEW YORK CITY,NY +2677,BIBLE BAPTIST INSTITUTE AND COLLEGE,HUDSON FALLS,NY +2679,BORICUA COLLEGE,BROOKLYN,NY +2678,BOROUGH OF MANHATTAN COMM COLLEGE,NEW YORK CITY,NY +2684,BROOME COMMUNITY COLLEGE,BINGHAMTON,NY +2676,BRYANT & STRATTON BUSINESS INSTITUTE,BUFFALO,NY +2861,BRYANT & STRATTON POWELSON BUSINESS INST,SYRACUSE,NY +2690,CANISIUS COLLEGE,BUFFALO,NY +2692,CATHEDRAL COLLEGE-IMMACULATE CONCEPTION,DOUGLASTON,NY +2668,CAYUGA COUNTY COMMUNITY COLLEGE,AUBURN,NY +2696,CAZENOVIA COLLEGE,CAZENOVIA,NY +2706,CITY COLLEGE OF NEW YORK,NEW YORK,NY +2950,CITY UNIVERSITY OF NEW YORK,NEW YORK,NY +2698,CLARKSON UNIVERSITY,POTSDAM,NY +2694,CLINTON COMMUNITY COLLEGE,PLATTSBURGH,NY +2702,COLGATE UNIVERSITY,HAMILTON,NY +2985,"COLLEGE OF INSURANCE, THE",NEW YORK,NY +2823,COLLEGE OF MOUNT ST VINCENT,RIVERDALE,NY +2712,COLLEGE OF NEW ROCHELLE,NEW ROCHELLE,NY +2714,COLLEGE OF SAINT ROSE,ALBANY,NY +2719,COLUMBIA UNIV SCH OF ENGNRG & APPL SCI,NEW YORK,NY +2716,COLUMBIA UNIV SCHOOL OF GENERAL STUDIES,NEW YORK,NY +2720,COLUMBIA UNIVERSITY SCHOOL OF NURSING,NEW YORK,NY +2717,COLUMBIA UNIVERSITY-COLUMBIA COLLEGE,NEW YORK,NY +2715,COLUMBIA-GREENE COMMUNITY COLLEGE,HUDSON,NY +2704,COMMUNITY COLLEGE OF THE FINGER LAKES,CANANDAIGUA,NY +2722,CONCORDIA COLLEGE,BRONXVILLE,NY +2724,COOPER UNION,NEW YORK,NY +2726,CORNELL UNIVERSITY,ITHACA,NY +2727,CORNING COMMUNITY COLLEGE,CORNING,NY +2865,CROUSE-IRVING MEMORIAL HOSP SCH/NURSING,SYRACUSE,NY +2867,CULINARY INSTITUTE OF AMERICA,HYDE PARK,NY +2957,CUNY-BERNARD M. COLLEGE,NEW YORK CITY,NY +2953,CUNY-BOROUGH OF MANHATTAN COMM COLLEGE,NEW YORK CITY,NY +2959,CUNY-BROOKLYN COLLEGE,BROOKLYN,NY +2955,CUNY-COLLEGE OF STATEN ISLAND,STATEN ISLAND,NY +2951,CUNY-HUNTER COLLEGE,NEW YORK CITY,NY +2958,CUNY-KINGSBOROUGH COMMUNITY COLLEGE,BROOKLYN,NY +2969,CUNY-LAGUARDIA COMMUNITY COLLEGE,LONG ISLAND CITY,NY +2972,CUNY-NEW YORK CITY TECHNICAL COLLEGE,BROOKLYN,NY +2962,CUNY-QUEENS COLLEGE,FLUSHING,NY +2966,CUNY-YORK COLLEGE,JAMAICA,NY +2874,DAEMEN COLLEGE,BUFFALO,NY +2730,DOMINICAN COLLEGE,ORANGEBURG,NY +2665,DOWLING COLLEGE,OAKDALE,NY +2731,DUTCHESS COMMUNITY COLLEGE,POUGHKEEPSIE,NY +2732,DYOUVILLE COLLEGE,BUFFALO,NY +2734,EASTMAN SCHOOL OF MUSIC,ROCHESTER,NY +2735,ELIZABETH SETON COLLEGE,YONKERS,NY +2739,ELLIS HOSPITAL SCHOOL OF NURSING,SCHNECTADY,NY +2736,ELMIRA COLLEGE,ELMIRA,NY +2737,EMPIRE STATE COLLEGE OF SUNY,SARATOGA SPRINGS,NY +2742,ERIE COMMUNITY COLLEGE-CITY,ORCHARD PARK,NY +2740,ERIE COMMUNITY COLLEGE-NORTH,WILLIAMSVILLE,NY +2741,ERIE COMMUNITY COLLEGE-SOUTH,ORCHARD PARK,NY +2744,FASHION INSTITUTE OF TECHNOLOGY,NEW YORK,NY +2746,FINCH COLLEGE,NEW YORK,NY +2745,FIVE TOWNS COLLEGE,SEAFORD,NY +2748,FORDHAM UNIVERSITY,BRONX,NY +2747,FRIENDS WORLD COLLEGE,LLOYD HARBOR,NY +2749,FULTON-MONTGOMERY COMMUNITY COLLEGE,JOHNSTOWN,NY +2751,GENESEE COMMUNITY COLLEGE,BATAVIA,NY +2754,HAMILTON COLLEGE,CLINTON,NY +2756,HARTWICK COLLEGE,ONEONTA,NY +2763,HERBERT H LEHMAN COLLEGE-CUNY,BRONX,NY +2765,HERKIMER COUNTY COMMUNITY COLLEGE,HERKIMER,NY +2759,HILBERT COLLEGE,HAMBURG,NY +2758,HOBART & WILLIAM SMITH COLLEGES,GENEVA,NY +2760,HOFSTRA UNIVERSITY,HEMPSTEAD,NY +2766,HOUGHTON COLLEGE,HOUGHTON,NY +2768,HUDSON VALLEY COMMUNITY COLLEGE,TROY,NY +2770,IONA COLLEGE,NEW ROCHELLE,NY +2772,ITHACA COLLEGE,ITHACA,NY +2774,JAMESTOWN COMMUNITY COLLEGE,JAMESTOWN,NY +2775,JEFFERSON COMMUNITY COLLEGE,WATERTOWN,NY +2776,JEWISH THEOLOGICAL SEMINARY OF AMERICA,NEW YORK,NY +2781,JOHN JAY COLL OF CRIMINAL JUSTICE-CUNY,NEW YORK,NY +2778,"JUILLIARD SCHOOL, THE",NEW YORK,NY +2779,JUNIOR COLLEGE OF ALBANY,ALBANY,NY +2787,KATHARINE GIBBS SCHOOL,MELVILLE HUNTINGTON,NY +2700,KATHARINE GIBBS SCHOOL,NEW YORK,NY +2782,KEUKA COLLEGE,KEUKA PARK,NY +2784,KING'S COLLEGE,BRIARCLIFF MANOR,NY +2790,LEMOYNE COLLEGE,SYRACUSE,NY +2685,LONG ISLAND U-ARNOLD/MARIE SCHWARTZ COLL,BROOKLYN,NY +2687,LONG ISLAND U-C W POST CAMPUS,GREENVALE,NY +2792,LONG ISLAND UNIVERSITY-BROOKLYN CAMPUS,BROOKLYN,NY +2907,LONG ISLAND U-SOUTHAMPTON CAMPUS,SOUTHAMPTON,NY +2796,MANHATTAN COLLEGE,RIVERDALE,NY +2809,MANHATTAN SCHOOL OF MUSIC,NEW YORK,NY +2800,MANHATTANVILLE COLLEGE,PURCHASE,NY +2803,MARIA COLLEGE OF ALBANY,ALBANY,NY +2802,MARIA REGINA COLLEGE,SYRACUSE,NY +2804,MARIST COLLEGE,POUGHKEEPSIE,NY +2810,MARYMOUNT COLLEGE,TARRYTOWN,NY +2811,MARYMOUNT MANHATTAN COLLEGE,NEW YORK,NY +2799,MATER DEI COLLEGE,OGDENSBURG,NY +2822,MEDAILLE COLLEGE,BUFFALO,NY +2824,MEMORIAL HOSPITAL SCHOOL OF NURSING,ALBANY,NY +2814,MERCY COLLEGE,DOBBS FERRY,NY +2818,MOHAWK VALLEY COMMUNITY COLLEGE,UTICA,NY +2820,MOLLOY COLLEGE,ROCKVILLE CENTRE,NY +2827,MONROE COLLEGE,BRONX,NY +2821,MONROE COMMUNITY COLLEGE,ROCHESTER,NY +2819,MOUNT ST MARY COLLEGE,NEWBURGH,NY +2825,NASSAU COMMUNITY COLLEGE,GARDEN CITY,NY +2826,NAZARETH COLLEGE OF ROCHESTER,ROCHESTER,NY +2828,NEW SCHOOL FOR SOCIAL RESEARCH,NEW YORK,NY +2830,NEW YORK CITY TECHNICAL COLLEGE,BROOKLYN,NY +2832,NEW YORK INSTITUTE OF TECHNOLOGY,OLD WESTBURY,NY +2829,NEW YORK SCHOOL OF INTERIOR DESIGN,NEW YORK,NY +2838,NEW YORK UNIVERSITY,NEW YORK,NY +2843,NIAGARA COUNTY COMMUNITY COLLEGE,SANBORN,NY +2842,NIAGARA UNIVERSITY,NIAGARA UNIV,NY +2864,NORTH COUNTRY COMMUNITY COLLEGE,SARANAC LAKE,NY +2846,NYACK COLLEGE,NYACK,NY +2847,ONONDAGA COMMUNITY COLLEGE,SYRACUSE,NY +2848,ORANGE COUNTY COMMUNITY COLLEGE,MIDDLETOWN,NY +2852,PACE UNIVERSITY AT NEW YORK CITY,NEW YORK,NY +2855,PACE UNIVERSITY AT PLEASANTVILLE,PLEASANTVILLE,NY +2752,PACE UNIVERSITY AT WHITE PLAINS,WHITE PLAINS,NY +2854,PARSONS SCHOOL OF DESIGN,NEW YORK,NY +2858,PAUL SMITH'S COLLEGE OF ARTS & SCIENCES,PAUL SMITHS,NY +2860,POLYTECHNIC INSTITUTE OF NEW YORK,BROOKLYN,NY +2710,PRACTICAL BIBLE TRAINING SCHOOL,BIBLE SCHOOL PARK,NY +2862,PRATT INSTITUTE,BROOKLYN,NY +2863,QUEENSBOROUGH COMMUNITY COLLEGE,BAYSIDE,NY +2866,RENSSELAER POLYTECHNIC INSTITUTE,TROY,NY +2868,ROBERTS WESLEYAN COLLEGE,ROCHESTER,NY +2870,ROCHESTER INSTITUTE OF TECHNOLOGY,ROCHESTER,NY +2873,ROCKLAND COMMUNITY COLLEGE,SUFFERN,NY +2876,RUSSELL SAGE COLLEGE,TROY,NY +2880,SAMARITAN HOSPITAL SCHOOL OF NURSING,TROY,NY +2904,SARAH LAWRENCE COLLEGE,BRONXVILLE,NY +2892,SCHENECTADY COUNTY COMMUNITY COLLEGE,SCHENECTADY,NY +2895,SCHOOL OF VISUAL ARTS,NEW YORK,NY +2878,SIENA COLLEGE,LOUDONVILLE,NY +2905,SIMMONS SCHOOL OF MORTUARY SCIENCE,SYRACUSE,NY +2906,SKIDMORE COLLEGE,SARATOGA SPRINGS,NY +2882,ST BONAVENTURE UNIVERSITY,ST BONAVENTURE,NY +2989,ST ELIZABETH HOSPITAL SCHOOL OF NURSING,UTICA,NY +2884,ST FRANCIS COLLEGE,BROOKLYN,NY +2886,ST JOHN FISHER COLLEGE,ROCHESTER,NY +2888,ST JOHN'S UNIVERSITY,JAMAICA,NY +2844,ST JOHNS UNIVERSITY OF STATEN ISLAND,STATEN ISLAND,NY +2890,ST JOSEPH'S COLLEGE,BROOKLYN,NY +2896,ST LAWRENCE UNIVERSITY,CANTON,NY +2689,ST MARY'S HOSPITAL SCHOOL OF NURSING,AMSTERDAM,NY +2897,ST THOMAS AQUINAS COLLEGE,SPARKILL,NY +2926,STATE UNIV OF NEW YORK AT ALBANY,ALBANY,NY +2978,STATE UNIV OF NEW YORK AT BUFFALO,BUFFALO,NY +2956,STATE UNIV OF NEW YORK-BINGHAMTON,BINGHAMTON,NY +2952,STATE UNIV OF NEW YORK-STONY BROOK,STONY BROOK,NY +2910,STATE UNIV OF NY AG TECH COLL-ALFRED,ALFRED,NY +2912,STATE UNIV OF NY AG TECH COLL-CANTON,CANTON,NY +2914,STATE UNIV OF NY AG TECH COLL-COBLESKLL,COBLESKILL,NY +2916,STATE UNIV OF NY AG TECH COLL-DELHI,DELHI,NY +2930,STATE UNIV OF NY COLL AT BUFFALO,BUFFALO,NY +2932,STATE UNIV OF NY COLL AT CORTLAND,CORTLAND,NY +2934,STATE UNIV OF NY COLL AT FREDONIA,FREDONIA,NY +2936,STATE UNIV OF NY COLL AT GENESEO,GENESEO,NY +2938,STATE UNIV OF NY COLL AT NEW PALTZ,NEW PALTZ,NY +2939,STATE UNIV OF NY COLL AT OLD WESTBURY,OLD WESTBURY,NY +2940,STATE UNIV OF NY COLL AT ONEONTA,ONEONTA,NY +2942,STATE UNIV OF NY COLL AT OSWEGO,OSWEGO,NY +2944,STATE UNIV OF NY COLL AT PLATTSBURGH,PLATTSBURGH,NY +2946,STATE UNIV OF NY COLL AT POTSDAM,POTSDAM,NY +2931,STATE UNIV OF NY COLL AT PURCHASE,PURCHASE,NY +2947,STATE UNIV OF NY COLL AT UTICA/ROME,UTICA,NY +2948,STATE UNIV OF NY COLL ENVIRON/FORESTRY,SYRACUSE,NY +2918,STATE UNIV OF NY COLL OF TECH-FARMINGDLE,FARMINGDALE,NY +2954,STATE UNIV OF NY MARITIME COLLEGE,"FORT SCHUYLER, BRONX",NY +2981,STATE UNIV OF NY UPSTATE MEDICAL CENTER,SYRACUSE,NY +2833,SUFFOLK COUNTY COMM COLL-EASTERN CAMPUS,SELDEN,NY +2997,SUFFOLK COUNTY COMM COLL-WESTERN CAMPUS,SELDEN,NY +2965,SUFFOLK COUNTY COMMUNITY COLLEGE,SELDEN,NY +2967,SULLIVAN COUNTY COMMUNITY COLLEGE,LOCH SHELDRAKE,NY +2968,SYRACUSE UNIVERSITY,SYRACUSE,NY +2963,TOMPKINS-CORTLAND COMMUNITY COLLEGE,DRYDEN,NY +2961,TOURO COLLEGE,NEW YORK,NY +2964,TROCAIRE COLLEGE,BUFFALO,NY +2974,U S MERCHANT MARINE ACADEMY,KINGS POINT,NY +2976,U S MILITARY ACADEMY,WEST POINT,NY +2971,ULSTER COUNTY COMMUNITY COLLEGE,STONE RIDGE,NY +2970,UNION COLLEGE,SCHENECTADY,NY +2980,UNIVERSITY OF ROCHESTER,ROCHESTER,NY +2960,UNIVERSITY OF THE STATE OF NEW YORK,ALBANY,NY +2973,UTICA COLLEGE OF SYRACUSE UNIV,UTICA,NY +2975,UTICA SCHOOL OF COMMERCE,UTICA,NY +2982,VASSAR COLLEGE,POUGHKEEPSIE,NY +2983,VILLA MARIA COLLEGE OF BUFFALO,BUFFALO,NY +2986,WADHAMS HALL SEMINARY-COLLEGE,OGDENSBURG,NY +2984,WAGNER COLLEGE,STATEN ISLAND,NY +2987,WEBB INSTITUTE OF NAVAL ARCH,GLEN COVE,NY +2988,WELLS COLLEGE,AURORA,NY +2990,WESTCHESTER COMMUNITY COLLEGE,VALHALLA,NY +2761,WILLIAM SMITH COLLEGE,GENEVA,NY +2991,WORD OF LIFE BIBLE INSTITUTE,POTTERSVILLE,NY +2992,YESHIVA UNIVERSITY,NEW YORK,NY +1827,AIR FORCE INSTITUTE OF TECHNOLOGY,WRIGHT PATTERSON AFB,OH +3597,AKRON CITY HOSP FIRESTONE SCHOOL/NURSING,AKRON,OH +3227,ALLEGHENY WESLEYAN COLLEGE,SALEM,OH +3232,ANTIOCH COLLEGE,YELLOW SPRINGS,OH +3234,ASHLAND UNIVERSITY,ASHLAND,OH +3229,AULTMAN HOSPITAL SCH OF RADIOLOGIC TECH,CANTON,OH +3228,AULTMAN HOSPITAL SCHOOL OF NURSING,CANTON,OH +3236,BALDWIN WALLACE COLLEGE,BEREA,OH +3230,BELMONT TECHNICAL COLLEGE,ST CLAIRSVILLE,OH +3269,BETHESDA HOSPITAL SCHOOL OF NURSING,CINCINNATI,OH +3233,BLISS COLLEGE,COLUMBUS,OH +3238,BLUFFTON COLLEGE,BLUFFTON,OH +3292,BORROMEO COLLEGE OF OHIO,WICKLIFFE,OH +3240,BOWLING GREEN STATE UNIVERSITY,BOWLING GREEN,OH +3242,CAPITAL UNIVERSITY,COLUMBUS,OH +3244,CASE WESTERN RESERVE UNIVERSITY,CLEVELAND,OH +3245,CEDARVILLE COLLEGE,CEDARVILLE,OH +3365,CENTRAL OHIO TECHNICAL COLLEGE,NEWARK,OH +3246,CENTRAL STATE UNIVERSITY,WILBERFORCE,OH +3252,CHRIST HOSPITAL SCHOOL OF NURSING,CINCINNATI,OH +3376,CHRISTIAN UNION SCHOOL OF THE BIBLE,GREENFIELD,OH +3248,CINCINNATI BIBLE COLLEGE,CINCINNATI,OH +3251,"CINCINNATI COLL OF MORTUARY SCIENCE,THE",CINCINNATI,OH +5570,CINCINNATI TECHNICAL COLLEGE,CINCINNATI,OH +3249,CIRCLEVILLE BIBLE COLLEGE,CIRCLEVILLE,OH +3247,CLARK STATE COMMUNITY COLLEGE,SPRINGFIELD,OH +3243,"CLEVELAND INSTITUTE OF ART, THE",CLEVELAND,OH +3250,CLEVELAND INSTITUTE OF MUSIC,CLEVELAND,OH +3301,CLEVELAND METRO GENERAL HOSP OF NURSING,CLEVELAND,OH +3270,CLEVELAND STATE UNIVERSITY,CLEVELAND,OH +3254,COLLEGE OF MOUNT ST JOSEPH,MOUNT ST JOSEPH,OH +3260,COLLEGE OF WOOSTER,WOOSTER,OH +3281,COLUMBUS COLLEGE OF ART & DESIGN,COLUMBUS,OH +3261,COLUMBUS STATE COMMUNITY COLLEGE,COLUMBUS,OH +3333,COMMUNITY HOSPITAL SCHOOL OF NURSING,SPRINGFIELD,OH +3259,CUYAHOGA COMM COLLEGE-EASTERN CAMPUS,WARRENSVILLE TOWNSHI,OH +3265,CUYAHOGA COMM COLLEGE-WESTERN CAMPUS,PARMA,OH +3263,CUYAHOGA COMM COLL-METROPOLITAN CAMPUS,CLEVELAND,OH +3285,DEACONESS HOSPITAL SCHOOL OF NURSING,CINCINNATI,OH +3264,DEFIANCE COLLEGE,DEFIANCE,OH +3266,DENISON UNIVERSITY,GRANVILLE,OH +3262,DEVRY INSTITUTE OF TECHNOLOGY,COLUMBUS,OH +3268,DYKE COLLEGE,CLEVELAND,OH +3377,EDISON STATE COMMUNITY COLLEGE,PIQUA,OH +3271,FAIRVIEW GENERAL HOSP SCHOOL OF NURSING,CLEVELAND,OH +3258,FRANCISCAN UNIVERSITY OF STEUBENVILLE,STEUBENVILLE,OH +3275,FRANKLIN UNIVERSITY,COLUMBUS,OH +3325,GOD'S BIBLE SCHOOL AND COLLEGE,CINCINNATI,OH +3375,GOOD SAMARITAN HOSPITAL SCH OF NURSING,CINCINNATI,OH +3278,HEIDELBERG COLLEGE,TIFFIN,OH +3327,HERITAGE BAPTIST UNIVERSITY,NORTH JACKSON,OH +3280,HIRAM COLLEGE,HIRAM,OH +3352,HOCKING TECHNICAL COLLEGE,NELSONVILLE,OH +3369,HURON ROAD HOSPITAL SCHOOL OF NURSING,CLEVELAND,OH +3373,JEFFERSON TECHNICAL COLLEGE,STEUBENVILLE,OH +3282,JOHN CARROLL UNIVERSITY,UNIVERSITY HEIGHTS,OH +3773,KENT STATE UNIV-ASHTABULA CAMPUS,ASHTABULA,OH +3225,KENT STATE UNIV-EAST LIVERPOOL CAMPUS,EAST LIVERPOOL,OH +3284,KENT STATE UNIVERSITY,KENT,OH +3224,KENT STATE UNIV-GEAUGA CAMPUS,BURTON,OH +3283,KENT STATE UNIV-PLANISEK BRANCH CAMPUS,KENT,OH +3354,KENT STATE UNIV-SALEM CAMPUS,SALEM,OH +3226,KENT STATE UNIV-STARK CAMPUS,CANTON,OH +3343,KENT STATE UNIV-TRUMBULL CAMPUS,WARREN,OH +3361,KENT STATE UNIV-TUSCARAWAS CAMPUS,NEW PHILDELPHIA,OH +3286,KENYON COLLEGE,GAMBIER,OH +3279,KETTERING COLLEGE OF MEDICAL ARTS,KETTERING,OH +3288,LAKE ERIE COLLEGE,PAINESVILLE,OH +3277,LAKELAND COMMUNITY COLLEGE,MENTOR,OH +3359,LIMA TECHNICAL COLLEGE,LIMA,OH +3287,LORAIN COUNTY COMMUNITY COLLEGE,ELYRIA,OH +3598,LOURDES COLLEGE,SYLVANIA,OH +3291,M B JOHNSON SCHOOL OF NURSING,ELYRIA,OH +3289,MALONE COLLEGE,CANTON,OH +3307,MANSFIELD GENERAL HOSP SCH OF NURSING,MANSFIELD,OH +3599,MARIETTA BIBLE COLLEGE,MARIETTA,OH +3290,MARIETTA COLLEGE,MARIETTA,OH +3351,MARION TECHNICAL COLLEGE,MARION,OH +3294,MIAMI UNIVERSITY,OXFORD,OH +3303,MIAMI UNIVERSITY-HAMILTON CAMPUS,HAMILTON,OH +3299,MIAMI UNIVERSITY-MIDDLETOWN CAMPUS,MIDDLETOWN,OH +3296,MIAMI-JACOBS JUNIOR COLLEGE OF BUSINESS,DAYTON,OH +3297,MOUNT CARMEL SCHOOL OF NURSING,COLUMBUS,OH +3298,MOUNT UNION COLLEGE,ALLIANCE,OH +3372,MOUNT VERNON NAZARENE COLLEGE,MOUNT VERNON,OH +3305,MUSKINGUM AREA TECHNICAL COLLEGE,ZANESVILLE,OH +3300,MUSKINGUM COLLEGE,NEW CONCORD,OH +3255,NATIONAL EDUC CENTER-NIT CAMPUS-OHIO,CUYAHOGA FALLS,OH +3374,NORTH CENTRAL TECHNICAL COLLEGE,MANSFIELD,OH +3315,NORTHEASTERN OHIO U COLLEGE OF MEDICINE,ROOTSTOWN,OH +3356,NORTHWEST TECHNICAL COLLEGE,ARCHBOLD,OH +3302,NOTRE DAME COLLEGE OF OHIO,CLEVELAND,OH +3304,OBERLIN COLLEGE,OBERLIN,OH +3256,OHIO DOMINICAN COLLEGE,COLUMBUS,OH +3310,OHIO NORTHERN UNIVERSITY,ADA,OH +3311,OHIO STATE UNIV AGRIC TECH INSTITUTE,WOOSTER,OH +3312,OHIO STATE UNIVERSITY,COLUMBUS,OH +3320,OHIO STATE UNIVERSITY-LIMA,LIMA,OH +3337,OHIO STATE UNIVERSITY-NEWARK,NEWARK,OH +3314,OHIO UNIVERSITY,ATHENS,OH +3317,OHIO UNIVERSITY-BELMONT CAMPUS,ST CLAIRSVILLE,OH +3313,OHIO UNIVERSITY-CHILLICOTHE CAMPUS,CHILLICOTHE,OH +3370,OHIO UNIVERSITY-IRONTON CAMPUS,IRONTON,OH +3326,OHIO UNIVERSITY-LANCASTER CAMPUS,LANCASTER,OH +3322,OHIO UNIVERSITY-ZANESVILLE CAMPUS,ZANESVILLE,OH +3329,OHIO VALLEY HOSPITAL SCHOOL OF NURSING,STEUBENVILLE,OH +3316,OHIO WESLEYAN UNIVERSITY,DELAWARE,OH +3318,OTTERBEIN COLLEGE,WESTERVILLE,OH +3323,OWENS COMMUNITY COLLEGE,TOLEDO,OH +3321,PONTIFICAL COLLEGE JOSEPHINUM,COLUMBUS,OH +3328,PROVIDENCE HOSP SCH OF RADIOLOGIC TECH,SANDUSKY,OH +3319,PROVIDENCE HOSPITAL SCHOOL OF NURSING,SANDUSKY,OH +3222,RIVERSIDE METH HOSP SCH/RADIOLOGIC TECH,COLUMBUS,OH +3336,SHAWNEE STATE UNIVERSITY,PORTSMOUTH,OH +3332,SINCLAIR COMMUNITY COLLEGE,DAYTON,OH +3253,SOUTHERN OHIO COLLEGE,CINCINNATI,OH +3276,SOUTHERN STATE COMMUNITY COLLEGE,HILLSBORO,OH +3257,ST ALEXIS HOSPITAL SCHOOL OF NURSING,CLEVELAND,OH +3341,ST ELIZABETH HOSPITAL SCHOOL OF NURSING,YOUNGSTOWN,OH +3331,ST THOMAS HOSPITAL SCHOOL OF NURSING,AKRON,OH +3330,ST VINCENT CHARITY HOSPITAL SCH/NURSING,CLEVELAND,OH +5077,ST VINCENT MEDICAL CENTER SCH/NURSING,TOLEDO,OH +3345,STARK TECHNICAL COLLEGE,CANTON,OH +3347,TEMPLE BAPTIST COLLEGE,CINCINNATI,OH +3353,TERRA TECHNICAL COLLEGE,FREMONT,OH +3231,THE ART ACADEMY OF CINCINNATI,CINCINNATI,OH +3334,TIFFIN UNIVERSITY,TIFFIN,OH +3350,TOLEDO HOSPITAL SCHOOL OF NURSING,TOLEDO,OH +3335,TRUMBULL MEMORIAL HOSPITAL SCH/NURSING,WARREN,OH +3338,UNIVERSITY OF AKRON,AKRON,OH +3340,UNIVERSITY OF CINCINNATI,CINCINNATI,OH +3342,UNIVERSITY OF DAYTON,DAYTON,OH +3272,UNIVERSITY OF FINDLAY,FINDLAY,OH +3324,UNIVERSITY OF RIO GRANDE,RIO GRANDE,OH +3344,UNIVERSITY OF TOLEDO,TOLEDO,OH +3346,URBANA UNIVERSITY,URBANA,OH +3348,URSULINE COLLEGE,PEPPER PIKE,OH +3349,WALSH UNIVERSITY,CANTON,OH +3367,WASHINGTON TECHNICAL COLLEGE,MARIETTA,OH +3267,WAYNE GENERAL & TECHNICAL COLLEGE,ORRVILLE,OH +3360,WILBERFORCE UNIVERSITY,WILBERFORCE,OH +3362,WILMINGTON COLLEGE,WILMINGTON,OH +3364,WITTENBERG UNIVERSITY,SPRINGFIELD,OH +3295,WRIGHT STATE UNIVERSITY,DAYTON,OH +3366,XAVIER UNIVERSITY,CINCINNATI,OH +3368,YOUNGSTOWN STATE UNIVERSITY,YOUNGSTOWN,OH +3380,BACONE COLLEGE,MUSKOGEE,OK +3387,BARTLESVILLE WESLEYAN COLLEGE,BARTLESVILLE,OK +3386,CAMERON UNIVERSITY,LAWTON,OK +3430,CARL ALBERT STATE COLLEGE,POTEAU,OK +3388,CENTRAL OKLAHOMA AVT SCHOOL,DRUMRIGHT,OK +3392,CONNORS STATE COLLEGE,WARNER,OK +3394,EAST CENTRAL UNIVERSITY,ADA,OK +3396,EASTERN OKLAHOMA STATE COLLEGE,WILBURTON,OK +3413,HILLSDALE FREE WILL BAPTIST COLLEGE,MOORE,OK +3400,LANGSTON UNIVERSITY,LANGSTON,OK +4097,MID-AMERICA BIBLE COLLEGE,OKLAHOMA CITY,OK +3402,MURRAY STATE COLLEGE,TISHOMINGO,OK +3446,NATIONAL EDUC CENTER-NIT CAMPUS-OKLA,OKLAHOMA CITY,OK +3406,NORTHEASTERN OKLAHOMA A&M COLLEGE,MIAMI,OK +3408,NORTHEASTERN STATE UNIVERSITY,TAHLEQUAH,OK +3410,NORTHERN OKLAHOMA COLLEGE,TONKAWA,OK +3412,NORTHWESTERN OKLAHOMA STATE UNIVERSITY,ALVA,OK +3381,OKLAHOMA BAPTIST COLLEGE AND INSTITUTE,OKLAHOMA CITY,OK +3414,OKLAHOMA BAPTIST UNIVERSITY,SHAWNEE,OK +3415,OKLAHOMA CHRISTIAN COLLEGE,OKLAHOMA CITY,OK +3431,OKLAHOMA CITY COMMUNITY COLLEGE,OKLAHOMA CITY,OK +3416,OKLAHOMA CITY UNIVERSITY,OKLAHOMA CITY,OK +3422,OKLAHOMA COLLEGE OF BUSINESS&TECHNOLOGY,TULSA,OK +3417,OKLAHOMA MISSIONARY BAPT COLL INST & SEM,MARLOW,OK +3426,OKLAHOMA PANHANDLE STATE UNIVERSITY,GOODWELL,OK +3425,OKLAHOMA STATE UNIVERSITY,OKMULGEE,OK +3424,OKLAHOMA STATE UNIVERSITY,STILLWATER,OK +3423,OKLAHOMA STATE UNIVERSITY TECH INST,OKLAHOMA CITY,OK +3427,ORAL ROBERTS UNIVERSITY,TULSA,OK +3428,PHILLIPS UNIVERSITY,ENID,OK +3398,REDLANDS COMMUNITY COLLEGE,EL RENO,OK +3420,ROGERS UNIVERSITY,CLAREMORE,OK +3403,ROSE STATE COLLEGE,MIDWEST CITY,OK +3434,SAYRE JUNIOR COLLEGE,SAYRE,OK +3436,SEMINOLE STATE COLLEGE,SEMINOLE,OK +3438,SOUTHEASTERN OKLAHOMA STATE UNIVERSITY,DURANT,OK +3384,SOUTHERN NAZARENE UNIVERSITY,BETHANY,OK +3437,SOUTHERN NAZARENE UNIVERSITY,BETHANY,OK +3439,SOUTHWESTERN COLL CHRISTIAN MINISTRIES,BETHANY,OK +3440,SOUTHWESTERN OKLAHOMA STATE UNIVERSITY,WEATHERFORD,OK +3443,SPARTAN SCHOOL OF AERONAUTICS,TULSA,OK +3432,ST GREGORY'S COLLEGE,SHAWNEE,OK +3441,TULSA COMMUNITY COLLEGE,TULSA,OK +3390,UNIVERSITY OF CENTRAL OKLAHOMA,EDMOND,OK +3442,UNIVERSITY OF OKLAHOMA,NORMAN,OK +3418,UNIVERSITY OF SCIENCE & ARTS OF OKLA,CHICKASHA,OK +3444,UNIVERSITY OF TULSA,TULSA,OK +3378,WESTERN OKLAHOMA STATE COLLEGE,ALTUS,OK +3455,BLUE MOUNTAIN COMMUNITY COLLEGE,PENDLETON,OR +3457,CENTRAL OREGON COMMUNITY COLLEGE,BEND,OR +3493,CHEMEKETA COMMUNITY COLLEGE,SALEM,OR +3465,CLACKAMAS COMMUNITY COLLEGE,OREGON CITY,OR +3461,CLATSOP COMMUNITY COLLEGE,ASTORIA,OR +3459,COLUMBIA CHRISTIAN COLLEGE,PORTLAND,OR +3458,CONCORDIA UNIVERSITY,PORTLAND,OR +3460,EASTERN OREGON STATE COLLEGE,LA GRANDE,OR +3468,EUGENE BIBLE COLLEGE,EUGENE,OR +3462,GEORGE FOX COLLEGE,NEWBERG,OR +3467,JUDSON BAPTIST COLLEGE,THE DALLES,OR +3463,LANE COMMUNITY COLLEGE,EUGENE,OR +3464,LEWIS AND CLARK COLLEGE,PORTLAND,OR +3466,LINFIELD COLLEGE,MCMINNVILLE,OR +3510,LINFIELD-GOOD SAMARITAN BACC SCH/NRSING,PORTLAND,OR +3469,LINN-BENTON COMMUNITY COLLEGE,ALBANY,OR +3472,MOUNT ANGEL SEMINARY,ST BENEDICT,OR +3473,MOUNT HOOD COMMUNITY COLLEGE,GRESHAM,OR +3476,MULTNOMAH SCHOOL OF THE BIBLE,PORTLAND,OR +3478,NORTHWEST CHRISTIAN COLLEGE,EUGENE,OR +3481,OREGON GRADUATE INSTITUTE,PORTLAND,OR +3491,OREGON HEALTH SCIENCES UNIVERSITY,PORTLAND,OR +3484,OREGON INSTITUTE OF TECHNOLOGY,KLAMATH FALLS,OR +3482,OREGON STATE UNIVERSITY,CORVALLIS,OR +3477,PACIFIC NORTHWEST COLLEGE OF ART,PORTLAND,OR +3488,PACIFIC UNIVERSITY,FOREST GROVE,OR +3489,PORTLAND COMMUNITY COLLEGE,PORTLAND,OR +3492,PORTLAND STATE UNIVERSITY,PORTLAND,OR +3494,REED COLLEGE,PORTLAND,OR +3490,ROGUE COMMUNITY COLLEGE,GRANTS PASS,OR +3496,SOUTHERN OREGON STATE COLLEGE,ASHLAND,OR +3495,SOUTHWESTERN OREGON COMMUNITY COLLEGE,COOS BAY,OR +3497,TREASURE VALLEY COMMUNITY COLLEGE,ONTARIO,OR +3502,UMPQUA COMMUNITY COLLEGE,ROSEBURG,OR +3498,UNIVERSITY OF OREGON,EUGENE,OR +3500,UNIVERSITY OF PORTLAND,PORTLAND,OR +3486,WARNER PACIFIC COLLEGE,PORTLAND,OR +0477,WESTERN BAPTIST COLLEGE,SALEM,OR +3479,WESTERN CONSERVATIVE BAPTIST SEMINARY,PORTLAND,OR +3480,WESTERN OREGON STATE COLLEGE,MONMOUTH,OR +3504,WILLAMETTE UNIVERSITY,SALEM,OR +3727,"ACADEMY OF THE NEW CHURCH COLLEGE, THE",BRYN ATHYN,PA +3518,ALBRIGHT COLLEGE,READING,PA +3520,ALLEGHENY COLLEGE,MEADVILLE,PA +3525,ALLENTOWN COLL OF ST FRANCIS DE SALES,CENTER VALLEY,PA +3522,ALLIANCE COLLEGE,CAMBRIDGE SPRINGS,PA +3521,ALVERNIA COLLEGE,READING,PA +0690,ASSOC. OF CHRISTIAN SCHOOLS INTERNAT'L,NEWTOWN SQUARE,PA +3523,BAPTIST BIBLE COLLEGE OF PA,CLARKS SUMMIT,PA +3524,BEAVER COLLEGE,GLENSIDE,PA +3692,BLOOMSBURG UNIVERSITY OF PENNSYLVANIA,BLOOMSBURG,PA +3526,BRYN MAWR COLLEGE,BRYN MAWR,PA +3528,BUCKNELL UNIVERSITY,LEWISBURG,PA +3529,BUCKS COUNTY COMMUNITY COLLEGE,NEWTOWN,PA +3527,BUTLER COUNTY COMMUNITY COLLEGE,BUTLER,PA +3532,CABRINI COLLEGE,RADNOR,PA +3694,CALIFORNIA UNIVERSITY OF PENNSYLVANIA,CALIFORNIA,PA +3638,CARLOW COLLEGE,PITTSBURGH,PA +3534,CARNEGIE-MELLON UNIVERSITY,PITTSBURGH,PA +3536,CEDAR CREST COLLEGE,ALLENTOWN,PA +3538,CHATHAM COLLEGE,PITTSBURGH,PA +3540,CHESTNUT HILL COLLEGE,PHILADELPHIA,PA +3696,CHEYNEY UNIVERSITY OF PENNSYLVANIA,CHEYNEY,PA +3698,CLARION UNIV OF PENNSYLVANIA,CLARION,PA +3699,CLARION UNIV OF PENNSYLVANIA-VENANGO,OIL CITY,PA +3539,COLLEGE OF MISERICORDIA,DALLAS,PA +3541,COMMUNITY COLL ALLEGHENY COUNTY-ALLEGH,PITTSBURGH,PA +3547,COMMUNITY COLL ALLEGHENY COUNTY-BOYCE,PITTSBURGH,PA +3548,COMMUNITY COLL ALLEGHENY COUNTY-NORTH,PITTSBURGH,PA +3549,COMMUNITY COLL ALLEGHENY COUNTY-SOUTH,PITTSBURGH,PA +3545,COMMUNITY COLLEGE OF BEAVER COUNTY,MONACA,PA +3543,COMMUNITY COLLEGE OF PHILADELPHIA,PHILADELPHIA,PA +3542,DELAWARE COUNTY COMMUNITY COLLEGE,MEDIA,PA +3551,DELAWARE VALLEY COLLEGE,DOYLESTOWN,PA +3550,DICKINSON COLLEGE,CARLISLE,PA +3556,DREXEL UNIVERSITY,PHILADELPHIA,PA +3560,DUQUESNE UNIVERSITY,PITTSBURGH,PA +3700,EAST STROUDSBURG UNIVERSITY,EAST STROUDSBURG,PA +3562,EASTERN COLLEGE,SAINT DAVIDS,PA +3702,EDINBORO UNIVERSITY OF PENNSYLVANIA,EDINBORO,PA +3568,ELIZABETHTOWN COLLEGE,ELIZABETHTOWN,PA +3574,FRANKLIN AND MARSHALL COLLEGE,LANCASTER,PA +3576,GANNON UNIVERSITY,ERIE,PA +3578,GENEVA COLLEGE,BEAVER FALLS,PA +3580,GETTYSBURG COLLEGE,GETTYSBURG,PA +3582,GROVE CITY COLLEGE,GROVE CITY,PA +3583,GWYNEDD-MERCY COLLEGE,GWYNEDD VALLEY,PA +3586,HAHNEMANN UNIVERSITY,PHILADELPHIA,PA +3588,HARCUM JUNIOR COLLEGE,BRYN MAWR,PA +3589,HARRISBURG AREA COMMUNITY COLLEGE,HARRISBURG,PA +3590,HAVERFORD COLLEGE,HAVERFORD,PA +3592,HOLY FAMILY COLLEGE,PHILADELPHIA,PA +3596,IMMACULATA COLLEGE,IMMACULATA,PA +3704,INDIANA UNIVERSITY OF PENNSYLVANIA,INDIANA,PA +3600,JUNIATA COLLEGE,HUNTINGDON,PA +3602,KEYSTONE JUNIOR COLLEGE,LA PLUME,PA +3604,KINGS COLLEGE,WILKES-BARRE,PA +3706,KUTZTOWN UNIVERSITY OF PENNSYLVANIA,KUTZTOWN,PA +3607,LA ROCHE COLLEGE,PITTSBURGH,PA +3608,LA SALLE UNIVERSITY,PHILADELPHIA,PA +3605,LACKAWANNA JUNIOR COLLEGE,SCRANTON,PA +3606,LAFAYETTE COLLEGE,EASTON,PA +3707,LANCASTER BIBLE COLLEGE,LANCASTER,PA +3709,LANKENAU HOSPITAL SCHOOL OF NURSING,PHILADELPHIA,PA +3610,LEBANON VALLEY COLLEGE,ANNVILLE,PA +3611,LEHIGH CARBON COMMUNITY COLLEGE,SCHNECKSVILLE,PA +3612,LEHIGH UNIVERSITY,BETHLEHEM,PA +3614,LINCOLN UNIVERSITY,LINCOLN UNIV,PA +3708,LOCK HAVEN UNIVERSITY OF PENNSYLVANIA,LOCK HAVEN,PA +3616,LUZERNE COUNTY COMMUNITY COLLEGE,NANTICOKE,PA +3622,LYCOMING COLLEGE,WILLIAMSPORT,PA +3625,MANNA BIBLE INSTITUTE,PHILADELPHIA,PA +3628,MANOR JUNIOR COLLEGE,JENKINTOWN,PA +3710,MANSFIELD UNIVERSITY OF PENNSYLVANIA,MANSFIELD,PA +3626,MARYWOOD COLLEGE,SCRANTON,PA +3629,MERCYHURST COLLEGE,ERIE,PA +3630,MESSIAH COLLEGE,GRANTHAM,PA +3712,MILLERSVILLE UNIVERSITY OF PENNSYLVANIA,MILLERSVILLE,PA +3641,MONTGOMERY COUNTY COMMUNITY COLLEGE,BLUE BELL,PA +3632,MOORE COLLEGE OF ART,PHILADELPHIA,PA +3634,MORAVIAN COLLEGE,BETHLEHEM,PA +3635,MOUNT ALOYSIUS JUNIOR COLLEGE,CRESSON,PA +3640,MUHLENBERG COLLEGE,ALLENTOWN,PA +3649,NEUMANN COLLEGE,ASTON,PA +3644,NEW SCHOOL OF MUSIC,PHILADELPHIA,PA +3645,NORTHAMPTON COUNTY AREA COMM COLLEGE,BETHLEHEM,PA +3647,NORTHEASTERN CHRISTIAN JUNIOR COLLEGE,VILLANOVA,PA +3659,PEIRCE JUNIOR COLLEGE,PHILADELPHIA,PA +3654,PENNSYLVANIA COLLEGE OF OPTOMETRY,PHILADELPHIA,PA +3757,PENNSYLVANIA COLLEGE OF TECHNOLOGY,WILLIAMSPORT,PA +3648,PENNSYLVANIA STATE U-NEW KENSINGTON,NEW KENSINGTON,PA +3656,PENNSYLVANIA STATE UNIVERSITY,UNIVERSITY PARK,PA +3662,PENNSYLVANIA STATE U-SHENANGO VALLEY,SHARON,PA +3658,PHILADELPHIA COLLEGE OF BIBLE,LANGHORNE,PA +3668,PHILADELPHIA COLLEGE OF TEXTILES & SCI,PHILADELPHIA,PA +3670,PHILADELPHIA SCHOOL OF OFFICE TRAINING,PHILADELPHIA,PA +3660,PINEBROOK JUNIOR COLLEGE,COOPERSBURG,PA +3530,POINT PARK COLLEGE,PITTSBURGH,PA +3718,READING AREA COMMUNITY COLLEGE,READING,PA +3674,ROBERT MORRIS COLLEGE,CORAOPOLIS,PA +3675,ROBERT MORRIS COLLEGE-PITTSBURGH CENTER,CORAOPOLIS,PA +3676,ROSEMONT COLLEGE,ROSEMONT,PA +3688,SETON HILL COLLEGE,GREENSBURG,PA +3714,SHIPPENSBURG UNIVERSITY OF PENNSYLVANIA,SHIPPENSBURG,PA +3716,SLIPPERY ROCK UNIV OF PENNSYLVANIA,SLIPPERY ROCK,PA +3717,SPRING GARDEN COLLEGE,PHILADELPHIA,PA +3682,ST FRANCIS COLLEGE,LORETTO,PA +3684,ST JOSEPH'S UNIVERSITY,PHILADELPHIA,PA +3686,ST VINCENT COLLEGE,LATROBE,PA +3720,SUSQUEHANNA UNIVERSITY,SELINSGROVE,PA +3722,SWARTHMORE COLLEGE,SWARTHMORE,PA +3724,TEMPLE UNIVERSITY,PHILADELPHIA,PA +3730,THIEL COLLEGE,GREENVILLE,PA +3566,UNITED WESLEYAN COLLEGE,ALLENTOWN,PA +3732,UNIVERSITY OF PENNSYLVANIA,PHILADELPHIA,PA +3734,UNIVERSITY OF PITTSBURGH,PITTSBURGH,PA +3731,UNIVERSITY OF PITTSBURGH AT BRADFORD,BRADFORD,PA +3733,UNIVERSITY OF PITTSBURGH AT GREENSBURG,GREENSBURG,PA +3735,UNIVERSITY OF PITTSBURGH AT JOHNSTOWN,JOHNSTOWN,PA +3737,UNIVERSITY OF PITTSBURGH AT TITUSVILLE,TITUSVILLE,PA +3736,UNIVERSITY OF SCRANTON,SCRANTON,PA +3664,UNIVERSITY OF THE ARTS,PHILADELPHIA,PA +3738,URSINUS COLLEGE,COLLEGEVILLE,PA +3740,VALLEY FORGE MILITARY JUNIOR COLLEGE,WAYNE,PA +3742,VILLA MARIA COLLEGE,ERIE,PA +3744,VILLANOVA UNIVERSITY,VILLANOVA,PA +3746,WASHINGTON & JEFFERSON COLLEGE,WASHINGTON,PA +3748,WAYNESBURG COLLEGE,WAYNESBURG,PA +3750,WEST CHESTER UNIVERSITY OF PENNSYLVANIA,WEST CHESTER,PA +3752,WESTMINSTER COLLEGE,NEW WILMINGTON,PA +3754,WESTMORELAND COUNTY COMMUNITY COLLEGE,YOUNGWOOD,PA +3652,WIDENER UNIVERSITY,CHESTER,PA +3756,WILKES UNIVERSITY,WILKES-BARRE,PA +3758,WILSON COLLEGE,CHAMBERSBURG,PA +3762,YORK COLLEGE OF PENNSYLVANIA,YORK,PA +5800,AMERICAN COLLEGE OF PUERTO RICO,BAYAMON,PR +5801,ANA G MENDEZ EDUC FOUNDATION,RIO PIEDRAS,PR +5802,ANTILLIAN COLLEGE,MAYAGUEZ,PR +5803,BAYAMON CENTRAL UNIVERSITY,BAYAMON,PR +5804,CAGUAS CITY COLLEGE,CAGUAS,PR +5805,CARIBBEAN CENTER FOR ADVANCED STUDIES,SANTURCE,PR +5806,CARIBBEAN UNIVERSITY COLLEGE,BAYAMON,PR +5808,CENTER FOR ADV STUDIES ON PR & CARIBB,SAN JUAN,PR +5809,CHRISTIAN UNIV COLLEGE OF THE AMERICAS,RIO PIEDRAS,PR +5819,COLEGIO UNIVERSITARIO DEL ESTE,RIO PIEDRAS,PR +5810,CONSERVATORY OF MUSIC OF PUERTO RICO,SAN JUAN,PR +5811,ELECTRONIC DATA PROCESSING COLLEGE OF PR,HATO REY,PR +5812,EVANGELICAL SEMINARY OF PUERTO RICO,HATO REY,PR +5813,HUERTAS JUNIOR COLLEGE,CAGUAS,PR +5814,ICPR (INST COMERICAL DE PR) JUNIOR COLL,HATO REY,PR +5815,INST TECNICO COMERCIAL JUNIOR COLLEGE,RIO PIEDRAS,PR +5816,INTER AMERICAN UNIVERSITY OF PUERTO RICO,SAN JUAN,PR +5817,INTRNTNL INST OF AMERICAS OF WORLD UNIV,HATO REY,PR +5818,METROPOLITAN UNIVERSITY,RIO PIEDRAS,PR +5807,PONTIFICIA UNIV. CATOLICA DE PUERTO RICO,PONCE,PR +5820,RAMIREZ COLLEGE OF BUSINESS & TECHNOLOGY,SANTURCE,PR +5821,TECHNICAL COLLEGE OF SAN JUAN,SANTURCE,PR +5822,TURABO UNIVERSITY COLLEGE,CAGUAS,PR +5826,UNIV OF PUERTO RICO - BAYAMON,BAYAMON,PR +5824,UNIV OF PUERTO RICO-AGUADILLA REG COLL,AGUADILLA,PR +5825,UNIV OF PUERTO RICO-ARECIBO,ARECIBO,PR +5827,UNIV OF PUERTO RICO-CAROLINA REGIONAL,CAROLINA,PR +5828,UNIV OF PUERTO RICO-CAYEY UNIV COLL,CAYEY,PR +5829,UNIV OF PUERTO RICO-HUMACAO,HUMACAO,PR +5830,UNIV OF PUERTO RICO-LA MONTANA,UTUADO,PR +5831,UNIV OF PUERTO RICO-MAYAGUEZ,MAYAGUEZ,PR +5832,UNIV OF PUERTO RICO-MEDICAL SCIENCES,SAN JUAN,PR +5833,UNIV OF PUERTO RICO-PONCE TECH UNIV COLL,PONCE,PR +5834,UNIV OF PUERTO RICO-RIO PIEDRAS,RIO PIEDRAS,PR +5823,UNIV POLITECNICA DE PUERTO RICO,HATO REY,PR +5835,UNIVERSITY OF THE SACRED HEART,SANTURCE,PR +3808,BARRINGTON COLLEGE,BARRINGTON,RI +3800,BROWN UNIVERSITY,PROVIDENCE,RI +3802,BRYANT COLLEGE,SMITHFIELD,RI +3811,COMMUNITY COLLEGE OF RHODE ISLAND,WARWICK,RI +3804,JOHNSON & WALES COLLEGE,PROVIDENCE,RI +3805,KATHARINE GIBBS SCHOOL,PROVIDENCE,RI +3806,PROVIDENCE COLLEGE,PROVIDENCE,RI +3810,RHODE ISLAND COLLEGE,PROVIDENCE,RI +3812,RHODE ISLAND SCHOOL OF DESIGN,PROVIDENCE,RI +3814,ROGER WILLIAMS COLLEGE,BRISTOL,RI +3816,SALVE REGINA UNIVERSITY,NEWPORT,RI +3818,UNIVERSITY OF RHODE ISLAND,KINGSTON,RI +3824,AIKEN TECHNICAL COLLEGE,AIKEN,SC +3830,ALLEN UNIVERSITY,COLUMBIA,SC +3832,ANDERSON COLLEGE,ANDERSON,SC +3834,BENEDICT COLLEGE,COLUMBIA,SC +3836,BOB JONES UNIVERSITY,GREENVILLE,SC +3841,CENTRAL CAROLINA TECHNICAL COLLEGE,SUMTER,SC +3837,CENTRAL WESLEYAN COLLEGE,CENTRAL,SC +3833,CHARLESTON SOUTHERN UNIVERSITY,CHARLESTON,SC +3839,CHESTERFIELD-MARLBORO TECHNICAL COLLEGE,CHERAW,SC +3838,"CITADEL OF SOUTH CAROLINA, THE",CHARLESTON,SC +3840,CLAFLIN COLLEGE,ORANGEBURG,SC +3842,CLEMSON UNIVERSITY,CLEMSON,SC +3843,COASTAL CAROLINA UNIVERSITY,CONWAY,SC +3844,COKER COLLEGE,HARTSVILLE,SC +3846,COLLEGE OF CHARLESTON,CHARLESTON,SC +3848,COLUMBIA BIBLE COLLEGE,COLUMBIA,SC +3850,COLUMBIA COLLEGE,COLUMBIA,SC +3852,CONVERSE COLLEGE,SPARTANBURG,SC +3854,ERSKINE COLLEGE,DUE WEST,SC +3857,FLORENCE-DARLINGTON TECHNICAL COLLEGE,FLORENCE,SC +3856,FRANCIS MARION UNIVERSITY,FLORENCE,SC +3858,FURMAN UNIVERSITY,GREENVILLE,SC +3827,GREENVILLE TECHNICAL COLLEGE,GREENVILLE,SC +3863,HOLMES COLLEGE OF THE BIBLE,GREENVILLE,SC +3864,HORRY-GEORGETOWN TECHNICAL COLLEGE,CONWAY,SC +3860,LANDER COLLEGE,GREENWOOD,SC +3862,LIMESTONE COLLEGE,GAFFNEY,SC +3869,MIDLANDS TECHNICAL COLLEGE,COLUMBIA,SC +3868,MORRIS COLLEGE,SUMTER,SC +3870,NEWBERRY COLLEGE,NEWBERRY,SC +3872,NORTH GREENVILLE COLLEGE,TIGERVILLE,SC +3865,ORANGEBURG-CALHOUN TECHNICAL COLLEGE,ORANGEBURG,SC +3829,PIEDMONT TECHNICAL COLLEGE,GREENWOOD,SC +3874,PRESBYTERIAN COLLEGE,CLINTON,SC +3876,SOUTH CAROLINA STATE COLLEGE,ORANGEBURG,SC +3893,SOUTHERN METHODIST COLLEGE,ORANGEBURG,SC +3878,SPARTANBURG METHODIST COLLEGE,SPARTANBURG,SC +3825,SPARTANBURG TECHNICAL COLLEGE,SPARTANBURG,SC +3888,TECHNICAL COLLEGE OF THE LOWCOUNTRY,BEAUFORT,SC +3883,TRI-COUNTY TECHNICAL COLLEGE,PENDLETON,SC +3831,TRIDENT TECHNICAL COLLEGE-NORTH CAMPUS,NORTH CHARLESTON,SC +3871,TRIDENT TECHNICAL COLL-PALMER CAMPUS,CHARLESTON,SC +3880,UNIV OF SOUTH CAROLINA,COLUMBIA,SC +3879,UNIV OF SOUTH CAROLINA-AIKEN,AIKEN,SC +3835,UNIV OF SOUTH CAROLINA-BEAUFORT,BEAUFORT,SC +3892,UNIV OF SOUTH CAROLINA-FT JACKSON,COLUMBIA,SC +3859,UNIV OF SOUTH CAROLINA-LANCASTER,LANCASTER,SC +3881,UNIV OF SOUTH CAROLINA-SALKEHATCHIE,ALLENDALE,SC +3889,UNIV OF SOUTH CAROLINA-SPARTANBURG,SPARTANBURG,SC +3885,UNIV OF SOUTH CAROLINA-SUMTER,SUMTER,SC +3875,UNIV OF SOUTH CAROLINA-UNION,UNION,SC +3882,VOORHEES COLLEGE,DENMARK,SC +3884,WINTHROP COLLEGE,ROCK HILL,SC +3886,WOFFORD COLLEGE,SPARTANBURG,SC +3887,YORK TECHNICAL COLLEGE,ROCK HILL,SC +3902,AUGUSTANA COLLEGE,SIOUX FALLS,SD +3904,BLACK HILLS STATE UNIVERSITY,SPEARFISH,SD +3905,CHEYENNE RIVER COMMUNITY COLLEGE,EAGLE BUTTE,SD +3912,COLORADO TECHNICAL UNIVERSITY-S DAKOTA,HURON,SD +3903,"COMMUNITY COLLEGE, THE",SIOUX FALLS,SD +3910,DAKOTA STATE UNIVERSITY,MADISON,SD +3906,DAKOTA WESLEYAN UNIVERSITY,MITCHELL,SD +3908,FREEMAN JUNIOR COLLEGE,FREEMAN,SD +3913,KILIAN COMMUNITY COLLEGE,SIOUX FALLS,SD +3809,LAKE AREA TECHNICAL INSTITUTE,WATERTOWN,SD +3917,MCKENNAN HOSP SCHOOL OF RADIOLOGIC TECH,SIOUX FALLS,SD +3925,MITCHELL TECHNICAL INSTITUTE,MITCHELL,SD +3914,MOUNT MARTY COLLEGE,YANKTON,SD +3915,NATIONAL AMERICAN UNIVERSITY,RAPID CITY,SD +4840,NETTLETON COLLEGE,SIOUX FALLS,SD +3916,NORTHERN STATE UNIVERSITY,ABERDEEN,SD +3923,OGLALA LAKOTA COLLEGE,KYLE,SD +3918,PRESENTATION COLLEGE,ABERDEEN,SD +3919,RAPID CITY REGIONAL SCHOOL OF NURSING,RAPID CITY,SD +3911,SACRED HEART HOSP SCHOOL/RADIOLOGIC TECH,YANKTON,SD +3921,SINTE GLESKA COLLEGE,ROSEBUD,SD +3899,SIOUX VALLEY HOSP SCHOOL/RADIOLOGIC TECH,SIOUX FALLS,SD +3922,SOUTH DAKOTA SCHOOL OF MINES & TECH,RAPID CITY,SD +3924,SOUTH DAKOTA STATE UNIVERSITY,BROOKINGS,SD +3900,SOUTHEAST VOCATIONAL TECHNICAL INSTITUTE,SIOUX FALLS,SD +3937,ST JOSEPH HOSPITAL SCHOOL OF RADIOLOGY,MITCHELL,SD +3920,UNIVERSITY OF SIOUX FALLS,SIOUX FALLS,SD +3928,UNIVERSITY OF SOUTH DAKOTA,VERMILLION,SD +3929,UNIVERSITY OF SOUTH DAKOTA-SPRINGFIELD,SPRINGFIELD,SD +3901,WESTERN DAKOTA TECHNICAL INSTITUTE,RAPID CITY,SD +3930,YANKTON COLLEGE,YANKTON,SD +3941,AMERICAN BAPTIST COLL OF ABT SEMINARY,NASHVILLE,TN +3942,AQUINAS JUNIOR COLLEGE,NASHVILLE,TN +3944,AUSTIN PEAY STATE UNIVERSITY,CLARKSVILLE,TN +3949,BAPTIST HOSPITAL SCHOOL OF NURSING,MEMPHIS,TN +4040,BARONESS ERLANGER HOSPITAL SCH/NURSING,CHATTANOOGA,TN +3946,BELMONT COLLEGE,NASHVILLE,TN +3948,BETHEL COLLEGE,MCKENZIE,TN +4038,BRYAN COLLEGE,DAYTON,TN +3950,CARSON-NEWMAN COLLEGE,JEFFERSON CITY,TN +4041,CHATTANOOGA STATE TECH COMM COLL,CHATTANOOGA,TN +3952,CHRISTIAN BROTHERS COLLEGE,MEMPHIS,TN +3975,CLARKSVILLE BAPTIST COLLEGE,CLARKSVILLE,TN +3955,CLEVELAND STATE COMMUNITY COLLEGE,CLEVELAND,TN +3953,COLUMBIA STATE COMMUNITY COLLEGE,COLUMBIA,TN +3957,COOPER INSTITUTE INC,KNOXVILLE,TN +3954,CUMBERLAND UNIVERSITY,LEBANON,TN +3956,DAVID LIPSCOMB COLLEGE,NASHVILLE,TN +3969,DYERSBURG STATE COMMUNITY COLLEGE,DYERSBURG,TN +4039,EAST TENNESSEE BAPTIST HOSP SCH/NURSING,KNOXVILLE,TN +3958,EAST TENNESSEE STATE UNIVERSITY,JOHNSON CITY,TN +4842,EDMONDSON JUNIOR COLLEGE,CHATTANOOGA,TN +4044,FAITH BAPTIST BIBLE INST/COLL/SEMINARY,OLIVER SPRINGS,TN +3960,FISK UNIVERSITY,NASHVILLE,TN +3963,FORT SANDERS SCHOOL OF NURSING,KNOXVILLE,TN +3961,FREE WILL BAPTIST BIBLE COLLEGE,NASHVILLE,TN +3962,FREED-HARDEMAN COLLEGE,HENDERSON,TN +3966,HIWASSEE COLLEGE,MADISONVILLE,TN +3967,JACKSON STATE COMMUNITY COLLEGE,JACKSON,TN +3965,JOHN A GUPTON COLLEGE,NASHVILLE,TN +3968,JOHNSON BIBLE COLLEGE,KNOXVILLE,TN +3970,KING COLLEGE,BRISTOL,TN +5559,KNOXVILLE BUSINESS COLLEGE,KNOXVILLE,TN +3972,KNOXVILLE COLLEGE,KNOXVILLE,TN +3974,LAMBUTH COLLEGE,JACKSON,TN +3976,LANE COLLEGE,JACKSON,TN +3978,LEE COLLEGE,CLEVELAND,TN +3980,LEMOYNE-OWEN COLLEGE,MEMPHIS,TN +3982,LINCOLN MEMORIAL UNIVERSITY,HARROGATE,TN +3986,MARTIN METHODIST COLLEGE,PULASKI,TN +3988,MARYVILLE UNIVERSITY OF SAINT LOUIS,MARYVILLE,TN +3991,MEMPHIS COLLEGE OF ART,MEMPHIS,TN +3993,METHODIST HOSPITAL SCHOOL OF NURSING,MEMPHIS,TN +3994,MIDDLE TENNESSEE STATE UNIVERSITY,MURFREESBORO,TN +3995,MID-SOUTH BIBLE COLLEGE,MEMPHIS,TN +3996,MILLIGAN COLLEGE,MILLIGAN COLLEGE,TN +3998,MORRISTOWN COLLEGE,MORRISTOWN,TN +4003,MOTLOW STATE COMMUNITY COLLEGE,TULLAHOMA,TN +3983,NASHVILLE STATE TECHNICAL INSTITUTE,NASHVILLE,TN +4021,PELLISSIPPI STATE TECH COMM COLLEGE,KNOXVILLE,TN +4008,RHODES COLLEGE,MEMPHIS,TN +3985,ROANE STATE COMMUNITY COLLEGE,LAFOLLETTE,TN +4004,SHELBY STATE COMMUNITY COLLEGE,MEMPHIS,TN +4006,SOUTHERN COLLEGE,COLLEGEDALE,TN +4009,SOUTHERN COLLEGE OF OPTOMETRY,MEMPHIS,TN +4023,ST JOSEPH HOSP SCHOOL OF RADIOLOGIC TECH,MEMPHIS,TN +4007,ST JOSEPH HOSPITAL SCHOOL OF NURSING,MEMPHIS,TN +4011,ST MARYS MEDICAL CENTER SCH OF NURSING,KNOXVILLE,TN +4005,STATE TECHNICAL INSTITUTE AT MEMPHIS,MEMPHIS,TN +4010,TENNESSEE STATE UNIVERSITY,NASHVILLE,TN +4012,TENNESSEE TECHNOLOGICAL UNIVERSITY,COOKEVILLE,TN +4013,TENNESSEE TEMPLE UNIVERSITY,CHATTANOOGA,TN +4014,TENNESSEE WESLEYAN COLLEGE,ATHENS,TN +4017,TOMLINSON COLLEGE,CLEVELAND,TN +4016,TREVECCA NAZARENE COLLEGE,NASHVILLE,TN +4019,TRI-CITIES STATE TECHNICAL INSTITUTE,BLOUNTVILLE,TN +4018,TUSCULUM COLLEGE,GREENEVILLE,TN +4020,UNION UNIVERSITY,JACKSON,TN +4022,UNIV OF TENNESSEE-CHATTANOOGA,CHATTANOOGA,TN +3992,UNIVERSITY OF MEMPHIS,MEMPHIS,TN +4030,UNIVERSITY OF TENNESSEE-CTR HEALTH SCI,MEMPHIS,TN +4026,UNIVERSITY OF TENNESSEE-KNOXVILLE,KNOXVILLE,TN +4032,UNIVERSITY OF TENNESSEE-MARTIN,MARTIN,TN +4024,UNIVERSITY OF THE SOUTH,SEWANEE,TN +4036,VANDERBILT UNIVERSITY,NASHVILLE,TN +4037,VOLUNTEER STATE COMMUNITY COLLEGE,GALLATIN,TN +4028,WALTERS STATE COMMUNITY COLLEGE,MORRISTOWN,TN +4042,"WM R MOORE SCHOOL OF TECHNOLOGY, THE",MEMPHIS,TN +4050,ABILENE CHRISTIAN UNIVERSITY,ABILENE,TX +4054,ALVIN COMMUNITY COLLEGE,ALVIN,TX +4056,AMARILLO COLLEGE,AMARILLO,TX +4051,AMBASSADOR UNIVERSITY,BIG SANDY,TX +4073,AMBER UNIVERSITY,GARLAND,TX +4055,AMERICAN TECHNOLOGICAL UNIVERSITY,KILLEEN,TX +4057,ANGELINA COLLEGE,LUFKIN,TX +4164,ANGELO STATE UNIVERSITY,SAN ANGELO,TX +4058,AUSTIN COLLEGE,SHERMAN,TX +4059,AUSTIN COMMUNITY COLLEGE,AUSTIN,TX +4061,BAUDER FASHION COLLEGE,ARLINGTON,TX +4063,BAYLOR COLLEGE OF DENTISTRY,DALLAS,TX +4062,BAYLOR UNIVERSITY,WACO,TX +4064,BEE COUNTY COLLEGE,BEEVILLE,TX +4066,BISHOP COLLEGE,DALLAS,TX +4068,BLINN COLLEGE,BRENHAM,TX +4067,BRAZOSPORT COLLEGE,LAKE JACKSON,TX +4053,BROOKHAVEN COLLEGE,FARMERS BRANCH,TX +4087,CEDAR VALLEY COLLEGE,LANCASTER,TX +4081,CENTRAL TEXAS COLLEGE,KILLEEN,TX +4074,CISCO JUNIOR COLLEGE,CISCO,TX +4076,CLARENDON COLLEGE,CLARENDON,TX +4084,COLLEGE OF THE MAINLAND,TEXAS CITY,TX +4072,COLLIN COUNTY COMMUNITY COLLEGE,MCKINNEY,TX +4069,COMMONWEALTH COLLEGE OF FUNERAL SERVICE,HOUSTON,TX +4124,CONCORDIA LUTHERAN COLLEGE,AUSTIN,TX +4080,DALLAS BAPTIST UNIVERSITY,DALLAS,TX +4075,DALLAS CHRISTIAN COLLEGE,DALLAS,TX +4077,DALLAS INSTITUTE OF FUNERAL SERVICE,DALLAS,TX +4082,DEL MAR COLLEGE,CORPUS CHRISTI,TX +4083,DEVRY INSTITUTE OF TECHNOLOGY,IRVING,TX +4086,EAST TEXAS BAPTIST UNIVERSITY,MARSHALL,TX +4085,EASTFIELD COLLEGE,MESQUITE,TX +4079,EL CENTRO COLLEGE,DALLAS,TX +4090,EL PASO COMMUNITY COLLEGE,EL PASO,TX +4115,FAITH CHRISTIAN COLLEGE,PASADENA,TX +4092,FRANK PHILLIPS COLLEGE,BORGER,TX +4103,GALVESTON COLLEGE,GALVESTON,TX +4095,GRAYSON COUNTY COLLEGE,DENISON,TX +4096,HARDIN-SIMMONS UNIVERSITY,ABILENE,TX +4249,HENDERSON COUNTY JR COLLEGE-ANDERSON,PALESTINE,TX +4237,HENDERSON COUNTY JR COLLEGE-TERRELL CTR,TERRELL,TX +4047,HENDRICK MEDICAL CENTER SCHOOL/RAD TECH,ABILENE,TX +4099,HILL JUNIOR COLLEGE,HILLSBORO,TX +4101,HOUSTON BAPTIST UNIVERSITY,HOUSTON,TX +4105,HOUSTON COMMUNITY COLLEGE SYSTEM,HOUSTON,TX +4100,HOWARD COLLEGE,BIG SPRING,TX +4102,HOWARD PAYNE UNIVERSITY,BROWNWOOD,TX +4104,HUSTON-TILLOTSON COLLEGE,AUSTIN,TX +4106,INCARNATE WORD COLLEGE,SAN ANTONIO,TX +4119,"INTERNATIONAL INSTITUTE, THE",LEWISVILLE,TX +4111,JACKI NELL EXECUTIVE SECRETARIAL SCH,AUSTIN,TX +4108,JACKSONVILLE COLLEGE,JACKSONVILLE,TX +4110,JARVIS CHRISTIAN COLLEGE,HAWKINS,TX +4112,KILGORE COLLEGE,KILGORE,TX +4260,KINGWOOD COLLEGE,KINGWOOD,TX +4114,LAMAR UNIVERSITY,BEAUMONT,TX +4116,LAREDO JUNIOR COLLEGE,LAREDO,TX +4118,LEE COLLEGE,BAYTOWN,TX +4120,LETOURNEAU UNIVERSITY,LONGVIEW,TX +4122,LON MORRIS COLLEGE,JACKSONVILLE,TX +4123,LUBBOCK CHRISTIAN COLLEGE,LUBBOCK,TX +4131,MCLENNAN COMMUNITY COLLEGE,WACO,TX +4130,MCMURRY COLLEGE,ABILENE,TX +4127,MIDLAND COLLEGE,MIDLAND,TX +4132,MIDWESTERN STATE UNIVERSITY,WICHITA FALLS,TX +4133,MISS WADES FASHION MERCHANDISING COLLEGE,DALLAS,TX +4230,MONTGOMERY COLLEGE,CONROE,TX +4089,MOUNTAIN VIEW COLLEGE,DALLAS,TX +4235,NATIONAL EDUC CENTER-NIT CAMPUS-TEXAS,DALLAS,TX +4134,NAVARRO COLLEGE,CORSICANA,TX +4094,NORTH CENTRAL TEXAS COLLEGE,GAINESVILLE,TX +4147,NORTH EAST TEXAS COMMUNITY COLLEGE,MOUNT PLEASANT,TX +4139,NORTH HARRIS COLLEGE,HOUSTON,TX +4141,NORTH LAKE COLLEGE,IRVING,TX +4135,NORTHWOOD UNIVERSITY,CEDAR HILL,TX +4138,ODESSA COLLEGE,ODESSA,TX +4140,OUR LADY OF THE LAKE UNIVERSITY,SAN ANTONIO,TX +4143,PALO ALTO COLLEGE,SAN ANTONIO,TX +4144,PANOLA JUNIOR COLLEGE,CARTHAGE,TX +4146,PARIS JUNIOR COLLEGE,PARIS,TX +4148,PAUL QUINN COLLEGE,WACO,TX +4202,PRAIRIE VIEW A & M UNIVERSITY,PRAIRIE VIEW,TX +4150,RANGER JUNIOR COLLEGE,RANGER,TX +4152,RICE UNIVERSITY,HOUSTON,TX +4153,RICHLAND COLLEGE,DALLAS,TX +4162,SAM HOUSTON STATE UNIVERSITY,HUNTSVILLE,TX +4166,SAN ANTONIO COLLEGE,SAN ANTONIO,TX +4167,SAN JACINTO COLLEGE-CENTRAL CAMPUS,PASADENA,TX +4165,SAN JACINTO COLLEGE-NORTH CAMPUS,HOUSTON,TX +4154,SAN JACINTO COLLEGE-SOUTH CAMPUS,HOUSTON,TX +4168,SCHREINER COLLEGE,KERRVILLE,TX +4169,SOUTH PLAINS COLLEGE,LEVELLAND,TX +4174,SOUTHERN METHODIST UNIVERSITY,DALLAS,TX +4176,SOUTHWEST TEXAS JUNIOR COLLEGE,UVALDE,TX +4178,SOUTHWEST TEXAS STATE UNIVERSITY,SAN MARCOS,TX +4184,SOUTHWESTERN ADVENTIST COLLEGE,KEENE,TX +4182,SOUTHWESTERN ASSEMBLIES OF GOD COLLEGE,WAXAHACHIE,TX +4183,SOUTHWESTERN CHRISTIAN COLLEGE,TERRELL,TX +4186,SOUTHWESTERN UNIVERSITY,GEORGETOWN,TX +4156,ST EDWARDS UNIVERSITY,AUSTIN,TX +4158,ST MARY'S UNIVERSITY,SAN ANTONIO,TX +4160,ST PHILIP'S COLLEGE,SAN ANTONIO,TX +4188,STEPHEN F AUSTIN STATE UNIVERSITY,NACOGDOCHES,TX +4190,SUL ROSS STATE UNIVERSITY,ALPINE,TX +4204,TARLETON STATE UNIVERSITY,STEPHENVILLE,TX +4193,TARRANT COUNTY JR COLL-NORTHEAST CAMPUS,HURST,TX +4195,TARRANT COUNTY JR COLL-NORTHWEST CAMPUS,FORT WORTH,TX +4191,TARRANT COUNTY JR COLL-SOUTH CAMPUS,FORT WORTH,TX +4192,TEMPLE JUNIOR COLLEGE,TEMPLE,TX +4194,TEXARKANA COMMUNITY COLLEGE,TEXARKANA,TX +4196,TEXAS A & I UNIVERSITY-LAREDO,LAREDO,TX +4198,TEXAS A & M UNIVERSITY,COLLEGE STATION,TX +4088,TEXAS A & M UNIVERSITY-COMMERCE,COMMERCE,TX +4091,TEXAS A & M UNIVERSITY-CORPUS CHRISTI,CORPUS CHRISTI,TX +4197,TEXAS A & M UNIVERSITY-GALVESTON,GALVESTON,TX +4212,TEXAS A & M UNIVERSITY-KINGSVILLE,KINGSVILLE,TX +4125,TEXAS BAPTIST BIBLE INSTITUTE,DALLAS,TX +4253,TEXAS BAPTIST COLLEGE,LONGVIEW,TX +4205,TEXAS CHIROPRACTIC COLLEGE,PASADENA,TX +4206,TEXAS CHRISTIAN UNIVERSITY,FORT WORTH,TX +4210,TEXAS COLLEGE,TYLER,TX +4214,TEXAS LUTHERAN COLLEGE,SEGUIN,TX +4216,TEXAS SOUTHERN UNIVERSITY,HOUSTON,TX +4218,TEXAS SOUTHMOST COLLEGE,BROWNSVILLE,TX +5156,TEXAS STATE TECHNICAL INST-SWEETWATER,SWEETWATER,TX +4227,TEXAS TECH UNIV HLTH SCI SCH OF NURSING,LUBBOCK,TX +4220,TEXAS TECH UNIVERSITY,LUBBOCK,TX +4222,TEXAS WESLEYAN COLLEGE,FORT WORTH,TX +4224,TEXAS WOMAN'S UNIVERSITY,DENTON,TX +4225,TOMBALL COLLEGE,KINGWOOD,TX +4226,TRINITY UNIVERSITY,SAN ANTONIO,TX +4098,TRINITY VALLEY COMMUNITY COLLEGE,ATHENS,TX +4228,TYLER JUNIOR COLLEGE,TYLER,TX +4247,UNIV OF TEXAS HEALTH SCI CTR-SAN ANTONIO,SAN ANTONIO,TX +4245,UNIV OF TEXAS HLTH SCI CTR-DENTAL,HOUSTON,TX +4233,UNIV OF TEXAS-HOUSTON HEALTH SCI CTR,HOUSTON,TX +4229,UNIVERSITY OF CORPUS CHRISTI,CORPUS CHRISTI,TX +4234,UNIVERSITY OF DALLAS,IRVING,TX +4171,UNIVERSITY OF HOUSTON-CLEAR LAKE,HOUSTON,TX +4170,UNIVERSITY OF HOUSTON-DOWNTOWN COLLEGE,HOUSTON,TX +4236,UNIVERSITY OF HOUSTON-UNIV PARK,HOUSTON,TX +4128,UNIVERSITY OF MARY HARDIN-BAYLOR,BELTON,TX +4136,UNIVERSITY OF NORTH TEXAS,DENTON,TX +4238,UNIVERSITY OF ST THOMAS,HOUSTON,TX +4200,UNIVERSITY OF TEXAS AT ARLINGTON,ARLINGTON,TX +4240,UNIVERSITY OF TEXAS AT AUSTIN,AUSTIN,TX +4243,"UNIVERSITY OF TEXAS AT DALLAS, THE",RICHARDSON,TX +4223,UNIVERSITY OF TEXAS AT EL PASO,EL PASO,TX +4239,UNIVERSITY OF TEXAS AT SAN ANTONIO,SAN ANTONIO,TX +4231,UNIVERSITY OF TEXAS AT TYLER,TYLER,TX +4221,UNIVERSITY OF TEXAS MEDICAL BRANCH,GALVESTON,TX +4241,UNIVERSITY OF TEXAS SOUTHWESTERN MED CTR,DALLAS,TX +4251,UNIVERSITY OF TEXAS-BROWNSVILLE,BROWNSVILLE,TX +4142,UNIVERSITY OF TEXAS-PAN AMERICAN,EDINBURG,TX +4232,VALLEY BAPTIST SCHOOL OF VOC NURSING,HARLINGEN,TX +4242,VERNON REGIONAL JUNIOR COLLEGE,VERNON,TX +4244,VICTORIA COLLEGE,VICTORIA,TX +4246,WAYLAND BAPTIST UNIVERSITY,PLAINVIEW,TX +4248,WEATHERFORD COLLEGE,WEATHERFORD,TX +4250,WEST TEXAS A & M UNIVERSITY,CANYON,TX +4172,WESTERN TEXAS COLLEGE,SNYDER,TX +4252,WHARTON COUNTY JUNIOR COLLEGE,WHARTON,TX +4254,WILEY COLLEGE,MARSHALL,TX +4078,WOODCREST COLLEGE,DALLAS,TX +4266,BRIGHAM YOUNG UNIVERSITY,PROVO,UT +4268,COLLEGE OF EASTERN UTAH,PRICE,UT +4272,DIXIE COLLEGE,ST GEORGE,UT +4270,LDS BUSINESS COLLEGE,SALT LAKE CITY,UT +4275,SALT LAKE COMMUNITY COLLEGE,SALT LAKE CITY,UT +4273,SNOW COLLEGE,EPHRAIM,UT +4271,SOUTHERN UTAH UNIVERSITY,CEDAR CITY,UT +4286,STEVENS HENAGER COLLEGE-OGDEN,OGDEN,UT +4288,STEVENS HENAGER COLLEGE-PROVO,PROVO,UT +4294,STEVENS HENAGER COLLEGE-SALT LAKE CITY,SALT LAKE CITY,UT +4274,UNIVERSITY OF UTAH,SALT LAKE CITY,UT +4276,UTAH STATE UNIVERSITY,LOGAN,UT +4278,UTAH TECHNICAL COLLEGE AT PROVO,PROVO,UT +4290,UTAH TECHNICAL COLLEGE AT SALT LAKE,SALT LAKE CITY,UT +4291,UTAH VALLEY STATE COLLEGE,OREM,UT +4282,WEBER STATE COLLEGE,OGDEN,UT +4284,WESTMINSTER COLLEGE-SALT LAKE CITY,SALT LAKE CITY,UT +4335,ATLANTIC BAPTIST BIBLE COLLEGE,CHESTER,VA +4338,AVERETT COLLEGE,DANVILLE,VA +4341,BLUE RIDGE COMMUNITY COLLEGE,WEYERS CAVE,VA +4340,BLUEFIELD COLLEGE,BLUEFIELD,VA +4342,BRIDGEWATER COLLEGE,BRIDGEWATER,VA +4354,CENTRAL VIRGINIA COMMUNITY COLLEGE,LYNCHBURG,VA +4339,CHRISTENDOM COLLEGE,FRONT ROYAL,VA +4345,CHRISTOPHER NEWPORT COLLEGE,NEWPORT NEWS,VA +4343,CLINCH VALLEY COLLEGE,WISE,VA +4344,COLLEGE OF WILLIAM AND MARY,WILLIAMSBURG,VA +4367,COMMONWEALTH COLLEGE,VIRGINIA BEACH,VA +4349,DABNEY LANCASTER COMMUNITY COLLEGE,CLIFTON FORGE,VA +4355,DANVILLE COMMUNITY COLLEGE,DANVILLE,VA +4348,EASTERN MENNONITE COLLEGE,HARRISONBURG,VA +4350,EMORY & HENRY COLLEGE,EMORY,VA +4352,FERRUM COLLEGE,FERRUM,VA +4357,GEORGE MASON UNIVERSITY,FAIRFAX,VA +4359,GERMANNA COMMUNITY COLLEGE,LOCUST GROVE,VA +4356,HAMPDEN-SYDNEY COLLEGE,HAMPDEN-SYDNEY,VA +4358,HAMPTON UNIVERSITY,HAMPTON,VA +4360,HOLLINS COLLEGE,HOLLINS COLLEGE,VA +4362,J SARGENT REYNOLDS COMMUNITY COLLEGE,RICHMOND,VA +4370,JAMES MADISON UNIVERSITY,HARRISONBURG,VA +4363,JOHN TYLER COMMUNITY COLLEGE,CHESTER,VA +4364,LIBERTY UNIVERSITY,LYNCHBURG,VA +4366,LONGWOOD COLLEGE,FARMVILLE,VA +4377,LORD FAIRFAX COMMUNITY COLLEGE,MIDDLETOWN,VA +4368,LYNCHBURG COLLEGE,LYNCHBURG,VA +4374,MARY BALDWIN COLLEGE,STAUNTON,VA +4414,MARY WASHINGTON COLLEGE,FREDERICKSBURG,VA +4378,MARYMOUNT UNIVERSITY,ARLINGTON,VA +4376,MOUNTAIN EMPIRE COMMUNITY COLLEGE,BIG STONE GAP,VA +4382,NATIONAL BUSINESS COLLEGE,ROANOKE,VA +4361,NEW RIVER COMMUNITY COLLEGE,DUBLIN,VA +4425,NORFOLK STATE UNIVERSITY,NORFOLK,VA +4411,NORTHERN VIRGINIA COMMUNITY COLLEGE,ANNANDALE,VA +4347,OLD DOMINION UNIVERSITY,NORFOLK,VA +4415,PATRICK HENRY COMMUNITY COLLEGE,MARTINSVILLE,VA +4419,PAUL D CAMP COMMUNITY COLLEGE,FRANKLIN,VA +4417,PETERSBURG SCHOOL OF NURSING,PETERSBURG,VA +4384,PIEDMONT VIRGINIA COMMUNITY COLLEGE,CHARLOTTESVILLE,VA +4422,RADFORD UNIVERSITY,RADFORD,VA +4386,RANDOLPH-MACON COLLEGE,ASHLAND,VA +4388,RANDOLPH-MACON WOMAN'S COLLEGE,LYNCHBURG,VA +4390,RAPPAHANNOCK COMMUNITY COLLEGE,GLENNS,VA +4391,REGENT UNIVERSITY,VIRGINIA BEACH,VA +4346,RICHARD BLAND COLLEGE,PETERSBURG,VA +4392,ROANOKE COLLEGE,SALEM,VA +4396,SHENANDOAH COLL & CONSERVATORY OF MUSIC,WINCHESTER,VA +4327,SOUTHEASTERN FREE WILL BAPTIST COLLEGE,VIRGINIA BEACH,VA +4400,SOUTHERN SEMINARY JUNIOR COLLEGE,BUENA VISTA,VA +4337,SOUTHSIDE VA COMM COLL-CHRISTANNA CMPUS,ALBERTA,VA +4401,SOUTHWEST VIRGINIA COMMUNITY COLLEGE,RICHLANDS,VA +4394,ST PAUL'S COLLEGE,LAWRENCEVILLE,VA +4406,SWEET BRIAR COLLEGE,SWEET BRIAR,VA +4407,THOMAS NELSON COMMUNITY COLLEGE,HAMPTON,VA +4353,TIDEWATER COMM COLLEGE-FREDERICK CAMPUS,PORTSMOUTH,VA +4365,TIDEWATER COMMUNITY COLL AT VIRGINIA BCH,VIRGINIA BEACH,VA +4410,UNIVERSITY OF RICHMOND,RICHMOND,VA +4412,UNIVERSITY OF VIRGINIA,CHARLOTTESVILLE,VA +4379,VIRGINIA COMMONWEALTH UNIVERSITY,RICHMOND,VA +4433,VIRGINIA HIGHLANDS COMMUNITY COLLEGE,ABINGDON,VA +4416,VIRGINIA INTERMONT COLLEGE,BRISTOL,VA +4418,VIRGINIA MILITARY INSTITUTE,LEXINGTON,VA +4420,VIRGINIA POLYTECHNIC INST & STATE UNIV,BLACKSBURG,VA +4426,VIRGINIA SEMINARY AND COLLEGE,LYNCHBURG,VA +4424,VIRGINIA STATE UNIVERSITY,PETERSBURG,VA +4428,VIRGINIA UNION UNIVERSITY,RICHMOND,VA +4429,VIRGINIA WESLEYAN COLLEGE,NORFOLK,VA +4351,VIRGINIA WESTERN COMMUNITY COLLEGE,ROANOKE,VA +4430,WASHINGTON AND LEE UNIVERSITY,LEXINGTON,VA +4431,WYTHEVILLE COMMUNITY COLLEGE,WYTHEVILLE,VA +4296,BENNINGTON COLLEGE,BENNINGTON,VT +4329,BURLINGTON COLLEGE,BURLINGTON,VT +4314,CASTLETON STATE COLLEGE,CASTLETON,VT +4298,CHAMPLAIN COLLEGE,BURLINGTON,VT +4320,COLLEGE OF ST JOSEPH THE PROVIDER,RUTLAND,VT +4299,COMMUNITY COLLEGE OF VERMONT,WATERBURY,VT +4300,GODDARD COLLEGE,PLAINFIELD,VT +4302,GREEN MOUNTAIN COLLEGE,POULTNEY,VT +4316,JOHNSON STATE COLLEGE,JOHNSON,VT +4317,LANDMARK COLLEGE,PUTNEY,VT +4318,LYNDON STATE COLLEGE,LYNDONVILLE,VT +4304,MARLBORO COLLEGE,MARLBORO,VT +4306,MIDDLEBURY COLLEGE,MIDDLEBURY,VT +4308,NORWICH UNIVERSITY,NORTHFIELD,VT +4309,ROYALTON COLLEGE,SOUTH ROYALTON,VT +4311,SCHOOL FOR INTERNATIONAL TRNG,BRATTLEBORO,VT +4310,SOUTHERN VERMONT COLLEGE,BENNINGTON,VT +4312,ST MICHAEL'S COLLEGE,WINOOSKI,VT +4325,TRINITY COLLEGE,BURLINGTON,VT +4322,UNIVERSITY OF VERMONT,BURLINGTON,VT +4328,VERMONT COLLEGE-NORWICH UNIVERSITY,NORTHFIELD,VT +4321,VERMONT LAW SCHOOL,SOUTH ROYALTON,VT +4323,VERMONT TECHNICAL COLLEGE,RANDOLPH CENTER,VT +4443,ART INSTITUTE OF SEATTLE,SEATTLE,WA +4441,BELLEVUE COMMUNITY COLLEGE,BELLEVUE,WA +4442,BIG BEND COMMUNITY COLLEGE,MOSES LAKE,WA +4444,CENTRAL WASHINGTON UNIVERSITY,ELLENSBURG,WA +4446,CENTRALIA COLLEGE,CENTRALIA,WA +4449,CITY UNIVERSITY,BELLEVUE,WA +4448,CLARK COMMUNITY COLLEGE,VANCOUVER,WA +4452,COLUMBIA BASIN COLLEGE,PASCO,WA +4454,EASTERN WASHINGTON UNIVERSITY,CHENEY,WA +4455,EDMONDS COMMUNITY COLLEGE,LYNNWOOD,WA +4456,EVERETT COMMUNITY COLLEGE,EVERETT,WA +4457,EVERGREEN STATE COLLEGE,OLYMPIA,WA +4458,GONZAGA UNIVERSITY,SPOKANE,WA +4460,GRAYS HARBOR COLLEGE,ABERDEEN,WA +4461,GREEN RIVER COMMUNITY COLLEGE,AUBURN,WA +4462,HERITAGE COLLEGE,TOPPENISH,WA +4463,HIGHLINE COMMUNITY COLLEGE,MIDWAY,WA +4464,LOWER COLUMBIA COLLEGE,LONGVIEW,WA +4467,NORTH SEATTLE COMMUNITY COLLEGE,SEATTLE,WA +4466,NORTHWEST COLLEGE,KIRKLAND,WA +4468,OLYMPIC COLLEGE,BREMERTON,WA +4470,PACIFIC LUTHERAN UNIVERSITY,TACOMA,WA +4472,PENINSULA COLLEGE,PORT ANGELES,WA +4469,PIERCE COLLEGE,TACOMA,WA +4471,PUGET SOUND CHRISTIAN COLLEGE,EDMONDS,WA +4475,SEATTLE CENTRAL COMMUNITY COLLEGE,SEATTLE,WA +4476,SEATTLE PACIFIC UNIVERSITY,SEATTLE,WA +4478,SEATTLE UNIVERSITY,SEATTLE,WA +4479,SHORELINE COMMUNITY COLLEGE,SEATTLE,WA +4480,SKAGIT VALLEY COLLEGE,MOUNT VERNON,WA +4483,SOUTH PUGET SOUND COMM COLLEGE,OLYMPIA,WA +4473,SOUTH SEATTLE COMMUNITY COLLEGE,SEATTLE,WA +4481,SPOKANE COMMUNITY COLLEGE,SPOKANE,WA +4477,SPOKANE FALLS COMMUNITY COLLEGE,SPOKANE,WA +4474,ST MARTIN'S COLLEGE,LACEY,WA +4485,TACOMA COMMUNITY COLLEGE,TACOMA,WA +4450,UNIVERSITY OF PUGET SOUND,TACOMA,WA +4484,UNIVERSITY OF WASHINGTON,SEATTLE,WA +4486,WALLA WALLA COLLEGE,COLLEGE PLACE,WA +4487,WALLA WALLA COMMUNITY COLLEGE,WALLA WALLA,WA +4482,WASHINGTON STATE UNIVERSITY,PULLMAN,WA +4488,WENATCHEE VALLEY COLLEGE,WENATCHEE,WA +4490,WESTERN WASHINGTON UNIVERSITY,BELLINGHAM,WA +4491,WHATCOM COMMUNITY COLLEGE,BELLINGHAM,WA +4492,WHITMAN COLLEGE,WALLA WALLA,WA +4494,WHITWORTH COLLEGE,SPOKANE,WA +4496,YAKIMA VALLEY COMMUNITY COLLEGE,YAKIMA,WA +4558,ALVERNO COLLEGE,MILWAUKEE,WI +4563,BELLIN COLLEGE OF NURSING,GREEN BAY,WI +4564,BELOIT COLLEGE,BELOIT,WI +4593,BLACKHAWK TECHNICAL INSTITUTE,JANESVILLE,WI +4568,CARDINAL STRITCH UNIVERSITY,MILWAUKEE,WI +4570,CARROLL COLLEGE,WAUKESHA,WI +4571,CARTHAGE COLLEGE,KENOSHA,WI +4576,COLLEGE OF THE MENOMINEE NATION,KESHENA,WI +4575,COLUMBIA COLLEGE OF NURSING/CARROLL COL,WAUKESHA,WI +4574,CONCORDIA COLLEGE,MEQUON,WI +4581,DISTRICT ONE TECHNICAL INSTITUTE,EAU CLAIRE,WI +4582,EDGEWOOD COLLEGE,MADISON,WI +4556,FOX VALLEY TECHNICAL INSTITUTE,APPLETON,WI +4633,GATEWAY TECHNICAL INSTITUTE,RACINE,WI +4635,HOLY FAMILY HOSPITAL SCHOOL OF NURSING,MANITOWOC,WI +4589,IMMANUEL LUTHERAN COLLEGE,EAU CLAIRE,WI +4592,LAKELAND COLLEGE,SHEBOYGAN,WI +4618,LAKESHORE TECHNICAL INSTITUTE,CLEVELAND,WI +4596,LAWRENCE UNIVERSITY,APPLETON,WI +4615,MADISON AREA TECHNICAL COLLEGE,MADISON,WI +4607,MADISON BUSINESS COLLEGE,MADISON,WI +4604,MARANATHA BAPTIST BIBLE COLLEGE,WATERTOWN,WI +4606,MARIAN COLLEGE OF FOND DU LAC,FOND DU LAC,WI +4610,MARQUETTE UNIVERSITY,MILWAUKEE,WI +4683,MID-STATE TECHNICAL COLLEGE,WISCONSIN RAPIDS,WI +4614,MILWAUKEE AREA TECHNICAL COLLEGE,MILWAUKEE,WI +4601,MILWAUKEE COUNTY MEDICAL COMPLEX-NRSING,MILWAUKEE,WI +4616,MILWAUKEE SCHOOL OF ENGINEERING,MILWAUKEE,WI +4583,MORAINE PARK TECH INST-FOND DU LAC CMP,FOND DU LAC,WI +4599,MORAINE PARK TECH INST-WEST BEND CAMPUS,WEST BEND,WI +4620,MOUNT MARY COLLEGE,MILWAUKEE,WI +4621,MOUNT SENARIO COLLEGE,LADYSMITH,WI +4646,NICOLET AREA TECHNICAL COLLEGE,RHINELANDER,WI +4663,NORTH CENTRAL TECHNICAL INSTITUTE,WAUSAU,WI +4585,NORTHEAST WISCONSIN TECHNICAL INSTITUTE,GREEN BAY,WI +4623,NORTHLAND BAPTIST BIBLE COLLEGE,DUNBAR,WI +4624,NORTHLAND COLLEGE,ASHLAND,WI +4626,NORTHWESTERN COLLEGE,WATERTOWN,WI +4636,RIPON COLLEGE,RIPON,WI +4586,SILVER LAKE COLLEGE,MANITOWOC,WI +4639,SOUTHWEST WISCONSIN TECHNICAL COLLEGE,FENNIMORE,WI +4647,ST JOSEPHS HOSPITAL SCHOOL OF NURSING,MARSHFIELD,WI +4644,ST NORBERT COLLEGE,DE PERE,WI +4628,STRATTON COLLEGE,MILWAUKEE,WI +4657,UNIV OF WISCONSIN CENTER-BARABOO SAUK,BARABOO,WI +4653,UNIV OF WISCONSIN CENTER-BARRON COUNTY,RICE LAKE,WI +4673,UNIV OF WISCONSIN CENTER-FOND DU LAC,FOND DU LAC,WI +4687,UNIV OF WISCONSIN CENTER-FOX VALLEY,MENASHA,WI +4692,UNIV OF WISCONSIN CENTER-MANITOWOC CTY,MANITOWOC,WI +4696,UNIV OF WISCONSIN CENTER-MARATHON CTY,WAUSAU,WI +4693,UNIV OF WISCONSIN CENTER-MARINETTE CTY,MARINETTE,WI +4697,UNIV OF WISCONSIN CENTER-MARSHFIELD WD,MARSHFIELD,WI +4634,UNIV OF WISCONSIN CENTER-RICHLAND,RICHLAND CENTER,WI +4689,UNIV OF WISCONSIN CENTER-ROCK COUNTY,JANESVILLE,WI +4695,UNIV OF WISCONSIN CENTER-SHEBOYGAN,SHEBOYGAN,WI +4659,UNIV OF WISCONSIN CENTER-WASHINGTON CTY,WEST BEND,WI +4698,UNIV OF WISCONSIN CENTER-WAUKESHA CTY,WAUKESHA,WI +4670,UNIV OF WISCONSIN-EAU CLAIRE,EAU CLAIRE,WI +4688,UNIV OF WISCONSIN-GREEN BAY,GREEN BAY,WI +4672,UNIV OF WISCONSIN-LA CROSSE,LA CROSSE,WI +4656,UNIV OF WISCONSIN-MADISON,MADISON,WI +4658,UNIV OF WISCONSIN-MILWAUKEE,MILWAUKEE,WI +4674,UNIV OF WISCONSIN-OSHKOSH,OSHKOSH,WI +4690,UNIV OF WISCONSIN-PARKSIDE,KENOSHA,WI +4676,UNIV OF WISCONSIN-PLATTEVILLE,PLATTEVILLE,WI +4678,UNIV OF WISCONSIN-RIVER FALLS,RIVER FALLS,WI +4680,UNIV OF WISCONSIN-STEVENS POINT,STEVENS POINT,WI +4652,UNIV OF WISCONSIN-STOUT,MENOMONIE,WI +4682,UNIV OF WISCONSIN-SUPERIOR,SUPERIOR,WI +4684,UNIV OF WISCONSIN-WHITEWATER,WHITEWATER,WI +4675,UNIVERSITY OF WISCONSIN-EXTENSION,MADISON,WI +4662,VITERBO COLLEGE,LACROSSE,WI +4671,WAUKESHA COUNTY TECHNICAL COLLEGE,PEWAUKEE,WI +4573,WESTERN WISCONSIN TECHNICAL COLLEGE,LACROSSE,WI +4560,WISCONSIN INDIANHEAD TECH INST-ASHLAND,ASHLAND,WI +4665,WISCONSIN INDIANHEAD TECH INST-NEW RCHMD,NEW RICHMOND,WI +4677,WISCONSIN INDIANHEAD TECH INST-RICE LAKE,RICE LAKE,WI +4661,WISCONSIN INDIANHEAD TECH INST-SUPERIOR,SUPERIOR,WI +4699,WISCONSIN LUTHERAN COLLEGE,MILWAUKEE,WI +4557,WISCONSIN SCHOOL OF ELECTRONICS,MADISON,WI +4508,ALDERSON-BROADDUS COLLEGE,PHILIPPI,WV +4507,APPALACHIAN BIBLE COLLEGE,BRADLEY,WV +4510,BECKLEY COLLEGE,BECKLEY,WV +4512,BETHANY COLLEGE,BETHANY,WV +4514,BLUEFIELD STATE COLLEGE,BLUEFIELD,WV +4516,CONCORD COLLEGE,ATHENS,WV +4518,DAVIS AND ELKINS COLLEGE,ELKINS,WV +4520,FAIRMONT STATE COLLEGE,FAIRMONT,WV +4522,GLENVILLE STATE COLLEGE,GLENVILLE,WV +4526,MARSHALL UNIVERSITY,HUNTINGTON,WV +4550,NATIONAL EDUC CENTER-NIT CAMPUS-WV,CROSS LANES,WV +4548,OHIO VALLEY COLLEGE,PARKERSBURG,WV +4554,OHIO VALLEY GENERAL HOSP SCH OF NURSING,WHEELING,WV +4542,PARKERSBURG COMMUNITY COLLEGE,PARKERSBURG,WV +4529,POTOMAC STATE COLLEGE OF WEST VA UNIV,KEYSER,WV +4530,SALEM-TEIKYO UNIVERSITY,SALEM,WV +4532,SHEPHERD COLLEGE,SHEPHERDSTOWN,WV +4527,SOUTHERN WEST VIRGINIA COM COL-WILLIAMSN,WILLIAMSON,WV +4525,SOUTHERN WEST VIRGINIA COMM COLL-LOGAN,LOGAN,WV +4551,ST MARY'S SCHOOL OF NURSING,HUNTINGTON,WV +4523,TRI-STATE BAPTIST COLLEGE,CHARLES TOWN,WV +4528,UNIVERSITY OF CHARLESTON,CHARLESTON,WV +4534,WEST LIBERTY STATE COLLEGE,WEST LIBERTY,WV +4537,WEST VIRGINIA CAREER COLLEGE,CHARLESTON,WV +4536,WEST VIRGINIA INSTITUTE OF TECHNOLOGY,MONTGOMERY,WV +4535,WEST VIRGINIA NORTHERN COMMUNITY COLL,WHEELING,WV +4538,WEST VIRGINIA STATE COLLEGE,INSTITUTE,WV +4506,WEST VIRGINIA STATE POLICE ACADEMY,INSTITUTE,WV +4540,WEST VIRGINIA UNIVERSITY,MORGANTOWN,WV +4544,WEST VIRGINIA WESLEYAN COLLEGE,BUCKHANNON,WV +4546,WHEELING JESUIT COLLEGE,WHEELING,WV +4553,WOOD COUNTY VOC SCH/PRACTICAL NURSING,PARKERSBURG,WV +4998,CASPER COLLEGE,CASPER,WY +4999,CENTRAL WYOMING COLLEGE,RIVERTON,WY +5000,EASTERN WYOMING COLLEGE,TORRINGTON,WY +5003,LARAMIE COUNTY COMMUNITY COLLEGE,CHEYENNE,WY +5004,NORTHWEST COLLEGE,POWELL,WY +5002,SHERIDAN COLLEGE,SHERIDAN,WY +5006,UNIVERSITY OF WYOMING,LARAMIE,WY +5005,WESTERN WYOMING COMMUNITY COLLEGE,ROCK SPRINGS,WY \ No newline at end of file diff --git a/manage.py b/manage.py new file mode 100755 index 0000000..10646a4 --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tjdests.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/tjdests/__init__.py b/tjdests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/__init__.py b/tjdests/apps/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/authentication/__init__.py b/tjdests/apps/authentication/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/authentication/admin.py b/tjdests/apps/authentication/admin.py new file mode 100644 index 0000000..c444238 --- /dev/null +++ b/tjdests/apps/authentication/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin + +from .models import User + +admin.site.register(User) diff --git a/tjdests/apps/authentication/decorators.py b/tjdests/apps/authentication/decorators.py new file mode 100644 index 0000000..69dfa3c --- /dev/null +++ b/tjdests/apps/authentication/decorators.py @@ -0,0 +1,15 @@ +import functools + +from django.http import HttpRequest +from django.shortcuts import redirect + + +def require_accept_tos(func): + @functools.wraps(func) + def wrapper(request: HttpRequest, *args, **kwargs): + if request.user.is_authenticated and not request.user.accepted_terms: + return redirect("authentication:tos") + + return func(request, *args, **kwargs) + + return wrapper \ No newline at end of file diff --git a/tjdests/apps/authentication/forms.py b/tjdests/apps/authentication/forms.py new file mode 100644 index 0000000..55920b8 --- /dev/null +++ b/tjdests/apps/authentication/forms.py @@ -0,0 +1,47 @@ +from django import forms +from django.contrib.auth import password_validation + +from crispy_forms.helper import FormHelper +from crispy_forms.layout import Submit + + +class TOSForm(forms.Form): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.helper = FormHelper() + self.helper.form_method = 'post' + + self.helper.add_input(Submit('submit', 'Submit')) + + accept_tos = forms.BooleanField(required=True, label="I accept the terms of the GNU Affero General Public License as displayed above," + " and I understand that the terms that provide this software WITHOUT ANY WARRANTY;" + " without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.") + + password = forms.CharField(widget=forms.PasswordInput, required=True) + password_confirm = forms.CharField(widget=forms.PasswordInput, required=True) + + understand_no_reset = forms.BooleanField(required=True, label="I understand that there is NO PASSWORD RESET functionality once I no longer have access to Ion.") + + def clean(self): + cleaned_data = super(TOSForm, self).clean() + password1 = cleaned_data.get('password') + password2 = cleaned_data.get('password_confirm') + + if password1 and password1 != password2: + raise forms.ValidationError({"password": ["The two passwords do not match.",]}) + + # Validate checkboxes checked + accept_tos = cleaned_data.get("accept_tos") + understand_no_reset = cleaned_data.get("understand_no_reset") + + if not accept_tos: + raise forms.ValidationError({"accept_tos": ["You must accept the license terms to continue.",]}) + + if not understand_no_reset: + raise forms.ValidationError({"understand_no_reset": ["You must acknowledge that there is no password reset to continue.",]}) + + # Validate the password for complexity, etc. + validators = password_validation.get_default_password_validators() + password_validation.validate_password(password1, None, validators) + + diff --git a/tjdests/apps/authentication/migrations/0001_initial.py b/tjdests/apps/authentication/migrations/0001_initial.py new file mode 100644 index 0000000..b99525a --- /dev/null +++ b/tjdests/apps/authentication/migrations/0001_initial.py @@ -0,0 +1,46 @@ +# Generated by Django 3.2 on 2021-04-19 15:03 + +import django.contrib.auth.models +import django.contrib.auth.validators +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('accepted_terms', models.BooleanField(default=False)), + ('graduation_year', models.PositiveSmallIntegerField(null=True)), + ('is_senior', models.BooleanField(default=False)), + ('publish_data', models.BooleanField(default=False, verbose_name='Publish my data')), + ('biography', models.TextField(blank=True)), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/tjdests/apps/authentication/migrations/0002_initial.py b/tjdests/apps/authentication/migrations/0002_initial.py new file mode 100644 index 0000000..48a28b8 --- /dev/null +++ b/tjdests/apps/authentication/migrations/0002_initial.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2 on 2021-04-19 15:03 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ('authentication', '0001_initial'), + ('destinations', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='attending_decision', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='attending_college', to='destinations.decision', verbose_name='College attending'), + ), + migrations.AddField( + model_name='user', + name='groups', + field=models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups'), + ), + migrations.AddField( + model_name='user', + name='user_permissions', + field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions'), + ), + ] diff --git a/tjdests/apps/authentication/migrations/0003_alter_user_publish_data.py b/tjdests/apps/authentication/migrations/0003_alter_user_publish_data.py new file mode 100644 index 0000000..98038fe --- /dev/null +++ b/tjdests/apps/authentication/migrations/0003_alter_user_publish_data.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2021-04-19 16:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('authentication', '0002_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='publish_data', + field=models.BooleanField(default=False, help_text='Unless this is set, your data will not appear publicly.', verbose_name='Publish my data'), + ), + ] diff --git a/tjdests/apps/authentication/migrations/0004_auto_20210419_1713.py b/tjdests/apps/authentication/migrations/0004_auto_20210419_1713.py new file mode 100644 index 0000000..a351a05 --- /dev/null +++ b/tjdests/apps/authentication/migrations/0004_auto_20210419_1713.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2 on 2021-04-19 17:13 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('destinations', '0005_alter_decision_admission_status'), + ('authentication', '0003_alter_user_publish_data'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='is_student', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='user', + name='attending_decision', + field=models.ForeignKey(blank=True, help_text="Can't see your college? Make sure you've added a decision with an admit status.", null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='attending_college', to='destinations.decision', verbose_name='College attending'), + ), + ] diff --git a/tjdests/apps/authentication/migrations/__init__.py b/tjdests/apps/authentication/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/authentication/models.py b/tjdests/apps/authentication/models.py new file mode 100644 index 0000000..bc7134e --- /dev/null +++ b/tjdests/apps/authentication/models.py @@ -0,0 +1,22 @@ +from django.db import models +from django.contrib.auth.models import AbstractUser + +from ..destinations.models import Decision, TestScore + +class User(AbstractUser): + accepted_terms = models.BooleanField(default=False) + graduation_year = models.PositiveSmallIntegerField(null=True) + + is_senior = models.BooleanField(default=False) + is_student = models.BooleanField(default=False) + + # The rest are used only if a senior + publish_data = models.BooleanField(default=False, verbose_name="Publish my data", help_text="Unless this is set, your data will not appear publicly.") + biography = models.TextField(blank=True) + + attending_decision = models.ForeignKey(Decision, on_delete=models.SET_NULL, null=True, blank=True, + verbose_name="College attending", related_name="attending_college", + help_text="Can't see your college? Make sure you've added a decision with an admit status.") + + def __str__(self): + return f"{self.first_name} {self.last_name}" diff --git a/tjdests/apps/authentication/oauth.py b/tjdests/apps/authentication/oauth.py new file mode 100644 index 0000000..d3523c3 --- /dev/null +++ b/tjdests/apps/authentication/oauth.py @@ -0,0 +1,38 @@ +from django.conf import settings +from social_core.backends.oauth import BaseOAuth2 + + +class IonOauth2(BaseOAuth2): + name = "ion" + AUTHORIZATION_URL = "https://ion.tjhsst.edu/oauth/authorize" + ACCESS_TOKEN_URL = "https://ion.tjhsst.edu/oauth/token" + ACCESS_TOKEN_METHOD = "POST" + EXTRA_DATA = [("refresh_token", "refresh_token", True), ("expires_in", "expires")] + + def get_scope(self): + return ["read"] + + def get_user_details(self, response): + profile = self.get_json( + "https://ion.tjhsst.edu/api/profile", params={"access_token": response["access_token"]} + ) + # fields used to populate/update User model + + if not profile["graduation_year"]: + profile["graduation_year"] = 0 + + return { + "id": profile["id"], + "username": profile["ion_username"], + "first_name": profile["first_name"], + "last_name": profile["last_name"], + "full_name": profile["full_name"], + "email": profile["tj_email"], + "is_student": profile["is_student"], + "is_teacher": profile["is_teacher"], + "graduation_year": profile["graduation_year"], + "is_senior": int(profile["graduation_year"]) == settings.SENIOR_GRAD_YEAR + } + + def get_user_id(self, details, response): + return details["id"] \ No newline at end of file diff --git a/tjdests/apps/authentication/urls.py b/tjdests/apps/authentication/urls.py new file mode 100644 index 0000000..8f6b535 --- /dev/null +++ b/tjdests/apps/authentication/urls.py @@ -0,0 +1,12 @@ +from django.contrib.auth.views import LogoutView +from django.urls import path +from . import views + +app_name = "authentication" + +urlpatterns = [ + path("", views.index_view, name="index"), + path("login", views.LoginViewCustom.as_view(), name="login"), + path("logout", LogoutView.as_view(), name="logout"), + path("tos", views.accept_tos_view, name="tos"), +] \ No newline at end of file diff --git a/tjdests/apps/authentication/views.py b/tjdests/apps/authentication/views.py new file mode 100644 index 0000000..d76dd11 --- /dev/null +++ b/tjdests/apps/authentication/views.py @@ -0,0 +1,50 @@ +from django.contrib.auth import login, logout +from django.contrib.auth.decorators import login_required +from django.contrib.auth.views import LoginView +from django.contrib import messages +from django.http import HttpRequest, HttpResponse +from django.shortcuts import render, redirect +from django.urls import reverse + +from tjdests.apps.authentication.decorators import require_accept_tos +from tjdests.apps.authentication.forms import TOSForm + + +def index_view(request: HttpRequest) -> HttpResponse: + return render(request, "authentication/index.html") + +@login_required +def accept_tos_view(request: HttpRequest) -> HttpResponse: + assert request.user.is_authenticated + + if not request.user.is_student: + logout(request) + messages.error(request, "You must be a student to access this site.") + return redirect(reverse("authentication:index")) + + if request.user.accepted_terms: + return redirect(reverse("authentication:index")) + + if request.method == "POST": + form = TOSForm(request.POST) + + if form.is_valid(): + request.user.accepted_terms = form.cleaned_data.get("accept_tos") + request.user.set_password(form.cleaned_data.get("password")) + request.user.save() + + login(request, request.user, backend='django.contrib.auth.backends.ModelBackend') + + messages.success(request, "You have logged in.") + + return redirect(reverse("authentication:index")) + else: + form = TOSForm() + + context = {"form": form} + + return render(request, "authentication/accept_tos.html", context=context) + +class LoginViewCustom(LoginView): + template_name = "authentication/login.html" + diff --git a/tjdests/apps/context_processors.py b/tjdests/apps/context_processors.py new file mode 100644 index 0000000..eaa9498 --- /dev/null +++ b/tjdests/apps/context_processors.py @@ -0,0 +1,4 @@ +from django.conf import settings + +def settings_renderer(request): + return {"settings": settings} diff --git a/tjdests/apps/destinations/__init__.py b/tjdests/apps/destinations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/destinations/admin.py b/tjdests/apps/destinations/admin.py new file mode 100644 index 0000000..c68d2b8 --- /dev/null +++ b/tjdests/apps/destinations/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin + +from .models import College, TestScore, Decision + +admin.site.register(College) +admin.site.register(TestScore) +admin.site.register(Decision) diff --git a/tjdests/apps/destinations/management/__init__.py b/tjdests/apps/destinations/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/destinations/management/commands/__init__.py b/tjdests/apps/destinations/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/destinations/management/commands/import_ceeb.py b/tjdests/apps/destinations/management/commands/import_ceeb.py new file mode 100644 index 0000000..7cd0cce --- /dev/null +++ b/tjdests/apps/destinations/management/commands/import_ceeb.py @@ -0,0 +1,28 @@ +import argparse +import csv + +from django.core.management.base import BaseCommand + +from ...models import College + +class Command(BaseCommand): + help = "Imports a CSV of CEEB codes as colleges" + + def add_arguments(self, parser: argparse.ArgumentParser): + parser.add_argument("file_name", type=str) + + def handle(self, *args, **options): + """CSV format: + + CEEB, College Name, City, State + """ + with open(options["file_name"], "r") as file: + reader = csv.DictReader(file) + + for line in reader: + result = College.objects.update_or_create(ceeb_code=line["CEEB"], defaults={"name": line["College Name"], "location": f"{line['City']}, {line['State']}"}) + + if result[1]: + self.stdout.write(f"Added university {result[0].name}.", style_func=self.style.SUCCESS) + else: + self.stdout.write(f"Did not update university {result[0].name}.", style_func=self.style.WARNING) diff --git a/tjdests/apps/destinations/migrations/0001_initial.py b/tjdests/apps/destinations/migrations/0001_initial.py new file mode 100644 index 0000000..c75fd69 --- /dev/null +++ b/tjdests/apps/destinations/migrations/0001_initial.py @@ -0,0 +1,44 @@ +# Generated by Django 3.2 on 2021-04-19 15:03 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='College', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('ceeb_code', models.PositiveSmallIntegerField(verbose_name='CEEB Code')), + ('name', models.CharField(max_length=250)), + ('location', models.CharField(max_length=250)), + ], + ), + migrations.CreateModel( + name='TestScore', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('exam_type', models.CharField(choices=[('ACT_ENGL', 'ACT English (Grammar)'), ('ACT_MATH', 'ACT Math'), ('ACT_READ', 'ACT Reading'), ('ACT_SCI', 'ACT Science'), ('ACT_COMP', 'ACT Composite'), ('SAT_EBRW', 'SAT Verbal'), ('SAT_MATH', 'SAT Math'), ('SAT_TOTAL', 'SAT Total'), ('SAT2_MATH1', 'SAT Subject Test Math 1'), ('SAT2_MATH2', 'SAT Subject Test Math 2'), ('SAT2_BIO', 'SAT Subject Test Biology'), ('SAT2_CHEM', 'SAT Subject Test Chemistry'), ('SAT2_PHYS', 'SAT Subject Test Physics'), ('SAT2_ENGL', 'SAT Subject Test English'), ('SAT2_USH', 'SAT Subject Test U.S. History'), ('SAT2_WH', 'SAT Subject Test World History'), ('SAT2_ES', 'SAT Subject Test Spanish'), ('SAT2_ESL', 'SAT Subject Test Spanish with Listening'), ('SAT2_FR', 'SAT Subject Test French'), ('SAT2_FRL', 'SAT Subject Test French with Listening'), ('SAT2_ZHL', 'SAT Subject Test Chinese with Listening'), ('SAT2_IT', 'SAT Subject Test Italian'), ('SAT2_DE', 'SAT Subject Test German'), ('SAT2_DEL', 'SAT Subject Test German with Listening'), ('SAT2_HE', 'SAT Subject Test Modern Hebrew'), ('SAT2_LA', 'SAT Subject Test Latin'), ('SAT2_JAL', 'SAT Subject Test Japanese with Listening'), ('SAT2_KOL', 'SAT Subject Test Korean with Listening'), ('AP_RSRCH', 'AP Research'), ('AP_SMNR', 'AP Seminar'), ('AP_ART2D', 'AP Art and Design: 2-D Design'), ('AP_ART3D', 'AP Art and Design: 3-D Design'), ('AP_ARTDRAW', 'AP Art and Design: Drawing'), ('AP_ARTHIST', 'AP Art History'), ('AP_BIO', 'AP Biology'), ('AP_CALCAB', 'AP Calculus AB'), ('AP_CALCBC', 'AP Calculus BC'), ('AP_CHEM', 'AP Chemistry'), ('AP_ZHLANG', 'AP Chinese Language and Culture'), ('AP_CSA', 'AP Computer Science A'), ('AP_CSP', 'AP Computer Science Principles'), ('AP_ENLANG', 'AP English Language and Composition'), ('AP_ENLIT', 'AP English Literature and Composition'), ('AP_ENVSCI', 'AP Environmental Science'), ('AP_EUROHIST', 'AP European History'), ('AP_FRLANG', 'AP French Language and Culture'), ('AP_DELANG', 'AP German Language and Culture'), ('AP_GOVCOMP', 'AP Comparative Government and Politics'), ('AP_GOVUS', 'AP U.S. Government and Politics'), ('AP_HUG', 'AP Human Geography'), ('AP_ITLANG', 'AP Italian Language and Culture'), ('AP_JALANG', 'AP Japanese Language and Culture'), ('AP_LATIN', 'AP Latin'), ('AP_MACRO', 'AP Macroeconomics'), ('AP_MICRO', 'AP Microeconomics'), ('AP_MUSTHRY', 'AP Music Theory'), ('AP_PHYSICS1', 'AP Physics 1: Algebra-Based'), ('AP_PHYSICS2', 'AP Physics 2: Algebra-Based'), ('AP_PHYSICSCEM', 'AP Physics C: Electricity and Magnetism'), ('AP_PHYSICSCM', 'AP Physics C: Mechanics'), ('AP_PSYCH', 'AP Psychology'), ('AP_ESLANG', 'AP Spanish Language and Culture'), ('AP_ESLIT', 'AP Spanish Literature and Culture'), ('AP_STAT', 'AP Statistics'), ('AP_USH', 'AP US History'), ('AP_WHM', 'AP World History: Modern')], max_length=20)), + ('exam_score', models.PositiveSmallIntegerField()), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='Decision', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('decision_type', models.CharField(choices=[('ED', 'Early Decision'), ('ED2', 'Early Decision 2'), ('EA', 'Early Action'), ('EA2', 'Early Action 2'), ('RD', 'Regular Decision'), ('RL', 'Rolling')], max_length=20, null=True)), + ('college', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='destinations.college')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/tjdests/apps/destinations/migrations/0002_decision_admitted.py b/tjdests/apps/destinations/migrations/0002_decision_admitted.py new file mode 100644 index 0000000..0e81d52 --- /dev/null +++ b/tjdests/apps/destinations/migrations/0002_decision_admitted.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2021-04-19 15:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('destinations', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='decision', + name='admitted', + field=models.BooleanField(default=False), + ), + ] diff --git a/tjdests/apps/destinations/migrations/0003_alter_decision_admitted.py b/tjdests/apps/destinations/migrations/0003_alter_decision_admitted.py new file mode 100644 index 0000000..34d2d3e --- /dev/null +++ b/tjdests/apps/destinations/migrations/0003_alter_decision_admitted.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2021-04-19 15:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('destinations', '0002_decision_admitted'), + ] + + operations = [ + migrations.AlterField( + model_name='decision', + name='admitted', + field=models.CharField(choices=[('ADMIT', 'Admitted'), ('WAITLIST', 'Waitlisted'), ('WAITLIST_ADMIT', 'Waitlist-Admitted'), ('WAITLIST_DENY', 'Waitlist-Denied'), ('DEFER', 'Deferred'), ('DEFER_ADMIT', 'Deferred-Admitted'), ('DEFER_DENY', 'Deferred-Denied'), ('DENY', 'Denied')], default='DENY', max_length=20), + ), + ] diff --git a/tjdests/apps/destinations/migrations/0004_rename_admitted_decision_admission_status.py b/tjdests/apps/destinations/migrations/0004_rename_admitted_decision_admission_status.py new file mode 100644 index 0000000..972b2e4 --- /dev/null +++ b/tjdests/apps/destinations/migrations/0004_rename_admitted_decision_admission_status.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2021-04-19 16:00 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('destinations', '0003_alter_decision_admitted'), + ] + + operations = [ + migrations.RenameField( + model_name='decision', + old_name='admitted', + new_name='admission_status', + ), + ] diff --git a/tjdests/apps/destinations/migrations/0005_alter_decision_admission_status.py b/tjdests/apps/destinations/migrations/0005_alter_decision_admission_status.py new file mode 100644 index 0000000..9fcf797 --- /dev/null +++ b/tjdests/apps/destinations/migrations/0005_alter_decision_admission_status.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2021-04-19 17:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('destinations', '0004_rename_admitted_decision_admission_status'), + ] + + operations = [ + migrations.AlterField( + model_name='decision', + name='admission_status', + field=models.CharField(choices=[('ADMIT', 'Admitted'), ('WAITLIST', 'Waitlisted'), ('WAITLIST_ADMIT', 'Waitlist-Admitted'), ('WAITLIST_DENY', 'Waitlist-Denied'), ('DEFER', 'Deferred'), ('DEFER_ADMIT', 'Deferred-Admitted'), ('DEFER_DENY', 'Deferred-Denied'), ('DENY', 'Denied')], max_length=20), + ), + ] diff --git a/tjdests/apps/destinations/migrations/0006_alter_college_ceeb_code.py b/tjdests/apps/destinations/migrations/0006_alter_college_ceeb_code.py new file mode 100644 index 0000000..d74bcb2 --- /dev/null +++ b/tjdests/apps/destinations/migrations/0006_alter_college_ceeb_code.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2021-04-19 18:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('destinations', '0005_alter_decision_admission_status'), + ] + + operations = [ + migrations.AlterField( + model_name='college', + name='ceeb_code', + field=models.CharField(max_length=10, verbose_name='CEEB Code'), + ), + ] diff --git a/tjdests/apps/destinations/migrations/__init__.py b/tjdests/apps/destinations/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/destinations/models.py b/tjdests/apps/destinations/models.py new file mode 100644 index 0000000..976a162 --- /dev/null +++ b/tjdests/apps/destinations/models.py @@ -0,0 +1,217 @@ +from django.db import models + + +class College(models.Model): + """Represents a college.""" + + ceeb_code = models.CharField(max_length=10, null=False, verbose_name="CEEB Code") + name = models.CharField(max_length=250, null=False, blank=False) + location = models.CharField(max_length=250, null=False, blank=False) + + def __str__(self): + return f"{self.name} - {self.location} ({self.ceeb_code})" + + +class Decision(models.Model): + """Represents a college decision.""" + + EARLY_DECISION = "ED" + EARLY_DECISION_2 = "ED2" + EARLY_ACTION = "EA" + EARLY_ACTION_2 = "EA2" + REGULAR_DECISION = "RD" + ROLLING = "RL" + + DECISION_TYPE_CHOICES = [ + (EARLY_DECISION, "Early Decision"), + (EARLY_DECISION_2, "Early Decision 2"), + (EARLY_ACTION, "Early Action"), + (EARLY_ACTION_2, "Early Action 2"), + (REGULAR_DECISION, "Regular Decision"), + (ROLLING, "Rolling"), + ] + + user = models.ForeignKey("authentication.User", on_delete=models.CASCADE) + + decision_type = models.CharField(max_length=20, choices=DECISION_TYPE_CHOICES, null=True) + + ADMIT = "ADMIT" + WAITLIST_ADMIT = "WAITLIST_ADMIT" + WAITLIST_DENY = "WAITLIST_DENY" + WAITLIST = "WAITLIST" + DEFER_ADMIT = "DEFER_ADMIT" + DEFER_DENY = "DEFER_DENY" + DEFER = "DEFER" + DENY = "DENY" + + ADMIT_TYPE_CHOICES = [ + (ADMIT, "Admitted"), + (WAITLIST, "Waitlisted"), + (WAITLIST_ADMIT, "Waitlist-Admitted"), + (WAITLIST_DENY, "Waitlist-Denied"), + (DEFER, "Deferred"), + (DEFER_ADMIT, "Deferred-Admitted"), + (DEFER_DENY, "Deferred-Denied"), + (DENY, "Denied"), + ] + + admission_status = models.CharField(max_length=20, choices=ADMIT_TYPE_CHOICES) + college = models.ForeignKey(College, on_delete=models.CASCADE) + + def __str__(self): + return f"{self.college.name} - {self.get_decision_type_display()}: {self.get_admission_status_display()}" + + +class TestScore(models.Model): + """Represents a test score.""" + + # Test score types for validation purposes + ACT_ENGL = "ACT_ENGL" + ACT_MATH = "ACT_MATH" + ACT_READ = "ACT_READ" + ACT_SCI = "ACT_SCI" + ACT_COMP = "ACT_COMP" + + # SAT + SAT_EBRW = "SAT_EBRW" + SAT_MATH = "SAT_MATH" + SAT_TOTAL = "SAT_TOTAL" + + # SAT Subject Tests + SAT2_MATH1 = "SAT2_MATH1" + SAT2_MATH2 = "SAT2_MATH2" + SAT2_BIO = "SAT2_BIO" + SAT2_CHEM = "SAT2_CHEM" + SAT2_PHYS = "SAT2_PHYS" + SAT2_ENGL = "SAT2_ENGL" + SAT2_USH = "SAT2_USH" + SAT2_WH = "SAT2_WH" + SAT2_ES = "SAT2_ES" + SAT2_ESL = "SAT2_ESL" + SAT2_FR = "SAT2_FR" + SAT2_FRL = "SAT2_FRL" + SAT2_ZHL = "SAT2_ZHL" + SAT2_IT = "SAT2_IT" + SAT2_DE = "SAT2_DE" + SAT2_DEL = "SAT2_DEL" + SAT2_HE = "SAT2_HE" + SAT2_LA = "SAT2_LA" + SAT2_JAL = "SAT2_JAL" + SAT2_KOL = "SAT2_KOL" + + # AP Exams + AP_RSRCH = "AP_RSRCH" + AP_SMNR = "AP_SMNR" + AP_ART2D = "AP_ART2D" + AP_ART3D = "AP_ART3D" + AP_ARTDRAW = "AP_ARTDRAW" + AP_ARTHIST = "AP_ARTHIST" + AP_BIO = "AP_BIO" + AP_CALCAB = "AP_CALCAB" + AP_CALCBC = "AP_CALCBC" + AP_CHEM = "AP_CHEM" + AP_ZHLANG = "AP_ZHLANG" + AP_CSA = "AP_CSA" + AP_CSP = "AP_CSP" + AP_ENLANG = "AP_ENLANG" + AP_ENLIT = "AP_ENLIT" + AP_ENVSCI = "AP_ENVSCI" + AP_EUROHIST = "AP_EUROHIST" + AP_FRLANG = "AP_FRLANG" + AP_DELANG = "AP_DELANG" + AP_GOVCOMP = "AP_GOVCOMP" + AP_GOVUS = "AP_GOVUS" + AP_HUG = "AP_HUG" + AP_ITLANG = "AP_ITLANG" + AP_JALANG = "AP_JALANG" + AP_LATIN = "AP_LATIN" + AP_MACRO = "AP_MACRO" + AP_MICRO = "AP_MICRO" + AP_MUSTHRY = "AP_MUSTHRY" + AP_PHYSICS1 = "AP_PHYSICS1" + AP_PHYSICS2 = "AP_PHYSICS2" + AP_PHYSICSCEM = "AP_PHYSICSCEM" + AP_PHYSICSCM = "AP_PHYSICSCM" + AP_PSYCH = "AP_PSYCH" + AP_ESLANG = "AP_ESLANG" + AP_ESLIT = "AP_ESLIT" + AP_STAT = "AP_STAT" + AP_USH = "AP_USH" + AP_WHM = "AP_WHM" + + TEST_TYPES = [ + (ACT_ENGL, "ACT English (Grammar)"), + (ACT_MATH, "ACT Math"), + (ACT_READ, "ACT Reading"), + (ACT_SCI, "ACT Science"), + (ACT_COMP, "ACT Composite"), + (SAT_EBRW, "SAT Verbal"), + (SAT_MATH, "SAT Math"), + (SAT_TOTAL, "SAT Total"), + (SAT2_MATH1, "SAT Subject Test Math 1"), + (SAT2_MATH2, "SAT Subject Test Math 2"), + (SAT2_BIO, "SAT Subject Test Biology"), + (SAT2_CHEM, "SAT Subject Test Chemistry"), + (SAT2_PHYS, "SAT Subject Test Physics"), + (SAT2_ENGL, "SAT Subject Test English"), + (SAT2_USH, "SAT Subject Test U.S. History"), + (SAT2_WH, "SAT Subject Test World History"), + (SAT2_ES, "SAT Subject Test Spanish"), + (SAT2_ESL, "SAT Subject Test Spanish with Listening"), + (SAT2_FR, "SAT Subject Test French"), + (SAT2_FRL, "SAT Subject Test French with Listening"), + (SAT2_ZHL, "SAT Subject Test Chinese with Listening"), + (SAT2_IT, "SAT Subject Test Italian"), + (SAT2_DE, "SAT Subject Test German"), + (SAT2_DEL, "SAT Subject Test German with Listening"), + (SAT2_HE, "SAT Subject Test Modern Hebrew"), + (SAT2_LA, "SAT Subject Test Latin"), + (SAT2_JAL, "SAT Subject Test Japanese with Listening"), + (SAT2_KOL, "SAT Subject Test Korean with Listening"), + (AP_RSRCH, "AP Research"), + (AP_SMNR, "AP Seminar"), + (AP_ART2D, "AP Art and Design: 2-D Design"), + (AP_ART3D, "AP Art and Design: 3-D Design"), + (AP_ARTDRAW, "AP Art and Design: Drawing"), + (AP_ARTHIST, "AP Art History"), + (AP_BIO, "AP Biology"), + (AP_CALCAB, "AP Calculus AB"), + (AP_CALCBC, "AP Calculus BC"), + (AP_CHEM, "AP Chemistry"), + (AP_ZHLANG, "AP Chinese Language and Culture"), + (AP_CSA, "AP Computer Science A"), + (AP_CSP, "AP Computer Science Principles"), + (AP_ENLANG, "AP English Language and Composition"), + (AP_ENLIT, "AP English Literature and Composition"), + (AP_ENVSCI, "AP Environmental Science"), + (AP_EUROHIST, "AP European History"), + (AP_FRLANG, "AP French Language and Culture"), + (AP_DELANG, "AP German Language and Culture"), + (AP_GOVCOMP, "AP Comparative Government and Politics"), + (AP_GOVUS, "AP U.S. Government and Politics"), + (AP_HUG, "AP Human Geography"), + (AP_ITLANG, "AP Italian Language and Culture"), + (AP_JALANG, "AP Japanese Language and Culture"), + (AP_LATIN, "AP Latin"), + (AP_MACRO, "AP Macroeconomics"), + (AP_MICRO, "AP Microeconomics"), + (AP_MUSTHRY, "AP Music Theory"), + (AP_PHYSICS1, "AP Physics 1: Algebra-Based"), + (AP_PHYSICS2, "AP Physics 2: Algebra-Based"), + (AP_PHYSICSCEM, "AP Physics C: Electricity and Magnetism"), + (AP_PHYSICSCM, "AP Physics C: Mechanics"), + (AP_PSYCH, "AP Psychology"), + (AP_ESLANG, "AP Spanish Language and Culture"), + (AP_ESLIT, "AP Spanish Literature and Culture"), + (AP_STAT, "AP Statistics"), + (AP_USH, "AP US History"), + (AP_WHM, "AP World History: Modern"), + ] + + user = models.ForeignKey("authentication.User", on_delete=models.CASCADE) + + exam_type = models.CharField(max_length=20, choices=TEST_TYPES, null=False) + exam_score = models.PositiveSmallIntegerField(null=False) + + def __str__(self): + return f"{self.get_exam_type_display()}: {self.exam_score}" diff --git a/tjdests/apps/destinations/urls.py b/tjdests/apps/destinations/urls.py new file mode 100644 index 0000000..24f1a96 --- /dev/null +++ b/tjdests/apps/destinations/urls.py @@ -0,0 +1,9 @@ +from django.urls import path +from . import views + +app_name = "destinations" + +urlpatterns = [ + path("", views.StudentDestinationListView.as_view(), name="students"), + path("colleges", views.CollegeDestinationListView.as_view(), name="colleges"), +] \ No newline at end of file diff --git a/tjdests/apps/destinations/views.py b/tjdests/apps/destinations/views.py new file mode 100644 index 0000000..aad9f2e --- /dev/null +++ b/tjdests/apps/destinations/views.py @@ -0,0 +1,71 @@ +from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin +from django.db.models import Count, Q +from django.shortcuts import get_object_or_404 +from django.views.generic import ListView + +from .models import College, Decision +from ..authentication.models import User + + +class StudentDestinationListView(LoginRequiredMixin, UserPassesTestMixin, ListView): + model = User + paginate_by = 20 + + def get_queryset(self): + queryset = User.objects.filter(publish_data=True, is_senior=True).order_by("last_name", "first_name") + + college_id = self.request.GET.get("college", None) + if college_id is not None: + get_object_or_404(College, id=college_id) + queryset = queryset.filter(decision__college__id=college_id) + + return queryset + + def get_context_data(self, *, object_list=None, **kwargs): + context = super(StudentDestinationListView, self).get_context_data(**kwargs) + + college_id = self.request.GET.get("college", None) + if college_id is not None: + context["college"] = get_object_or_404(College, id=college_id) + + return context + + def test_func(self): + return self.request.user.accepted_terms + + template_name = "destinations/student_list.html" + + +class CollegeDestinationListView(LoginRequiredMixin, UserPassesTestMixin, ListView): + model = College + paginate_by = 20 + queryset = College.objects.annotate(count_decisions=Count("decision", filter=Q(decision__user__publish_data=True)), + count_admit=Count("decision", + filter=Q(decision__admission_status=Decision.ADMIT, + decision__user__publish_data=True)), + count_waitlist=Count("decision", + filter=Q(decision__admission_status=Decision.WAITLIST, + decision__user__publish_data=True)), + count_waitlist_admit=Count("decision", filter=Q( + decision__admission_status=Decision.WAITLIST_ADMIT, + decision__user__publish_data=True)), + count_waitlist_deny=Count("decision", filter=Q( + decision__admission_status=Decision.WAITLIST_DENY, + decision__user__publish_data=True)), + count_defer=Count("decision", + filter=Q(decision__admission_status=Decision.DEFER, + decision__user__publish_data=True)), + count_defer_admit=Count("decision", filter=Q( + decision__admission_status=Decision.DEFER_ADMIT, + decision__user__publish_data=True)), + count_defer_deny=Count("decision", + filter=Q(decision__admission_status=Decision.DEFER_DENY, + decision__user__publish_data=True)), + count_deny=Count("decision", filter=Q(decision__admission_status=Decision.DENY, + decision__user__publish_data=True)), + ).filter(count_decisions__gte=1).order_by("name") + + def test_func(self): + return self.request.user.accepted_terms + + template_name = "destinations/college_list.html" diff --git a/tjdests/apps/profile/__init__.py b/tjdests/apps/profile/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tjdests/apps/profile/forms.py b/tjdests/apps/profile/forms.py new file mode 100644 index 0000000..fc1220c --- /dev/null +++ b/tjdests/apps/profile/forms.py @@ -0,0 +1,28 @@ +from django import forms + +from tjdests.apps.authentication.models import User + +from crispy_forms.helper import FormHelper +from crispy_forms.layout import Submit + +from tjdests.apps.destinations.models import Decision + + +class ProfilePublishForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.helper = FormHelper() + self.helper.form_method = 'post' + + self.helper.add_input(Submit('submit', 'Submit')) + + self.fields["attending_decision"].queryset = Decision.objects.filter(user=self.instance, admission_status__in=[Decision.ADMIT, Decision.WAITLIST_ADMIT, Decision.DEFER_ADMIT]) + + class Meta: + model = User + fields = ["publish_data", "biography", "attending_decision"] + +class DecisionForm(forms.ModelForm): + class Meta: + model = Decision + fields = ["college", "decision_type", "admission_status"] diff --git a/tjdests/apps/profile/urls.py b/tjdests/apps/profile/urls.py new file mode 100644 index 0000000..b10fc10 --- /dev/null +++ b/tjdests/apps/profile/urls.py @@ -0,0 +1,14 @@ +from django.urls import path +from . import views + +app_name = "profile" + +urlpatterns = [ + path("", views.profile_view, name="index"), + path("testscore/add", views.TestScoreCreateView.as_view(), name="testscores_add"), + path("testscore/edit/", views.TestScoreUpdateView.as_view(), name="testscores_edit"), + path("testscore/delete/", views.TestScoreDeleteView.as_view(), name="testscores_delete"), + path("decision/add", views.DecisionCreateView.as_view(), name="decision_add"), + path("decision/edit/", views.DecisionUpdateView.as_view(), name="decision_edit"), + path("decision/delete/", views.DecisionDeleteView.as_view(), name="decision_delete"), +] \ No newline at end of file diff --git a/tjdests/apps/profile/views.py b/tjdests/apps/profile/views.py new file mode 100644 index 0000000..d2a240b --- /dev/null +++ b/tjdests/apps/profile/views.py @@ -0,0 +1,141 @@ +from django.contrib import messages +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin +from django.contrib.messages.views import SuccessMessageMixin +from django.http import HttpRequest +from django.shortcuts import render +from django.urls import reverse +from django.views.generic import CreateView, UpdateView, DeleteView + +from tjdests.apps.authentication.decorators import require_accept_tos +from tjdests.apps.destinations.models import TestScore, Decision + +from .forms import ProfilePublishForm, DecisionForm + + +@login_required +@require_accept_tos +def profile_view(request: HttpRequest): + test_scores = TestScore.objects.filter(user=request.user) + decisions = Decision.objects.filter(user=request.user) + + # A POST request would mean that the user is saving their profile publication status + if request.method == "POST": + profile_form = ProfilePublishForm(request.POST, instance=request.user) + if profile_form.is_valid(): + profile_form.save() + + messages.success(request, "Your preferences have been changed.") + else: + profile_form = ProfilePublishForm(instance=request.user) + + context = {"test_scores_list": test_scores, "decisions_list": decisions, "profile_form": profile_form} + + return render(request, "profile/profile.html", context=context) + + +class TestScoreCreateView(LoginRequiredMixin, SuccessMessageMixin, UserPassesTestMixin, CreateView): + model = TestScore + fields = ["exam_type", "exam_score"] + template_name = "profile/testscore_form.html" + success_message = "Test score created successfully." + + def form_valid(self, form): + form.instance.user = self.request.user + return super().form_valid(form) + + def test_func(self): + return self.request.user.is_senior and self.request.user.accepted_terms + + def get_success_url(self): + return reverse("profile:index") + + +class TestScoreUpdateView(LoginRequiredMixin, SuccessMessageMixin, UserPassesTestMixin, UpdateView): + model = TestScore + fields = ["exam_type", "exam_score"] + template_name = "profile/testscore_form.html" + success_message = "Test score updated successfully." + + def form_valid(self, form): + form.instance.user = self.request.user + return super().form_valid(form) + + def get_queryset(self): + owner = self.request.user + return self.model.objects.filter(user=owner) + + def test_func(self): + return self.request.user.is_senior and self.request.user.accepted_terms + + def get_success_url(self): + return reverse("profile:index") + + +class TestScoreDeleteView(LoginRequiredMixin, SuccessMessageMixin, UserPassesTestMixin, DeleteView): + model = TestScore + template_name = "profile/testscore_delete.html" + success_message = "Test score deleted successfully." + + def get_queryset(self): + owner = self.request.user + return self.model.objects.filter(user=owner) + + def test_func(self): + return self.request.user.is_senior and self.request.user.accepted_terms + + def get_success_url(self): + return reverse("profile:index") + +class DecisionCreateView(LoginRequiredMixin, SuccessMessageMixin, UserPassesTestMixin, CreateView): + model = Decision + fields = ["college", "decision_type", "admission_status"] + template_name = "profile/decision_form.html" + success_message = "Decision created successfully." + + def form_valid(self, form): + form.instance.user = self.request.user + return super().form_valid(form) + + def test_func(self): + return self.request.user.is_senior and self.request.user.accepted_terms + + def get_success_url(self): + return reverse("profile:index") + + +class DecisionUpdateView(LoginRequiredMixin, SuccessMessageMixin, UserPassesTestMixin, UpdateView): + model = Decision + fields = ["college", "decision_type", "admission_status"] + template_name = "profile/decision_form.html" + success_message = "Decision created successfully." + + def form_valid(self, form): + form.instance.user = self.request.user + return super().form_valid(form) + + def get_queryset(self): + owner = self.request.user + return self.model.objects.filter(user=owner) + + def test_func(self): + return self.request.user.is_senior and self.request.user.accepted_terms + + def get_success_url(self): + return reverse("profile:index") + + +class DecisionDeleteView(LoginRequiredMixin, SuccessMessageMixin, UserPassesTestMixin, DeleteView): + model = Decision + template_name = "profile/decision_delete.html" + success_message = "Decision deleted successfully." + + def get_queryset(self): + owner = self.request.user + return self.model.objects.filter(user=owner) + + def test_func(self): + return self.request.user.is_senior and self.request.user.accepted_terms + + def get_success_url(self): + return reverse("profile:index") diff --git a/tjdests/asgi.py b/tjdests/asgi.py new file mode 100644 index 0000000..5075bff --- /dev/null +++ b/tjdests/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for tjdests project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tjdests.settings') + +application = get_asgi_application() diff --git a/tjdests/settings/__init__.py b/tjdests/settings/__init__.py new file mode 100644 index 0000000..7687d07 --- /dev/null +++ b/tjdests/settings/__init__.py @@ -0,0 +1,160 @@ +""" +Django settings for tjdests project. + +Generated by 'django-admin startproject' using Django 3.2. + +For more information on this file, see +https://docs.djangoproject.com/en/3.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.2/ref/settings/ +""" +import logging +import os +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-7nju0o%j&gz7&v^05iuq*tn$_iwvtjh1cq26@is(u2d4snkum5' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + "crispy_forms", + "crispy_bootstrap5", + "social_django", + "django_extensions", + "bootstrap_pagination", + 'tjdests.apps.authentication', + 'tjdests.apps.destinations', + "tjdests.apps.profile", +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'tjdests.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [BASE_DIR / 'templates'] + , + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + 'tjdests.apps.context_processors.settings_renderer', + ], + }, + }, +] + +WSGI_APPLICATION = 'tjdests.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + +AUTH_USER_MODEL = "authentication.User" + +AUTHENTICATION_BACKENDS = ("tjdests.apps.authentication.oauth.IonOauth2", "django.contrib.auth.backends.ModelBackend",) + +SOCIAL_AUTH_REDIRECT_IS_HTTPS = False +SOCIAL_AUTH_ION_KEY = "" +SOCIAL_AUTH_ION_SECRET = "" + + +# Internationalization +# https://docs.djangoproject.com/en/3.2/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.2/howto/static-files/ + +STATIC_URL = '/static/' +STATIC_ROOT = os.path.join(BASE_DIR, "serve/") +STATICFILES_DIRS = (os.path.join(BASE_DIR, "static/"),) + +# Default primary key field type +# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +LOGIN_REDIRECT_URL = "authentication:tos" +LOGOUT_REDIRECT_URL = "authentication:index" + +LOGIN_URL = "authentication:login" + +CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5" +CRISPY_TEMPLATE_PACK = "bootstrap5" + +try: + from .secret import * +except ImportError: + logging.warning("Error importing secret.py") + pass diff --git a/tjdests/settings/secret.sample.py b/tjdests/settings/secret.sample.py new file mode 100644 index 0000000..6a4d781 --- /dev/null +++ b/tjdests/settings/secret.sample.py @@ -0,0 +1,17 @@ +# Deployed senior graduation year +# e.g. if deploying in spring 2021, then 2021 +SENIOR_GRAD_YEAR = 2021 + +# Branding name +BRANDING_NAME = "TJ Destinations" + +# DEBUG and authorized hosts +DEBUG = True +ALLOWED_HOSTS = [] + +# secret +SECRET_KEY = 'supersecret' + +# OAuth +SOCIAL_AUTH_ION_KEY = "ionkey" +SOCIAL_AUTH_ION_SECRET = "ionsecret" diff --git a/tjdests/static/bootstrap.bundle.min.js b/tjdests/static/bootstrap.bundle.min.js new file mode 100644 index 0000000..2168d63 --- /dev/null +++ b/tjdests/static/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.0.0-beta3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},s=t=>{const i=e(t);return i?document.querySelector(i):null},n=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const s=Number.parseFloat(e),n=Number.parseFloat(i);return s||n?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0},o=t=>{t.dispatchEvent(new Event("transitionend"))},r=t=>(t[0]||t).nodeType,a=(t,e)=>{let i=!1;const s=e+5;t.addEventListener("transitionend",(function e(){i=!0,t.removeEventListener("transitionend",e)})),setTimeout(()=>{i||o(t)},s)},l=(t,e,i)=>{Object.keys(i).forEach(s=>{const n=i[s],o=e[s],a=o&&r(o)?"element":null==(l=o)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(n).test(a))throw new TypeError(t.toUpperCase()+": "+`Option "${s}" provided type "${a}" `+`but expected type "${n}".`)})},c=t=>{if(!t)return!1;if(t.style&&t.parentNode&&t.parentNode.style){const e=getComputedStyle(t),i=getComputedStyle(t.parentNode);return"none"!==e.display&&"none"!==i.display&&"hidden"!==e.visibility}return!1},d=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},f=()=>function(){},u=t=>t.offsetHeight,p=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},g=()=>"rtl"===document.documentElement.dir,m=(t,e)=>{var i;i=()=>{const i=p();if(i){const s=i.fn[t];i.fn[t]=e.jQueryInterface,i.fn[t].Constructor=e,i.fn[t].noConflict=()=>(i.fn[t]=s,e.jQueryInterface)}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",i):i()},_=new Map;var b={set(t,e,i){_.has(t)||_.set(t,new Map);const s=_.get(t);s.has(e)||0===s.size?s.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(t,e)=>_.has(t)&&_.get(t).get(e)||null,remove(t,e){if(!_.has(t))return;const i=_.get(t);i.delete(e),0===i.size&&_.delete(t)}};const v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,E={};let T=1;const A={mouseenter:"mouseover",mouseleave:"mouseout"},L=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function k(t){const e=O(t);return t.uidEvent=e,E[e]=E[e]||{},E[e]}function D(t,e,i=null){const s=Object.keys(t);for(let n=0,o=s.length;n{!function(t,e,i,s){const n=e[i]||{};Object.keys(n).forEach(o=>{if(o.includes(s)){const s=n[o];S(t,e,i,s.originalHandler,s.delegationSelector)}})}(t,l,i,e.slice(1))});const d=l[r]||{};Object.keys(d).forEach(i=>{const s=i.replace(w,"");if(!a||e.includes(s)){const e=d[i];S(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const s=p(),n=e.replace(y,""),o=e!==n,r=L.has(n);let a,l=!0,c=!0,d=!1,h=null;return o&&s&&(a=s.Event(e,i),s(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),d=a.isDefaultPrevented()),r?(h=document.createEvent("HTMLEvents"),h.initEvent(n,l,!0)):h=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(h,t,{get:()=>i[t]})}),d&&h.preventDefault(),c&&t.dispatchEvent(h),h.defaultPrevented&&void 0!==a&&a.preventDefault(),h}};class j{constructor(t){(t="string"==typeof t?document.querySelector(t):t)&&(this._element=t,b.set(this._element,this.constructor.DATA_KEY,this))}dispose(){b.remove(this._element,this.constructor.DATA_KEY),this._element=null}static getInstance(t){return b.get(t,this.DATA_KEY)}static get VERSION(){return"5.0.0-beta3"}}class P extends j{static get DATA_KEY(){return"bs.alert"}close(t){const e=t?this._getRootElement(t):this._element,i=this._triggerCloseEvent(e);null===i||i.defaultPrevented||this._removeElement(e)}_getRootElement(t){return s(t)||t.closest(".alert")}_triggerCloseEvent(t){return N.trigger(t,"close.bs.alert")}_removeElement(t){if(t.classList.remove("show"),!t.classList.contains("fade"))return void this._destroyElement(t);const e=n(t);N.one(t,"transitionend",()=>this._destroyElement(t)),a(t,e)}_destroyElement(t){t.parentNode&&t.parentNode.removeChild(t),N.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.alert");e||(e=new P(this)),"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}N.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',P.handleDismiss(new P)),m("alert",P);class I extends j{static get DATA_KEY(){return"bs.button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.button");e||(e=new I(this)),"toggle"===t&&e[t]()}))}}function M(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function R(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}N.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');let i=b.get(e,"bs.button");i||(i=new I(e)),i.toggle()}),m("button",I);const B={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+R(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+R(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let s=i.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=M(t.dataset[i])}),e},getDataAttribute:(t,e)=>M(t.getAttribute("data-bs-"+R(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},H={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let s=t.parentNode;for(;s&&s.nodeType===Node.ELEMENT_NODE&&3!==s.nodeType;)s.matches(e)&&i.push(s),s=s.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]}},W={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},U={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},$="next",F="prev",z="left",K="right";class Y extends j{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=H.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return W}static get DATA_KEY(){return"bs.carousel"}next(){this._isSliding||this._slide($)}nextWhenVisible(){!document.hidden&&c(this._element)&&this.next()}prev(){this._isSliding||this._slide(F)}pause(t){t||(this._isPaused=!0),H.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(o(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=H.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const i=t>e?$:F;this._slide(i,this._items[t])}dispose(){N.off(this._element,".bs.carousel"),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null,super.dispose()}_getConfig(t){return t={...W,...t},l("carousel",t,U),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?K:z)}_addEventListeners(){this._config.keyboard&&N.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(N.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),N.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},i=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};H.find(".carousel-item img",this._element).forEach(t=>{N.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(N.on(this._element,"pointerdown.bs.carousel",e=>t(e)),N.on(this._element,"pointerup.bs.carousel",t=>i(t)),this._element.classList.add("pointer-event")):(N.on(this._element,"touchstart.bs.carousel",e=>t(e)),N.on(this._element,"touchmove.bs.carousel",t=>e(t)),N.on(this._element,"touchend.bs.carousel",t=>i(t)))}_keydown(t){/input|textarea/i.test(t.target.tagName)||("ArrowLeft"===t.key?(t.preventDefault(),this._slide(z)):"ArrowRight"===t.key&&(t.preventDefault(),this._slide(K)))}_getItemIndex(t){return this._items=t&&t.parentNode?H.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===$,s=t===F,n=this._getItemIndex(e),o=this._items.length-1;if((s&&0===n||i&&n===o)&&!this._config.wrap)return e;const r=(n+(s?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),s=this._getItemIndex(H.findOne(".active.carousel-item",this._element));return N.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:s,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=H.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const i=H.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{r.classList.remove(h,f),r.classList.add("active"),s.classList.remove("active",f,h),this._isSliding=!1,setTimeout(()=>{N.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:p,from:o,to:l})},0)}),a(s,t)}else s.classList.remove("active"),r.classList.add("active"),this._isSliding=!1,N.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:p,from:o,to:l});c&&this.cycle()}}_directionToOrder(t){return[K,z].includes(t)?g()?t===K?F:$:t===K?$:F:t}_orderToDirection(t){return[$,F].includes(t)?g()?t===$?z:K:t===$?K:z:t}static carouselInterface(t,e){let i=b.get(t,"bs.carousel"),s={...W,...B.getDataAttributes(t)};"object"==typeof e&&(s={...s,...e});const n="string"==typeof e?e:s.slide;if(i||(i=new Y(t,s)),"number"==typeof e)i.to(e);else if("string"==typeof n){if(void 0===i[n])throw new TypeError(`No method named "${n}"`);i[n]()}else s.interval&&s.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){Y.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=s(this);if(!e||!e.classList.contains("carousel"))return;const i={...B.getDataAttributes(e),...B.getDataAttributes(this)},n=this.getAttribute("data-bs-slide-to");n&&(i.interval=!1),Y.carouselInterface(e,i),n&&b.get(e,"bs.carousel").to(n),t.preventDefault()}}N.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",Y.dataApiClickHandler),N.on(window,"load.bs.carousel.data-api",()=>{const t=H.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element);null!==n&&o.length&&(this._selector=n,this._triggerArray.push(e))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return q}static get DATA_KEY(){return"bs.collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let t,e;this._parent&&(t=H.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===t.length&&(t=null));const i=H.findOne(this._selector);if(t){const s=t.find(t=>i!==t);if(e=s?b.get(s,"bs.collapse"):null,e&&e._isTransitioning)return}if(N.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t&&t.forEach(t=>{i!==t&&X.collapseInterface(t,"hide"),e||b.set(t,"bs.collapse",null)});const s=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[s]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const o="scroll"+(s[0].toUpperCase()+s.slice(1)),r=n(this._element);N.one(this._element,"transitionend",()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[s]="",this.setTransitioning(!1),N.trigger(this._element,"shown.bs.collapse")}),a(this._element,r),this._element.style[s]=this._element[o]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(N.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",u(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),N.trigger(this._element,"hidden.bs.collapse")}),a(this._element,i)}setTransitioning(t){this._isTransitioning=t}dispose(){super.dispose(),this._config=null,this._parent=null,this._triggerArray=null,this._isTransitioning=null}_getConfig(t){return(t={...q,...t}).toggle=Boolean(t.toggle),l("collapse",t,V),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:t}=this._config;r(t)?void 0===t.jquery&&void 0===t[0]||(t=t[0]):t=H.findOne(t);const e=`[data-bs-toggle="collapse"][data-bs-parent="${t}"]`;return H.find(e,t).forEach(t=>{const e=s(t);this._addAriaAndCollapsedClass(e,[t])}),t}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const i=t.classList.contains("show");e.forEach(t=>{i?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",i)})}static collapseInterface(t,e){let i=b.get(t,"bs.collapse");const s={...q,...B.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!i&&s.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(s.toggle=!1),i||(i=new X(t,s)),"string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){X.collapseInterface(this,t)}))}}N.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=B.getDataAttributes(this),s=i(this);H.find(s).forEach(t=>{const i=b.get(t,"bs.collapse");let s;i?(null===i._parent&&"string"==typeof e.parent&&(i._config.parent=e.parent,i._parent=i._getParent()),s="toggle"):s=e,X.collapseInterface(t,s)})})),m("collapse",X);var Q="top",G="bottom",Z="right",J="left",tt=[Q,G,Z,J],et=tt.reduce((function(t,e){return t.concat([e+"-start",e+"-end"])}),[]),it=[].concat(tt,["auto"]).reduce((function(t,e){return t.concat([e,e+"-start",e+"-end"])}),[]),st=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function nt(t){return t?(t.nodeName||"").toLowerCase():null}function ot(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function rt(t){return t instanceof ot(t).Element||t instanceof Element}function at(t){return t instanceof ot(t).HTMLElement||t instanceof HTMLElement}function lt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof ot(t).ShadowRoot||t instanceof ShadowRoot)}var ct={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},s=e.attributes[t]||{},n=e.elements[t];at(n)&&nt(n)&&(Object.assign(n.style,i),Object.keys(s).forEach((function(t){var e=s[t];!1===e?n.removeAttribute(t):n.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var s=e.elements[t],n=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});at(s)&&nt(s)&&(Object.assign(s.style,o),Object.keys(n).forEach((function(t){s.removeAttribute(t)})))}))}},requires:["computeStyles"]};function dt(t){return t.split("-")[0]}function ht(t){var e=t.getBoundingClientRect();return{width:e.width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function ft(t){var e=ht(t),i=t.offsetWidth,s=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-s)<=1&&(s=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:s}}function ut(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&<(i)){var s=e;do{if(s&&t.isSameNode(s))return!0;s=s.parentNode||s.host}while(s)}return!1}function pt(t){return ot(t).getComputedStyle(t)}function gt(t){return["table","td","th"].indexOf(nt(t))>=0}function mt(t){return((rt(t)?t.ownerDocument:t.document)||window.document).documentElement}function _t(t){return"html"===nt(t)?t:t.assignedSlot||t.parentNode||(lt(t)?t.host:null)||mt(t)}function bt(t){return at(t)&&"fixed"!==pt(t).position?t.offsetParent:null}function vt(t){for(var e=ot(t),i=bt(t);i&>(i)&&"static"===pt(i).position;)i=bt(i);return i&&("html"===nt(i)||"body"===nt(i)&&"static"===pt(i).position)?e:i||function(t){for(var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),i=_t(t);at(i)&&["html","body"].indexOf(nt(i))<0;){var s=pt(i);if("none"!==s.transform||"none"!==s.perspective||"paint"===s.contain||-1!==["transform","perspective"].indexOf(s.willChange)||e&&"filter"===s.willChange||e&&s.filter&&"none"!==s.filter)return i;i=i.parentNode}return null}(t)||e}function yt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var wt=Math.max,Et=Math.min,Tt=Math.round;function At(t,e,i){return wt(t,Et(e,i))}function Lt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Ot(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}var kt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,s=t.name,n=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=dt(i.placement),l=yt(a),c=[J,Z].indexOf(a)>=0?"height":"width";if(o&&r){var d=function(t,e){return Lt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Ot(t,tt))}(n.padding,i),h=ft(o),f="y"===l?Q:J,u="y"===l?G:Z,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=vt(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=d[f],y=_-h[c]-d[u],w=_/2-h[c]/2+b,E=At(v,w,y),T=l;i.modifiersData[s]=((e={})[T]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,s=void 0===i?"[data-popper-arrow]":i;null!=s&&("string"!=typeof s||(s=e.elements.popper.querySelector(s)))&&ut(e.elements.popper,s)&&(e.elements.arrow=s)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},Dt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function xt(t){var e,i=t.popper,s=t.popperRect,n=t.placement,o=t.offsets,r=t.position,a=t.gpuAcceleration,l=t.adaptive,c=t.roundOffsets,d=!0===c?function(t){var e=t.x,i=t.y,s=window.devicePixelRatio||1;return{x:Tt(Tt(e*s)/s)||0,y:Tt(Tt(i*s)/s)||0}}(o):"function"==typeof c?c(o):o,h=d.x,f=void 0===h?0:h,u=d.y,p=void 0===u?0:u,g=o.hasOwnProperty("x"),m=o.hasOwnProperty("y"),_=J,b=Q,v=window;if(l){var y=vt(i),w="clientHeight",E="clientWidth";y===ot(i)&&"static"!==pt(y=mt(i)).position&&(w="scrollHeight",E="scrollWidth"),y=y,n===Q&&(b=G,p-=y[w]-s.height,p*=a?1:-1),n===J&&(_=Z,f-=y[E]-s.width,f*=a?1:-1)}var T,A=Object.assign({position:r},l&&Dt);return a?Object.assign({},A,((T={})[b]=m?"0":"",T[_]=g?"0":"",T.transform=(v.devicePixelRatio||1)<2?"translate("+f+"px, "+p+"px)":"translate3d("+f+"px, "+p+"px, 0)",T)):Object.assign({},A,((e={})[b]=m?p+"px":"",e[_]=g?f+"px":"",e.transform="",e))}var Ct={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,s=i.gpuAcceleration,n=void 0===s||s,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:dt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:n};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,xt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,xt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},St={passive:!0},Nt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,s=t.options,n=s.scroll,o=void 0===n||n,r=s.resize,a=void 0===r||r,l=ot(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,St)})),a&&l.addEventListener("resize",i.update,St),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,St)})),a&&l.removeEventListener("resize",i.update,St)}},data:{}},jt={left:"right",right:"left",bottom:"top",top:"bottom"};function Pt(t){return t.replace(/left|right|bottom|top/g,(function(t){return jt[t]}))}var It={start:"end",end:"start"};function Mt(t){return t.replace(/start|end/g,(function(t){return It[t]}))}function Rt(t){var e=ot(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Bt(t){return ht(mt(t)).left+Rt(t).scrollLeft}function Ht(t){var e=pt(t),i=e.overflow,s=e.overflowX,n=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+n+s)}function Wt(t,e){var i;void 0===e&&(e=[]);var s=function t(e){return["html","body","#document"].indexOf(nt(e))>=0?e.ownerDocument.body:at(e)&&Ht(e)?e:t(_t(e))}(t),n=s===(null==(i=t.ownerDocument)?void 0:i.body),o=ot(s),r=n?[o].concat(o.visualViewport||[],Ht(s)?s:[]):s,a=e.concat(r);return n?a:a.concat(Wt(_t(r)))}function Ut(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function $t(t,e){return"viewport"===e?Ut(function(t){var e=ot(t),i=mt(t),s=e.visualViewport,n=i.clientWidth,o=i.clientHeight,r=0,a=0;return s&&(n=s.width,o=s.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=s.offsetLeft,a=s.offsetTop)),{width:n,height:o,x:r+Bt(t),y:a}}(t)):at(e)?function(t){var e=ht(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Ut(function(t){var e,i=mt(t),s=Rt(t),n=null==(e=t.ownerDocument)?void 0:e.body,o=wt(i.scrollWidth,i.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),r=wt(i.scrollHeight,i.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),a=-s.scrollLeft+Bt(t),l=-s.scrollTop;return"rtl"===pt(n||i).direction&&(a+=wt(i.clientWidth,n?n.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(mt(t)))}function Ft(t){return t.split("-")[1]}function zt(t){var e,i=t.reference,s=t.element,n=t.placement,o=n?dt(n):null,r=n?Ft(n):null,a=i.x+i.width/2-s.width/2,l=i.y+i.height/2-s.height/2;switch(o){case Q:e={x:a,y:i.y-s.height};break;case G:e={x:a,y:i.y+i.height};break;case Z:e={x:i.x+i.width,y:l};break;case J:e={x:i.x-s.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?yt(o):null;if(null!=c){var d="y"===c?"height":"width";switch(r){case"start":e[c]=e[c]-(i[d]/2-s[d]/2);break;case"end":e[c]=e[c]+(i[d]/2-s[d]/2)}}return e}function Kt(t,e){void 0===e&&(e={});var i=e,s=i.placement,n=void 0===s?t.placement:s,o=i.boundary,r=void 0===o?"clippingParents":o,a=i.rootBoundary,l=void 0===a?"viewport":a,c=i.elementContext,d=void 0===c?"popper":c,h=i.altBoundary,f=void 0!==h&&h,u=i.padding,p=void 0===u?0:u,g=Lt("number"!=typeof p?p:Ot(p,tt)),m="popper"===d?"reference":"popper",_=t.elements.reference,b=t.rects.popper,v=t.elements[f?m:d],y=function(t,e,i){var s="clippingParents"===e?function(t){var e=Wt(_t(t)),i=["absolute","fixed"].indexOf(pt(t).position)>=0&&at(t)?vt(t):t;return rt(i)?e.filter((function(t){return rt(t)&&ut(t,i)&&"body"!==nt(t)})):[]}(t):[].concat(e),n=[].concat(s,[i]),o=n[0],r=n.reduce((function(e,i){var s=$t(t,i);return e.top=wt(s.top,e.top),e.right=Et(s.right,e.right),e.bottom=Et(s.bottom,e.bottom),e.left=wt(s.left,e.left),e}),$t(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}(rt(v)?v:v.contextElement||mt(t.elements.popper),r,l),w=ht(_),E=zt({reference:w,element:b,strategy:"absolute",placement:n}),T=Ut(Object.assign({},b,E)),A="popper"===d?T:w,L={top:y.top-A.top+g.top,bottom:A.bottom-y.bottom+g.bottom,left:y.left-A.left+g.left,right:A.right-y.right+g.right},O=t.modifiersData.offset;if("popper"===d&&O){var k=O[n];Object.keys(L).forEach((function(t){var e=[Z,G].indexOf(t)>=0?1:-1,i=[Q,G].indexOf(t)>=0?"y":"x";L[t]+=k[i]*e}))}return L}function Yt(t,e){void 0===e&&(e={});var i=e,s=i.placement,n=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?it:l,d=Ft(s),h=d?a?et:et.filter((function(t){return Ft(t)===d})):tt,f=h.filter((function(t){return c.indexOf(t)>=0}));0===f.length&&(f=h);var u=f.reduce((function(e,i){return e[i]=Kt(t,{placement:i,boundary:n,rootBoundary:o,padding:r})[dt(i)],e}),{});return Object.keys(u).sort((function(t,e){return u[t]-u[e]}))}var qt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,s=t.name;if(!e.modifiersData[s]._skip){for(var n=i.mainAxis,o=void 0===n||n,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,d=i.boundary,h=i.rootBoundary,f=i.altBoundary,u=i.flipVariations,p=void 0===u||u,g=i.allowedAutoPlacements,m=e.options.placement,_=dt(m),b=l||(_!==m&&p?function(t){if("auto"===dt(t))return[];var e=Pt(t);return[Mt(t),e,Mt(e)]}(m):[Pt(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat("auto"===dt(i)?Yt(e,{placement:i,boundary:d,rootBoundary:h,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,T=!0,A=v[0],L=0;L=0,C=x?"width":"height",S=Kt(e,{placement:O,boundary:d,rootBoundary:h,altBoundary:f,padding:c}),N=x?D?Z:J:D?G:Q;y[C]>w[C]&&(N=Pt(N));var j=Pt(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[j]<=0),P.every((function(t){return t}))){A=O,T=!1;break}E.set(O,P)}if(T)for(var I=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return A=e,"break"},M=p?3:1;M>0&&"break"!==I(M);M--);e.placement!==A&&(e.modifiersData[s]._skip=!0,e.placement=A,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Vt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Xt(t){return[Q,Z,G,J].some((function(e){return t[e]>=0}))}var Qt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,s=e.rects.reference,n=e.rects.popper,o=e.modifiersData.preventOverflow,r=Kt(e,{elementContext:"reference"}),a=Kt(e,{altBoundary:!0}),l=Vt(r,s),c=Vt(a,n,o),d=Xt(l),h=Xt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:h},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":h})}},Gt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,s=t.name,n=i.offset,o=void 0===n?[0,0]:n,r=it.reduce((function(t,i){return t[i]=function(t,e,i){var s=dt(t),n=[J,Q].indexOf(s)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*n,[J,Z].indexOf(s)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[s]=r}},Zt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=zt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},Jt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,s=t.name,n=i.mainAxis,o=void 0===n||n,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,d=i.altBoundary,h=i.padding,f=i.tether,u=void 0===f||f,p=i.tetherOffset,g=void 0===p?0:p,m=Kt(e,{boundary:l,rootBoundary:c,padding:h,altBoundary:d}),_=dt(e.placement),b=Ft(e.placement),v=!b,y=yt(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,T=e.rects.reference,A=e.rects.popper,L="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O={x:0,y:0};if(E){if(o||a){var k="y"===y?Q:J,D="y"===y?G:Z,x="y"===y?"height":"width",C=E[y],S=E[y]+m[k],N=E[y]-m[D],j=u?-A[x]/2:0,P="start"===b?T[x]:A[x],I="start"===b?-A[x]:-T[x],M=e.elements.arrow,R=u&&M?ft(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},H=B[k],W=B[D],U=At(0,T[x],R[x]),$=v?T[x]/2-j-U-H-L:P-U-H-L,F=v?-T[x]/2+j+U+W+L:I+U+W+L,z=e.elements.arrow&&vt(e.elements.arrow),K=z?"y"===y?z.clientTop||0:z.clientLeft||0:0,Y=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,q=E[y]+$-Y-K,V=E[y]+F-Y;if(o){var X=At(u?Et(S,q):S,C,u?wt(N,V):N);E[y]=X,O[y]=X-C}if(a){var tt="x"===y?Q:J,et="x"===y?G:Z,it=E[w],st=it+m[tt],nt=it-m[et],ot=At(u?Et(st,q):st,it,u?wt(nt,V):nt);E[w]=ot,O[w]=ot-it}}e.modifiersData[s]=O}},requiresIfExists:["offset"]};function te(t,e,i){void 0===i&&(i=!1);var s,n,o=mt(e),r=ht(t),a=at(e),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!i)&&(("body"!==nt(e)||Ht(o))&&(l=(s=e)!==ot(s)&&at(s)?{scrollLeft:(n=s).scrollLeft,scrollTop:n.scrollTop}:Rt(s)),at(e)?((c=ht(e)).x+=e.clientLeft,c.y+=e.clientTop):o&&(c.x=Bt(o))),{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}var ee={placement:"bottom",modifiers:[],strategy:"absolute"};function ie(){for(var t=arguments.length,e=new Array(t),i=0;i"applyStyles"===t.name&&!1===t.enabled);this._popper=re(e,this._menu,i),s&&B.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>N.on(t,"mouseover",null,(function(){}))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),N.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(this._element.disabled||this._element.classList.contains("disabled")||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};N.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||(this._popper&&this._popper.destroy(),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),B.removeDataAttribute(this._menu,"popper"),N.trigger(this._element,"hidden.bs.dropdown",t))}dispose(){N.off(this._element,".bs.dropdown"),this._menu=null,this._popper&&(this._popper.destroy(),this._popper=null),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){N.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_getConfig(t){if(t={...this.constructor.Default,...B.getDataAttributes(this._element),...t},l("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!r(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return H.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ue;if(t.classList.contains("dropstart"))return pe;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?de:ce:e?fe:he}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}static dropdownInterface(t,e){let i=b.get(t,"bs.dropdown");if(i||(i=new _e(t,"object"==typeof e?e:null)),"string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){_e.dropdownInterface(this,t)}))}static clearMenus(t){if(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;if(/input|select|textarea|form/i.test(t.target.tagName))return}const e=H.find('[data-bs-toggle="dropdown"]');for(let i=0,s=e.length;it.composedPath().includes(e)))continue;if("keyup"===t.type&&"Tab"===t.key&&o.contains(t.target))continue}N.trigger(e[i],"hide.bs.dropdown",n).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>N.off(t,"mouseover",null,(function(){}))),e[i].setAttribute("aria-expanded","false"),s._popper&&s._popper.destroy(),o.classList.remove("show"),e[i].classList.remove("show"),B.removeDataAttribute(o,"popper"),N.trigger(e[i],"hidden.bs.dropdown",n))}}}static getParentFromElement(t){return s(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!le.test(t.key))return;if(t.preventDefault(),t.stopPropagation(),this.disabled||this.classList.contains("disabled"))return;const e=_e.getParentFromElement(this),i=this.classList.contains("show");if("Escape"===t.key)return(this.matches('[data-bs-toggle="dropdown"]')?this:H.prev(this,'[data-bs-toggle="dropdown"]')[0]).focus(),void _e.clearMenus();if(!i&&("ArrowUp"===t.key||"ArrowDown"===t.key))return void(this.matches('[data-bs-toggle="dropdown"]')?this:H.prev(this,'[data-bs-toggle="dropdown"]')[0]).click();if(!i||"Space"===t.key)return void _e.clearMenus();const s=H.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",e).filter(c);if(!s.length)return;let n=s.indexOf(t.target);"ArrowUp"===t.key&&n>0&&n--,"ArrowDown"===t.key&&nthis.hide(t)),N.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{N.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(N.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();if(e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),N.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),N.off(this._element,"click.dismiss.bs.modal"),N.off(this._dialog,"mousedown.dismiss.bs.modal"),e){const t=n(this._element);N.one(this._element,"transitionend",t=>this._hideModal(t)),a(this._element,t)}else this._hideModal()}dispose(){[window,this._element,this._dialog].forEach(t=>N.off(t,".bs.modal")),super.dispose(),N.off(document,"focusin.bs.modal"),this._config=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null}handleUpdate(){this._adjustDialog()}_getConfig(t){return t={...be,...t},l("modal",t,ve),t}_showElement(t){const e=this._isAnimated(),i=H.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus();const s=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,N.trigger(this._element,"shown.bs.modal",{relatedTarget:t})};if(e){const t=n(this._dialog);N.one(this._dialog,"transitionend",s),a(this._dialog,t)}else s()}_enforceFocus(){N.off(document,"focusin.bs.modal"),N.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?N.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):N.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?N.on(window,"resize.bs.modal",()=>this._adjustDialog()):N.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._resetScrollbar(),N.trigger(this._element,"hidden.bs.modal")})}_removeBackdrop(){this._backdrop.parentNode.removeChild(this._backdrop),this._backdrop=null}_showBackdrop(t){const e=this._isAnimated();if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",e&&this._backdrop.classList.add("fade"),document.body.appendChild(this._backdrop),N.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===this._config.backdrop?this._triggerBackdropTransition():this.hide())}),e&&u(this._backdrop),this._backdrop.classList.add("show"),!e)return void t();const i=n(this._backdrop);N.one(this._backdrop,"transitionend",t),a(this._backdrop,i)}else if(!this._isShown&&this._backdrop){this._backdrop.classList.remove("show");const i=()=>{this._removeBackdrop(),t()};if(e){const t=n(this._backdrop);N.one(this._backdrop,"transitionend",i),a(this._backdrop,t)}else i()}else t()}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight;t||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");const e=n(this._dialog);N.off(this._element,"transitionend"),N.one(this._element,"transitionend",()=>{this._element.classList.remove("modal-static"),t||(N.one(this._element,"transitionend",()=>{this._element.style.overflowY=""}),a(this._element,e))}),a(this._element,e),this._element.focus()}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&t&&!g()||this._isBodyOverflowing&&!t&&g())&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!t&&!g()||!this._isBodyOverflowing&&t&&g())&&(this._element.style.paddingRight=this._scrollbarWidth+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}_checkScrollbar(){const t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)t+this._scrollbarWidth),this._setElementAttributes(".sticky-top","marginRight",t=>t-this._scrollbarWidth),this._setElementAttributes("body","paddingRight",t=>t+this._scrollbarWidth)),document.body.classList.add("modal-open")}_setElementAttributes(t,e,i){H.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+this._scrollbarWidth)return;const s=t.style[e],n=window.getComputedStyle(t)[e];B.setDataAttribute(t,e,s),t.style[e]=i(Number.parseFloat(n))+"px"})}_resetScrollbar(){this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight"),this._resetElementAttributes("body","paddingRight")}_resetElementAttributes(t,e){H.find(t).forEach(t=>{const i=B.getDataAttribute(t,e);void 0===i&&t===document.body?t.style[e]="":(B.removeDataAttribute(t,e),t.style[e]=i)})}_getScrollbarWidth(){const t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);const e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}static jQueryInterface(t,e){return this.each((function(){let i=b.get(this,"bs.modal");const s={...be,...B.getDataAttributes(this),..."object"==typeof t&&t?t:{}};if(i||(i=new ye(this,s)),"string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=s(this);"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault(),N.one(e,"show.bs.modal",t=>{t.defaultPrevented||N.one(e,"hidden.bs.modal",()=>{c(this)&&this.focus()})});let i=b.get(e,"bs.modal");if(!i){const t={...B.getDataAttributes(e),...B.getDataAttributes(this)};i=new ye(e,t)}i.toggle(this)})),m("modal",ye);const we=()=>{const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)},Ee=(t,e,i)=>{const s=we();H.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+s)return;const n=t.style[e],o=window.getComputedStyle(t)[e];B.setDataAttribute(t,e,n),t.style[e]=i(Number.parseFloat(o))+"px"})},Te=(t,e)=>{H.find(t).forEach(t=>{const i=B.getDataAttribute(t,e);void 0===i&&t===document.body?t.style.removeProperty(e):(B.removeDataAttribute(t,e),t.style[e]=i)})},Ae={backdrop:!0,keyboard:!0,scroll:!1},Le={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Oe extends j{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._addEventListeners()}static get Default(){return Ae}static get DATA_KEY(){return"bs.offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._config.backdrop&&document.body.classList.add("offcanvas-backdrop"),this._config.scroll||((t=we())=>{document.body.style.overflow="hidden",Ee(".fixed-top, .fixed-bottom, .is-fixed","paddingRight",e=>e+t),Ee(".sticky-top","marginRight",e=>e-t),Ee("body","paddingRight",e=>e+t)})(),this._element.classList.add("offcanvas-toggling"),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),setTimeout(()=>{this._element.classList.remove("offcanvas-toggling"),N.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t}),this._enforceFocusOnElement(this._element)},n(this._element)))}hide(){this._isShown&&(N.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._element.classList.add("offcanvas-toggling"),N.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),setTimeout(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.backdrop&&document.body.classList.remove("offcanvas-backdrop"),this._config.scroll||(document.body.style.overflow="auto",Te(".fixed-top, .fixed-bottom, .is-fixed","paddingRight"),Te(".sticky-top","marginRight"),Te("body","paddingRight")),N.trigger(this._element,"hidden.bs.offcanvas"),this._element.classList.remove("offcanvas-toggling")},n(this._element))))}_getConfig(t){return t={...Ae,...B.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("offcanvas",t,Le),t}_enforceFocusOnElement(t){N.off(document,"focusin.bs.offcanvas"),N.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){N.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),N.on(document,"keydown",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}),N.on(document,"click.bs.offcanvas.data-api",t=>{const e=H.findOne(i(t.target));this._element.contains(t.target)||e===this._element||this.hide()})}static jQueryInterface(t){return this.each((function(){const e=b.get(this,"bs.offcanvas")||new Oe(this,"object"==typeof t?t:{});if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=s(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this))return;N.one(e,"hidden.bs.offcanvas",()=>{c(this)&&this.focus()});const i=H.findOne(".offcanvas.show, .offcanvas-toggling");i&&i!==e||(b.get(e,"bs.offcanvas")||new Oe(e)).toggle(this)})),N.on(window,"load.bs.offcanvas.data-api",()=>{H.find(".offcanvas.show").forEach(t=>(b.get(t,"bs.offcanvas")||new Oe(t)).show())}),m("offcanvas",Oe);const ke=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),De=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,xe=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ce=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!ke.has(i)||Boolean(De.test(t.nodeValue)||xe.test(t.nodeValue));const s=e.filter(t=>t instanceof RegExp);for(let t=0,e=s.length;t{Ce(t,a)||i.removeAttribute(t.nodeName)})}return s.body.innerHTML}const Ne=new RegExp("(^|\\s)bs-tooltip\\S+","g"),je=new Set(["sanitize","allowList","sanitizeFn"]),Pe={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ie={AUTO:"auto",TOP:"top",RIGHT:g()?"left":"right",BOTTOM:"bottom",LEFT:g()?"right":"left"},Me={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Re={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Be extends j{constructor(t,e){if(void 0===ae)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Me}static get NAME(){return"tooltip"}static get DATA_KEY(){return"bs.tooltip"}static get Event(){return Re}static get EVENT_KEY(){return".bs.tooltip"}static get DefaultType(){return Pe}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),N.off(this._element,this.constructor.EVENT_KEY),N.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const e=N.trigger(this._element,this.constructor.Event.SHOW),i=h(this._element),s=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(e.defaultPrevented||!s)return;const o=this.getTipElement(),r=t(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add("fade");const l="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,c=this._getAttachment(l);this._addAttachmentClass(c);const d=this._getContainer();b.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(d.appendChild(o),N.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=re(this._element,o,this._getPopperConfig(c)),o.classList.add("show");const f="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;f&&o.classList.add(...f.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{N.on(t,"mouseover",(function(){}))});const u=()=>{const t=this._hoverState;this._hoverState=null,N.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)};if(this.tip.classList.contains("fade")){const t=n(this.tip);N.one(this.tip,"transitionend",u),a(this.tip,t)}else u()}hide(){if(!this._popper)return;const t=this.getTipElement(),e=()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.parentNode&&t.parentNode.removeChild(t),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if(!N.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){if(t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>N.off(t,"mouseover",f)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){const i=n(t);N.one(t,"transitionend",e),a(t,i)}else e();this._hoverState=""}}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip}setContent(){const t=this.getTipElement();this.setElementContent(H.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return"object"==typeof e&&r(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=Se(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const i=this.constructor.DATA_KEY;return(e=e||b.get(t.delegateTarget,i))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),b.set(t.delegateTarget,i,e)),e}_getOffset(){const{offset:t}=this.config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this.config.popperConfig?this.config.popperConfig(e):this.config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getContainer(){return!1===this.config.container?document.body:r(this.config.container)?this.config.container:H.findOne(this.config.container)}_getAttachment(t){return Ie[t.toUpperCase()]}_setListeners(){this.config.trigger.split(" ").forEach(t=>{if("click"===t)N.on(this._element,this.constructor.Event.CLICK,this.config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;N.on(this._element,e,this.config.selector,t=>this._enter(t)),N.on(this._element,i,this.config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config={...this.config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e.config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e.config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=B.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{je.has(t)&&delete e[t]}),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this.config)for(const e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Ne);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.tooltip");const i="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new Be(this,i)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m("tooltip",Be);const He=new RegExp("(^|\\s)bs-popover\\S+","g"),We={...Be.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},Ue={...Be.DefaultType,content:"(string|element|function)"},$e={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Fe extends Be{static get Default(){return We}static get NAME(){return"popover"}static get DATA_KEY(){return"bs.popover"}static get Event(){return $e}static get EVENT_KEY(){return".bs.popover"}static get DefaultType(){return Ue}isWithContent(){return this.getTitle()||this._getContent()}setContent(){const t=this.getTipElement();this.setElementContent(H.findOne(".popover-header",t),this.getTitle());let e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(H.findOne(".popover-body",t),e),t.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this.config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(He);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.popover");const i="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new Fe(this,i),b.set(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m("popover",Fe);const ze={offset:10,method:"auto",target:""},Ke={offset:"number",method:"string",target:"(string|element)"};class Ye extends j{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,N.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return ze}static get DATA_KEY(){return"bs.scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,s="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),H.find(this._selector).map(t=>{const n=i(t),o=n?H.findOne(n):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[B[e](o).top+s,n]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){super.dispose(),N.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null}_getConfig(e){if("string"!=typeof(e={...ze,..."object"==typeof e&&e?e:{}}).target&&r(e.target)){let{id:i}=e.target;i||(i=t("scrollspy"),e.target.id=i),e.target="#"+i}return l("scrollspy",e,Ke),e}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),i=H.findOne(e.join(","));i.classList.contains("dropdown-item")?(H.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add("active"),i.classList.add("active")):(i.classList.add("active"),H.parents(i,".nav, .list-group").forEach(t=>{H.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),H.prev(t,".nav-item").forEach(t=>{H.children(t,".nav-link").forEach(t=>t.classList.add("active"))})})),N.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){H.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.scrollspy");if(e||(e=new Ye(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,"load.bs.scrollspy.data-api",()=>{H.find('[data-bs-spy="scroll"]').forEach(t=>new Ye(t,B.getDataAttributes(t)))}),m("scrollspy",Ye);class qe extends j{static get DATA_KEY(){return"bs.tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active")||d(this._element))return;let t;const e=s(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?":scope > li > .active":".active";t=H.find(e,i),t=t[t.length-1]}const n=t?N.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(N.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,i);const o=()=>{N.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),N.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const s=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?H.children(e,".active"):H.find(":scope > li > .active",e))[0],o=i&&s&&s.classList.contains("fade"),r=()=>this._transitionComplete(t,s,i);if(s&&o){const t=n(s);s.classList.remove("show"),N.one(s,"transitionend",r),a(s,t)}else r()}_transitionComplete(t,e,i){if(e){e.classList.remove("active");const t=H.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu")&&(t.closest(".dropdown")&&H.find(".dropdown-toggle").forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)),i&&i()}static jQueryInterface(t){return this.each((function(){const e=b.get(this,"bs.tab")||new qe(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(b.get(this,"bs.tab")||new qe(this)).show()})),m("tab",qe);const Ve={animation:"boolean",autohide:"boolean",delay:"number"},Xe={animation:!0,autohide:!0,delay:5e3};class Qe extends j{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._setListeners()}static get DefaultType(){return Ve}static get Default(){return Xe}static get DATA_KEY(){return"bs.toast"}show(){if(N.trigger(this._element,"show.bs.toast").defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");const t=()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),N.trigger(this._element,"shown.bs.toast"),this._config.autohide&&(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))};if(this._element.classList.remove("hide"),u(this._element),this._element.classList.add("showing"),this._config.animation){const e=n(this._element);N.one(this._element,"transitionend",t),a(this._element,e)}else t()}hide(){if(!this._element.classList.contains("show"))return;if(N.trigger(this._element,"hide.bs.toast").defaultPrevented)return;const t=()=>{this._element.classList.add("hide"),N.trigger(this._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){const e=n(this._element);N.one(this._element,"transitionend",t),a(this._element,e)}else t()}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),N.off(this._element,"click.dismiss.bs.toast"),super.dispose(),this._config=null}_getConfig(t){return t={...Xe,...B.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},l("toast",t,this.constructor.DefaultType),t}_setListeners(){N.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide())}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.toast");if(e||(e=new Qe(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return m("toast",Qe),{Alert:P,Button:I,Carousel:Y,Collapse:X,Dropdown:_e,Modal:ye,Offcanvas:Oe,Popover:Fe,ScrollSpy:Ye,Tab:qe,Toast:Qe,Tooltip:Be}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/tjdests/static/bootstrap.min.css b/tjdests/static/bootstrap.min.css new file mode 100644 index 0000000..83dc5b7 --- /dev/null +++ b/tjdests/static/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.0.0-beta3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x)/ -2);margin-left:calc(var(--bs-gutter-x)/ -2)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)/ 2);padding-left:calc(var(--bs-gutter-x)/ 2);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.3333333333%}.col-2{flex:0 0 auto;width:16.6666666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.3333333333%}.col-5{flex:0 0 auto;width:41.6666666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.3333333333%}.col-8{flex:0 0 auto;width:66.6666666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.3333333333%}.col-11{flex:0 0 auto;width:91.6666666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.3333333333%}.col-sm-2{flex:0 0 auto;width:16.6666666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.3333333333%}.col-sm-5{flex:0 0 auto;width:41.6666666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.3333333333%}.col-sm-8{flex:0 0 auto;width:66.6666666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.3333333333%}.col-sm-11{flex:0 0 auto;width:91.6666666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.3333333333%}.col-md-2{flex:0 0 auto;width:16.6666666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.3333333333%}.col-md-5{flex:0 0 auto;width:41.6666666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.3333333333%}.col-md-8{flex:0 0 auto;width:66.6666666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.3333333333%}.col-md-11{flex:0 0 auto;width:91.6666666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.3333333333%}.col-lg-2{flex:0 0 auto;width:16.6666666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.3333333333%}.col-lg-5{flex:0 0 auto;width:41.6666666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.3333333333%}.col-lg-8{flex:0 0 auto;width:66.6666666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.3333333333%}.col-lg-11{flex:0 0 auto;width:91.6666666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.3333333333%}.col-xl-2{flex:0 0 auto;width:16.6666666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.3333333333%}.col-xl-5{flex:0 0 auto;width:41.6666666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.3333333333%}.col-xl-8{flex:0 0 auto;width:66.6666666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.3333333333%}.col-xl-11{flex:0 0 auto;width:91.6666666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.3333333333%}.col-xxl-2{flex:0 0 auto;width:16.6666666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.3333333333%}.col-xxl-5{flex:0 0 auto;width:41.6666666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.3333333333%}.col-xxl-8{flex:0 0 auto;width:66.6666666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.3333333333%}.col-xxl-11{flex:0 0 auto;width:91.6666666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.3333333333%}.offset-xxl-2{margin-left:16.6666666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.3333333333%}.offset-xxl-5{margin-left:41.6666666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.3333333333%}.offset-xxl-8{margin-left:66.6666666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.3333333333%}.offset-xxl-11{margin-left:91.6666666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754;padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545;padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu{top:0;right:auto;left:100%}.dropend .dropdown-menu[data-bs-popper]{margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu{top:0;right:100%;left:auto}.dropstart .dropdown-menu[data-bs-popper]{margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:last-of-type{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{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);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1040;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-header{display:flex;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.offcanvas-backdrop::before{position:fixed;top:0;left:0;z-index:1039;width:100vw;height:100vh;content:"";background-color:rgba(0,0,0,.5)}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#0d6efd!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#0dcaf0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#f8f9fa!important}.text-dark{color:#212529!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.bg-primary{background-color:#0d6efd!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#0dcaf0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#f8f9fa!important}.bg-dark{background-color:#212529!important}.bg-body{background-color:#fff!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/tjdests/templates/authentication/accept_tos.html b/tjdests/templates/authentication/accept_tos.html new file mode 100644 index 0000000..fef0b6f --- /dev/null +++ b/tjdests/templates/authentication/accept_tos.html @@ -0,0 +1,698 @@ +{% extends "base.html" %} + +{% load crispy_forms_tags %} + +{% block content %} +

Login

+

To continue to log in, you must accept the terms below and set a permanent password.

+

Your username is {{ request.user.username }}.

+ +
+
+

GNU AFFERO GENERAL PUBLIC LICENSE

+

Version 3, 19 November 2007

+ +

Copyright © 2007 Free Software Foundation, + Inc. <https://fsf.org/> +
+ Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed.

+ +

Preamble

+ +

The GNU Affero General Public License is a free, copyleft license + for software and other kinds of works, specifically designed to ensure + cooperation with the community in the case of network server software.

+ +

The licenses for most software and other practical works are + designed to take away your freedom to share and change the works. By + contrast, our General Public Licenses are intended to guarantee your + freedom to share and change all versions of a program--to make sure it + remains free software for all its users.

+ +

When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + them if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs, and that you know you can do these things.

+ +

Developers that use our General Public Licenses protect your rights + with two steps: (1) assert copyright on the software, and (2) offer + you this License which gives you legal permission to copy, distribute + and/or modify the software.

+ +

A secondary benefit of defending all users' freedom is that + improvements made in alternate versions of the program, if they + receive widespread use, become available for other developers to + incorporate. Many developers of free software are heartened and + encouraged by the resulting cooperation. However, in the case of + software used on network servers, this result may fail to come about. + The GNU General Public License permits making a modified version and + letting the public access it on a server without ever releasing its + source code to the public.

+ +

The GNU Affero General Public License is designed specifically to + ensure that, in such cases, the modified source code becomes available + to the community. It requires the operator of a network server to + provide the source code of the modified version running there to the + users of that server. Therefore, public use of a modified version, on + a publicly accessible server, gives the public access to the source + code of the modified version.

+ +

An older license, called the Affero General Public License and + published by Affero, was designed to accomplish similar goals. This is + a different license, not a version of the Affero GPL, but Affero has + released a new version of the Affero GPL which permits relicensing under + this license.

+ +

The precise terms and conditions for copying, distribution and + modification follow.

+ +

TERMS AND CONDITIONS

+ +

0. Definitions.

+ +

"This License" refers to version 3 of the GNU Affero General Public + License.

+ +

"Copyright" also means copyright-like laws that apply to other kinds + of works, such as semiconductor masks.

+ +

"The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations.

+ +

To "modify" a work means to copy from or adapt all or part of the work + in a fashion requiring copyright permission, other than the making of an + exact copy. The resulting work is called a "modified version" of the + earlier work or a work "based on" the earlier work.

+ +

A "covered work" means either the unmodified Program or a work based + on the Program.

+ +

To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on a + computer or modifying a private copy. Propagation includes copying, + distribution (with or without modification), making available to the + public, and in some countries other activities as well.

+ +

To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user through + a computer network, with no transfer of a copy, is not conveying.

+ +

An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion.

+ +

1. Source Code.

+ +

The "source code" for a work means the preferred form of the work + for making modifications to it. "Object code" means any non-source + form of a work.

+ +

A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language.

+ +

The "System Libraries" of an executable work include anything, other + than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major + Component, and (b) serves only to enable use of the work with that + Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A + "Major Component", in this context, means a major essential component + (kernel, window system, and so on) of the specific operating system + (if any) on which the executable work runs, or a compiler used to + produce the work, or an object code interpreter used to run it.

+ +

The "Corresponding Source" for a work in object code form means all + the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts to + control those activities. However, it does not include the work's + System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but + which are not part of the work. For example, Corresponding Source + includes interface definition files associated with source files for + the work, and the source code for shared libraries and dynamically + linked subprograms that the work is specifically designed to require, + such as by intimate data communication or control flow between those + subprograms and other parts of the work.

+ +

The Corresponding Source need not include anything that users + can regenerate automatically from other parts of the Corresponding + Source.

+ +

The Corresponding Source for a work in source code form is that + same work.

+ +

2. Basic Permissions.

+ +

All rights granted under this License are granted for the term of + copyright on the Program, and are irrevocable provided the stated + conditions are met. This License explicitly affirms your unlimited + permission to run the unmodified Program. The output from running a + covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your + rights of fair use or other equivalent, as provided by copyright law.

+ +

You may make, run and propagate covered works that you do not + convey, without conditions so long as your license otherwise remains + in force. You may convey covered works to others for the sole purpose + of having them make modifications exclusively for you, or provide you + with facilities for running those works, provided that you comply with + the terms of this License in conveying all material for which you do + not control copyright. Those thus making or running the covered works + for you must do so exclusively on your behalf, under your direction + and control, on terms that prohibit them from making any copies of + your copyrighted material outside their relationship with you.

+ +

Conveying under any other circumstances is permitted solely under + the conditions stated below. Sublicensing is not allowed; section 10 + makes it unnecessary.

+ +

3. Protecting Users' Legal Rights From Anti-Circumvention Law.

+ +

No covered work shall be deemed part of an effective technological + measure under any applicable law fulfilling obligations under article + 11 of the WIPO copyright treaty adopted on 20 December 1996, or + similar laws prohibiting or restricting circumvention of such + measures.

+ +

When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such circumvention + is effected by exercising rights under this License with respect to + the covered work, and you disclaim any intention to limit operation or + modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of + technological measures.

+ +

4. Conveying Verbatim Copies.

+ +

You may convey verbatim copies of the Program's source code as you + receive it, in any medium, provided that you conspicuously and + appropriately publish on each copy an appropriate copyright notice; + keep intact all notices stating that this License and any + non-permissive terms added in accord with section 7 apply to the code; + keep intact all notices of the absence of any warranty; and give all + recipients a copy of this License along with the Program.

+ +

You may charge any price or no price for each copy that you convey, + and you may offer support or warranty protection for a fee.

+ +

5. Conveying Modified Source Versions.

+ +

You may convey a work based on the Program, or the modifications to + produce it from the Program, in the form of source code under the + terms of section 4, provided that you also meet all of these conditions:

+ +
    + +
  • a) The work must carry prominent notices stating that you modified + it, and giving a relevant date.
  • + +
  • b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices".
  • + +
  • c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it.
  • + +
  • d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so.
  • + +
+ +

A compilation of a covered work with other separate and independent + works, which are not by their nature extensions of the covered work, + and which are not combined with it such as to form a larger program, + in or on a volume of a storage or distribution medium, is called an + "aggregate" if the compilation and its resulting copyright are not + used to limit the access or legal rights of the compilation's users + beyond what the individual works permit. Inclusion of a covered work + in an aggregate does not cause this License to apply to the other + parts of the aggregate.

+ +

6. Conveying Non-Source Forms.

+ +

You may convey a covered work in object code form under the terms + of sections 4 and 5, provided that you also convey the + machine-readable Corresponding Source under the terms of this License, + in one of these ways:

+ +
    + +
  • a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange.
  • + +
  • b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge.
  • + +
  • c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b.
  • + +
  • d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements.
  • + +
  • e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d.
  • + +
+ +

A separable portion of the object code, whose source code is excluded + from the Corresponding Source as a System Library, need not be + included in conveying the object code work.

+ +

A "User Product" is either (1) a "consumer product", which means any + tangible personal property which is normally used for personal, family, + or household purposes, or (2) anything designed or sold for incorporation + into a dwelling. In determining whether a product is a consumer product, + doubtful cases shall be resolved in favor of coverage. For a particular + product received by a particular user, "normally used" refers to a + typical or common use of that class of product, regardless of the status + of the particular user or of the way in which the particular user + actually uses, or expects or is expected to use, the product. A product + is a consumer product regardless of whether the product has substantial + commercial, industrial or non-consumer uses, unless such uses represent + the only significant mode of use of the product.

+ +

"Installation Information" for a User Product means any methods, + procedures, authorization keys, or other information required to install + and execute modified versions of a covered work in that User Product from + a modified version of its Corresponding Source. The information must + suffice to ensure that the continued functioning of the modified object + code is in no case prevented or interfered with solely because + modification has been made.

+ +

If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as + part of a transaction in which the right of possession and use of the + User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the + Corresponding Source conveyed under this section must be accompanied + by the Installation Information. But this requirement does not apply + if neither you nor any third party retains the ability to install + modified object code on the User Product (for example, the work has + been installed in ROM).

+ +

The requirement to provide Installation Information does not include a + requirement to continue to provide support service, warranty, or updates + for a work that has been modified or installed by the recipient, or for + the User Product in which it has been modified or installed. Access to a + network may be denied when the modification itself materially and + adversely affects the operation of the network or violates the rules and + protocols for communication across the network.

+ +

Corresponding Source conveyed, and Installation Information provided, + in accord with this section must be in a format that is publicly + documented (and with an implementation available to the public in + source code form), and must require no special password or key for + unpacking, reading or copying.

+ +

7. Additional Terms.

+ +

"Additional permissions" are terms that supplement the terms of this + License by making exceptions from one or more of its conditions. + Additional permissions that are applicable to the entire Program shall + be treated as though they were included in this License, to the extent + that they are valid under applicable law. If additional permissions + apply only to part of the Program, that part may be used separately + under those permissions, but the entire Program remains governed by + this License without regard to the additional permissions.

+ +

When you convey a copy of a covered work, you may at your option + remove any additional permissions from that copy, or from any part of + it. (Additional permissions may be written to require their own + removal in certain cases when you modify the work.) You may place + additional permissions on material, added by you to a covered work, + for which you have or can give appropriate copyright permission.

+ +

Notwithstanding any other provision of this License, for material you + add to a covered work, you may (if authorized by the copyright holders of + that material) supplement the terms of this License with terms:

+ +
    + +
  • a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or
  • + +
  • b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or
  • + +
  • c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or
  • + +
  • d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or
  • + +
  • e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or
  • + +
  • f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors.
  • + +
+ +

All other non-permissive additional terms are considered "further + restrictions" within the meaning of section 10. If the Program as you + received it, or any part of it, contains a notice stating that it is + governed by this License along with a term that is a further restriction, + you may remove that term. If a license document contains a further + restriction but permits relicensing or conveying under this License, you + may add to a covered work material governed by the terms of that license + document, provided that the further restriction does not survive such + relicensing or conveying.

+ +

If you add terms to a covered work in accord with this section, you + must place, in the relevant source files, a statement of the + additional terms that apply to those files, or a notice indicating + where to find the applicable terms.

+ +

Additional terms, permissive or non-permissive, may be stated in the + form of a separately written license, or stated as exceptions; + the above requirements apply either way.

+ +

8. Termination.

+ +

You may not propagate or modify a covered work except as expressly + provided under this License. Any attempt otherwise to propagate or + modify it is void, and will automatically terminate your rights under + this License (including any patent licenses granted under the third + paragraph of section 11).

+ +

However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the copyright + holder fails to notify you of the violation by some reasonable means + prior to 60 days after the cessation.

+ +

Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after + your receipt of the notice.

+ +

Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under + this License. If your rights have been terminated and not permanently + reinstated, you do not qualify to receive new licenses for the same + material under section 10.

+ +

9. Acceptance Not Required for Having Copies.

+ +

You are not required to accept this License in order to receive or + run a copy of the Program. Ancillary propagation of a covered work + occurring solely as a consequence of using peer-to-peer transmission + to receive a copy likewise does not require acceptance. However, + nothing other than this License grants you permission to propagate or + modify any covered work. These actions infringe copyright if you do + not accept this License. Therefore, by modifying or propagating a + covered work, you indicate your acceptance of this License to do so.

+ +

10. Automatic Licensing of Downstream Recipients.

+ +

Each time you convey a covered work, the recipient automatically + receives a license from the original licensors, to run, modify and + propagate that work, subject to this License. You are not responsible + for enforcing compliance by third parties with this License.

+ +

An "entity transaction" is a transaction transferring control of an + organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered + work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever + licenses to the work the party's predecessor in interest had or could + give under the previous paragraph, plus a right to possession of the + Corresponding Source of the work from the predecessor in interest, if + the predecessor has it or can get it with reasonable efforts.

+ +

You may not impose any further restrictions on the exercise of the + rights granted or affirmed under this License. For example, you may + not impose a license fee, royalty, or other charge for exercise of + rights granted under this License, and you may not initiate litigation + (including a cross-claim or counterclaim in a lawsuit) alleging that + any patent claim is infringed by making, using, selling, offering for + sale, or importing the Program or any portion of it.

+ +

11. Patents.

+ +

A "contributor" is a copyright holder who authorizes use under this + License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor's "contributor version".

+ +

A contributor's "essential patent claims" are all patent claims + owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, permitted + by this License, of making, using, or selling its contributor version, + but do not include claims that would be infringed only as a + consequence of further modification of the contributor version. For + purposes of this definition, "control" includes the right to grant + patent sublicenses in a manner consistent with the requirements of + this License.

+ +

Each contributor grants you a non-exclusive, worldwide, royalty-free + patent license under the contributor's essential patent claims, to + make, use, sell, offer for sale, import and otherwise run, modify and + propagate the contents of its contributor version.

+ +

In the following three paragraphs, a "patent license" is any express + agreement or commitment, however denominated, not to enforce a patent + (such as an express permission to practice a patent or covenant not to + sue for patent infringement). To "grant" such a patent license to a + party means to make such an agreement or commitment not to enforce a + patent against the party.

+ +

If you convey a covered work, knowingly relying on a patent license, + and the Corresponding Source of the work is not available for anyone + to copy, free of charge and under the terms of this License, through a + publicly available network server or other readily accessible means, + then you must either (1) cause the Corresponding Source to be so + available, or (2) arrange to deprive yourself of the benefit of the + patent license for this particular work, or (3) arrange, in a manner + consistent with the requirements of this License, to extend the patent + license to downstream recipients. "Knowingly relying" means you have + actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work + in a country, would infringe one or more identifiable patents in that + country that you have reason to believe are valid.

+ +

If, pursuant to or in connection with a single transaction or + arrangement, you convey, or propagate by procuring conveyance of, a + covered work, and grant a patent license to some of the parties + receiving the covered work authorizing them to use, propagate, modify + or convey a specific copy of the covered work, then the patent license + you grant is automatically extended to all recipients of the covered + work and works based on it.

+ +

A patent license is "discriminatory" if it does not include within + the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that are + specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is + in the business of distributing software, under which you make payment + to the third party based on the extent of your activity of conveying + the work, and under which the third party grants, to any of the + parties who would receive the covered work from you, a discriminatory + patent license (a) in connection with copies of the covered work + conveyed by you (or copies made from those copies), or (b) primarily + for and in connection with specific products or compilations that + contain the covered work, unless you entered into that arrangement, + or that patent license was granted, prior to 28 March 2007.

+ +

Nothing in this License shall be construed as excluding or limiting + any implied license or other defenses to infringement that may + otherwise be available to you under applicable patent law.

+ +

12. No Surrender of Others' Freedom.

+ +

If conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot convey a + covered work so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you may + not convey it at all. For example, if you agree to terms that obligate you + to collect a royalty for further conveying from those to whom you convey + the Program, the only way you could satisfy both those terms and this + License would be to refrain entirely from conveying the Program.

+ +

13. Remote Network Interaction; Use with the GNU General Public License.

+ +

Notwithstanding any other provision of this License, if you modify the + Program, your modified version must prominently offer all users + interacting with it remotely through a computer network (if your version + supports such interaction) an opportunity to receive the Corresponding + Source of your version by providing access to the Corresponding Source + from a network server at no charge, through some standard or customary + means of facilitating copying of software. This Corresponding Source + shall include the Corresponding Source for any work covered by version 3 + of the GNU General Public License that is incorporated pursuant to the + following paragraph.

+ +

Notwithstanding any other provision of this License, you have permission + to link or combine any covered work with a work licensed under version 3 + of the GNU General Public License into a single combined work, and to + convey the resulting work. The terms of this License will continue to + apply to the part which is the covered work, but the work with which it is + combined will remain governed by version 3 of the GNU General Public + License.

+ +

14. Revised Versions of this License.

+ +

The Free Software Foundation may publish revised and/or new versions of + the GNU Affero General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may differ + in detail to address new problems or concerns.

+ +

Each version is given a distinguishing version number. If the + Program specifies that a certain numbered version of the GNU Affero + General Public License "or any later version" applies to it, you have + the option of following the terms and conditions either of that + numbered version or of any later version published by the Free + Software Foundation. If the Program does not specify a version number + of the GNU Affero General Public License, you may choose any version + ever published by the Free Software Foundation.

+ +

If the Program specifies that a proxy can decide which future + versions of the GNU Affero General Public License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Program.

+ +

Later license versions may give you additional or different + permissions. However, no additional obligations are imposed on any + author or copyright holder as a result of your choosing to follow a + later version.

+ +

15. Disclaimer of Warranty.

+ +

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF + ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

+ +

16. Limitation of Liability.

+ +

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS + THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE + USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES.

+ +

17. Interpretation of Sections 15 and 16.

+ +

If the disclaimer of warranty and limitation of liability provided + above cannot be given local legal effect according to their terms, + reviewing courts shall apply local law that most closely approximates + an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a + copy of the Program in return for a fee.

+ +

END OF TERMS AND CONDITIONS

+ +

How to Apply These Terms to Your New Programs

+ +

If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms.

+ +

To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + state the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found.

+ +
    <one line to give the program's name and a brief idea of what it does.>
+                Copyright (C) <year>  <name of author>
+
+                This program is free software: you can redistribute it and/or modify
+                it under the terms of the GNU Affero General Public License as
+                published by the Free Software Foundation, either version 3 of the
+                License, or (at your option) any later version.
+
+                This program is distributed in the hope that it will be useful,
+                but WITHOUT ANY WARRANTY; without even the implied warranty of
+                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+                GNU Affero General Public License for more details.
+
+                You should have received a copy of the GNU Affero General Public License
+                along with this program.  If not, see <https://www.gnu.org/licenses/>.
+            
+ +

Also add information on how to contact you by electronic and paper mail.

+ +

If your software can interact with users remotely through a computer + network, you should also make sure that it provides a way for users to + get its source. For example, if your program is a web application, its + interface could display a "Source" link that leads users to an archive + of the code. There are many ways you could offer source, and different + solutions will be better for different programs; see section 13 for the + specific requirements.

+ +

You should also get your employer (if you work as a programmer) or school, + if any, to sign a "copyright disclaimer" for the program, if necessary. + For more information on this, and how to apply and follow the GNU AGPL, see + <https://www.gnu.org/licenses/>.

+
+
+ +
+
+ {% crispy form %} +
+
+ +{% endblock %} diff --git a/tjdests/templates/authentication/index.html b/tjdests/templates/authentication/index.html new file mode 100644 index 0000000..698efb1 --- /dev/null +++ b/tjdests/templates/authentication/index.html @@ -0,0 +1,44 @@ +{% extends "base.html" %} + +{% block content %} +

Welcome to {{ settings.SENIOR_GRAD_YEAR }} {{ settings.BRANDING_NAME }}

+ +

+ This is intended to be a resource for: +

    +
  • the class of {{ settings.SENIOR_GRAD_YEAR }} to share its progress in the admissions process with one another.
  • +
  • the class of {{ settings.SENIOR_GRAD_YEAR }} to share its achievements and college destinations with others.
  • +
  • other classes as they prepare to apply for college.
  • +
+

+ + {% if request.user.is_authenticated %} + {% if request.user.is_senior %} +

You may add destination information by navigating to your profile.

+ {% endif %} +

You may browse student destinations using the links above.

+ {% else %} +

You must sign in to see student destinations.

+ {% endif %} + +

IMPORTANT

+

+ THIS WEBSITE IS NOT, IN ANY WAY, AFFILIATED WITH NOR ENDORSED BY THE + THOMAS JEFFERSON HIGH SCHOOL FOR SCIENCE AND TECHNOLOGY (TJHSST), THE + TJHSST COMPUTER SYSTEMS LAB, FAIRFAX COUNTY PUBLIC SCHOOLS, + OR ANY SUBSIDIARY, AFFILIATE, DEPARTMENT, OR PARTNER THEREOF. +

+

+ Your use of this website is subject to the terms outlined in + version 3 of the GNU Affero General Public license; notably the terms + that provide this software WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE; and the terms that limit the liability of + any copyright holder(s) of this work. See the + GNU Affero General Public License for more details. +

+

+ This website is open source, and is © 2021 Ethan Nguyen. + All rights reserved. +

+ +{% endblock %} diff --git a/tjdests/templates/authentication/login.html b/tjdests/templates/authentication/login.html new file mode 100644 index 0000000..52d0d36 --- /dev/null +++ b/tjdests/templates/authentication/login.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} + +{% load crispy_forms_tags %} + +{% block content %} +

Login

+

By logging in, you agree to the terms listed at the bottom of the home page.

+ + + +
+
+
+

Log in with Ion

+
+ {% csrf_token %} + +
+
+
+

Log in with Username and Password

+
+ {% csrf_token %} + {{ form|crispy }} +
+ +
+
+
+
+
+ +{% endblock %} diff --git a/tjdests/templates/base.html b/tjdests/templates/base.html new file mode 100644 index 0000000..0bb8656 --- /dev/null +++ b/tjdests/templates/base.html @@ -0,0 +1,79 @@ +{% load static %} + + + + + + + + + + + + + + + + + + + {{ settings.SENIOR_GRAD_YEAR }} {{ settings.BRANDING_NAME }} + + + Skip to main content + + +
+ {% if messages %} +
+
+ {% for message in messages %} + + {% endfor %} +
+
+ {% endif %} + +
+ {% block content %}{% endblock %} +
+
+ + diff --git a/tjdests/templates/destinations/college_list.html b/tjdests/templates/destinations/college_list.html new file mode 100644 index 0000000..b180164 --- /dev/null +++ b/tjdests/templates/destinations/college_list.html @@ -0,0 +1,61 @@ +{% extends "base.html" %} + +{% load bootstrap_pagination %} + +{% block content %} +

Student Destinations by College

+ +

Note: All data is self-reported. We do not make any claim as to the accuracy of this data.

+ + + + + + + + + + + + + + + + + + {% for college in object_list %} + + + + + + + + + + + + + {% empty %} + + + + + + + + + + + + {% endfor %} + +
University NameTotal ApplicationsAdmittedWaitlistedWaitlist-AdmittedWaitlist-DeniedDeferredDeferred-AdmittedDeferred-DeniedDenied
{{ college.name }}{{ college.count_decisions }}{{ college.count_admit }}{{ college.count_waitlist }}{{ college.count_waitlist_admit }}{{ college.count_waitlist_deny }}{{ college.count_defer }}{{ college.count_defer_admit }}{{ college.count_defer_deny }}{{ college.count_deny }}
There is no data to display.
+ +
+
+ {% bootstrap_paginate page_obj range=10 extra_pagination_classes="justify-content-center" %} +
+
+ +{% endblock %} diff --git a/tjdests/templates/destinations/student_list.html b/tjdests/templates/destinations/student_list.html new file mode 100644 index 0000000..0726304 --- /dev/null +++ b/tjdests/templates/destinations/student_list.html @@ -0,0 +1,121 @@ +{% extends "base.html" %} + +{% load bootstrap_pagination %} + +{% block content %} +

Student Destinations

+ +

Note: All data is self-reported. We do not make any claim as to the accuracy of this data.

+ + {% if college %} +

Only showing students reporting applications to {{ college }}.

+ {% endif %} + +
+ + + + + + + + + + + {% for senior in object_list %} + + + + + + + {% empty %} + + + + + + + {% endfor %} + +
NameTest scoresBiographyDecisions
{{ senior }} + {# Test scores #} + + + + + + + + + {% for score in senior.testscore_set.all %} + + + + + {% empty %} + + + + + {% endfor %} + +
TestScore
{{ score.get_exam_type_display }}{{ score.exam_score }}
There are no test scores to display.
+
{{ senior.biography|linebreaks }} + {# Decisions #} + + + + + + + + + {% for decision in senior.decision_set.all %} + + + + + {% empty %} + + + + + {% endfor %} + +
Type
Result
College Name
+ {{ decision.decision_type }} +
+ {# First, the waitlist indicator #} + {% if decision.admission_status == "WAITLIST" or decision.admission_status == "WAITLIST_ADMIT" or decision.admission_status == "WAITLIST_DENY" %} + + {% endif %} + {# Now, the deferred indicator #} + {% if decision.admission_status == "DEFER" or decision.admission_status == "DEFER_ADMIT" or decision.admission_status == "DEFER_DENY" %} + + {% endif %} + {# Admits #} + {% if decision.admission_status == "ADMIT" or decision.admission_status == "WAITLIST_ADMIT" or decision.admission_status == "DEFER_ADMIT" %} + {# Accepts get a different check #} + {% if senior.attending_decision == decision %} + + {% else %} + + {% endif %} + {% endif %} + {# Rejects #} + {% if decision.admission_status == "DENY" or decision.admission_status == "WAITLIST_DENY" or decision.admission_status == "DEFER_DENY" %} + + {% endif %} +
+
{{ decision.college.name }}
{{ decision.college.location }}
There are no decisions to display.
+
There is no data to display.
+
+ +
+
+ {% bootstrap_paginate page_obj range=10 extra_pagination_classes="justify-content-center" %} +
+
+ +{% endblock %} diff --git a/tjdests/templates/profile/decision_delete.html b/tjdests/templates/profile/decision_delete.html new file mode 100644 index 0000000..fd0bb62 --- /dev/null +++ b/tjdests/templates/profile/decision_delete.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} + +{% load crispy_forms_tags %} + +{% block content %} +

Delete decision

+ +
+
+ {% csrf_token %} + +

You are about to delete this decision:

+ +

{{ object.college.name }} {{ object.get_decision_type_display }}

+ + +
+
+ +{% endblock %} diff --git a/tjdests/templates/profile/decision_form.html b/tjdests/templates/profile/decision_form.html new file mode 100644 index 0000000..503efc4 --- /dev/null +++ b/tjdests/templates/profile/decision_form.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} + +{% load crispy_forms_tags %} + +{% block content %} +

Add decision

+ +
+
+ {% csrf_token %} + {{ form|crispy }} + +
+
+ +{% endblock %} diff --git a/tjdests/templates/profile/profile.html b/tjdests/templates/profile/profile.html new file mode 100644 index 0000000..1c09cb9 --- /dev/null +++ b/tjdests/templates/profile/profile.html @@ -0,0 +1,120 @@ +{% extends "base.html" %} + +{% load crispy_forms_tags %} + +{% block content %} +

Profile

+

You are {{ request.user.username }}, {{ request.user.first_name }} {{ request.user.last_name }}.

+ +

Data Publication, College Attending, Biography

+
+ {% if request.user.is_senior %} + {% crispy profile_form %} + {% else %} +

You are not a senior, so you cannot publish data.

+ {% endif %} +
+ +

Decisions

+
+ {% if request.user.is_senior %} + + +

Your current decisions are:

+ + + + + + + + + + + + + {% for decision in decisions_list %} + + + + + + + {% empty %} + + + + + + + {% endfor %} + + +
University NameAdmissions RoundResult
{{ decision.college.name }}{{ decision.get_decision_type_display }}{{ decision.get_admission_status_display }}{% if request.user.attending_decision == decision %}, Attending{% endif %} + {# edit button #} + + + + {# delete #} + + + +
There is no data to display.
+ {% else %} +

You are not a senior, therefore you cannot add decisions.

+ {% endif %} +
+ +

Test Scores

+
+ {% if request.user.is_senior %} + + +

Your current test scores are:

+ + + + + + + + + + + + {% for score in test_scores_list %} + + + + + + {% empty %} + + + + + + {% endfor %} + + +
Exam TypeExam Score
{{ score.get_exam_type_display }}{{ score.exam_score }} + {# edit button #} + + + + {# delete #} + + + +
There is no data to display.
+ {% else %} +

You are not a senior, therefore you cannot add test scores.

+ {% endif %} +
+ + +{% endblock %} diff --git a/tjdests/templates/profile/testscore_delete.html b/tjdests/templates/profile/testscore_delete.html new file mode 100644 index 0000000..123b7e4 --- /dev/null +++ b/tjdests/templates/profile/testscore_delete.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} + +{% load crispy_forms_tags %} + +{% block content %} +

Delete test score

+ +
+
+ {% csrf_token %} + +

You are about to delete this test score:

+ +

{{ object.get_exam_type_display }}: {{ object.exam_score }}

+ + +
+
+ +{% endblock %} diff --git a/tjdests/templates/profile/testscore_form.html b/tjdests/templates/profile/testscore_form.html new file mode 100644 index 0000000..08d7e24 --- /dev/null +++ b/tjdests/templates/profile/testscore_form.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} + +{% load crispy_forms_tags %} + +{% block content %} +

Add test score

+ +
+
+ {% csrf_token %} + {{ form|crispy }} + +
+
+ +{% endblock %} diff --git a/tjdests/urls.py b/tjdests/urls.py new file mode 100644 index 0000000..ce1c41e --- /dev/null +++ b/tjdests/urls.py @@ -0,0 +1,25 @@ +"""tjdests URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path, include + +urlpatterns = [ + path('djangoadmin/', admin.site.urls), + path("", include("tjdests.apps.authentication.urls", namespace="authentication")), + path("oauth/", include("social_django.urls", namespace="social")), + path("destinations/", include("tjdests.apps.destinations.urls", namespace="destinations")), + path("profile/", include("tjdests.apps.profile.urls", namespace="profile")), +] diff --git a/tjdests/wsgi.py b/tjdests/wsgi.py new file mode 100644 index 0000000..2b83ce4 --- /dev/null +++ b/tjdests/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for tjdests project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tjdests.settings') + +application = get_wsgi_application()